Validation methodology

How we prove the engine behaves

Two evaluation suites run on the same realistic asset bank — 9 wardrobes, 10 style profiles, 230 scenarios. One asks "does it behave like a stylist?"; the other, adversarially, asks "where does it break, and when it breaks, does it fail safely, honestly and explainably?" Every finding is severity-tagged, and a release gate blocks on any safety failure.

Release gate · current run
PASS
0
P0 safety failures
0
Silent constraint drops
0.83
Confidence–quality correlation
10/10
Explanation grounding

Intelligence suite

Does it behave like a stylist? 10 behavioural families + a cross-cutting safety sweep, all 11/11 pass.

  • · Metamorphic context sensitivity
  • · Counterfactual item-swap penalties
  • · Occasion-ladder dressing-up
  • · Top-K assortment (with a quality guard)
  • · Boringness / novelty
  • · Closet-hole detection
  • · Wardrobe mutation (incl. misleading metadata)
  • · Constraint-following · confidence calibration · explanation faithfulness

Failure-mode suite

The adversarial inverse — where does it break, and does it fail safely? 8 attack families behind a release gate (P0 = 0).

  • · Constraint conflicts (keep / blacklist / safety)
  • · Unsatisfiable wardrobes
  • · Metadata contradictions (wrong, not missing)
  • · Candidate-generation coverage
  • · Weather & formality boundaries
  • · Confidence-failure spectrum
  • · Explanation contradictions + language mismatch

Severity taxonomy

Every finding is typed and ranked. The gate passes iff P0 = 0; lower tiers are reported as prioritised, isolated debt.

TierMeaningExamplesStatus now
P0Safety — blocks releaseunsafe-but-confident, blacklist violation, empty result, hard-fail with a positive label0
P1Trust debtsilent constraint drop, explanation contradiction, avoidable hard-fail0
P2Qualitycandidate-coverage gap, top-K collapse, over-penalisation1 (debatable)
P3Polishminor ranking preferences0

What the suites measure

PropertyWhat it provesResult
Safety under attacknever an unsafe-but-confident outfit, across 8 adversarial families0 P0
Confidence calibrationthe shown confidence tracks independently-measured qualityPearson 0.83
Constraint transparencya dropped keep-item is reported with a reason, never silently ignored0 silent
Explanation groundingthe text never names a missing garment, wrong colour, or oversells a hard-fail10 / 10
Context sensitivityoutput shifts the right way when one signal (temp / weather / occasion) changesconsistency 1.0
Item-swap penaltya single bad swap is penalised, never confidently0.92 correct
Candidate coverageappropriate, in-season items can actually enter a candidate outfit0.97 coverage
Robustnesscorrupted / contradictory metadata never forces an unsafe pick; never empty / crashgraceful

Quality is scored by an independent 0–100 yardstick computed from item attributes + scenario — deliberately not the engine's own score — so "quality" is an external check, not a tautology. Embeddings in the harness are attribute-derived (deterministic), which under-represents personalisation versus live FashionCLIP anchors.

Constraint transparency

When a requested keep_item can't be used safely (sandals in snow, a puffer at 35 °C), the engine doesn't quietly drop it — it returns a constraint_resolution block explaining what it kept, what it dropped, and why.

{
  "constraint_resolution": {
    "honored_keep_items": ["blazer-01"],
    "dropped_keep_items": [
      { "item_id": "sandal-02", "reason": "season_mismatch",
        "message": "Bu parçayı bu mevsim için uygun olmadığından öneriye eklemedim." }
    ]
  }
}

Build on a validated engine

Stylist-grade outfit intelligence — safety-checked, calibrated, explainable — through one API.

Start with the API Try the Playground