core/docs/assessment/05-phase3-findings.md
Shay 901f028f32 docs(assessment): Phase 3 — component descent; the correction chain continues into code
Eight component cards in 20-component-cards/: the four zero-subsystem zones
(comprehend-organ, determine-phase, realize-phase, sensorium-falsification)
plus always-on-process, derivation-organs, surface-selection,
attention-allocation. Plus 05-phase3-findings.md and correction banners on
the M6 and M4 layer cards.

CORRECTIONS (C-1..C-5):
- THREE more map live-serving labels demoted to live-internal:
  comprehend-organ (a MATH SETUP ROUTER, not chat comprehension — imported
  by neither serving entrypoint), determine-phase and realize-phase (both
  behind accrue_realized_knowledge=False / idle flags; NO default-config
  serving turn touches any of the three).
- Phase 2's M6 card overstated ephemerality: Shape B+ persistence exists
  (persist_session_state, daemon-forced, "restored bit-exactly").
- Phase 2's M4 card understated the resolver: surface_resolution.py IS a
  declared-precedence resolver for the pipeline seam; only the upstream
  composer arms remain ordered branches. Third Door refines to "extend the
  existing pattern upstream."
- 34-vs-18 RESOLVED: 18 resolve_promotable_* organs existed AT the ADR-0252
  ratification commit; "34" counted modules (~32-33). No consolidation has
  occurred; the governing ADR's headline number has no stated basis.
- The 2026-07-25 verification doc's claim that accrual "is enabled by the
  production L10 process" is contradicted: CONTINUOUS_LIFE_CONFIG_FLAGS is
  exactly {persist_session_state, consolidate_determinations,
  strict_identity_continuity}.

NEW FINDINGS (F-6..F-10):
- F-6 THE CONTINUOUS LIFE MAY CONSOLIDATE AN EMPTY SET: the daemon forces
  the consolidator ON but not the accruer, and realize_comprehension — the
  only turn-path writer of realized facts — sits behind the accrual flag.
  The two halves of the lived learning loop are gated by different flags
  and only one is forced. Undocumented either way.
- F-7 ADR-0008's Allocation Physics LANDED, mutated, ungoverned: curvature
  kernel -> salience adapter -> attention threshold plan -> candidate
  intersection, with budget feedback making attention SELF-NARROWING
  across a walk. InhibitionMask is decoration. top_k=16/threshold=0.3 have
  no recorded derivation. CR-1 closes with a one-page ADR.
- F-8 two load-bearing naming traps (comprehend-organ; realize vs realizer).
- F-9 REALIZE is sound; its ceiling is the reader that feeds it (the #138
  fabrication locus — measured/pinned/held, recorded not re-discovered).
- F-10 _accrue_in_turn swallows exceptions into a no-op with no telemetry.

Phase 4 seed list consolidated: 8 hindrance candidates, 10 gap candidates,
each with its deciding authority. Method note recorded: three phases of
corrections, and nothing in the chain was caught by re-reading documents.
2026-07-27 15:57:36 -07:00

8.8 KiB
Raw Blame History

Phase 3 — Findings, Corrections, and the Phase 4 Handoff

Executor: Fable 5, 2026-07-27. Verified against: forgejo/main @ 8927c563. Deliverable: eight component cards in 20-component-cards/ — the four ⚑ zero-subsystem zones (comprehend-organ, determine-phase, realize-phase, sensorium-falsification) plus always-on-process, derivation-organs, surface-selection, attention-allocation.

The assessment's correction chain continued into its third phase, in the same direction every time: documents (including this assessment's own earlier phases) overstate or understate; code decides. Phase 2 corrected Phase 0; Phase 3 corrects Phase 2 twice and the system map three more times.


1. Corrections

C-1 — Three map live-serving labels demoted to live-internal. comprehend-organ (core/comprehension_attempt/ — imported by neither serving entrypoint; its consumers are the flag-gated ask path, proposal review, and eval lanes), determine-phase, and realize-phase (both reachable only through _accrue_in_turn / idle_tick, gated by flags that default False). No default-config serving turn touches any of the three. The map called all three live-serving; the serving path they were presumed to sit on runs through proof_chain/curriculum_surface/the realizer instead.

C-2 — Phase 2's M6 card overstated ephemerality. "T1 vault and field discarded on exit by design" is the default-config posture. Under the daemon, persist_session_state=True activates Shape B+ persistence ("restored bit-exactly", chat/always_on.py:9; sites at chat/runtime.py:893952). The residency mechanism exists, is opt-in, and is daemon-forced; what remains open is its exact coverage and horizon proof. Banner added to the M6 card.

C-3 — Phase 2's M4 card understated the resolver. core/cognition/surface_resolution.py (494 lines) is a declared-precedence resolver for the pipeline seam (served-bytes-wins base selection, canonical-first truth path, abstention, hedge admissibility, substrate folds). The accretion concern survives only for the upstream composer arms in chat/runtime.py. The Third-Door candidate refines from "create a resolver" to "extend the existing resolver's pattern upstream." Banner added to the M4 card.

C-4 — The 34-vs-18 organ discrepancy is resolved: basis mismatch, not paydown. At the ADR-0252 ratification commit itself (1ccef491) the tree already had exactly 18 resolve_promotable_* entry organs across 33 tree entries. "34" plausibly counted modules (~3233 including support modules), never entry organs. Consequences: no consolidation has occurred since ratification, and the governing ADR's headline number has no stated basis — a one-sentence amendment fixes it.

