30-gap-register.md — CORE's first LIVE gap register since docs/gaps.md closed its 26th entry (supersession proposed for ruling). 20 entries in four tiers, each with evidence, deciding authority, and leverage rank: - Tier A (frontier-blocking): G-1 the unrun ADR-0252 §5 experiment (leverage 1 — authorized, scaffolded, verdict-less; the paradigm governs ALL future comprehension); G-2 the #138 fabrications (pre-labeled measured-and-pinned, held for ADR + ratification); G-3 reader 19 vs writer 1739; G-4 CR-2 no-chooser (the AGI-grade conceptual absence); G-5 L10 proof debt (no artifact, no suite, no cadence); G-6 the half-gated lived learning loop. - Tier B (enforcement debt): G-7 orphaned-pin meta-check (the highest- leverage single mechanical change); G-8 flag-default register; G-9 three doctrine laws without verified failing pins; G-10 curriculum scoping + absent ledger; G-11 identity authorization bar unstated. - Tier C (one-line rulings): CR-3 efferent, CR-4 temporal stance, CR-1 attention ADR, the daemon's owning ADR. - Tier D (latent/carried): aspect-arm defect class (generate/templates.py :79, unreachable today), sensorium entry criterion, curriculum-formation bypass (unverified carry), Wilson evidence debt, refusal materialisation. - Plus what is NOT in the register and why (deferred-with-ruling is the scripture model; benchmarks excluded by the completeness criterion). 31-hindrance-audit.md — 11 entries ranked by leverage, each with fitness verdict, evidence, proposed better home, deciding authority; decides nothing. Headliners: H-1 Wilson/replay counting basis (wrong-solution in the counting, not the gating — 21/25 bands short; the re-count may demote licenses and that is the mechanism working); H-2 decoration as testimony (DriveGradientMap, InhibitionMask — deletion per mastery step 2); H-3 the typed refusal discarded at the public boundary; H-4 extend the resolver's declared-precedence pattern upstream; H-8 three record/code contradictions (each one paragraph to fix); H-9 dead instruments standing as if live. Plus five examined-and-CLEARED candidates (the 18 organs' continued service is governance working; pure-Python-by-default is measured-correct; flag-gated conservatism is not hindrance — unregistered darkness is).
12 KiB
The Hindrance Audit
Assessor: Fable 5 (Phase 4) · Verified at: 8927c563 (2026-07-27)
Discipline: A hindrance is something present that works against the goal — a wrong solution for its underlying problem, a responsibility lodged in the wrong owner, a trade-off tuned instead of dissolved, or a record that misleads the next reasoner. Every entry carries evidence, a fitness verdict from the schema vocabulary, a proposed better home, and its deciding authority. Per standing rule: settled rulings are constraints — an entry may flag a ratified decision only on evidence, only for ruling, never as a unilateral recommendation to reverse. This audit decides nothing.
Ranked by leverage (cognitive/structural load removed ÷ effort), per the AGENTS.md protocol — not by ease.
H-1 · License evidence counted on an independence assumption replay violates
Verdict: wrong-solution (the counting basis, not the gating) · Layers: M5
Evidence: Wilson lower-bound licensing (θ_SERVE=0.99, ADR-0175 lineage) assumes independent trials; a replay of the same sealed case is one trial observed again, not a new one. Measured consequence recorded in the prior arc: 21 of 25 ratified bands fall short of their floor when replays are deduplicated.
Why it hinders: the entire earned-license architecture — CORE's mechanism for deserving to serve — rests on the evidence count. An overstated count grants licenses the evidence doesn't support, which is precisely the failure the mechanism exists to prevent. The gate is right; the arithmetic feeding it is not.
Better home: distinct-evidence counting at the seal boundary (count distinct cases; a replay refreshes, never increments), declared in the ledger schema the way ADR-0263 Rule 5 declares absence policy — in the table, not the call site.
Authority: ADR amendment (0175/0263 lineage) + a re-count of the 25 bands. The re-count may demote licenses; that is the mechanism working.
H-2 · Decoration in the runtime constructor — objects built and never read
Verdict: decoration (fails the sabotage test) · Layers: M6/M3
Evidence: DriveGradientMap constructed at chat/runtime.py:716, read nowhere. InhibitionMask/InhibitionOperator exported by core/physics/__init__.py, constructed on no path. Deleting either changes no output.
Why it hinders: dead structure is not neutral — it is testimony. Both objects tell every reader that drive mapping and inhibition masking are live, and Phase 1 of this very assessment initially believed them. Decoration is how architecture lies without anyone lying.
Better home: deletion (mastery algorithm step 2: the best part is no part), with their intents preserved where they belong — drive in the CR-2 design (G-4), the mask's disposition in the CR-1 ADR (G-14). If a future mechanism needs them, re-adding a deleted class is cheap; un-believing a phantom is not.
Authority: mechanical PR + one line each in the CR-1/CR-2 decisions.
H-3 · The typed refusal is constructed, then discarded at the public boundary
Verdict: strained — truth built and unserved · Layers: M4
Evidence: InnerLoopExhaustion carries reason, region, and per-step rejected-attempt evidence; respond()/arespond() convert it to "" for the str contract, so a refusing turn serves the empty string with refusal_reason == "". The plumbing to materialise (CognitiveTurnResult.refusal_reason, compute_trace_hash fold) already landed; runtime_contracts.md names it a residual awaiting a future ADR.
Why it hinders: the honesty machinery is the product. A system whose refusals are richer than its answers, serving its refusals as nothing, undersells its own thesis on every hard turn.
Better home: materialise into ChatResponse.refusal_reason (and a minimal honest surface), per the contract's own anticipation.
Authority: small ADR — the chain already reserved the seam.
H-4 · Composer-arm precedence is ordered branches above a declarative resolver
Verdict: strained — a solved pattern not yet extended · Layers: M4
Evidence: core/cognition/surface_resolution.py (494 lines) resolves the pipeline seam by declared precedence, self-documenting, with an in-code falsifiable contract for its own regression. Upstream, the composer arms (deduction :1834, curriculum :1850, pack/narrative/example/relation :1871–:1936, determination, estimate, gate, hedge) remain ordered branches across chat/runtime.py, in a different package with a different owner — nothing structurally prevents arm N+1 from bypassing the resolver's disciplines.
Why it hinders: prospectively — each new serving capability adds an arm ahead of any declared order. With only deduction ON, the live complexity is modest; the time to dissolve the pattern is before the next three arms, not after.
Better home: extend the resolver's declared-precedence pattern upstream to arm selection — the Third Door here is half-built and proven to fit this codebase.
Authority: refactor ADR; low-risk while one arm is live.
H-5 · Underived constants at the semantic center of generation
Verdict: strained — Pillar I violation with an in-repo counterexample · Layers: M3/CR-1
Evidence: salience_top_k=16, inhibition_threshold=0.3 gate every token walk's candidate set; no recorded derivation exists for either. The contrast is instructive and in-repo: admissibility_margin δ=0.4 was derived from the minimum observed margin of a characterization corpus (0.456), declared falsifiable, and survived a 20-case stratified attempt — the standard exists two config lines away.
Why it hinders: "thresholds tuned for good-enough" at the exact point where the system decides what it may consider. Also the self-narrowing budget feedback (stream.py:637) — a real cognitive property nobody has named or justified.
Better home: the CR-1 ADR (G-14) with an empirical derivation in the δ=0.4 style.
Authority: ADR + a small characterization run.
H-6 · The half-forced flag pair gating the lived learning loop
Verdict: misplaced responsibility — a set decision made one flag at a time · Layers: M6/M5
Evidence: F-6 (05-phase3-findings.md): the daemon forces the consolidator, not the accruer; the loop's writer and its consumer are gated independently, and only the consumer is on.
Why it hinders: flags that must be coherent as a set are owned nowhere as a set. CONTINUOUS_LIFE_CONFIG_FLAGS is the right pattern (a named, documented flag profile) applied to the wrong subset.
Better home: the flag-default register (G-8) with named profiles (one-shot / eval / continuous-life), each profile ruled as a unit.
Authority: ruling on the accrual flag + the register PR.
H-7 · The production ingest boundary lacks the trust contract its sibling has
Verdict: strained — the standard exists and stops one layer short · Layers: M2
Evidence: formation declares six boundaries — content-addressed in/out, no floats in hashed payloads, no pickle, an audit record per rejection. ingest/gate.py, facing untrusted user text in production, has the versor gate and the AGENTS.md trust-boundary defaults, but no comparable declared table.
Why it hinders: asymmetric rigor invites the assumption that the un-tabled boundary is the less important one; it is the opposite.
Better home: an M2 trust-boundary table in runtime_contracts.md, formation-style; hardening PRs only where the table exposes real deltas.
Authority: documentation first; evidence decides whether code follows.
H-8 · The record contradicts the code at three load-bearing points
Verdict: wrong-solution as record-keeping — divergence that reasoners inherit · Layers: governance
Evidence: (a) ADR-0146 rejects the daemon shape; an unowned daemon ships. (b) ADR-0252's headline "34 organs" has no reproducible basis (18 entry organs at the ratification commit itself; ~32 modules). (c) architecture-assessment-verification-2026-07-25.md asserts accrual "is enabled by the production L10 process"; the flag set says otherwise.
Why it hinders: demonstrated, not hypothetical — this assessment's own Phase 0 inherited a stale-record error, and the 2026-07-25 doc (itself a corrective document) introduced one. Every divergence is a future wrong analysis.
Better home: three one-paragraph amendments (ADR-0146 addendum owning the daemon or superseding the rejection; ADR-0252 basis sentence; a correction note on the 07-25 doc).
Authority: docs PRs + ruling signatures.
H-9 · Dead instruments still standing as if live
Verdict: superseded-in-place (unratified) · Layers: MV/governance
Evidence: docs/gaps.md — 26/26 closed, no entry from any 2026-06+ arc; substrate-liveness-ratchet — v5, stale since ~2026-05-24, all OPEN items L10-chained; ~130 analysis docs with no aggregator. The system map — the best macro artifact — is local, gitignored, 48 days stale, and was wrong precisely where the project moved fastest; its phantom "L12" stratum exists nowhere else.
Why it hinders: an instrument that looks authoritative converts "I should check" into "I already checked." Phase 0's error was this mechanism operating on this assessment.
Better home: this register supersedes docs/gaps.md (marked historical); the ratchet's 7 OPEN items migrate here (G-5 absorbs their L10 dependency); the map stays a regeneratable local index per D5, with "L12" dropped; the assessment directory becomes the standing ruled record, verified_at-stamped.
Authority: ruling (one PR).
H-10 · The demotion that mispriced the paradigm experiment
Verdict: strained framing — a correct ruling casting an incorrect shadow · Layers: M3/governance
Evidence: GSM8K was demoted to diagnostic (correct — the flags-and-benchmarks reasoning stands). The §5 SME experiment lives in GSM8K's neighborhood (holdout_dev/v1, math structures), so it inherited the demotion's priority — but its verdict governs the comprehension paradigm for everything, per ADR-0252's own §4 conformance bar.
Why it hinders: the highest-leverage open item in the project (G-1) has been priced as math-lane housekeeping.
Better home: none needed — G-1's execution is the fix; this entry exists so the mispricing mechanism is named and not repeated.
Authority: already covered by G-1's ruling.
H-11 · A silent-failure pinhole inside a typed layer
Verdict: strained (small, cheap, principled) · Layers: M3
Evidence: _accrue_in_turn's broad guard converts any exception in the read→realize→determine chain into a no-op accrual with no telemetry (F-10). Defensible as a backstop; invisible as a signal — in the one layer whose constitution is "failures are typed, never silent" (INV-34).
Better home: count the swallow (a telemetry field on IdleTickResult/turn accrual), not a behavior change.
Authority: mechanical PR.
Explicitly examined and cleared
For symmetry with the Candidate Register's "considered and not registered" — hindrance candidates this audit rejects:
- The 18 derivation organs — condemned but ruled to keep serving (
superseded-in-placeby explicit ruling); their continued service is governance working, not failing. The hindrance was their unreproducible count (H-8b), not their existence. - Off-serve quarantines (holographic vault, wave modules,
topological_reasoning) — capacity that exists and cannot be used by AST-pinned design; legitimate research containment with failing-when-violated enforcement. An exit criterion would be nice (M1 card); the quarantine itself is fit. - Pure-Python-by-default algebra — measured as the correct posture: determinism is the product,
versor_conditionis 0.22% of turn time, and the urgency argument for Rust-by-default dissolved under measurement. The open parity question (blocked on network) is a question, not a hindrance. - The five unreconciled articulations — dissolved by the taxonomy (D1), not a standing hindrance; the residue is one stale Draft banner (folded into H-8's amendment batch).
- Flag-gated conservatism itself — seventeen dark flags is not inherently hindrance; unregistered darkness is (G-8). The posture may be exactly right; the register exists so that judgment can be made deliberately.