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.
4.8 KiB
determine-phase — generate/determine/
Kind: zone→component descent · Parent: M3 (serve seam → M4) · 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 · Topology role: runtime boundary
The open-world DETERMINE gear: answer a question from what the engine has realized in this conversation, affirmatively or not at all. INV-30 is its constitution — it constructs only
Determined(answer=True)or refuses; absence never refutes. It is the closest thing CORE has to "thinking with what it just learned," and it is off by default.
What it is / What it does
Eight modules, 1071 lines: determine.py (the gear), consolidate.py (Step D — one semi-naive layer of member/subset closure per idle tick, every hop verified by the proof_chain ROBDD before realize_derived writes it back; member ∘ member structurally unreachable; four declared strict-order predicates in TRANSITIVE_PREDICATES), estimate.py + estimation_license.py (Step E — converse-guess under an earned SERVE license, always disclosed [approximate]), derived_close_proposals.py (PR-2 bridge — eligible derived facts emitted as proposal-only artifacts), render.py (42 — honest rendering: SPECULATIVE grounds read "as I was told", never "verified").
The gating map (all call sites verified)
| Entry | Caller | Gate | Default | Daemon forces? |
|---|---|---|---|---|
determine() / render_determination |
chat/runtime.py:1364,1303 via _accrue_in_turn / _surface_determination |
accrue_realized_knowledge |
False | No |
consolidate_once |
chat/runtime.py:1041 via idle_tick |
consolidate_determinations |
False | Yes |
estimate_converse + serve_license |
chat/runtime.py:1420 |
estimation_enabled |
False | No |
| derived-close proposal emission | chat/runtime.py:1054 via idle_tick |
review_derived_close_proposals |
False | No |
A default-config serving turn never reaches this package. The map's live-serving label is wrong at this SHA: live-internal, flag-gated, exercised by lanes (evals/close_derived_climb, evals/determination_closure, evals/determination_estimation).
Two discrepancies this table surfaces
- The daemon enables the consolidator but not the accruer.
CONTINUOUS_LIFE_CONFIG_FLAGSforcesconsolidate_determinations=Truebut leavesaccrue_realized_knowledge=False— yetrealize_comprehension(the only turn-path writer of realized facts) sits behind the accrual flag. Under the continuous-life config as coded, the idle consolidator may have nothing to consolidate unless realized facts arrive some other way. Either the flag set is incomplete, or consolidation under the daemon is deliberately dormant-until-seeded. Unresolved; needs a ruling or a test that seeds through the lived path. - A prior verification document is contradicted at this SHA.
docs/research/architecture-assessment-verification-2026-07-25.md§2 statesaccrue_realized_knowledge"is enabled by the production L10 process." The daemon's flag set does not include it. Either the doc anticipated a change that never landed, or the flag was later removed. Doc/code discrepancy — record, don't guess.
Contract & evidence
- INV-30 (True-or-refuse; three visible
Determinedconstruction sites; typed rejection of forgedClosedFrame) — pin:tests/test_architectural_invariants.py. - Derived facts stay SPECULATIVE (sound inference never upgrades premise standing); replayable
Derivationprovenance (premisestructure_keys + rule +entailedverdict) — contract:runtime_contracts.md§Idle consolidation. - wrong=0 by proof-gating: only
ENTAILEDconclusions are written — lane:evals/close_derived_climb(fixed-point climb, monotone, saturated tick consolidates 0).
Judgment
Fitness: fit. The gear is small, typed, proof-gated, and honestly rendered. The INV-30/INV-31 firewall against closed-world machinery is among the cleanest boundaries in the repository.
Honest wrinkles: the entire "think with what you learned this session" capability — arguably the most alive-feeling behavior CORE has — is dark on every default path and only partially lit by the daemon. The _accrue_in_turn docstring calls DETERMINE and the readers "total (typed results, no raises)" while wrapping them in a broad defensive guard; the guard is honest backstop, but any exception it eats disappears silently into a no-op accrual (_last_turn_accrual=None) with no telemetry of the swallow. Flagged for Phase 4 as a small silent-failure surface inside an otherwise typed layer.
Open questions: the daemon flag-set completeness (→ ruling); should accrual-swallowed exceptions be counted in telemetry? (→ Phase 4)