The scored gate (Phase 4): throw if any check's measured rate is below its
threshold — the measure counterpart to assertChecks (strict). Reads the
rate, not a single run, so it never trips on one noisy trial.
min is the default threshold for every check. per overrides it for a check
KIND (e.g. { min: 0.8, per: { skill: 1.0 } } — "every check ≥ 80%, but the
skill must FIRE on every trial"), so a strict firing/safety check and a
lenient quality check gate in one call — the single-skill absolute oracle
(measure({ checks: [skill(), judged()] }) + assertRates) needs exactly this.
The scored gate (Phase 4): throw if any check's measured rate is below its threshold — the
measurecounterpart toassertChecks(strict). Reads the rate, not a single run, so it never trips on one noisy trial.minis the default threshold for every check.peroverrides it for a check KIND (e.g.{ min: 0.8, per: { skill: 1.0 } }— "every check ≥ 80%, but the skill must FIRE on every trial"), so a strict firing/safety check and a lenient quality check gate in one call — the single-skill absolute oracle (measure({ checks: [skill(), judged()] }) + assertRates) needs exactly this.