core/docs/plans/2026-07-28-perception-arc.md
Claude 339bfd3776
docs(plans,assessment): fourth-audit triage — the faithful §2 reader exists, dark
Cross-examined a six-fault red-team audit against the source at a4f567f0.
Three faults stale or mis-attributed, one already executed, one already ruled,
one superseded the same day — but it is the best-anchored external audit of the
four, and chasing its claims caught a hole in G-24's own sweep.

THE FIND: core/semantic_primitives/ + generate/linguistic_pipeline/ implement
ADR-0252 §2 faithfully — typed Container/ConservationLaw/DimensionalType
primitives, layer_a_english surface extraction, and field_integration.py
(51 geometric refs): constraints embedded as conformal points / COMPOSED
ROTORS with versor_condition + GoldTether closure. Nothing on the serving
side calls it. F-B amended: two readers exist — the inverted one serves,
the faithful one is dark.

Also verified: W-007's "architecturally blocked" claim is stale by two months
(ADR-0146 committed the L10 shape 2026-05-25; the daemon landed 18e25580;
the DerivedRecognizer step is BUILT at pipeline.py:211 behind
recognition_grounded_graph=False). The audit reasoned from the
substrate-liveness ratchet — the instrument PR-3 marked historical this same
day. H-9's mechanism, demonstrated on an external auditor.

Adopted from the audit: the H2 non-collapse criterion (the §5 add-vs-subtract
minimal pair must show non-zero relational contrast under operator
composition) joins the Phase-1 pre-registration verbatim; the use_salience
ruling moves ahead of Phase 3's serving evals.

The pattern, named once in the plan §2b: linguistic_pipeline, the ADR-0144
recognizer step, and relation_compiler are three instances of one class —
correct mechanisms built dark behind unruled flags while enumerative stopgaps
serve. The flag register's §3a hesitancy cluster is the same disease seen
flag-side. CORE's failure mode is not "never built"; it is transition windows
that never close. Phase 2 now begins from the dark-bridge inventory rather
than from new code — "less machinery" made concrete.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wcw2pnMBwyvmNyQg4uPEt4
2026-07-28 17:22:40 +00:00

15 KiB
Raw Blame History

The Perception Arc — why capability has not moved, and the plan that moves it

Author: Fable 5 · 2026-07-28 · measured at 0e1be8be Supersedes: Track B's "widen from 19 constructions" (G-3, as previously specified) — see §4. Governed by: AGENTS.md standing philosophy; the pre-registration discipline that produced the §5 NO-GO.


0. The question this answers

Everything is implemented. The gate is 4 suites / 1,441 tests, wrong=0 holds everywhere it is claimed, twelve rulings executed, every register clean. And capability has not moved. The reader decides ~1% of the held-out corpus, four deduction bands hold the only earned licences, and nothing else serves. Why?

This document answers with measurements, not opinion. Every claim below was verified against the source at 0e1be8be on 2026-07-28.


1. The diagnosis, in five measured findings

F-A · The serving path is 100% symbolic — the geometry never touches it

Serving-path module Lines Geometric refs
generate/meaning_graph/reader.py 490 0
generate/meaning_graph/model.py 229 0
generate/proof_chain/ (15 files) 3,916 0
chat/deduction_surface.py 298 0
chat/curriculum_surface.py 406 0

Comprehension is a hand-written template parser (1 regex, 35 string ops) feeding an ROBDD boolean entailment engine. That is classical symbolic AI, and it is the source of all served capability. The Cl(4,1) substrate — 76 modules, concentrated in core/physics (24) — runs identity continuity, persistence, and the soak invariants. The two systems intersect on the serving path in exactly one place (F-D), and the licensed lanes bypass it.

F-B · The reader inverts its own ratified design — this is the root cause

ADR-0252 §2 stage 1 (ratified 2026-07-19) prescribes, verbatim:

"Reduce surface text to the primitives the substrate represents: quantities (the Number core-system), entities (the Object core-system), and their relational roles — containment / transfer / accumulation / comparison (two-argument relational predicates). Not surface-slot regexes."

What was built: surface-slot templates over categorical / member / ordering / propositional relations — Aristotelian syllogistic plus propositional logic. The banned mechanism, over the wrong relation set.

The corpus measurement confirms the inversion independently. On holdout_dev/v1 (500 problems → 1,798 sentences):

Feature in real English Share Reader constructions for it
numerals (quantity) 64.7%
coordination / relative clause 48.3%
how many questions 24.4% 0
possession (has/have) 18.4% 0
transfer verbs (bought, gave, ate) 14.6% 0
quantitative comparison (twice as many) 10.0% 2 (ordering only)
explicit if/then 0.1% 4 — 21% of the inventory

Read rate: 1.28% (23 of 1,798 sentences; 93.16% fail as no_template_match — upstream of vocabulary, upstream of every flag). The relation kinds the ADR prescribes are precisely the ones missing. Not packs (0.67%; unknown_morphology never fires). Not wiring (the failure is before any flag is consulted). Design-to-implementation inversion.

F-C · The template architecture cannot produce chunk lifts — only overfit slivers

