core/docs/assessment/31-hindrance-audit.md
Shay 4c342cdc02 docs(assessment): Phase 4 — the gap register and the hindrance audit
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).
2026-07-27 16:04:22 -07:00

12 KiB
Raw Blame History

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-place by 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_condition is 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.