// Type contracts for the retrieval evaluation harness (Epic #189, Issue #268). The
// harness is OFFLINE only — it composes #199 retrieval through a scripted (deterministic)
// embedding adapter so every scorecard is byte-identical across runs. That determinism is
// load-bearing for the audit ledger (#10): a non-deterministic eval result would force
// the manifest to encode timestamps or random salts and break the cross-machine equality
// check that the verification matrix relies on.
//
// `RetrievalEvalFixture` is the executable contract a fixture must satisfy: enough capsule
// + source + document + parsed-unit + chunk specs to materialise an in-memory store, plus
// a list of queries with ground truth (`expectedChunkIds`) or an explicit no-evidence flag.
//
// `RetrievalEvalScorecard` is the immutable result the runner returns. The quality
// dimensions are each in `[0, 1]`; latency is reported separately as a deterministic
// synthetic-millisecond total unless the caller overrides `deps.now`. `passed` is the
// conjunction of per-dimension thresholds in `PASS_THRESHOLDS` — exposing the constant
// lets a UI display a "X met 5/6 thresholds" breakdown without re-implementing the
// comparison.
export const PASS_THRESHOLDS = Object.freeze({
    recall: 0.9,
    precision: 0.8,
    sourceIsolation: 1.0,
    citationQuality: 0.9,
    noEvidenceAccuracy: 1.0,
    contextBudgetFit: 1.0,
});