An enumerative parser generalizes by exactly zero: each new construction is a hand-fitted rule matching one surface shape. 19 constructions → 1.28%. Reaching 50% coverage this way means hundreds of hand rules, each an overfit. Chunk-sized lifts are architecturally unavailable from this front end — which is why none have appeared despite everything downstream working.

F-D · Geometry participates in exactly two cognitive mechanisms — and both are stranded

  1. Attention. use_salience (default ON) computes field curvature (SalienceOperator) → AttentionOperator → allowed vocabulary indices, on the generic pipeline lane. But deduction_surface and curriculum_surface intercept before generic dispatch — so the only lanes that ever earned licences bypass the one serving-path mechanism the geometry has. (Also: use_salience is one of the two default-ON flags with no recorded rationale — flag register §1.)
  2. The relation compiler. core/physics/relation_compiler.py compiles an affine relation into a ProblemHamiltonian whose ground state is the answer as a null point — deliberately never evaluating scale·input + offset in Python. This is real geometric computation: a relation encoded as an operator acting on state. It is off-serving, Tier-1-only (single affine relation), and fed by a math reader that decides 5 of 500 holdout cases (G-21).

Both readers — logic (1.28%) and math (1.0%) — are enumerative front ends starving engines that work.

F-E · The §5 NO-GO killed the alignment bridge; the composition bridge was never tested

§5 refuted structure-as-point-positions aligned by conformal Procrustes under similarity: the quotient that delivers attribute-invariance annihilates structural contrast. Its own scope note excludes other Cl(4,1) representations — and the untested branch is the one the relation compiler already embodies in miniature: relations as operators, meaning as composition. A transfer is a versor acting on a state, not a point pair. Composition ("what operator sequence produces this state?") lives in a different quotient than alignment ("do these configurations match?"), and the §5 argument does not reach it.

Summary sentence: the engines work, the substrate works, the discipline works; the perception layer violates its own ratified design, feeds <2% of real input to the engines, and cannot generalize by construction. Fix perception once, compositionally, per the design that was already ratified — and every downstream engine's capability multiplies instead of crawling.


2. The plan

Sequenced per docs/conceptualizing_engineering_mastery.md: measure → decide the paradigm → build once → reconnect → delete. Nothing is built before its paradigm question is answered; nothing survives that the new layer supersedes.

