Five W-* closures since v4:
- W-004 — vault E2 re-thaw (#251)
- W-015 — _slerp_toward → rotor-geodesic (#255)
- W-016 — vault probe in discovery loop (#257)
- W-011 — propagate recognition refusal (#258, paired with W-012)
- W-012 — catch InnerLoopExhaustion (#258, paired with W-011)
v5 promotes W-005 (energy-modulated surface readback) to top of queue
as the only remaining mechanical-independent item. After W-005, the
ratchet is operator-decision-bound on W-006/W-010/W-013/W-014/W-019
and L10-bound on the bigger units.
W-016's process note flags the wrong-branch pattern that hit #256
(opened on the W-015 branch). Logged for future agent briefs to
emphasize the rebase-onto-current-main step before PR creation.
investigated, four new entries from L8
Audit milestone: all 9 substrate layers audited. L8 (PR #250) and
L9 (PR #249) merged to close the audit phase. The ratchet transitions
from "audit-driven entry addition" to "wiring-progress driven
closure."
Status updates:
- W-004 ✅ CLOSED via PR #251 (first non-trivial wiring closure from
the audit). Vault recall now stamps E2 EnergyProfile per ADR-0006.
Unlocks W-005 (energy-modulated readback now meaningful).
- W-015 ⏳ INVESTIGATED via PR #252 (Sonnet). Verdict (c) confirmed
with bimodal-distribution evidence across 4,138 samples. Root cause:
_slerp_toward interpolates on S^31 but versor manifold is a proper
subset. Fix in flight (rotor geodesic via Lie group exponential).
Four new W-NNN entries from L8 audit:
- W-016 — Contemplation operates without vault probe. Independent
mechanical fix at ChatRuntime._emit_discovery_candidates call site.
- W-017 — Automated T1/T2 → T3 promotion absent (ADR-0055's own
"what is missing"). Chained: needs W-009 (HITL async queue) +
W-016 (vault probe) first.
- W-018 — ADR-0080 contemplation not autonomous. Chained: needs W-008
(L10 runtime model) first.
- W-019 — from_miner.py / from_curriculum.py test-live only. Operator
decision: CLI wiring (smallest), runtime invocation (via W-017), or
document as offline-library-only.
L9 audit added no new W-NNN entries; the refusal-reason
materialization matrix consolidates prior findings (W-011, W-012)
from the verdict-surface side. Safety, opt-in ethics, default-audit
ethics, and hedge injection all CLOSED in the matrix per design.
Updated:
- Title v3 → v4
- Subtitle "L0-L7 + L10 scope" → "L0-L9 + L10 scope"
- Dependency graph: W-004 marked FIXED, W-015 marked INVESTIGATED,
new entries placed in their dependency lanes
- Suggested next-ADR sequence reordered: W-015 fix leads (in flight),
followed by W-011, W-012, W-016 as the quick-wins lane
- Items-deferred section transitioned from "L8-L9 pending" to "audit
complete; future revisions are wiring-progress driven"
Tally so far: 5 of 19 W-NNN entries closed (W-001, W-002, W-004
fully closed; W-015 investigated and fix in flight; the rest of the
quick-wins lane is now safely dispatchable post-L9).
W-015: session/context.py:207-246 post-generation unitize is
test-covered but not ADR-documented as an allowed normalization
boundary. Surfaced by L6 audit (#246) answering L1's forward note
(#237).
Per CLAUDE.md normalization rules, sanctioned unitize sites are
ingest/gate.py, language_packs/compiler.py, and algebra/versor.py.
The session/context.py site is not in that list — either an
undocumented allowed boundary or a discipline violation.
Recommended resolution path: investigate root cause first; if
unitize is masking an upstream construction violation, fix upstream.
If it's a legitimate boundary, write ADR sanctioning it. If it's
pure drift repair, refactor to remove (per CLAUDE.md "do not add
drift repair").
Updated dependency graph and suggested-sequence list to include
W-015 as a discipline-question entry.
Progress note updated: L0-L7 audited (7 of 9 layers); L8-L9 pending.
Five new wiring-debt entries from L4 (recognition) and L5
(cognition pipeline) audits:
- W-010 — L4 recognition bypasses L3 vocabulary (operator decision:
intentional token-level or wire VocabManifold consumption).
- W-011 — Typed recognition refusals dropped at pipeline boundary
(mechanical fix, small; closes recognition audit-trail gap).
- W-012 — InnerLoopExhaustion not caught in ChatRuntime.chat()
(mechanical fix, small; sibling of W-011; closes ADR-0142 debt #3).
- W-013 — core/cognition/explain.py dormant (operator decision:
wire, relocate, or delete).
- W-014 — core/cognition/provenance.py partially live, evals-only
(operator decision: lighter version of W-013).
Reordered suggested next-ADR sequence to lead with mechanical quick
wins (W-011, W-012, W-004) before operator-decision items (W-006,
W-013/14, W-010), before second-order changes (W-005), before the
big L10 unit (W-008). Reasoning documented inline: early measurable
progress, no architectural risk, demonstrates audit-to-fix loop
closes.
Updated dependency graph to show the three independent groups
(mechanical, operator-decision, L10-gated chain).
L0-L5 audited; L6-L9 pending. Ratchet stays append-only; v2 marker
in title and "L0-L5 + L10 scope" in subtitle.