- Restore evals/gsm8k_math/train_sample/v1/report.json to pre-#846 pin (6/44/0)
The 30/20/0 committed in #846 was generated eval output, not a ratified rebaseline.
Historical pin is required until a dedicated rebaseline PR is explicitly authorized.
- Delete teaching/proposals/comprehension_failures/34ce9254...json
Newly added in #846 without authorization. File did not exist in first parent.
HANDOFF claimed teaching paths were untouched — contradicted by the actual diff.
Proposal must go through the reviewed teaching lifecycle, not committed PRs.
- Add docs/sessions/pr846-reconciliation-audit-2026-06-20.md
Full audit note: what #846 was expected vs. what merged, authorization analysis,
restoration rationale, what was preserved, remaining risk, next correct step.
Tests kept from #846:
- tests/test_problem_frame_builder.py (lint fix: _frame_names -> direct accessor)
- tests/test_problem_frame_skeleton.py (unused ProblemFrame import removed)
Both are valid narrow fixes unrelated to the unauthorized artifacts.
Forbidden paths not touched: algebra, field, vault, recall, identity, policy,
packs, generate/derivation, generate/math_candidate_graph.py, runtime/serving.
core/comprehension_attempt/proposal.py: emit_proposal writes a content-addressed teaching/proposals/comprehension_failures/<hash>.json ONLY for growth-surface families (proposal_allowed). Deliberately toothless: status always proposal_only, mounted always false, requires_review always true (enforced in __post_init__); the problem text is hashed (sha256), never stored; filename = sha256(family:text_sha) so the same failure is idempotent.
No proposal for a correct wrong=0 boundary. Serving never reads the sink (scanned: generate/stream, field/propagate, vault/store, generate/derivation, core/reliability_gate). Routes through the existing proposal-only flywheel (ADR-0055/0056/0057), never a parallel correction path. README pins the contract. 6 tests.