All findings from the 2026-05-28 Phase 1-3a lookback review addressed
in one commit on the Phase 3a branch:
Wrong=0 hazard defense (the load-bearing fix):
- generate/math_candidate_graph.py: Phase 3a wiring now collects the
set of distinct proper-noun subjects seen in prior context. When
more than one exists, refuses with no_antecedent_ambiguous trace
event rather than guessing the most-recent (which was gender-blind
single-binding — wrong attribution in multi-actor problems).
- Refusals from the statement loop now preserve _statement_trace via
reader_trace in CandidateGraphResult (pre-existing latent issue:
Phase 2/3 trace events were dropped on early statement refusal).
- New tests assert: ambiguous case refuses with correct trace; single-
actor case still resolves normally.
Test coverage backfills (closes the 13 untested predicate-name gaps):
- TestCheckConstraintsInitialPredicateNames — 3 tests asserting the
exact predicate name on initial.value_grounds / initial.unit_grounds
/ initial.entity_grounds failure paths.
- TestCheckConstraintsOperationPredicateNames — 3 tests asserting
operation.verb_grounds / operation.value_grounds / operation.unit_grounds
failure-predicate-name parity.
- TestCheckConstraintsComposedInitialPath — 4 tests for the RAT-1
composed_initial path which was entirely untested in Phase 2
(parity manually verified during lookback review; now automated).
ADR amendment (honest doc vs impl drift):
- docs/decisions/ADR-0174-held-hypothesis-comprehension.md: appended
'Implementation Notes' section documenting:
- reevaluate signature differs from spec text (shipped is more
composable; treat as amended)
- Phase 2 wires per-candidate, not per-token (per-token is Phase 5)
- Lookback recompute is candidate-level, not token-level
- Hypothesis.constraint_state is never populated by Phase 2
- Multi-actor pronoun hazard defense rationale
- Honest LOC accounting: Phases 1-3a net +1,500 lines (Phase 5
delivers the projected net removal)
- Test coverage backfill summary
Cosmetic:
- lookback.py:297 unreachable raise — added # type: ignore[unreachable]
with comment explaining defensive future-proofing for Phase 3b.
Acceptance verified:
- 124/124 Phase 1+2+3a + reader tests pass (was 95/95 before backfills)
- Smoke 67/67, packs 141/141
- train_sample 3/47/0 preserved (wrong=0 invariant held)
- Multi-actor hazard live-tested: parse_and_solve refuses the
Alice/Bob/She case with no_antecedent_ambiguous trace event
See CLAUDE.md §Lookback Review Discipline and memory
feedback-lookback-review-discipline for the doctrine that surfaced
all of these issues at the right time.
|
||
|---|---|---|
| .. | ||
| adr | ||
| architecture | ||
| audit | ||
| briefs | ||
| curriculum | ||
| decisions | ||
| evals | ||
| handoff | ||
| handoffs | ||
| implementation | ||
| plans | ||
| research | ||
| sessions | ||
| workbench | ||
| admissibility-exemplars.md | ||
| capability_roadmap.md | ||
| ethics_packs.md | ||
| EVAL_AUDIT_2026-05-20.md | ||
| eval_methodology.md | ||
| formation_pipeline_plan.md | ||
| frontier_baselines.md | ||
| gaps.md | ||
| hitl-backpressure.md | ||
| holdout_recipients.txt | ||
| identity_packs.md | ||
| master-plan-post-substrate-audit.md | ||
| pack_inventory_2026-05-21.md | ||
| position_paper.md | ||
| PROGRESS.md | ||
| recognizer-registry.md | ||
| refusal-taxonomy.md | ||
| reviewers.yaml | ||
| runtime_contracts.md | ||
| RUST.md | ||
| safety_packs.md | ||
| teaching_order.md | ||
| test-debt-quarantine.md | ||
| truth_seeking_schema.md | ||
| Whitepaper.md | ||
| Yellowpaper.md | ||