All five G.x capability axes shipped (G.1–G.5); admission remained 0/50 throughout — expected, because the 50 sample cases fail at the statement layer (rate verbs, implicit entities, multi-step ops), orthogonal to the question-layer and initial-state-verb work the G.x axes targeted. Decisions: - Probe retired as a per-iteration gate (signal-to-noise ≈ 0 at 0/50) - `admitted_wrong == 0` invariant preserved as a standing architectural invariant, CI-pinned by existing test + per-axis regression guards - Re-activation criterion named: statement-layer expansion that plausibly admits ≥1 new case (Δadmission_rate ≥ 0.02) - Probe runner + report stay in-repo for future statement-layer push Docs-only. No test, parser, solver, or eval changes.
5 KiB
ADR-0131.5 — GSM8K Coverage Probe: Retirement After G.x Axis Completion
Status: Accepted
Date: 2026-05-23
Parent: ADR-0131.G — GSM8K Coverage Probe
Amends: ADR-0131.G iteration discipline section
Context
ADR-0131.G introduced the GSM8K coverage probe as a diff-able baseline
(admitted_wrong == 0, admission_rate tracked across G.x iterations)
and pinned capability-first iteration discipline for the G.x capability
axes. Five axes shipped and merged to main:
| Axis | ADR | PR | Axis cases | Wrong |
|---|---|---|---|---|
| G.1 — verb classes for initial-state | ADR-0131.G.1 | #187 | curated lane | 0 |
| G.2 — comparative operations | ADR-0131.G.2 | #196 | 31 cases | 0 |
| G.3 — numeric literals | ADR-0131.G.3 | #183 | curated lane | 0 |
| G.3.1 — numerics extensions | ADR-0131.G.3.1 | #186 | curated lane | 0 |
| G.4 — multi-clause composition | ADR-0131.G.4 | #185 | curated lane | 0 |
| G.5 — aggregate answer composition | ADR-0131.G.5 | #197 | 20 cases | 0 |
GSM8K admission after all five axes: 0/50 (unchanged from baseline).
This was expected and documented in each G.x PR. The bottleneck for all 50 sample cases is statement-layer parsing — rate verbs, compound sentences, implicit entities, multi-step operations. The G.x axes targeted the question layer (aggregate cues, comparative structure, numeric literals, multi-clause subjects) and the initial-state verb layer. None of the 50 GSM8K sample cases fail at those layers; they fail earlier.
The safety rail (admitted_wrong == 0) never wavered.
Decision
1. Retire the GSM8K probe from the per-iteration gate
Effective immediately, train_sample_coverage_report.json is a frozen
evidence artifact, not a live gate for future iterations. The reasons:
- Admission is still 0/50. A gate that never moves does not gate.
- The G.x axes demonstrated that architecture-aligned capability growth does not necessarily lift GSM8K admission — and that is correct behavior, not a failure. The 50 sample cases are hard precisely because of statement-layer features (rate verbs, implicit entities) that are deliberately out of scope for the closed bounded-grammar model.
- Keeping the probe as a per-iteration required re-run creates process overhead whose signal-to-noise ratio is now close to zero.
2. Preserve the admitted_wrong == 0 invariant permanently
The safety rail is not retired. It becomes a standing architectural invariant rather than a per-iteration gate:
Any future change to the parser, solver, or verifier must preserve
admitted_wrong == 0on the GSM8K train sample.
The existing test
tests/test_adr_0131_G_gsm8k_coverage_probe.py already CI-pins this;
it is not removed. Each per-axis test file (G.2, G.5, etc.) also
asserts admitted_wrong == 0 as a regression guard. This coverage is
sufficient; no per-iteration re-report is needed.
3. Conditions for re-activating the probe as a live gate
If a future ADR targets statement-layer expansion (rate verbs, multi-step implicit operations, compound sentence parsing), re-run the probe and include the delta. The probe infrastructure remains in-repo for this purpose. The re-activation criterion is:
- The new capability plausibly changes the admission count on ≥1 of the 50 sample cases.
- The PR diff includes evidence that it does (pre/post
admission_ratedelta ≥ 0.02, i.e. ≥1 additional admission).
4. Archive note in ADR-0131.G
ADR-0131.G iteration discipline section 4 ("Reject any expansion that only moves GSM8K admission") remains valid. This ADR adds a symmetric note: expansions that do not move GSM8K admission are not defects — they are working as intended when the bottleneck is orthogonal to the capability axis being extended.
Evidence
evals/gsm8k_math/train_sample/v1/train_sample_coverage_report.json— frozen atadmission_rate: 0.0,admitted_wrong: 0,refused: 50after all G.x axes.tests/test_adr_0131_G_gsm8k_coverage_probe.py— CI-pinsadmitted_wrong == 0as a standing regression guard.- Per-axis tests (G.2, G.5) each include a
test_gsm8k_*_admitted_wrong_zeroassertion as belt-and-suspenders.
Consequences
- Future capability-axis PRs do not need to re-run or delta the GSM8K probe unless their scope touches statement-layer parsing.
- The probe file and runner remain in-repo as infrastructure for the eventual statement-layer push.
- The ADR-0131.G "capability-first, not coverage-first" discipline is unchanged. GSM8K admission is still a symptom, never a target. This ADR merely removes the requirement to measure the symptom on every iteration when the symptom cannot move.
Out of scope
- Statement-layer expansion (rate verbs, multi-step implicit operations) — that is a separate ADR when the time comes.
- Promotion-gate amendment — ADR-0131.4 is the gate; it does not reference the GSM8K probe, and this ADR does not change it.
- Removal of the probe runner or report file — both stay in-repo.