C-5 — A prior verification document is contradicted at this SHA. architecture-assessment-verification-2026-07-25.md §2 claims accrue_realized_knowledge "is enabled by the production L10 process." CONTINUOUS_LIFE_CONFIG_FLAGS is exactly {persist_session_state, consolidate_determinations, strict_identity_continuity} — accrual is not in it.


2. New findings

F-6 — The continuous life may consolidate an empty set. The daemon forces the consolidator on (consolidate_determinations) but not the accruer (accrue_realized_knowledge) — and realize_comprehension, the only turn-path writer of realized facts, sits behind the accrual flag. As coded, the always-on life's Step-D learning loop may have nothing to work on unless facts are seeded some other way. Either the flag set is incomplete or the dormancy is intended; neither reading is documented. This is the sharpest single new finding of Phase 3: the two halves of the lived learning loop are gated by different flags and only one is forced.

F-7 — The allocation layer landed, mutated, without governance. ADR-0008's Allocation Physics is live in composed form: physics curvature kernel → generation-facing SalienceOperatorAttentionOperator scalar-threshold plan → candidate intersection in the walk, with the salience budget fed back so attention self-narrows across a walk (stream.py:637). InhibitionMask is decoration (imported by __init__ only, never constructed on any path). The tuned constants (top_k=16, threshold=0.3) have no recorded derivation. CR-1's ruling question is now precise: own the flag, the two constants, the feedback loop, and the mask's disposition — a one-page ADR.

F-8 — Two naming traps are load-bearing. comprehend-organ is a math setup router, not the chat comprehension organ (that is generate/meaning_graph/reader.py — the two-grammars reader, 19 constructions, fabricating on 22, measured/pinned/held). generate/realize/ (knowledge realization) vs generate/realizer.py (surface realization) are unrelated mechanisms with confusable names. Both traps would misdirect a grep-first investigation; both cards carry permanent disambiguation.

F-9 — REALIZE is sound; its ceiling is its feeder. The realize phase holds whatever the reader hands it, at honest SPECULATIVE standing, with full derivation provenance. The truth-defect class is entirely upstream in the reading — consistent with fix-upstream doctrine and with holding the #138 fixes for a serving-truth ADR. A defensive option for that ADR: refuse to hold a reading whose construction lies outside the reader's verified inventory, converting inventory truth into a mechanical gate at the holding boundary.

F-10 — A silent-failure pinhole in a typed layer. _accrue_in_turn wraps the reader/DETERMINE/REALIZE chain in a broad guard that converts any exception into a no-op accrual with no telemetry. Honest as a backstop; invisible as a failure signal.


3. Phase 4 seed list (consolidated from Phases 23)

Hindrance-audit candidates (31-hindrance-audit.md):

  1. Wilson/replay independence in license counting — possible wrong-solution in the counting basis; 21/25 bands affected (Phase 2).
  2. DriveGradientMap constructed-never-read; InhibitionMask exported-never-constructed — deletion candidates (mastery step 2).
  3. The empty-string refusal at the public str boundary — truth constructed, then discarded (M4/surface-selection).
  4. Composer-arm precedence: extend surface_resolution's declared-precedence pattern upstream (refined Third Door).
  5. The F-6 flag-set incoherence (consolidator without accruer).
  6. Tuned constants without derivation at the semantic center (top_k=16, threshold=0.3, admissibility_margin=0.4 has a recorded derivation — the contrast is instructive).
  7. M2 lacking formation's trust-boundary table (F-3).
  8. ADR/code contradictions: unowned daemon vs ADR-0146's Shape-A rejection; ADR-0252's unreproducible "34"; the 2026-07-25 doc's accrual claim (C-5).

Gap-register candidates (30-gap-register.md):

  1. The #138 fabrications — pre-labeled measured & pinned, fix held for ADR + ratification.
  2. Reader inventory 19-wide vs writer 1739 (close fabrications before widening, per standing ruling).
  3. No suite runs any l10/always_on pin; no soak artifact; no nightly (and the local-first/Mac-runner doctrine makes "nightly" itself need a ruling).
  4. Non-text ingest uncovered; sensorium's 59 modules disconnected; no entry criterion.
  5. No flag-default register (F-1: 17 flags, only deduction ON, no document states the set — now nuanced by the daemon's forced trio).
  6. No orphaned-pin meta-check (F-2 — the mechanism by which M6's harness went unscheduled).
  7. Curriculum query-scoping (the ADR-0264 §4.1 blocker); the absent curriculum serve ledger.
  8. CR-2 agenda/drive: mechanisms without a chooser (confirmed at component depth); CR-3 efferent ruling; CR-4 temporal stance.
  9. ADR-0252 §5 experiment unrun — the top open item, now with stakes note: GSM8K's demotion mispriced the experiment, but the paradigm governs all future comprehension.
  10. The Candidate Register items needing one-line rulings vs real design work — separate them.

Verification obligations for Phase 4: the registers decide nothing — every entry carries evidence pointers and names its deciding authority (ruling vs ADR vs mechanical fix). Rank by leverage, not ease, per the AGENTS.md protocol. Where a hindrance names a better home, name the evidence too.


4. Note on method, for the record

Three phases in, the correction ledger reads: Phase 0 inherited a stale map claim (always-on "unbuilt"); Phase 2 caught it by reading code, then itself overstated ephemerality and understated the resolver; Phase 3 caught both by reading deeper, and demoted three more map labels. Nothing in this chain was caught by re-reading documents. The assessment's value is exactly proportional to how much code each phase actually read — which is the empirical vindication, inside the assessment itself, of AGENTS.md protocol step 1 and the mastery framework's demand that constraints trace to verifiable ground.