{
  "_comment": "MUTATION-TIERED-ROLLOUT-1. Thresholds live HERE, not in a script or a checklist (SO #41) — run-mutation-tier.mjs and chaingraph/kernels/mutation-tier-split.mjs read this file, never hardcode a floor. Generalizes FV-STRYKER-PILOT-1 (board/done/FV-STRYKER-PILOT-1.md, research/FV-STRYKER-PILOT-1-REPORT.md) from a 10-kernel pilot to risk-tiered estate thresholds.",
  "strykerVersion": "8.7.1",
  "moneyMathTarget": 95,
  "moneyMathTarget_comment": "The staging row's stated aspiration ('target 95%'). NOT the enforced floor today — see moneyMathBreakFloor. Ratchet-up target for future rows once broader estate data (the nightly full-estate scan) exists.",
  "moneyMathBreakFloor": 60,
  "moneyMathBreakFloor_comment": "CALIBRATED AGAINST REAL PILOT-10 DATA (staging row's explicit instruction), not assumed. Re-running the FV-STRYKER-PILOT-1 10 kernels with the corrected tier split (buildArtifact()/meta/TOOL_ID/TOOL_VERSION excluded from money-math, per mutation-tier-split.mjs's bracket-stack classifier — NOT a naive 'before buildArtifact()' line cut, which double-counted meta as money-math for kernels like art-431 that declare meta before compute()) measured, BEFORE any test authoring: art-06 31.2% (93/298), art-275 65.3% (314/481), art-431 78.4% (76/97), art-504 64.5% (220/341), art-505 63.6% (173/272), art-506 67.5% (334/495), art-508 61.1% (694/1135), art-509 55.3% (394/712), art-535 72.8% (190/261), art-77 59.3% (108/182). Weighted average (killed/total across all 10) = 60.7%. 95% is not reachable today without touching sealed/frozen proptest assumptions on every one of the 10 in one row — most of the pilot sits in a 55-78% band, nowhere near 95. Floor calibrated to 60 (nearest round number at/just below the measured weighted average) so it is a REAL, non-trivial bar — 2 of the 10 (art-06, art-509) fail it honestly as named leads below — without requiring a rewrite of every kernel's test suite in this row. This is a ratchet-up floor (SO #41 — never lowered silently); raising it toward the 95% target is future-row work once the nightly full-estate scan has enough cycles to know what's broadly holdable, not just across these 10.",
  "namedLeads": {
    "art-06-genius-act-reserve-attestation": "31.2% money-math (93/298 mutants killed) — well below the 60% floor. The largest gap in the pilot-10: 205 surviving/uncovered money-math mutants. Follow-up: dedicated fixture/property authoring for this kernel's GENIUS Act reserve-attestation branches (largest kernel in the pilot by mutant count relative to its coverage). Not attempted in this row — out of the bounded scope of a config/CI-wiring row; SO #36 applies (this is not a sealed/proven kernel, so a future row CAN add tests, it is simply more than one row's worth of authoring).",
    "art-509-recompute-payment-waterfall": "55.3% money-math (394/712 mutants killed) — just below the 60% floor. 318 surviving/uncovered money-math mutants across the securitisation waterfall's tranche-allocation branches. Follow-up: targeted fixture vectors covering tranche-priority edge cases, same shape as this row's art-77 fix (chaingraph/kernels/fixtures/art-77-t1-settlement-readiness-diagnostic.fixtures.json — 5 new vectors, +22 points). Not attempted in this row for the same bounded-scope reason as art-06."
  },
  "peripheralBreakFloor": 70,
  "peripheralBreakFloor_comment": "Holdable floor per staging note. Measured pilot-10 peripheral (buildArtifact()/meta/TOOL_ID/TOOL_VERSION) score was 0% across every one of the 10, before and after this row's fix — proptest floors import ONLY `compute` (scripts/run-proptests.mjs's own soundness comment), so this code is structurally unexercised by design, not from neglect. See 'peripheralGateMode' below: measured and reported on every run, but does not fail the gate until dedicated buildArtifact()/meta coverage exists (a separate, out-of-fence follow-up — the row's own scope-discipline clause says 'note the question, do not solve it').",
  "peripheralGateMode": "advisory",
  "peripheralGateMode_comment": "advisory | enforced. While advisory, a peripheral-tier score below peripheralBreakFloor is printed and included in every summary but does NOT fail run-mutation-tier.mjs's exit code. Flip to 'enforced' once buildArtifact()/meta gets its own dedicated test coverage.",
  "excludedKernels": {
    "art-594-tempo-mpp-voucher-receipt-verifier": "Non-canonical export shape (`export { compute, meta };` at EOF instead of `export function compute`/`export const meta`/`export function buildArtifact`) — chaingraph/kernels/mutation-tier-split.mjs cannot locate a meta/buildArtifact block, so this kernel is excluded rather than guessed (SO #34c). Also a ~6,100-line bundled-Noble-crypto file and the estate's one SLOW-class kernel (GPU-CYCLE-PREFLIGHT-SPEC.md, in-guest signature verification) — mutation testing it is a separate, disproportionate undertaking. Named exception, not attempted this row."
  }
}
