Two docs-only updates capturing the day's work: 1. Appended a "Status update — 2026-05-27 EOD" footer to the Brief 11 handoff doc with the completion table (11A/11B-step-1/11B-step-2 docs+lexicon/11D merged; 11C absorbed into W3-A; 11D candidate E ADR merged) and the current post-#348 baseline taxonomy. 2. New session doc SESSION-2026-05-27-adr-0167-parallel-dispatch.md alongside the existing SESSION-2026-05-26-comprehension-reader.md. Captures the architectural pivot (audit-as-teaching-evidence vs the rejected refusal-class dispatch table), the parallel-dispatch experiment (5 operators / 3 waves / 6 PRs), what worked, what surfaced as load-bearing (case 0050 hazard), and what's deferred. No code changes. No runtime effect.
11 KiB
Brief 11 — Phase 2 Reader Closure and Capability Snapshot
Status: Active handoff
Date: 2026-05-27
Branch: docs/brief-11-handoff
Scope: Private repo planning and execution handoff only. No public-safe disclosure. No runtime claim is made by this document.
Thesis
Brief 11 should close the current comprehension-reader corridor before widening measurement or domain scope.
The latest project state establishes three facts that must govern sequencing:
gsm8k_mathis not blocked by a lack of eval lanes. It is blocked by incomplete statement understanding.- The ADR-0164 reader is the correct replacement path for the brittle ADR-0163 recognizer/injector surface.
- ADR-0166 now forbids authoring new canonical eval lanes ahead of the capability they measure.
Therefore Brief 11 is not "make more benchmarks." Brief 11 is the bounded closure pass that turns the Phase 2 reader line into a reliable capability snapshot, then tells the next operator exactly what can safely happen after it.
Current operating facts
Recent PR descriptions and session logs show the corridor clearly:
- Phase 1 reader coexistence is additive and flag-gated. With the flag off, behavior should remain byte-identical.
- Phase 1 handles question sentences; statement sentences remained on the regex parser.
- Phase 2 statement-frame work is the dominant path because most refused cases are caused by recognized-but-skipped statements / incomplete solver graphs.
- Wrong-answer protection is currently more important than raising correct count by unsafe partial admission. The wrong=0 guard must remain non-negotiable.
- Main has ADR-0166, which states that measurement follows capability, not the other way around.
Brief 11 must preserve those facts instead of drifting back into lane proliferation or superficial UI/demo work.
Goal
Produce a mechanically useful handoff for the next engineering pass after Brief 10 / Phase 2 reader work:
- Define the closure gates for the Phase 2 statement reader.
- Define the capability snapshot that should be run immediately after closure.
- Define the no-go boundaries that prevent unsafe widening.
- Define the next branch/PR sequence so a lead engineer can continue without re-litigating the strategy.
Non-goals
Brief 11 does not:
- add new OOD eval lanes;
- claim expert-level GSM8K capability;
- relax wrong=0;
- bypass the reader with broader regex patches;
- add public-facing disclosure material;
- promote any audit/expert/demo tier;
- mutate seed packs or teaching stores as a side effect of chat/runtime smoke tests.
Acceptance gates
Gate 1 — Reader completeness delta
Run the canonical GSM8K train-sample measurement with the reader path enabled and disabled.
Required outputs:
- baseline regex-only result;
- reader-enabled result;
- refused/correct/wrong counts;
- per-case refusal reason taxonomy;
- explicit list of cases fixed by Phase 2 statement frames;
- explicit list of cases still refused and why.
Hard invariant:
wrong == 0must hold.
If correct rises while wrong > 0, the PR is not a success. It is a regression with useful diagnostics.
Gate 2 — Recognized-skipped statement audit
For every still-refused case where the reader recognized tokens but did not inject a complete graph, emit a compact audit row:
case_id | sentence_index | recognized_terms | skipped_frame | missing_operator | refusal_reason
This is the main Brief 11 artifact because it turns the remaining GSM8K bottleneck into queued capability work instead of guesswork.
Gate 3 — Graph completeness proof
For every admitted case, prove the solver graph is complete before candidate projection:
- all quantities have owners or intentionally anonymous scope;
- all units are canonicalized;
- operations are typed;
- question target slot resolves to an entity/unit/kind;
- no recognized-but-uncommitted frame is present.
This gate is the successor to the wrong=0 guard. The guard catches unsafe admission; graph completeness prevents unsafe admission from being attempted.
Gate 4 — Determinism and trace stability
Run the reader-enabled measurement twice with identical input and config.
Required:
- identical case outcomes;
- identical trace hashes where applicable;
- stable refusal taxonomy ordering;
- no nondeterministic iteration over entity registries, frame sets, or lexicon categories.
Gate 5 — Feature-flag hygiene
The reader path must remain explicitly controlled until the capability snapshot justifies default-on behavior.
Required:
- flag-off path remains byte-compatible with current main expectations;
- flag-on path produces trace evidence that reader code actually executed;
- fallback behavior is explicit: reader refusal may fall through only when doing so cannot hide a recognized-skipped statement.
Gate 6 — Capability snapshot, not promotion
After the above gates pass, run the existing relevant lanes / tables to populate the current capability snapshot.
Allowed:
- rerun existing GSM8K / capability-axis lanes;
- update current metric artifacts;
- populate existing TBD rows only where the lane already exists and produces signal.
Forbidden:
- adding new canonical lanes just to make the table look complete;
- treating a snapshot as expert promotion;
- merging a measurement PR that conceals capability absence behind aggregate numbers.
Recommended branch / PR sequence
PR 11A — Reader Phase 2 closure audit
Branch: feat/brief-11-reader-closure-audit
Deliverables:
- audit artifact for recognized-skipped statement cases;
- per-case refusal taxonomy;
- graph-completeness assertion helpers;
- tests around incomplete graph refusal.
Exit condition:
- measurement identifies the exact remaining missing operators without raising
wrong.
PR 11B — Reader closure fixes
Branch: feat/brief-11-reader-closure-fixes
Deliverables:
- minimal statement-frame fixes for the highest-leverage missing operators;
- no broad regex expansion unless proven temporary and fenced;
- deterministic tests for each newly admitted case;
- updated measurement artifact.
Exit condition:
- correct count improves or refusal taxonomy shrinks, while
wrong == 0.
PR 11C — Existing-lane capability snapshot
Branch: eval/brief-11-capability-snapshot
Deliverables:
- rerun existing relevant lanes only;
- update metric ledgers / result JSONs;
- summarize what changed after the reader closure;
- explicitly list deferred lanes that remain blocked by missing capability.
Exit condition:
- snapshot numbers are reproducible and do not claim promotion.
PR 11D — Next capability proposal
Branch: docs/brief-11-next-capability-proposal
Deliverables:
- a concise proposal selecting the next capability after GSM8K reader closure;
- must pass ADR-0166's three-question test before any new lane is authored;
- should compare: continued GSM8K operator closure, cross-domain reader generalization, tool-use trace integration, and Workbench demo hardening.
Exit condition:
- lead engineer has a yes/no decision artifact, not another sprawling roadmap.
Failure modes to avoid
1. Correct-count greed
Raising correct count by allowing incomplete graph admission violates the project. Any such result should be treated as a failed experiment, not progress.
2. Regex relapse
ADR-0165 exists because regex can be useful at boundaries but dangerous as a semantic substitute. Brief 11 should not broaden regex to impersonate reader comprehension.
3. Eval surface inflation
New lanes before capability will generate uniform refusals and strategic noise. ADR-0166 forbids this.
4. Snapshot-as-promotion
A capability snapshot is a diagnostic state report. It is not an expert promotion, investor claim, or public disclosure.
5. Hidden side effects
Reader measurement must not mutate teaching stores, seed packs, runtime state, or public-facing artifacts unless the PR explicitly declares and tests those mutations.
Minimum evidence package for the final Brief 11 PR
The final PR in this sequence should include:
- command(s) run
- environment/config flags
- baseline result path
- reader-enabled result path
- before/after correct/refused/wrong table
- still-refused taxonomy
- fixed-case taxonomy
- graph completeness assertion summary
- determinism rerun summary
- explicit deferred-work list
Suggested table:
| Mode | Correct | Refused | Wrong | Notes |
|---|---|---|---|---|
| regex-only baseline | TBD | TBD | TBD | current main behavior |
| reader Phase 1 | TBD | TBD | TBD | question-frame reader only |
| reader Phase 2 closure | TBD | TBD | TBD | statement-frame reader path |
Definition of done
Brief 11 is done when the repo has a reproducible, reviewed capability snapshot after Phase 2 reader closure and a precise backlog of remaining missing operators.
It is not done merely because a document exists. This document is the operator handoff; the engineering sequence above is the work.
Status update — 2026-05-27 EOD
The Brief 11 sequence landed across the day. Completion path:
| Sub-brief | Status | PR(s) | Notes |
|---|---|---|---|
| 11A — reader closure audit infrastructure | ✅ Merged | #343 | generate/comprehension/audit.py + 18 audit tests |
| 11B-step-1 — per-case audit artifact + extended taxonomy | ✅ Merged | #345 | 3 new missing-operator labels close the None-operator gap |
| 11B-step-2 — verb-vocabulary analysis (docs-only) | ✅ Merged | #347 | All "unknown verbs" found to be lexicon-present; pre_frame_filler is structural |
| 11B-step-2 — lexicon-entry closure | ✅ Merged | #348 | 12 drain_token lemmas + 1 alias; unknown_word row 11→5; wrong=0 preserved |
| 11C — capability snapshot rerun | ✅ Absorbed | (in W3-A) | Folded into ADR-0167 W3-A's Deliverable 2 (post-W2 baseline section in audit_brief_11.md) |
| 11D — next-capability proposal | ✅ Merged | #346 | Candidate A (continued GSM8K closure) recommended |
| 11D — Candidate E (audit-as-evidence) | ✅ Merged | #349 | ADR-0167 scoping ADR + parallel work plan |
The bottleneck table after 11B-step-2 lexicon closure (current post-Brief-11 baseline; W3-A will produce the post-ADR-0167-LexicalClaim baseline):
| refusal_reason | count | Δ vs 11B-step-1 |
|---|---|---|
| incomplete_operation | 20 | +2 |
| unexpected_category | 17 | +3 |
| unknown_word | 5 | −6 |
| unattached_quantity | 4 | +1 |
| unresolved_pronoun | 3 | 0 |
| no_question_target | 1 | 0 |
wrong == 0 held throughout. Case gsm8k-train-sample-v1-0050 remains
refused at sentence_index=0 (pinned by multiple test suites).
Next: ADR-0167 W3-A closes the LexicalClaim slice with an e2e test that walks the full loop (refusal → evidence → ratification → row-moves), plus a cognition-corridor regression pass. After W3-A, Brief 11 closes and the engine can ratify math-domain lexical claims from its own refusal evidence through the existing HITL teaching corridor.