Phase 0 · Pin the ground truth · S

  • G-24 in the gap register: findings F-A…F-E, Tier A (it re-scopes Track B and Track C's entry conditions).
  • The read-rate lane (discharges G-21's open ask): evals/perception/read_rate.py measuring sentence-level read rate on holdout_dev/v1 — logic reader and math reader, refusal taxonomy included. Pinned as a floor ratchet (1.28% / 1.0% at 0e1be8be): the number may only rise, and a rise is a reviewed decision. This is the metric the arc is accountable to — capability, not machinery.

Phase 1 · The §2 experiment — compositional core-primitive reading · M · pre-registered, GO/NO-GO

The §5-shaped experiment for the untested branch. Hypothesis H2: a reader that (a) maps text onto the four ratified primitives — containment, transfer, accumulation, comparison — plus the Number and Object core-systems; (b) encodes each relation as an operator (the relation_compiler pattern, generalized); and (c) derives sentence meaning by composition of operators — generalizes multiplicatively: built from k atomic constructions, it reads novel compositions it was never shown.

Pre-registered criterion, committed before the run (same discipline as 299c92be):

  • Coverage: ≥ an order of magnitude over the enumerative ceiling on held-out holdout_dev/v1 sentences — target ≥ 30% sentence read-rate from ≤ 30 declared primitives (vs 19 templates → 1.28%).
  • Honesty: zero wrong readings. A mis-read is strictly worse than a refusal (G-2's whole lesson); every reading is checked against a gold role-assignment on a labelled slice.
  • Compositionality proof: held-out compositions (novel primitive sequences) must read correctly with zero per-composition rules — the assertion that separates a compositional mechanism from a bigger template pile.

NO-GO branch, declared now: if composition over geometric operators does not generalize, the honest conclusion is that Cl(4,1) is a state substrate, not a comprehension mechanism — and the reader is rebuilt as a principled symbolic compositional grammar (small combinator core + declared lexicon) instead. Either verdict exits the template treadmill; a well-controlled NO-GO is full credit, as §5 proved.

Phase 2 · Build the perception layer per the winner · L

One front end replacing both readers, structured as the repo's own governing pattern (ADR-0263 rule 5 — declared in the table, not the call site):

  • A small combination core (code): role binding, operator composition, quantity/entity tracking. This is the only part that is code, and it does not grow with coverage.
  • A construction lexicon (data): constructions and lexical mappings as declared tables. Growth = adding rows, not writing parsers. The gate cost of new coverage is a table diff, reviewable in one glance — the anti-overfit property, made structural.
  • Wired to both engines: role-predicate graphs → proof_chain (logic); quantity relations → relation_compiler corridor (math). quantity_kernel (Number) and entity tracking (Object) as the two core-systems the ADR names.

Phase 3 · Reconnect the corridor to serving · M

parse_and_solve → Hamiltonian corridor is off-serving today. When the new perception layer feeds it, it goes through the now-honest licence machinery (post-R-13/R-8: distinct evidence, split outcome mix, wrong=0-or-refuse). Capability target measured on the pinned lane: holdout decision rate 1% → tracked leaps as primitive coverage composes. Lifts arrive in chunks or the paradigm is wrong — that is the falsifiable commitment.

Phase 4 · The deletion wave · Sthe "scrap what earned scrapping" half

  • G-3's template-widening program: superseded. No more hand constructions in the enumerative reader; it stays serving for the logic bands it already handles until Phase 2 supersedes it in place (nothing torn out before its replacement proves out — §6's own discipline, applied honestly this time).
  • Curriculum-serve machinery: parked. It licenses nothing (R-8 measured: zero bands), and its earnable capability is declining to answer. The corpus is kept; the lane sleeps until the new layer gives it something to license.
  • sensorium/ stays parked behind P-3's criterion, which is now honest: no modality enters while text perception is at 1%.
  • The 15 gate-unreachable suites get re-examined as lanes consolidate — deletion first, promotion second, per philosophy 1.

Phase 5 · Governance · SShay's, prepared to cost one word each

  • ADR-0252 amendment: record that §2 stage 1 was implemented in inversion of its own text (banned mechanism, wrong primitives), and bind the §6 build clause to Phase 1's pre-registered verdict.
  • use_salience ruling: it is default-ON with no recorded rationale and the licensed lanes bypass it. Phase 2 makes attention either load-bearing on the new lane (keep, document, measure) or decorative (off). The flag register's "no criterion recorded" entry gets its criterion.
  • Ratchet: the read-rate floor may only rise; every phase reports against it.

2b. Pass-3 amendments — from the third external audit (2026-07-28), verified in-tree

A red-team audit was cross-examined against the source. Three of its six faults were stale or mis-attributed (see the triage in 31-hindrance-audit.md), but its direction flushed out two subsystems this plan's own author had missed — and they change Phases 12 from "build" to "connect and test":

  • The faithful §2 reader already exists, dark. core/semantic_primitives/ (typed Container, ConservationLaw, DimensionalType"linguistic → field compilation") feeds generate/linguistic_pipeline/ (layers A/B/C + field_integration.py, 51 geometric refs): surface text → typed constraints → conformal points / composed rotorsversor_condition + GoldTether closure. Nothing on the serving side calls it. So F-B sharpens: the ratified design was not merely inverted by the serving reader — it was also implemented faithfully in a parallel pipeline that never reached dispatch. Two readers: the wrong one serving, the right one dark.
  • The recognizer junction is built, not blocked. core/cognition/pipeline.py step 0b (ADR-0144) attaches DerivedRecognizer (anti-unification) and can derive the articulation graph from the admitted EpistemicNode — behind recognition_grounded_graph = False, one of the flag register's four "waiting on a transition window that has not been closed" entries.

The pattern, named once: linguistic_pipeline, the ADR-0144 recognizer step, and relation_compiler are three instances of one class — correct mechanisms built dark behind unruled flags while enumerative stopgaps serve. The flag register's §3a hesitancy cluster (recognition_grounded_graph, realizer_grounded_authority, forward_graph_constraint, unified_ingest) is this same unfinished migration, seen flag-side. The disease is not "never built"; it is transition windows that never close.

Consequences for the phases:

  1. Phase 1 (H2) runs on existing machinery, not new scaffolding — extend layer_a_english to the four ratified primitives and encode relations as operators through field_integration's composed-rotor path. Adopted from the audit verbatim into the pre-registration: an explicit non-collapse criterion — the §5 add-vs-subtract minimal pair (residual exactly 0.0 under similarity alignment) must show non-zero relational contrast under operator composition, as a named must-pass case.
  2. Phase 2 starts from the dark-bridge inventory (the four §3a flags + the linguistic pipeline), wiring and measuring before writing anything new — "less machinery" made concrete.
  3. The use_salience ruling moves from Phase 5 to before Phase 3 — the read-rate lane (Phase 0) is pre-salience and unconfounded, but serving evals are not; an undocumented default-ON attention mask must be ruled before licences are measured through it.

3. What this plan deliberately does not do

  • It does not touch core/physics, the algebra, the reliability gate, or the ledger discipline. Those are correct and load-bearing.
  • It does not delete the enumerative reader before its replacement proves out — supersession-in-place, per the ADR's own preserved rule.
  • It does not promise the geometric branch wins Phase 1. It promises the question is decided the way §5 was: pre-registered, cheap, and honest either way.

4. Relationship to the executed assessment arc

The 2026-07-28 arc (30 commits, 797ebad5..0e1be8be) built the instruments this plan depends on: honest licences (R-13, R-8), the flag register, the reachability ratchets, the pre-registration precedent, and the eleven standing philosophies. None of it moved capability — and F-C explains why nothing could have: the arc hardened a system whose perception layer cannot generalize. This plan is the capability half the enforcement half was for.