§9.8 of the plan — "every card carries a verified_at no older than the last arc
that touched its layer" — is a maintenance contract this directory holds itself
to, and today's arc moved MV, M3, M4, M2, M6 and three component cards. A card
whose stamp falls behind a load-bearing arc is testimony, not evidence, which is
the failure mode the directory exists to replace.
Each card gains a Re-verified stamp at 39331dbc plus an arc note saying what
actually changed under it, not merely that something did:
MV PR-4 + PR-6 landed; G-7/G-9 closed. The layer's finding is sharper than
the card stated: the recurring defect is not ABSENT pins but PINS THAT
EXIST AND DO NOT RUN — four found this arc, each indistinguishable from
coverage in any document.
M3 §5 run to NO-GO, settling the successor-path question. New measurement
G-21: the reader decides 5 of 500 holdout_dev/v1 cases. H-8e corrected.
M4 H-13 fixed — the served-marker honesty contract held where it leaked.
M2 PR-7's table: two boundaries already met, THREE CLOSED as category
differences, one real delta (no audit record per rejection).
M6 PR-9 — the accrual backstop counts and names what it absorbs.
realize-phase / always-on-process / surface-selection — the component-level
versions of the same three.
Plan §Status replaced with the actual board: what landed, what each remaining
item is blocked on, and the six findings this arc added that the assessment did
not have (N-8, N-9, G-21, H-13, H-14, H-8e). README carries the same summary at
the directory's entry point.
The status block says plainly what has NOT moved: comprehension breadth and
proof-of-life. The reader is still 19 constructions wide and decides 1.0% of the
held-out corpus; the 5000-beat soak is still prose with no pinned digest.
Everything landed this arc is enforcement and evidence machinery. Capability
moves in PR-11/PR-12/PR-14/Track B, all four ruling-gated.
Docs only.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wcw2pnMBwyvmNyQg4uPEt4
8.3 KiB
M2 — Afferent Boundary
Kind: layer · Parent: CORE · Assessor: Opus 5 (Phase 2)
Re-verified: 39331dbc (2026-07-28) — see the arc note below.
Verified at: 8927c563 (2026-07-27)
Liveness: partial-wiring-debt (text) / inert (non-text) · Fitness: strained · Topology role: runtime boundary
World → field. M2 is where untrusted reality becomes admissible structure, and it is the only layer whose failure mode is contamination rather than error: everything downstream inherits whatever M2 admits. Its philosophical charge is that admission is an act with consequences — the gate does not merely parse, it vouches. Every entry point is therefore a trust boundary, and normalization is permitted here precisely because this is a declared construction boundary, not a repair site.
Telos stages: listen/ingest Macro role: Admits input into the field under a closure-preserving construction boundary, or refuses it.
Arc note — 2026-07-28 (39331dbc). PR-7 wrote the M2 trust-boundary table (docs/specs/runtime_contracts.md). Measured against formation's six declared boundaries: two already met, three are category differences and are now CLOSED (they presuppose a persisted artifact with citations, which this boundary does not produce), one real delta — no audit record per rejection. Forensic, not containment.
What it is / What it does
ingest/gate.py::inject is the live text path: it converts tokens into field excitation and is one of the explicitly allowed normalization boundaries in AGENTS.md — permitted because injection is construction, not drift repair. core_ingest/ (7 modules) is the ingest compiler. ingest/ itself is small (2 modules). OOV policy is applied at the same seam via packs.OOVPolicy.
sensorium/ (59 modules — the largest non-test, non-generate package after core/) is the afferent track for non-text modalities, plus sensorium.environment.falsification (ADR-0211), a deterministic replay surface comparing expected against actual ObservationFrame evidence with a closed two-verdict set (SUPPORTED / FALSIFIED). Neither verdict promotes anything to reviewed memory or mutates packs, vault, identity, or policy.
Verified at this SHA: sensorium is imported by neither chat/runtime.py nor core/cognition/pipeline.py. The afferent track is off the serving path entirely — consistent with the map's inert label for sensorium-afferent, and consistent with the position paper's honest statement that vision, audio, and motor modalities are planned, not built: the ProjectionHead protocol supports them architecturally; the projection heads do not exist.
Contract
- Inputs: raw user text; (designed) non-text modality frames.
- Outputs: injected
FieldStatesatisfyingversor_condition < 1e-6, OOV decisions,ObservationFrameevidence, falsification verdicts. - Invariants:
- Every accepted field state satisfies the versor condition at the gate — pin: algebra/ingest suites — status: running.
- Normalization is allowed only at declared construction boundaries (
ingest/gate.pyis named explicitly); drift repair is forbidden and may not be disguised by naming. - Falsification bench forbids raw pixels/PCM/event streams/byte payloads/actuator traces in traces; forbids motor-efferent units in v1; forbids learned latents as substrate; forbids probabilistic confidence or tolerance thresholds in verdicts; forbids
generate/*dependencies and vault mutation — pin: sensorium suite (21 files) — status: running. - Trust-boundary defaults: explicit opt-in for arbitrary execution; reject unsafe paths before filesystem access; no hidden background execution.
Design vs build
- Design: ADR-0007 (ingest →
CandidateGeometricPressure→FieldState), ADR-0211 (environmental falsification), ADR-0243 §multimodal ingress,AGENTS.mdallowed-normalization-boundaries rule, formation's six trust boundaries as the adjacent standard (M5). - Build: text path
partial-wiring-debt; non-textinert. - Evidence:
injectis the live serving entry — code-read —chat/runtime.py:115 from ingest.gate import inject— would-fail-if-absent: yes.- Sensorium is absent from both serving entrypoints — code-read (negative) — would-fail-if-absent: n/a; this is evidence of absence.
sensoriumsuite exists with 21 test files — code-read —core/cli_test.py— would-fail-if-absent: yes (the falsification bench is genuinely exercised).unified_ingest=False(core/config.py:243) — measurement — the unified ingest path is built and off by default.
Capacity
- Designed: any modality admitted through a closure-preserving, trust-bounded gate.
- Measured: text only, in production. Non-text afferent machinery is substantial (59 modules) and exercised by its own suite, but reaches no serving path.
- Ceilings: no projection heads exist for vision/audio/motor. The falsification bench is deliberately v1-closed (two verdicts, no probabilistic confidence, no tolerance thresholds) — a scoping decision, not a defect.
Dependencies & provenance
feeds → M0 (field excitation), M3 (tokens, OOV decisions); reads → M1 (packs, OOV policy, vocabulary); verified-by → MV.
Stage coverage
| Stage | Verdict | Evidence |
|---|---|---|
| listen/ingest (text) | covered | inject is on the live path and gate-checks closure |
| listen/ingest (non-text) | uncovered | Sensorium imports nowhere on the serving path; no projection heads exist |
Zone roster: ingest-boundary, ingest-compiler, sensorium-afferent (inert, confirmed by import evidence), sensorium-falsification ⚑ (live-internal; zero subsystems mapped).
⚑ Zero-subsystem zone. sensorium-falsification is the fourth unmapped zone and the only one outside M3. What is known: it corresponds to sensorium.environment.falsification under ADR-0211 with a closed verdict set and an explicit forbidden-list, and its suite runs. What is unmapped: internal decomposition and the boundary against the rest of sensorium/. The system map labels it layer "L12" — a stratum no other CORE document uses. That label should be either adopted deliberately or dropped; it currently exists only in a local, gitignored artifact.
Rollup note: weakest-link rollup, and here it is genuinely informative rather than misleading: M2's text half serves and its non-text half does not.
Judgment
Fitness: strained. The text gate is sound and correctly privileged as a construction boundary. The strain is proportional: 59 modules of afferent machinery reach no serving path, which is the largest quantity of built-and-disconnected code the assessment has located. That is not automatically waste — a deliberately staged capability awaiting projection heads is legitimate — but it is a large standing bet whose entry criterion is nowhere stated.
Honest wrinkles:
- The single most consequential asymmetry in this layer: M5's formation pipeline declares six explicit trust boundaries with content-addressed inputs and outputs and an audit record for every rejection; M2 — the boundary that actually faces untrusted user text in production — has no comparable declared table. Both are "the place the world gets in," and only one of them has a published contract of that rigor. This is a Phase 4 item and, in this assessor's reading, the strongest single hindrance-audit lead outside M6: the standard exists in-repo and has not been applied where the exposure is highest.
sensorium-falsification's "L12" layer label exists in one local artifact and no ratified document. Minor, but it is exactly how a phantom stratum enters an architecture.unified_ingestis built and off; like M5's learning flags, the gap between built and on is undocumented.- The falsification bench's explicit prohibition on motor/efferent units in v1 is the only place in the corpus that takes a position adjacent to Candidate CR-3 (efferent action) — and it is a scoping constraint on one bench, not a system-level ruling. CR-3 remains unruled.
Open questions:
- Should M2 adopt formation's trust-boundary table format? (→ Phase 4 / ruling)
- What is the entry criterion for the sensorium track reaching serving? (→ ruling)
- Adopt or drop the "L12" label (→ Phase 1 taxonomy amendment or ruling)