core/docs/assessment/20-component-cards/realize-phase.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

4.5 KiB

realize-phase — generate/realize/ (and the reader that feeds it)

Kind: zone→component descent · Parent: M3 · Assessor: Fable 5 (Phase 3) Verified at: 8927c563 (2026-07-27) Liveness: live-internal, flag-gated (demoted from the map's live-serving) · Fitness: fit (the phase) — with its feeder under held fabrication findings · Topology role: runtime boundary

REALIZE — "integrate comprehended structure into the held self" (roadmap Step 3). If M1 is knowledge at rest and DETERMINE is answering from it, REALIZE is the moment comprehension becomes held: a reading of the user's words is written into session memory as a typed, SPECULATIVE, as-told record. It is the exact point where a misreading becomes a belief — which is why the fabrication findings matter most here.

Disambiguation (a naming trap, recorded permanently)

generate/realize/ (knowledge realization — this card) and generate/realizer.py (surface realization — the articulation renderer, M4) are unrelated mechanisms with confusable names. The map's realize-phase zone is the former. Any future search for "realizer" work must state which one it means.

What it is / What it does

Four modules, 645 lines: realize.py (425 — realize_comprehension, realize_derived, Realized/NotRealized/RealizedRecord, Derivation), quantitative.py (135 — realize_quantitative), recall.py (62 — recall_realized, DETERMINE's read path), __init__.py. Writes go through the INV-21-allowlisted vault writer; records carry epistemic_status="speculative" and derived records carry full Derivation provenance so replay re-derives and re-verifies.

Call graph (verified): chat/runtime.py:1367 _accrue_in_turnrealize_comprehension (gate: accrue_realized_knowledge=False default, not daemon-forced); generate/determine/consolidate.py:44realize_derived (gate: consolidate_determinations, daemon-forced); derived_close_proposals.py:25recall_realized. Same demotion as determine-phase: no default serving turn reaches this package.

The feeder — where the fabrication findings live

_accrue_in_turn comprehends via generate/meaning_graph/reader.py::comprehend and generate/meaning_graph/relational.py::comprehend_relationalthis is the two-grammars reader: 19 constructions against the writer's 1739, overlap 6, and fabricates on 22 more (every dog is a mammalmember(every_dog, mammal); Given: furthermore; p implies q; p.asserted(furthermore) recited back as a served premise). Those findings are measured and pinned in PR #138, held for ADR + ratification — recorded here because REALIZE is where a fabricated reading would become a held belief, not re-discovered, not fixed.

The architecture note that follows from this placement: REALIZE itself is sound — it faithfully holds whatever the reader hands it, at honest SPECULATIVE standing. The truth defect class is entirely upstream (the reading), which is consistent with the project's fix-upstream doctrine and with holding the fixes for a serving-truth ADR.

Contract & evidence

  • INV-21 (allowlisted writer), INV-22/23 (SPECULATIVE default), INV-29 (only vault/store.py transitions status) — pins: tests/test_architectural_invariants.py.
  • Inline realization behavior — tests/test_inline_realization.py ("comprehensible declarative accrues; question determines; off-by-default leaves the turn untouched").
  • Predicate-generality — relational.py:8: the spine consumes relational comprehension unchanged; realize_comprehension is predicate-general (no per-predicate special case in the writer).

Judgment

Fitness: fit. Small, typed, provenance-complete, honestly gated. The one structural risk is inherited, not local: the phase will hold whatever it is fed, so its integrity ceiling is the reader's fidelity — 19-wide today, fabricating on 22.

Honest wrinkles: as with determine-phase, the most life-like capability in the system defaults dark. realize_quantitative was not traced to a live caller in this pass (likely lane-side); unverified — Phase 4 should not count it live without a pointer.

Open questions: when the #138 fabrication ADR lands, should REALIZE gain a defensive assertion (refuse to hold a reading whose construction is outside the reader's verified inventory)? That would convert reader-inventory truth into a mechanical gate at the holding boundary. (→ Phase 4 / the fabrication ADR)