Grammar unification — plan of record (CORE cannot read its own writing: 0/280) #128
Loading…
Reference in a new issue
No description provided.
Delete branch "docs/grammar-unification-plan"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Docs-only. Plan of record for the grammar-unification arc, plus one finding that is a live user-visible defect on a ratified band.
The headline
CORE cannot read its own writing. 0/280, all refusing
no_template_match. All six readers refuse all writer output — including CORE's own live served surfaces (24 refusals, 0 comprehensions).Measured on
main@9696443arender_step, 232 ln)_IRREGULAR_PLURALScopiesall wolves is defined a mammal)"banana does the."on all 5 content predicates§1.7 — a ratified band serves malformed English today
render.py::_CATEGORICAL_PHRASEuses plural syntax ("all {s} are {p}") but interpolates the reader's singularized entity ids, with no re-pluralization — because reader and renderer sit on opposite sides of the §1.3 seam. Affects every plural noun, regular or irregular; 4 of 47 ratified corpus cases that serve a categorical clause (ds-v1-0023/0024/0026/0028).wrong=0is not threatened — every verdict is correct. This is purely surface.Compounding: the reader's plural table has 8 entries where the v3-MEM band's has 29, so
wolves→wolve,knives→knive,leaves→leave,lives→live, +4 more. CORE's two readers disagree on 12 of 20 plurals. The wrong singulars don't break soundness (uniform deterministic bijection) but they're why the fix needs a shared table rather than a patch to one side.Why this arc, not more curriculum
Six ratified, flag-ON deduction bands are reachable only through
looks_like_deductive_argument= sentence-initial "therefore"."It rains. So the ground is wet, right?"→ token dump. Each band widened what CORE can decide; none widened what a person can ask. The keyhole is a reading problem.The central design decision
The instrument is the fix. Grammaticality cannot be measured without a grammar, so heuristic predicates will always fail the way §1.5 already does. Round-trip forces one artifact to both parse and generate. Positive and negative corpora are both load-bearing — round-trip proves mutual intelligibility, not English quality, and the plan says so explicitly so no future reader cites it as evidence of prose quality.
A correction I made to my own draft
An earlier draft asserted "Phases 1–3 cannot change serving behaviour." That was wrong, and it's the same shape as the mistakes this arc exists to fix: I classified a table as off-serving without asking which callers reach it.
reader.py::_IRREGULAR_PLURALSis serving-reachable. Phase 2 is now split into 2A (off-serving, byte-identical lane SHAs) and 2B (serving tables + render fix, authorization-gated), and 2A ships a caller-provenance test so the check lives in the tree rather than in a reviewer's head.Phases and gates
§6 makes the next direction a measured fork, not an argument: if
read_raterises from unification alone, Phase 5 is next; if it stays near zero, the barrier is theMeaningGraphvsPropositionGraphtype mismatch and the next arc is a graph-model ADR, explicitly not an extension of this plan. The plan pre-commits to the second being likelier, so the arc may honestly end at an ADR rather than at fluid prose.Scope discipline
Phase 5 is deliberately unestimated until Phase 1 reports — the previous arc acquired an unreachable exit criterion by doing the opposite. The plan also does not claim Phases 1–4 produce human-like prose.
[Verification]: docs-only, no code touched. Numbers reproducible viascripts/measure_grammar_seam.py(lands with Phase 1).Stacked: Phase 1 (
feat/grammar-roundtrip-instrument) builds on this. Merge this first.Two additions found while designing Phase 1's projection. 1. NEW §1.7 — band v1b serves malformed surfaces today, user-visible: in : All dogs are mammals. All mammals are animals. Therefore all dogs are animals. out: Given: all dog are mammal; all mammal are animal. That's valid — all dog are animal follows. render.py::_CATEGORICAL_PHRASE uses plural syntax ("all {s} are {p}") but interpolates the reader's SINGULARIZED entity ids, with no re-pluralization step — because reader and renderer sit on opposite sides of the §1.3 seam. Affects every plural noun, regular or irregular; 4 of 47 ratified corpus cases that serve a categorical clause (ds-v1-0023/0024/0026/0028). wrong=0 is NOT threatened — every verdict is correct; this is purely surface. Compounding cause: the reader's plural table has 8 entries where the v3-MEM band's has 29, so wolves->wolve, knives->knive, leaves->leave, lives->live, halves->halve, loaves->loave, thieves->thieve, elves->elve. CORE's two readers disagree on 12 of 20 plurals. The wrong singulars do not break soundness (uniform deterministic bijection) but they are why cause 2 needs a SHARED table. 2. CORRECTED §4 — the earlier draft claimed "Phases 1-3 cannot change serving behaviour." That was wrong, and it is the same shape as the mistakes this arc exists to fix: I classified a table as off-serving without asking which callers reach it. reader.py::_IRREGULAR_PLURALS IS serving-reachable (comprehend -> to_syllogism -> v1b -> deduction_grounded_surface). New rule: a table is off-serving only when EVERY caller is proven eval-only. Phase 2 splits on that test into 2A (off-serving, byte-identical) and 2B (serving tables + the render fix, authorization-gated). Phase 2A now ships a caller-provenance test so this check lives in the tree, not in a reviewer's head. Refs: ADR-0256 (band v1b), ADR-0258 (v3-MEM plural table)