From 339bfd3776b1b2c719d0490c4fe2f33c4a02ad2f Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 28 Jul 2026 17:22:40 +0000 Subject: [PATCH] =?UTF-8?q?docs(plans,assessment):=20fourth-audit=20triage?= =?UTF-8?q?=20=E2=80=94=20the=20faithful=20=C2=A72=20reader=20exists,=20da?= =?UTF-8?q?rk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Claude-Session: https://claude.ai/code/session_01Wcw2pnMBwyvmNyQg4uPEt4 --- docs/assessment/31-hindrance-audit.md | 10 ++++++++++ docs/plans/2026-07-28-perception-arc.md | 14 ++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/docs/assessment/31-hindrance-audit.md b/docs/assessment/31-hindrance-audit.md index af545e92..d7ceb690 100644 --- a/docs/assessment/31-hindrance-audit.md +++ b/docs/assessment/31-hindrance-audit.md @@ -191,3 +191,13 @@ For symmetry with the Candidate Register's "considered and not registered" — h 6. ***The unifying proposal — a root `contracts.toml` holding every declared relationship — is "the highest-leverage single change."*** The *principle* is already this repository's (ADR-0263 Rule 5: declared in the table, not the call site) and is implemented in the very file the assessment cites: `core/epistemic_state.py` declares `GroundingSource` as a closed `Literal` plus a runtime-iterable `GROUNDING_SOURCES` frozenset, single-sourced across the runtime, the lane validator, the Workbench API coercion, and a build-time enum-coverage test under `workbench-ui/` — and its docstring records the bug that pattern caught (unregistered `deduction`/`curriculum` labels floored to `"none"`, *"recording a proved answer as ungrounded in a durable audit artifact"*). Centralizing four tables with four different authorities and lifecycles into one file adds a fifth copy that must agree with four generators; it is a ratchet to guard ratchets (standing philosophy 2). **Cleared as a proposal, kept as an observation:** nobody can currently enumerate *"which declared tables exist and what enforces each"* — that is one page, folded into PR-5, not a new mechanism. **What it got right, and it is worth saying:** proposal 1 pointed at the pack/domain seam. Every specific was wrong, and reading the code there anyway found **G-23** — a real, load-bearing, one-directional check on the band whose license is next to be earned. Bad method, useful direction. The triage rule survives unchanged and earned a second demonstration: *every rejected proposal above failed on a file its author did not open.* + +- **A fourth external audit (2026-07-28, "red-team dissection", six faults) — the best-anchored of the four, and the first to catch a hole in *our own* sweep.** Verified fault by fault at `a4f567f0`: + 1. ***"Integration hole; `comprehension_attempt/` is a confession"*** — **exhibit wrong, direction right.** `core/comprehension_attempt/` is the typed *failure-analysis* layer (attempt records → failure families → contemplation/proposal loop), off-serving **by design**, zero geometry — instrumentation, not an abandoned engine. But chasing the audit's adjacent claim found what G-24's own sweep missed: **`core/semantic_primitives/` + `generate/linguistic_pipeline/`** — a faithful implementation of ADR-0252 §2 (typed `Container`/`ConservationLaw`/`DimensionalType` → `field_integration.py`, **51 geometric refs**, conformal points / **composed rotors**, `versor_condition` + GoldTether closure) — **unreached from serving.** F-B amended: two readers exist; the inverted one serves, the faithful one is dark. Folded into the perception arc §2b. + 2. ***"Salience is a hardcoded heuristic in the parser, or a ghost"*** — **both horns false.** It is `core/physics/salience.py` (field curvature, ADR-0008 lineage), invoked from `generate/stream.py`, absent from the reader entirely; licensed lanes bypass it. The true half (default-ON, no recorded rationale) was already registered in the flag register §1. Its salience-timing point was good and is adopted: the ruling moves ahead of Phase 3's serving evals. + 3. ***"Curriculum lane is negative value"*** — direction already executed (parked, Phase 4); "negative" overstates — the lane's failure produced the outcome-mix rule, the honesty machinery now guarding every future licence. + 4. ***"`sensorium/` is premature infrastructure"*** — coincides with P-3, ruled a day earlier. Its cited authority ("Axiom 6, Compilation-last") appears **nowhere in this repository** — it is founding-doctrine upload language, not repo doctrine. + 5. ***"W-007 blocked behind an uncommitted L10 process-shape decision; L10 is the single point of failure"*** — **stale by two months, and sourced from the retired instrument.** The "master plan" it reasons from is `docs/audit/substrate-liveness-ratchet.md` — marked historical by PR-3 *this same day*. L10's shape was committed in ADR-0146 (2026-05-25), the daemon landed `18e25580` (2026-06-14), and W-007's mechanism is **built**: `core/cognition/pipeline.py` step 0b attaches `DerivedRecognizer` (ADR-0144) behind `recognition_grounded_graph = False`. H-9's mechanism — an authoritative-looking dead instrument converting "I should check" into "I already checked" — demonstrated on an external auditor, which is exactly why the banner PR-3 wrote quotes the mechanism it retires. + 6. ***"H2 has no experiment designed"*** — true when written, superseded the same day by the perception arc Phase 1. Its one genuine addition is adopted verbatim: the **non-collapse criterion** (the §5 `add`-vs-`subtract` minimal pair, residual exactly 0.0 under similarity, must show non-zero relational contrast under operator composition) joins the pre-registration as a named must-pass case. + - ***Its closing ("insert one junction; everything else stays exactly as it is")*** — **internally inconsistent**: a junction downstream of a 1.28% reader receives 1.28% of input, which its own priority stack (freeze the enumerative reader) concedes. The junction instinct is right and now has a concrete referent — `field_integration`'s composed-rotor path — but connecting it *is* the perception rebuild, not an alternative to it. + - **The pattern the cross-examination surfaced, worth more than any single fault:** `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 cluster is the same disease seen flag-side. CORE's failure mode is not "never built"; it is **transition windows that never close.** Recorded in the perception arc §2b, where Phase 2 now begins from the dark-bridge inventory rather than from new code. diff --git a/docs/plans/2026-07-28-perception-arc.md b/docs/plans/2026-07-28-perception-arc.md index 0af89347..414e3e5c 100644 --- a/docs/plans/2026-07-28-perception-arc.md +++ b/docs/plans/2026-07-28-perception-arc.md @@ -116,6 +116,20 @@ One front end replacing both readers, structured as the repo's own governing pat --- +## 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 1–2 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 rotors** → `versor_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.