Fills the taxonomy with evidence. Every liveness label re-verified at
8927c563 rather than inherited from the 2026-06-09 system map. Three
inherited claims did not survive, and every one of them came from a
document while every falsification came from reading code.
CORRECTIONS:
- Phase 0 Finding 0-C was WRONG. The L11 always-on process IS BUILT:
chat/always_on.py::run_continuous, chat/always_on_daemon.py::run_daemon
(single-instance lock, SIGINT/SIGTERM stop, load-time identity guard),
CLI `core always-on`. Landed 2026-06-14 — five days AFTER the system-map
snapshot that declared no forever entrypoint exists. The real finding is
sharper: built, with a complete falsifiable soak harness, never run to a
recorded artifact, and enforced by NO SUITE AT ALL.
- CR-1 attention/allocation is not a missing layer but a live undocumented
one: generate/stream.py:255-263 runs SalienceOperator -> AttentionOperator
and gates every generation step; use_salience defaults True. It owns the
~73%-of-turn hot path and has no ADR, no card, no layer in any ratified
articulation. (generate/salience.py COMPOSES core.physics.salience — not
a duplicate; that false lead is recorded, not propagated.)
- CR-2's components exist: DriveGradientMap and ExertionMeter are both
constructed in chat/runtime.py. DriveGradientMap is NEVER READ — textbook
decoration by the sabotage test. ExertionMeter runs but feeds telemetry
only; fatigue gates no decision. The claim survives and sharpens: CORE has
drive objects and no chooser.
STAGE-COVERAGE AUDIT: 7 of 9 covered; non-text ingest uncovered (59
sensorium modules reach no serving path); the cycle's runner claimed-only.
CROSS-CUTTING: F-1 built-and-off is the dominant pattern (17 flags default
False, only deduction_serving ratified ON) with no register of the set or
what would flip it. F-2 enforcement lags capability — orphaned pins are
undetectable because suite tuples are hand-curated. F-3 formation's
six-boundary trust standard is not applied at M2, the surface facing
untrusted user text. F-4 ADR/code contradictions are load-bearing (the
daemon has no ADR while ADR-0146 rejected the daemon shape; ADR-0252's
"34 surface organs" does not reproduce — 18 found). F-5 what is excellent,
stated plainly: the typed learning boundary, selection-not-rewrite, the
non-hardening invariant, fail-closed lane shapes.
No layer is wrong-solution. Two candidates deferred to Phase 4 with
evidence: Wilson/replay independence in licensing, DriveGradientMap.
7.9 KiB
M2 — Afferent Boundary
Kind: layer · Parent: CORE · Assessor: Opus 5 (Phase 2)
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.
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)