L10 scoping Decision 0 ruled the session/context.py "drift fix" family as
sanctioned SEMANTIC anchoring, not forbidden drift-repair:
- closure (versor_condition<1e-6) is owned by the sanctioned algebra/versor.py
sandwich closure and holds BY CONSTRUCTION (measured: 100k-step field walk,
max versor_condition ~6e-13, flat, with AND without the anchor pull);
- the family preserves the invariant by construction (rotor_power /
word_transition_rotor / versor_apply on the Spin manifold, no post-hoc
unitize) and expresses the session concept-attractor model.
CLAUDE.md: add session/context.py semantic anchoring to sanctioned normalization
sites behind a two-clause guard, plus a bright-line paragraph (semantic anchoring
vs drift repair; closure owned solely by algebra/versor.py; no "drift fix" naming).
Rename _anchor_pull -> _session_anchor_pull; reframe the "Drift fix 1/3" /
"conjugate correction against slow angular drift" docs as semantic anchoring
(no behavior change). Update test_session_coherence.py to the new name.
Out of scope (flagged for separate review): generate/stream.py "Drift fix 2"
sits in a forbidden normalization site.
Verified: 15 targeted tests green; INV-02 normalization invariant unaffected.
Authority-ratified per the ADR-0207 convention (Accepted (ratified DATE)):
- ADR-0181 (audio), ADR-0197 (vision), ADR-0208 (environmental loop),
ADR-0209 (sensorimotor afferent) -> Accepted (ratified 2026-06-03).
All four are implemented + test-backed (0208/0209 falsifiability deeply
verified in the lookback; 0181/0197 backed by CRDT-merge/compiler/mount/
eval-gate suites, all green in the 182-test sweep).
- ADR-0198 deliberately NOT ratified: partially-implemented spike (Gap A +
fail-closed efferent gate landed; \xc2\xa73 verdict-lowering + motor decoder
deferred behind a dedicated motor governance ADR).
CLAUDE.md Work Sequencing now records the sensorium/modalities arc as a
sanctioned parallel track that does not displace the near-term sequence and
is disjoint from the GSM8K serving path. Markdown only; no test asserts ADR
status or the work-sequencing text.
CLAUDE.md's GSM8K substrate header asserted "serving stays `3/47/0` until
ratified". That figure is two ratified metric-moves stale: the official
candidate-graph serving metric (evals/gsm8k_math/train_sample/v1/report.json,
scored by `_score_one_candidate_graph` in train_sample/v1/runner.py:88) moved
3/47/0 → 4/46/0 (#488, ADR-0189/0189a) → 6/44/0 (#500, ADR-0195), each PR
re-baselining report.json.
Verified on main 7e98ad3: committed report.json == live `build_report()` ==
{correct: 6, refused: 44, wrong: 0}. wrong==0 preserved.
The stale header was the source of recurring 3/47/0 confusion across sessions.
Historical ADRs (0164/0166/0174/0175/0176/0177/0178/0179) that say "serving
stays 3/47/0" are point-in-time decision records and are intentionally left
unchanged.
Adds 'Lookback Review Discipline' section before 'Architectural Scan
Exclusions'. Multi-PR architectural work was accumulating latent
defects — three Phase 1-3a PRs shipped without a substrate audit
between phases, and a multi-actor pronoun wrong=0 hazard sat in
Phase 3a from the moment it was written until an explicit user-
requested review surfaced it.
Mandatory lookback triggers:
1. Before starting Phase N+1 of a multi-phase ADR
2. Before merging a stacked PR sequence into main
3. After any 3+ PR sequence on the same module/architectural surface
Review template covers: doc drift, test coverage gaps, parity gaps,
wrong=0 hazard surfaces, cross-PR consistency, honest LOC accounting.
Output is structured: solid / gaps / drift / hazards. Hazards require
fix-before-next-phase decision.
Cost: 20-40 minutes per 3-PR substrate. Skipping costs more (every PR
built on undetected hazard becomes implicated when it fires).
Adds 'Architectural Scan Exclusions' section before the PR Checklist.
Agent worktrees under .claude/worktrees/ contain full source copies that
trip every structural invariant scan (vault writers, normalize_to_versor
callsites, recall sites). Without .claude/ in the exclusion set, smoke
failures look exactly like real architectural violations but point at
non-live files — silent killers that mask actual regressions.
Documents the two maintained exclusion sets in
test_architectural_invariants.py and requires new scans to add .claude
before the first commit. Never rely on worktree pruning.
Three small surgical anchors capturing the verified architectural
insight surfaced during the ADR-0167 wave (no new ADR — the gap claim
that prompted this resolved on verification; what remains is a sharper
residual question worth memorialising).
1. CLAUDE.md — new "Schema-Defined Proof Obligations" section between
Documentation Discipline and Validation Through CLI. Generalises
the wrong=0 invariant pattern: schema types that name structural
properties are real only when an executing test can meaningfully
fail under the violations it is written to catch. Three-step rule
for treating a schema as load-bearing.
2. language_packs/compiler.py — ARCHITECTURAL INVARIANT comment on
_apply_mounted_primary_domain_resonance naming it as the single
convergence-decision site for DEPTH_ROOT/DEPTH_RELATION packs.
Anchors the doctrine at the code site so any future modification
trips on the reference to the holonomy proof's coverage gap.
3. docs/handoff/ADR-0167-FOLLOWUPS.md §6 — captures the structural-vs-
blend convergence isolation question. HolonomyAlignmentCase IS
executed today (we verified), but the existing test doesn't
distinguish structurally-derived convergence from blend-induced
convergence. Ablation test or reframed claim — both acceptable
resolutions.
Verified before commit:
- All 13 architectural references in the Gemini analysis resolve
exactly: triliteral 0.30, root 0.40, prefix 0.03/(idx+1), stem 0.24,
_INFLECTION_PRIORITY case-near-last, _apply_mounted_primary_domain_resonance
with 40% English-prototype blend, HolonomyAlignmentCase defined
AND executed
- tests/test_alignment_graph.py: 8 passed (no behavioural change)
- Documentation discipline (#355) honoured: pure Markdown, no HTML
No code behaviour changes. No runtime effect. Drops the larger
ADR-0168-PROPOSAL idea — the gap claim that prompted it dissolved
under verification.
Adds an explicit Documentation Discipline section between Semantic Pack
Discipline and Validation Through CLI. Encodes the stance that
text-diffable Markdown is the substrate for ADRs, session docs, audit
artifacts, and handoff briefs.
Sanctions two zero-cost adoptions inside the existing format:
- Mermaid fenced blocks for state machines / sequences / dependency
graphs that genuinely benefit from a picture
- <details> / <summary> collapsibles for long proofs, large tables,
generated logs
Out of scope (explicitly):
- Standalone HTML artifacts with embedded CSS / inline SVG / sidebars
- Dashboards / status pages / visualizers as substitute for a pinned
data artifact
Rationale: the "open in browser" model breaks git diff, determinism
(CSS / SVG element ordering), and cross-agent legibility — all
load-bearing properties for a deterministic cognitive engine.
No code changes. No runtime effect.
- update AGENTS.md with standing efficiency/performance and security doctrine
- align CLAUDE.md with current performance/security expectations
- update Copilot/Codex instructions with hot-path, trust-boundary, and CLI validation defaults
- refresh work sequencing now that eval and calibration are on main