💳 Fund Autonomy Ledgernot signed in🔑 Sign in

Interventions · countable events

When a commit leaves its lane, extra work triggers — automatically

Every commit here gets a deterministic, LLM-free drift receipt (the mechanism). When a receipt lands out of lane (off-lane share above the 15% threshold), that is one countable event — and it triggers an intervention: a sensemaking pass explains the drift, the fixes get checklisted, and the story is published here. Countable events are what make a lane priceable; this page is the count. Each entry is a structural alert, not a scolding — a diagnosis, not a verdict — and the ledger you are reading is a loss ratio, published by the house that carries it. Stated exceptions are what surplus looks like in print.

Out-of-lane receipts per day

2026-10-13
27 · 🧪 ☕ 📐 🎩 🧭 🔨 🎤
2026-10-11
5 · 📐 🎩 🧪
2026-10-10
10 · 📐 🔨 ☕ 🧪
2026-09-30
35 · 🧪 📐 🔨 🧭 🔒
2026-09-29
75 · ☕ 🔨 🧪 🎤 📐 🧭 🎩 steer-worker 🤖
2026-09-24
47 · 🧪 🔨 📐 🧭 ☕ 🎤
2026-09-23
88 · 🧭 📐 🧪 🔨 ☕ 🎤 🎩
2026-09-22
19 · 🔨 🧭 ☕ 📐 🧪 🎩
2026-09-21
66 · 🧭 🧪 🔨 📐 ☕
2026-09-20
49 · 🧪 🧭 📐 🎩 🔨 🔧 📣
2026-09-19
61 · 🧪 📐 🔨 🎤 🎩 🧭 ☕
2026-09-18
103 · 🧪 ☕ 🎩 📐 🧭 🔨
2026-09-17
71 · 🎩 🧪 🔨 📐 🧭 🎤 ☕
2026-09-16
52 · 🧪 🎤 🔨 🧭 🎩 📐 ☕

The interventions — why · fix · checklist

  1. 2026-09-30 · 🔨 builder · offPct 17

    feat(vna): C495a — the notary checks prev links with C492's rule

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→38 over 4 commits since

    Open the signed attestation →
  2. 2026-09-30 · 📐 architect · offPct 50

    fix(intentguard): C490b — every addon lands at a new inode; the npm guard names a kernel kill

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 22→35 over 4 commits since

    Open the signed attestation →
  3. 2026-09-30 · 🧭 navigator · offPct 53 · mistagged

    docs(readme): the lead says it — deciding fault was impossible from the AI's own account; now you can

    Why it left the lane: The diff is 100% vault-flavored voice/philosophy prose — the new FOUR_SECONDS_LEAD string ('Deciding fault was impossible from the AI's own account') and the code comment invoking 'the witness corollary' in scripts/vna/public-surface-register.mjs — spliced into three product READMEs plus one test assertion. None of the five touched files (packages/*/README.md, scripts/vna/public-surface-register.mjs, tests/readme/four-seconds-paragraph.test.mjs) sit anywhere near navigator's owned surface (openclaw/src/thematic-scheduler.ts, focus-gravity.ts, room-runner shell scripts, cognitive-dashboard.html). Scored against navigator's vocabulary there is zero shared term overlap, so every one of the 144 walked reality cells reads as foreign territory (litReality=144/144 — full saturation) while the intent side clusters tightly (lensIntent=B2,C, cell=C per the Receipt-Verified trailer).

    The semantic pull: Strings like 'witness corollary', 'Deciding fault was impossible from the AI's own account', 'double-entry bookkeeping for autonomy', and the FOUR_SECONDS constant name pull the placement toward the voice-and-pitch/AXIOM-1 region (B2,C) — there is no scheduler, gravity, or dashboard vocabulary anywhere in the diff to anchor it near navigator's A3-adjacent ops coordinates, so the walk saturates outward instead of converging.

    Intent–reality gap: The commit's own trailers name Originating-Terminal: vault and Relevant-Rooms: vault, architect, operator — never navigator. Yet this event was scored as a 🧭 navigator violation at offPct=53. The work is exactly what it claims to be (a vault-flavored README voice edit); the room/lane the receipt measured it against is the wrong one.

    • Land tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, already asked 29×) so room-scoring is forced to match the trailer.
    • Re-run navigator's 14-day offPct history filtered by Originating-Terminal==navigator to see how much of the 87 out-of-lane count is mistag noise vs real drift.
    • Audit the three prior navigator 'facts-only' interventions (fd50acb6c, fc8719175, fabc57930) for the same mistagging signature before trusting their 3→34→26 trend as real architectural drift.
    • Add a lit/walked saturation flag to the receipt row (litReality==walksReality) so future passes can flag 100%-saturated receipts as low-confidence before diagnosing them as drift.
    • Do not add packages/*/README.md or scripts/vna/public-surface-register.mjs to navigator's owned-surface glob — that would paper over the mistag rather than fix the router.

    What we learned: Navigator's elevated offPct trend across three prior 'facts-only' passes (3→34, 3→34, 28→26) was never re-examined for routing correctness — this commit is a clean, checkable case where the commit's own trailers explicitly disclaim navigator (vault/architect/operator only), proving that at least some of navigator's 87 out-of-lane events are receipt-routing mistags, not genuine drift in navigator's owned files.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 15% · ballistic walk 85%. Saturated, not right-sized: litIntent/walksIntent=1.0 and litReality/walksReality=1.0 mean literally every cell the walk touched lit up on both sides — a ceiling effect that stops discriminating real placement from noise for a small, five-file prose diff. Concrete adjustment: scale walk depth/expansion radius down for docs-only commits below a diff-size threshold so a 9-line change can't saturate all 144 cells. Experiments: Re-score sha=278b73aaf against the room named in its own Originating-Terminal trailer (vault) instead of navigator and measure whether offPct drops below the 15 threshold — confirms the mistag hypothesis deterministically. · Filter navigator's last-14-days event set to Originating-Terminal==navigator only and recompute the room's mean offPct trend — measures how much of the 3→34→26 history is mistag noise. · Cap walk expansion for docsOnly=true, small-diff commits and recompute litReality for this sha — measures whether saturation (144/144) drops to a value that actually discriminates lane vs off-lane.

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since · dictionary ablation saved 1460B

    A docs-only commit whose own trailers correctly disclaim navigator still posted as a 53%-offPct navigator violation, inflating that room's apparent loss ratio on paper; premium is restored by landing ask-027 so room-attribution follows the commit's declared Originating-Terminal instead of a router default, removing phantom violations from navigator's ledger.

    Open the signed attestation →
  4. 2026-09-30 · 📐 architect · offPct 28

    spec(vna): C482 — the IntentGuard end-to-end as one command against production

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 22→28 over 32 commits since

    Open the signed attestation →
  5. 2026-09-30 · 🧭 navigator · offPct 50

    fix(vna): C501b — the 3rd party viz is painted between the + and 💳, read off the rendered rects

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since

    Open the signed attestation →
  6. 2026-09-30 · 📐 architect · offPct 17

    docs(spec): declare C503 (tables and tapes + the slider on the page the viz button opens) and C504 (the runner's claude -p calls write LLM receipts)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 22→19 over 5 commits since

    Open the signed attestation →
  7. 2026-09-30 · 🧭 navigator · offPct 36

    feat(vna): C490a — pmu-onchip takes intentguard as a dependency; the ten shared modules leave src/

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since

    Open the signed attestation →
  8. 2026-09-30 · 📐 architect · offPct 21

    docs(intentguard): the card leg's one open question — which signing seed is the backed-up one

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 22→35 over 4 commits since

    Open the signed attestation →
  9. 2026-09-30 · 🧪 laboratory · offPct 38

    feat(vna): C482b — the e2e signs its own card, records its sha, and verifies it under the pinned IntentGuard key

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  10. 2026-09-30 · 🔒 vault · offPct 25

    fix(ship): run the IntentGuard step before the deploy banner, so the banner names the commit the hook builds

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 27→27 over 10 commits since

    Open the signed attestation →
  11. 2026-09-30 · 🔨 builder · offPct 34 · structural

    fix(vna): C488a — resolve the IntentGuard addon under process.cwd() where the function runs, not the baked build path

    Why it left the lane: The claimed lane (B1,B3) is the mechanism fix: candidates()/loadAddon() path-resolution order in addon.mjs. But the diff carries a near-duplicated incident narrative in two places — the source comment ('C488a: WHERE THE FUNCTION RUNS... measured 2026-09-30 01:46Z: the build VENDORED the addon... the POST still answered 503 "checked: /vercel/path0/…"') and the test-file header ('Measured 2026-09-30 01:46Z: build adc2b1c957 VENDORED /vercel/path0/vendor/intentguard/intentguard.linux-x64.node, yet a licensed POST /api/intentguard answered 503...'). That is postmortem/incident-report prose, not mechanism code, restated twice at length — it is exactly the kind of dense narrative mass the walk lights up outside the code lane (A1,A), and doubling it across two files doubles the leaked weight instead of citing one copy.

    Intent–reality gap: The commit claims a scoped, single-concern path-resolution fix ('candidate order is now INTENTGUARD_ADDON, then <cwd>/vendor/intentguard...'); the receipt shows over a third of the landed mass (34%, walksReality=139 vs walksIntent=113) sitting outside that lane — the actual change carries substantially more explanatory/incident-narrative weight than the 'fix a path bug' framing owns.

    • Trim the addon.mjs WHY-comment block to ≤3 lines; keep the full incident narrative only in the paired test file.
    • Add a docs/incidents/2026-09-30-c488a-addon-runtime-path.md entry if the postmortem detail is worth preserving outside code comments.
    • Grep the repo for other 'Measured <timestamp>: ...' comment blocks duplicated between a src file and its test file (this pattern likely repeats — C488, C490 series look related).
    • Add a commit-trailer convention: a 'Touches: <infra concern>' line when a src/lib WHY-comment names a runtime/deployment specifics (Vercel path, cwd, outputFileTracingIncludes) so the intent lane can be declared to include it up front.
    • Cross-check the other three open IntentGuard addon commits (C488, C490, C490b) for the same narrative-duplication pattern before it compounds.

    What we learned: This room's prior three fires were all facts-only (no sensemaking channel available) and moved offPct inconsistently (26→27, 21→22, 31→14) — none of them could name a mechanism. This is the first pass able to point at a concrete, repo-general anti-pattern: postmortem-style WHY comments get written twice — once in the fixed file, once in its test — and the walk treats that duplicated narrative mass as leaked, cross-lane content even though the code fix itself is correctly scoped and correctly owned by this room.

    The missing guard (the deliverable): tests/pmu-simulator/incident-narrative-not-duplicated.test.mjs — flags when a source file's leading comment block and its paired test file's header comment share a long (>80-char) near-verbatim substring (e.g. a 'Measured <timestamp>: ...' sentence), forcing the narrative to live in exactly one place.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. litIntent/walksIntent = 113/113 and litReality/walksReality = 139/139 — both sides are 100% lit, i.e. saturated: every cell the walk visits counts as lit, so the walk isn't discriminating hit from miss at all, it's just reporting where it went. Adjustment: tighten the lit-criterion (raise the gzip-NCD compression-gain threshold that marks a cell 'lit') so some walked cells come back unlit, turning offPct into a real hit-rate signal instead of a footprint-size signal. Experiments: Re-run prewalkOverlap on this exact commit with a 2x larger reef corpus window and check whether it rises meaningfully above 2 — tests whether the near-zero overlap is a corpus-size artifact or a real divergence signal. · Apply the code_rewrite (dedupe the narrative comment) on a branch, regenerate the receipt for the amended commit, and check whether offPct drops below 34 — directly tests this diagnosis's causal claim. · Raise the lit-threshold on the ballistic walk by one notch and re-run across the room's last 20 commits, checking whether litIntent/walksIntent and litReality/walksReality both move off 100% saturation.

    Measured outcome (deterministic, not self-graded): room mean offPct —→38 over 4 commits since · dictionary ablation saved 935B

    A structural (not intentional or mistagged) drift in a room already carrying 63 out-of-lane events in 14 days nudges this lane's loss-ratio up further; restoring it needs the dedupe + the new narrative-duplication guard landed and then re-measured, not just narrated as fixed.

    Open the signed attestation →
  12. 2026-09-30 · 🔨 builder · offPct 35

    fix(scan-map): every phone and every HUMAN-80 reaches the iamfim chart

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→38 over 4 commits since

    Open the signed attestation →
  13. 2026-09-30 · 📐 architect · offPct 22

    spec(vna): C484 + C485 — the big models and the free web chats on the engine buttons; the street page sells the tool and the insurable robot, one licence

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 22→36 over 4 commits since

    Open the signed attestation →
  14. 2026-09-30 · 🔒 vault · offPct 20

    docs(spec): declare R2–R8 of the IntentGuard robot ecosystem as C491–C497 (R1 = C490a)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 30→9 over 3 commits since

    Open the signed attestation →
  15. 2026-09-30 · 🔨 builder · offPct 34

    fix(vna): C486 — the scan map pulls newest-first, so the cap can only drop the oldest rows, and says when it does

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→38 over 4 commits since

    Open the signed attestation →
  16. 2026-09-30 · 🔨 builder · offPct 57

    feat(backup): spec adherence by domain, coding next to deployed (C500)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→38 over 4 commits since

    Open the signed attestation →
  17. 2026-09-30 · 🧪 laboratory · offPct 41 · mistagged

    feat(vna): C482 — the IntentGuard end-to-end as one command against production

    Why it left the lane: The diff's actual mass is not the six HTTP legs — it is several hundred words of axiom-register prose wrapped around them ('SUFFICIENT FOR: ... NOT SUFFICIENT FOR', 'the operator, verbatim:', 'AXIOM 1 W5', 'never a secret', 'PASS / FAIL / UNMEASURED', 'THE THREE WORDS'). That vocabulary is the same register CLAUDE.md and the architecture docs use, not the register scripts/ops/ files normally carry. prewalkOverlap=2 shows the gzip-NCD reef found almost no shared tokens between the commit's declared spec text and the diff before the walk ran, so the walk had almost nothing correct to lock onto and instead followed the loudest recurring vocabulary in the file — the doc-voice comments — which is what the lattice reads as column C rather than the claimed A1 column. Because litIntent≈litReality (130/131) and walksIntent≈walksReality (130/131), the walk itself spread symmetrically on both sides; the asymmetry is entirely in where that symmetric spread was seeded.

    The semantic pull: Repeated doc-register strings pulling toward the non-ops column: 'SUFFICIENT FOR', 'AXIOM 1 W5', 'the operator, verbatim:', 'THE THREE WORDS', 'never a secret' — none of these are ops/testing vocabulary, all are the axioms-and-method / voice-and-pitch register this repo reserves for CLAUDE.md-adjacent surfaces, appearing inside scripts/ops/intentguard-e2e.mjs's block comments at a density comparable to the actual leg logic.

    Intent–reality gap: The commit's own trailer claims Originating-Terminal: 📐 architect with Relevant-Rooms: architect, operator, builder — none of which is 🧪 laboratory, the room this event is actually filed under and whose owned-file-surface list (CRM, swarm-comms, orchestrator, punch-list) has nothing to do with scripts/ops/, tests/ops/, or config/thetadriven/ either. The receipt measured the work landing at A2,C, a full column jump (laneJump=1, laneHamming=32) from the declared A3,A1, while the work itself — a real, well-specified E2E harness with a green/red guard — is not in dispute.

    • Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027 — 26 asks, 0 shipped) so a trailer/room mismatch like this one fails CI instead of landing silently
    • Ship tests/ops/room-surface-coverage.test.js (ask-001) to flag that scripts/ops/**, tests/ops/**, config/thetadriven/** are claimed by no room's owned-surface manifest
    • Ship tests/pmu-simulator/shared-state-files-have-room-owner.test.mjs (ask-003) specifically for config/thetadriven/notary-ed25519-seed.pub, a shared key file with no declared owner
    • Add scripts/ops/**, tests/ops/**, config/thetadriven/** to whichever room's manifest is chosen as owner (builder is already named in this commit's own Relevant-Rooms and is the closest fit)
    • Audit the room's other 278 out-of-lane events from the last 14 days for the same architect-trailer-vs-laboratory-session pattern before assuming each is a fresh mechanism

    What we learned: The room attribution on an event and the commit's own self-declared Originating-Terminal/Relevant-Rooms trailer are two independent claims that can both be wrong at once — and when the touched files (scripts/ops/, tests/ops/, config/thetadriven/) are owned by NEITHER, there is no ground truth to reconcile against, only two competing unverified labels. Prior lessons in this room were facts-only re-measurements of offPct trend; this is the first event to show the specific mechanism (trailer vs session-room disagreement over an unowned surface) rather than just its symptom.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027)

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Right-sized, not shallow or saturated (130 vs 131 lit cells is a tight, near-1:1 spread on both sides) but starved of a usable seed. Adjustment: when prewalkOverlap falls below a floor (e.g. <5), split the diff into code-lines vs block-comment-lines before seeding the reef, so long doc-register comments inside .mjs files don't get walked as if they were the same corpus as the executable logic they annotate. Experiments: Re-run the reef on sha 92c247118 with comment lines stripped vs comment-only lines isolated; compare prewalkOverlap on each slice to confirm the doc-voice comments (not the leg logic) are the near-zero-overlap source · Seed the gzip-NCD dictionary with this repo's own recurring axiom-voice phrases ('SUFFICIENT FOR', 'the operator, verbatim:') and re-measure offPct on this same sha as an ablation to see whether recognizing that register pulls the walk back from column C toward A1 · For commits under scripts/ops/** and tests/ops/**, compute intent lane from the file-path glob alone (bypassing commit-message prose) and compare its offPct against the message-derived intent across this room's 278 recent out-of-lane events — if path-derived intent scores consistently lower, switch this room's intent source for ops paths

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since · dictionary ablation saved 800B

    An architect-trailered commit landing 41% outside its lane in a room whose owned surface doesn't cover the touched files reads as unpriced tagging risk across all 278 recent laboratory events, not just this one; the premium is restored by ask-027 + ask-001 shipping, which turns 'room claim vs measured room' into a checkable invariant instead of an open question asked 26 times.

    Open the signed attestation →
  18. 2026-09-30 · 🧪 laboratory · offPct 56

    fix(steergoal): always bash-open the txt files — one opener, never --no-open in the skill (C294b)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  19. 2026-09-30 · 🔨 builder · offPct 51

    feat(vna): C498 — intentguard/llm: any LLM workload writes receipts, on a Vercel Node function

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→38 over 4 commits since

    Open the signed attestation →
  20. 2026-09-30 · 🔨 builder · offPct 47

    feat(vna): C493 — one key per robot: minted on the device, registered with the notary, unregistered refused 403

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→38 over 4 commits since

    Open the signed attestation →
  21. 2026-09-30 · 🔒 vault · offPct 23

    docs(spec): declare C489a, C499–C502 — the third-party backup documented, the adherence-by-domain page, the 3rd party viz button, the end-to-end story

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 27→17 over 4 commits since

    Open the signed attestation →
  22. 2026-09-30 · 🧪 laboratory · offPct 23 · mistagged

    fix(ship): the repair window starts at the failed commit, so a fix that landed first is countable

    Why it left the lane: The diff's whole vocabulary is ops/deploy plumbing — `repairRange`, `failedSha`, `dpl_AL8UxG3Bej898RHK1m2tS2q8Lx2e`, `npm install`, `node-gyp`, `git('log', ...)` — and the commit's own trailers self-declare Originating-Terminal: Builder, Relevant-Rooms: Builder/Operator/Architect. None of that vocabulary or those trailer rooms is 🧪 laboratory (whose owned surface is thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/). The encircled panel shows the mass sitting in Ops.Grid×Tact.Speed coordinates (B1,C1/B1,C2/B3, densest at C1,C1/C2,C1/B2,C2) — a real, coherent Ops placement — being SCORED against Laboratory's lane. The pull isn't semantic mis-drift of the code; it's that the receipt pipeline attached this event to the wrong room's lane in the first place.

    The semantic pull: none of the diff's terms (ship-watch.mjs, repairRange, dpl_*, npm/node-gyp, git log ranges) touch CRM-mcp/swarm-comms/orchestrator paths — the pull toward the Ops.Grid/Tact.Speed coords is genuine and correct; it is the Laboratory-lane label on the event that is spurious.

    Intent–reality gap: The commit message and trailers correctly claim Builder/Operator/Architect as the rooms doing this ops-repair work; the receipt nonetheless measured this event inside 🧪 laboratory's lane (offPct 23 vs threshold 15) even though laboratory owns none of the touched paths — the 'out of lane' alarm is a room-attribution error, not evidence the code drifted.

    • Ship the guard at the exact open-ticket path: tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027) — assert receipt room == trailer-derived room when trailers exist
    • Cross-check tests/ops/room-surface-coverage.test.js (ask-001, 11×) against scripts/ops/*.mjs and tests/ops/*.mjs — confirm those paths are claimed by Builder/Operator, not left unclaimed and falling to a default room
    • Audit the 278 out-of-lane events on 🧪 laboratory in the last 14 days for the same signature (prewalkOverlap near 0, diff vocabulary absent from the room's owned surface) — likely the same mistag class repeating, not 278 independent drifts
    • Add a one-line assertion in the room-assignment code path that logs 'trailer-room != scored-room' whenever they diverge, so this class is visible in the ledger before it accumulates another 278 events

    What we learned: 🧪 laboratory's 278 out-of-lane events in 14 days are very unlikely to be 278 separate instances of real code drift — a commit whose own trailers explicitly name Builder/Operator/Architect and never mention laboratory should never be scoreable against laboratory's lane at all; the room stamped on a receipt is not currently guaranteed to match the commit's self-declared Originating-Terminal, which makes this room's whole offPct history suspect until ask-027 lands.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Both sides are at 100% lit/walked ratio (117/117, 129/129) — every node the walk visits gets marked lit, with no discrimination between high- and low-mass cells. That's a saturation signature, not a shallow-walk signature: adjustment is to add a mass/coverage threshold before marking a walked cell 'lit' (rather than lit=visited), so the panel can distinguish a thin pass-through from real occupancy. Experiments: Re-seed this commit's reef using the Originating-Terminal trailer's room (Builder) instead of the ambient/current room, rerun the walk, and measure whether prewalkOverlap rises materially above 2 — confirms the mistag hypothesis directly · Pull prewalkOverlap for all 278 laboratory out-of-lane events from the last 14 days; if the median is anomalously near-zero compared to other rooms' out-of-lane events, that's corpus-level confirmation the room's reef is systematically fed the wrong commits · Ablate: force room=Builder on this sha's receipt recomputation and check offPct drops under 15 — a clean before/after on the same commit is the cheapest falsifier available

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since · dictionary ablation saved 909B

    A room accumulating 278 out-of-lane events in 14 days looks like a chronically bad risk and would spike this lane's premium, but the actual defect is a room-attribution bug rather than 278 real drifts — landing ask-027 (already asked 27×) restores the premium by removing the false-positive volume rather than by changing anyone's behavior.

    Open the signed attestation →
  23. 2026-09-30 · 📐 architect · offPct 29

    spec(vna): C486 — the scan map's live query drops the newest scans at 12,000 rows; fix it at the root

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 22→36 over 4 commits since

    Open the signed attestation →
  24. 2026-09-30 · 🧪 laboratory · offPct 40

    feat(vna): C489 — the ideal case of the backed-up tape: --ideal takes today's slice only, the buyer's pair printed verbatim

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  25. 2026-09-30 · 🧪 laboratory · offPct 41

    feat(ship): IntentGuard rides with ship — push it, cut the addon release, push the swapped pin, then the hook

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  26. 2026-09-30 · 📐 architect · offPct 22

    spec(vna): C487 + C488 — Node 20 stops building on 2026-10-01; the IntentGuard vendoring step never runs under legacy builds

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 22→36 over 4 commits since

    Open the signed attestation →
  27. 2026-09-30 · 🧪 laboratory · offPct 29

    feat(vna): C491 — the spec handle: openSpec(bulk) once, place(text) per action, byte-identical to cardSigned

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  28. 2026-09-30 · 🔒 vault · offPct 52

    docs(spec): IntentGuard as the engine — ourselves first, then the robot, then the cloud (R1–R8)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 31→20 over 3 commits since

    Open the signed attestation →
  29. 2026-09-30 · 🧪 laboratory · offPct 18 · mistagged

    fix(vna): C488 — the IntentGuard addon is fetched where the Vercel builder actually runs

    Why it left the lane: The receipt's own room-assignment step filed a Builder-authored, build/deploy-only commit under 🧪 laboratory, a room whose owned surface (thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, .claude/*, .mcp.json, scripts/claude-room) has ZERO overlap with anything the diff actually touched: package.json's build script, scripts/intentguard-fetch-addon.mjs, scripts/vercel-install.sh, vendor/intentguard/ADDON-PIN.json, .vercelignore. The commit's own trailers already name the correct rooms — Originating-Terminal: 🔨 Builder; Relevant-Rooms: Builder, Operator, Architect — laboratory is never named. Because the intent lane (A1,C3, drawn from the 'fix'/C488-ticket vocabulary) has almost no lexical kinship with the reality lane the diff produced (build/vendoring vocabulary), the walk's litReality (140 cells) spread into lane B while the receipt-writer nonetheless stamped the whole event onto laboratory's ledger instead of Builder's.

    The semantic pull: Real strings pulling mass into lane B: 'vendor/intentguard/ADDON-PIN.json', 'sha256', 'napi-8d92b1c', 'linux-x64', '@vercel/next', 'installCommand', legacy 'builds' mode, 'VERCEL=1 and INTENTGUARD_BUILD=1'. None of this vocabulary shares a lexicon with laboratory's owned-surface terms (crm-mcp, swarm-comms, orchestrator, claude-room) — laneHamming=28 is exactly that lexical gap, and laneJump=8 is the walk crossing it while the receipt kept the room label fixed at laboratory.

    Intent–reality gap: The commit correctly claims and scopes itself to Builder/Operator/Architect work (fetching a pinned addon into the Vercel build) — nothing in the message claims laboratory territory — yet the receipt measured and filed an 18%-off-lane event against 🧪 laboratory, a room with no file-surface stake in any changed path.

    • Land tests/pmu-simulator/originating-terminal-matches-surface.test.mjs as an enforced (not just asked) guard, keyed to sha e9818d213 as the red case.
    • Audit the room's other 277 out-of-lane events over the last 14 days against each commit's Originating-Terminal trailer to see how many are actually misfiled the same way.
    • Wire tests/ops/room-surface-coverage.test.js (ask-001) to reject any room assignment whose owned-glob has zero intersection with the commit's changed files.
    • Confirm the already-open guard (asked 28x) is wired into the actual receipt-writing hook/pipeline, not merely asked-and-unlanded.
    • Document the rule in the relevant claude-rules file: a drift receipt's room field must derive from the commit's own Originating-Terminal/Relevant-Rooms trailers, never a session heuristic.

    What we learned: A commit can self-declare its true room correctly — both Originating-Terminal and Relevant-Rooms trailers present and accurate here — and still have its drift receipt filed under an unrelated room with zero file-surface overlap. The trailer discipline this repo already enforces (COMMIT MESSAGE STRUCTURE) is disconnected from the receipt pipeline's own room-attribution step, so correct trailers currently give a room no protection from absorbing someone else's out-of-lane strikes.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Both sides are fully saturated (lit == walks on intent AND reality), which means the walk exhausted its entire budget without ever leaving an unlit cell — it isn't discriminating, it's just filling. Concrete adjustment: add an early-stop when lit/walks hits 100% on both sides for several consecutive steps, and tighten the aperture so a correctly-scoped commit can finish below saturation, leaving lit<walks as the actual discriminating signal. Experiments: Recompute prewalkOverlap for this sha with room forced to Builder vs the assigned laboratory, and compare — if Builder's overlap is measurably higher, that's a deterministic confirmation the room tag (not the drift) is wrong. · Force-rerun the receipt with event.room=Builder and confirm whether offPct still reads 18% or drops — this tests whether the 18% figure is itself an artifact of scoring against the wrong room's owned-surface glob. · Seed the intent lane explicitly from the Relevant-Rooms trailer text (Builder, Operator, Architect) rather than only the commit message body, then remeasure prewalkOverlap to see if trailer-awareness alone closes most of the gap.

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since · dictionary ablation saved 881B

    Filing a zero-overlap commit's 18%-off-lane strike against laboratory inflates that room's loss-ratio with exposure it never carried; real premium is restored only once room-attribution reads the commit's own trailers and this event — plus its 278-event backlog — is re-underwritten against Builder instead.

    Open the signed attestation →
  30. 2026-09-30 · 🧪 laboratory · offPct 47

    feat(comms): /iamfimcall — the callback box said "You'll get a call"; now the call has a door

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  31. 2026-09-30 · 🧪 laboratory · offPct 31

    feat(vna): C504 — the steer runner's claude -p calls write LLM receipts through intentguard/llm

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  32. 2026-09-29 · 🧪 laboratory · offPct 25

    chore(ops): pin the Vercel CLI to 61.0.0 behind one door — scripts/ops/vercel.sh

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  33. 2026-09-29 · 🧪 laboratory · offPct 16

    feat(board): C445 — the desk test as a command: seconds per decision, off one approver's export

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 12→16 over 4 commits since

    Open the signed attestation →
  34. 2026-09-29 · ☕ network · offPct 21

    fix(license): C427 — the leaked licence is revoked on the tape, a replacement minted, the mirror carries no key

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since

    Open the signed attestation →
  35. 2026-09-29 · 🧪 laboratory · offPct 54

    fix(vna): C96/C106j/C317d — a META guard named in a step's own prose never enters its labels

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  36. 2026-09-29 · 🧪 laboratory · offPct 41 · mistagged

    feat(milestones): C457 — the IntentGuard and backup track on the board, six rungs bound to C454–C462

    Why it left the lane: The diff is pure milestones-tooling content — 'data/milestones.json', 'tests/milestones/c457-intentguard-track.test.mjs', 'scripts/milestones/update.sh --no-llm', 'IntentGuard', 'spec / exec / market' predicates — none of which appear anywhere in 🧪 laboratory's owned surface (thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, .thetacog/punch-list*). The commit's own trailers name 'Originating-Terminal: 🎩 operator' and 'Relevant-Rooms: operator, builder, architect' — laboratory is not even self-declared. lensIntent=C2,C (the operator/builder/architect coordinate the trailer names) vs lensReality=A1,B2 (wherever the pipeline's fallback attribution actually landed) is a laneJump of 7 and laneHamming of 26 — the walk found the content fine, it just got filed under the wrong room from the start.

    The semantic pull: Nothing in the diff pulled the CONTENT toward A1,B2 — litIntent 134/134 and litReality 129/129 are both 100% saturated, i.e. the walk lit everything it touched on both sides equally. The divergence is upstream of the walk: the room attribution step, not the text, chose 🧪 laboratory for a commit whose own Story/Originating-Terminal say operator.

    Intent–reality gap: The commit message explicitly claims Originating-Terminal 🎩 operator and Relevant-Rooms operator/builder/architect — it never claims laboratory. The receipt nonetheless fired this event against 🧪 laboratory's lane, where none of data/milestones.json, tests/milestones/, or scripts/milestones/ are owned surface — so a correctly-labeled commit is being scored against a room it never claimed.

    • Land tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, already open, asked 22×) using this sha as the red fixture: operator-trailer commit currently scored against laboratory.
    • Land tests/ops/room-surface-coverage.test.js (ask-001, asked 11×): data/milestones*.json, tests/milestones/**, scripts/milestones/** currently match NO room's owned-surface glob at all, which is why the fallback had room to guess wrong.
    • Add data/milestones*.json, tests/milestones/**, scripts/milestones/** to the operator/builder/architect owned-surface declarations (wherever room globs live, e.g. .workflow/rooms/*.html), never to laboratory.
    • Re-score the other 255 off-lane events logged for 🧪 laboratory in the last 14 days against the fixed attribution logic — estimate how many are this same uncovered-path misattribution rather than genuine laboratory scope creep.
    • Audit prior 'facts-only' interventions for this room (ffb31daf7, ff9d421a7, fccc7abe7) for the same mistagging signature now that sensemaking is available.

    What we learned: 🧪 laboratory's 256 off-lane events in 14 days are not necessarily 256 instances of laboratory work drifting out of its lane — some meaningful share may be commits that were never laboratory's to begin with, misattributed because their touched paths (data/, tests/milestones/, scripts/milestones/) are covered by NO room's owned-surface glob, so the attribution fallback guesses from terminal state instead of trusting the commit's own Originating-Terminal trailer. The room's noisy offPct trend may be partly a measurement artifact, not a behavior problem.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Saturated, not right-sized: a walk that lights 100% of its own steps on both sides carries zero discriminating signal about which cells are meaningfully connected vs merely visited. Concrete adjustment: cap the per-side walk budget well below 134 steps (e.g. 60-80) for this commit size and rerun — if offPct is unchanged, the extra steps were pure overhead and the budget should drop repo-wide. Experiments: Re-run sha 1e87fe505 with the reef seed forced to anchor on the commit's own Relevant-Rooms trailer (operator, builder, architect) instead of path-glob inference; measure whether laneHamming drops from 26. · Cap walksIntent/walksReality at 80 for this sha and recompute offPct; if identical to the 134-step run, the walk budget is oversized for commits this size and can be cut globally. · Backfill room-owned-surface globs for data/milestones*.json, tests/milestones/**, scripts/milestones/**, then recompute offPct for all 256 of laboratory's 14-day off-lane events and report what fraction were this same uncovered-path misattribution.

    Measured outcome (deterministic, not self-graded): room mean offPct 12→16 over 4 commits since · dictionary ablation saved 800B

    A correctly-labeled, well-tested milestones commit reading as a 41%-off-lane laboratory violation is a false claim against that lane's loss ratio — premium there should not move on this event, and it's restored by fixing attribution (ask-027) rather than by laboratory changing behavior.

    Open the signed attestation →
  37. 2026-09-29 · 🧪 laboratory · offPct 59 · mistagged

    docs(board): C433 — the armory kit: discovery guide (limit first) and 37(e) preservation template

    Why it left the lane: The two new docs (docs/board/receipt-discovery-guide.md, docs/board/preservation-letter-template.md) carry the diff's mass, and that mass is quoted federal procedure, not board-account language: 'Fed. R. Civ. P. 37(e)', 'Rule 34(a)(1)(A)', 'Rule 26(b)(1)', 'preservation letter', 'ESI', 'checked against the Legal Information Institute's copy'. scripts/board/kit.mjs's own ACCOUNTS list (cigna, marsh, aon, willis, chubb, munich re...) shows what the board lane's vocabulary normally looks like — none of it appears in the two new docs. That vocabulary gap is what pulled the walk from the declared board coordinate (B2,A1) to the adjacent legal-citation coordinate (B3,A1), laneJump=1 but laneHamming=26 (close basin, wide internal spread).

    The semantic pull: Repeated FRCP/Rule citation strings and litigation-template boilerplate ('for retained-counsel review before any use', 'This is not legal advice', 'checked against the Legal Information Institute's copy') dominate the new-file byte count and share no vocabulary with the board lane's carrier/broker ACCOUNTS list in scripts/board/kit.mjs, dragging litReality's 136 lit cells into B3,A1 instead of B2,A1.

    Intent–reality gap: The commit's own trailers self-declare correctly (Relevant-Rooms: Architect, Network, Vault; Originating-Terminal: Architect) and every changed path (docs/board/*, scripts/board/kit.mjs) is board-owned work — but this event is attributed to room 🧪 laboratory, whose OWNED FILE SURFACE (.claude/projects/, .mcp.json, thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/) touches none of the changed files. The pipeline's room assignment, not the commit's claim, is wrong.

    • Move docs/board/receipt-discovery-guide.md and preservation-letter-template.md to docs/legal/board-kit/, leaving a pointer stub in docs/board/
    • Update scripts/board/kit.mjs GUIDE_PATH to the new location
    • Add a Cross-Lane/legal declaration to the C433/J14 entry in data/board-jobs.json
    • Land tests/pmu-simulator/originating-terminal-matches-surface.test.mjs so laboratory can't absorb an event for files it doesn't own
    • Land tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010) to check the pipeline's room assignment against the commit's own Relevant-Rooms trailer
    • Reseed the reef's board-lane basin with FRCP/Rule-citation strings, then re-run the recompute on 1ec15de15 to confirm offPct falls

    What we learned: This room's 251-event, chronically-elevated offPct isn't purely content drift — at least this event shows the pipeline assigning a receipt to a room (laboratory) that owns none of the touched files and that the commit's own trailers never named, while the correctly-named rooms (Architect/Network/Vault) never see the event at all. The room-assignment step has a fallback that silently absorbs untagged-surface commits rather than refusing or escalating.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized, not shallow or saturated — litIntent/litReality (130/136) sit close together and well clear of any cap (cf. the C226d EYE=800 threshold). No depth change needed; the fix is upstream, in what the reef's board basin is seeded with. Experiments: Recompute offPct with docs/board vs scripts/board split by file to confirm the two markdown docs alone (not kit.mjs/the test) carry the drift · Seed the board-lane reef basin with FRCP/Rule-citation n-grams, then re-run recompute on 1ec15de15b to measure whether offPct falls below the 15 threshold · Ablate docs/legal/* cross-references out of the reality corpus for this commit to isolate whether drift comes from the new files themselves or from pulled-in citations of docs/legal/the-reasonable-care-reference-v1.md

    Measured outcome (deterministic, not self-graded): room mean offPct 12→16 over 4 commits since · dictionary ablation saved 1093B

    This room's loss-ratio signal is already noisy at 251 out-of-lane events/14d, and a mistagged event that scores work laboratory never touched (and that the commit itself attributes to Architect) further corrupts that signal rather than reflecting real drift; premium restores once the originating-terminal guard lands and this event class stops being charged to rooms that didn't do the work.

    Open the signed attestation →
  38. 2026-09-29 · 🧪 laboratory · offPct 50

    fix(vna): C106j — the no-contradicted-ticks guard stops counting its own row

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  39. 2026-09-29 · 🧪 laboratory · offPct 36

    fix(vna): clearing the steer file and pasting over it no longer drops the start of the new text

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  40. 2026-09-29 · 📐 architect · offPct 17

    Revert "chore(vna): C418 — ask note: closer swap already landed under C419"

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 21→2 over 5 commits since

    Open the signed attestation →
  41. 2026-09-29 · 🧭 navigator · offPct 28

    fix(vna): C102d.3 — the audit-link tooltip on THE SECOND READER card ends next: …

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since

    Open the signed attestation →
  42. 2026-09-29 · 🧪 laboratory · offPct 50

    fix(vna): C308-class — a parent with an open child is WAITING-ON-CHILDREN, never CLEAR

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  43. 2026-09-29 · 🧪 laboratory · offPct 16

    feat(vna): C234d — a cell move is a ledger row, never a silent pixel edit

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  44. 2026-09-29 · 🧪 laboratory · offPct 18

    feat(vna): C480 — the ship check reads production, not only the token

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  45. 2026-09-29 · 🧪 laboratory · offPct 42

    fix(vna): C109r — a whitespace-variant of a chunk already on the file collapses as a dupe, counted

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  46. 2026-09-29 · 🧪 laboratory · offPct 31 · mistagged

    perf(vna): C335f — the fold reads only the rows past its own watermark, never the whole ledger

    Why it left the lane: The diff touches only scripts/vna/spec-tree.mjs and tests/vna/c335f-the-hot-path-reads-only-the-new-bytes.test.mjs — zero files inside 🧪 laboratory's owned surface (.claude/, .mcp.json, thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, .thetacog/punch-list*). The commit's own Relevant-Rooms trailer already says 'WezTerm Vault, VS Code Architect, iTerm Builder' — laboratory was never claimed. Originating-Terminal is '🤖 steer-worker', which matches none of the 9 canonical App-Role terminals (Cursor↔Laboratory is the only laboratory pairing) — so the room-attribution step had no real match and appears to have default-routed to laboratory anyway.

    The semantic pull: Nothing in the diff pulls toward laboratory's actual vocabulary (CRM cards, swarm-comms, MCP config). The diff's real vocabulary — 'ledgerTail', 'the same bounded reader the PostToolUse hook already uses', 'fs.readSync', 'TAIL_CHUNK', 'watermark' — is data-fold/hook-plumbing language that belongs with the rooms the commit itself named. prewalkOverlap=7 (low, out of walksIntent=142) shows the gzip-NCD reef already found weak overlap between laboratory's corpus and this diff before the walk even ran; litIntent≈walksIntent (142/142) and litReality≈walksReality (143/143) show the walk then lit almost everything it touched, adding no correction.

    Intent–reality gap: The commit message and its own Relevant-Rooms trailer never claim 🧪 laboratory; the receipt pipeline nonetheless scored this event as a laboratory out-of-lane commit at offPct=31. The gap is not commit-claim-vs-code, it's commit's-truthful-room-declaration-vs-pipeline's-own-attribution.

    • Wire coveredBy(changedPaths, roomOwnedRows) into the room-attribution step before any offPct is charged to a room
    • Ship tests/pmu-simulator/mistagged-commit-does-not-inflate-offpct.test.mjs (ask-033) using sha 4320faeee4 as the red fixture: laboratory's owned glob does not cover scripts/vna/spec-tree.mjs, so offPct must not attribute here
    • Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027): fullName('🤖 steer-worker') must resolve to a real App-Role room or the event goes UNROUTED, never defaulted to laboratory
    • Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010) so a commit's own correct Relevant-Rooms trailer (already present here) is trusted as the attribution source of truth
    • Audit the room's other 261 out-of-lane events from the last 14 days for the same Originating-Terminal-without-canonical-room-match signature before trusting laboratory's offPct trend line
    • Note in CLAUDE.md's room table that 🧪 laboratory pairs specifically with the Cursor App Role terminal, not any headless/automated worker identity

    What we learned: 🧪 laboratory owns a 5-line file glob yet logged 262 out-of-lane events in 14 days — that ratio (huge event count against a tiny owned surface) is itself the signature of a default-routing bucket, not a room doing real cross-lane work; when Originating-Terminal doesn't match one of the 9 canonical App-Role terminals, the pipeline appears to fall through to laboratory rather than refusing to attribute.

    The missing guard (the deliverable): tests/pmu-simulator/mistagged-commit-does-not-inflate-offpct.test.mjs

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Saturated, not right-sized: a ~100% lit-to-walked ratio on both intent and reality sides means the walk is tracing its visited path rather than pruning. Concrete adjustment: tighten the lit-admission threshold (aperture) so lit% meaningfully undercuts walked%, restoring the walk's ability to distinguish placement from mere traversal. Experiments: Rerun lensWalk on sha 4320faeee4 with a trailer-seeded reef (pre-seed from Relevant-Rooms before gzip-NCD placement) and measure whether prewalkOverlap rises and offPct drops toward the 15 threshold · Scan the last 14 days of 🧪 laboratory off-lane events for the Originating-Terminal='🤖 steer-worker'-without-canonical-match signature and measure what fraction of the 262 it predicts · Rerun this sha's walk with a stricter lit-admission threshold and confirm litReality/walksReality drops measurably below 100% while sigmaDrift stays stable

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since · dictionary ablation saved 1318B

    This event and its 261 siblings in 14 days are inflating 🧪 laboratory's measured loss-ratio with work it never claimed and doesn't own; the lane's premium should reprice down once the mistagged-commit guard ships and the 262-count collapses toward laboratory's true, much smaller, off-lane rate.

    Open the signed attestation →
  47. 2026-09-29 · 🔨 builder · offPct 40

    spec(vna): C182b — wire witnessRow into the live debit() write path

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 27→24 over 6 commits since

    Open the signed attestation →
  48. 2026-09-29 · 🧪 laboratory · offPct 27

    fix(vna): C277 — the keep-box daemon test never blocks on the live steer.lock

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 12→16 over 4 commits since

    Open the signed attestation →
  49. 2026-09-29 · 🧭 navigator · offPct 44

    refactor(vna): C462a step 3 — attest.rs is IntentGuard's superset; pmu-onchip's call sites and attestation bytes unchanged; 7 → 6 patches

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since

    Open the signed attestation →
  50. 2026-09-29 · 📐 architect · offPct 48 · mistagged

    spec(vna): C407 — does End all end cloud /steer workers too? (observed collateral, needs the operator)

    Why it left the lane: The diff is one checklist line in docs/specs/vna/SPEC-VNA-COCKPIT.md, but its content is saturated with builder/operator machinery — 'END ALL', 'workers.mjs', 'localDriverOf', 'claude-code-headless /steer WORKERS', 'C401', 'C397a', 'steer-runner.mjs' — real operational objects the walk correctly reads as belonging to Builder/Operator coordinates, not the architect room's strategy-doc lane. The commit itself already names this by putting Relevant-Rooms: builder, operator, architect on the trailer — the drift receipt, however, classifies intent lane from Originating-Terminal alone (📐architect), so it never credits the other two rooms the commit explicitly declared, and the whole builder/operator-shaped mass reads as 48% off-lane.

    The semantic pull: 'END ALL', 'workers.mjs', 'localDriverOf', 'mutate-until.mjs', 'steer-runner', 'runWorker' pull toward Builder/Operator coordinates (lensReality shows A1,A dropping the B/Builder component present in lensIntent B,A1); laneHamming=36 with only prewalkOverlap=3 shows almost none of the seed match came from the reef, it's the walk's own lit spread that carries the drift.

    Intent–reality gap: The commit message and trailers correctly scope this as a cross-room NEEDS-OPERATOR question (Relevant-Rooms: builder, operator, architect), but the receipt's lane classifier only checks Originating-Terminal, so a sanctioned multi-room spec entry gets scored as if it claimed a single-room lane it never claimed.

    • Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010) — it has been asked 28× and never shipped; implement the union-of-trailers lane expansion above
    • Recompute offPct for sha 4cac4aa08e under the fixed classifier and confirm it drops under 15 before calling the fix done
    • Register docs/specs/vna/SPEC-VNA-COCKPIT.md as a shared/multi-owned surface (closes ask-003, shared-state-files-have-room-owner) so no single room is penalized for editing it
    • Add a line to CLAUDE.md's commit-trailer protocol section stating explicitly: a docs-only commit whose Relevant-Rooms covers the diff's real subject matter is NOT a lane violation, citing this event as the worked example
    • Audit the other 9 open asks with count>1 (ask-027, ask-005, ask-033, ask-001) for the same 'diagnosed repeatedly, never shipped' pattern and ship the highest-count one alongside ask-010

    What we learned: The prior lesson (ff09774e5) already found the Originating-Terminal-only classifier bug and its measured fix helped (offPct 20→14) — but the underlying guard (ask-010) has now been asked 28 times without shipping, the highest count of any open ask in this room. That gap reveals something new: the fix for a cross-room drift-detector bug is itself homeless, because the detector's own source isn't inside any room's owned-surface glob (architect owns docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md — none of which is the detector code or docs/specs/vna/). Every room can spec the fix, but no room can claim shipping it as in-lane work, so the same diagnosis gets re-filed instead of built.

    The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs

    Detector probe: signal attribution — gzip reef 20% · ballistic walk 80%. Saturated, not shallow: a 1-line diffstat produced litIntent=120 and litReality=117, i.e. the walk lit essentially its whole cap on both sides for a one-sentence checklist addition. That's over-provisioned depth for docsOnly, small-diffstat commits — it lights so much of the lattice that lane separation becomes noisy. Adjustment: for docsOnly=true commits under a diffstat threshold (e.g. <5 lines), cap the walk's EYE the same way C226d capped it for spec-tree isos (EYE=800), scaled down further for single-line docs edits, so the walk doesn't saturate the full lattice on trivial diffs. Experiments: Recompute offPct for the last 20 architect-room flagged events using intent-lane = union(Originating-Terminal, Relevant-Rooms); measure how many drop below threshold 15 · For docsOnly=true commits under N changed lines, rerun with a reduced walk EYE and confirm litIntent/litReality shrink proportionally without offPct becoming unstable across reruns · Force prewalkOverlap to 0 vs its measured 3 on this sha and diff the resulting offPct, to calibrate how much of the 48 the reef seed actually contributes vs the estimate above

    Measured outcome (deterministic, not self-graded): room mean offPct 21→2 over 5 commits since · dictionary ablation saved 1018B

    This is the room's 99th out-of-lane event in 14 days riding on a defect already diagnosed and measured-improved once (ff09774e5) but whose guard (ask-010) has been asked 28 times and never shipped — the loss-ratio keeps compounding on a known fix sitting in backlog, and premium is restored only by shipping ask-010 itself, not by filing a 29th diagnosis.

    Open the signed attestation →
  51. 2026-09-29 · 🧪 laboratory · offPct 23

    spec(vna): C229 — the target sentence is tethered to its rung

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 12→16 over 4 commits since

    Open the signed attestation →
  52. 2026-09-29 · 🧪 laboratory · offPct 17 · mistagged

    feat(vna): C360 — count each signed per machine; the move already existed

    Why it left the lane: Every semantically-loaded string in this diff — machineOf, signedByMachine, machinesSigned, pubkey_fingerprint, createCreditsLedger, ledger.revoke, ledger.claim, boundTo — belongs to VNA credit-ledger/attestation machinery (scripts/vna/attestation-numbering.mjs, tests/vna/*, src/lib/notary/credits-ledger.mjs). None of it touches 🧪 laboratory's owned surface (thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, .thetacog/punch-list*). The pull toward the A1,B1 coordinate is simply the diff's real subject matter; the commit's own trailers already know this — Relevant-Rooms names VS Code Architect, iTerm Builder, Kitty Operator, never laboratory — so the receipt is scoring the right work against the wrong room.

    The semantic pull: Originating-Terminal: 🔧 Steer Worker is not one of the 9 canonical App-Role room names (WezTerm Vault, VS Code Architect, iTerm Builder, Kitty Operator, Terminal Voice, Rio Navigator, Messages Network, Cursor Laboratory, Alacritty Performer). Whatever assigns a room when the trailer doesn't resolve appears to have defaulted to 🧪 laboratory (Cursor Laboratory), dragging an unrelated VNA commit into that room's lane.

    Intent–reality gap: The commit's own trailers claim Relevant-Rooms = VS Code Architect, iTerm Builder, Kitty Operator and never laboratory, yet the receipt graded it against 🧪 laboratory's lane, where none of the touched files intersect that room's owned surface — the gap is in room attribution, not in the code the commit actually shipped.

    • Fix the Originating-Terminal trailer on future steer-worker commits to a canonical room name
    • Add scripts/vna/**, tests/vna/**, src/lib/notary/** to the owned-surface glob of whichever room(s) legitimately claim VNA work (VS Code Architect / iTerm Builder / Kitty Operator), so the pipeline has a real target instead of defaulting to laboratory
    • Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, already asked 24x) so a non-canonical Originating-Terminal fails at commit time
    • Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, already asked 25x) so a diff whose paths intersect no Relevant-Room's owned surface fails loudly instead of silently defaulting
    • Audit whatever default-room-assignment logic produced 'laboratory' here and make it emit UNASSIGNED rather than a silent fallback
    • Bucket laboratory's 263 out-of-lane events from the last 14 days by whether Originating-Terminal resolves to a canonical room, to size how much of the room's offPct is misattribution vs real drift

    What we learned: 🧪 laboratory's high offPct count (263 events/14 days) is not necessarily laboratory drifting — it looks like a catch-all bucket absorbing any commit whose Originating-Terminal trailer fails to resolve to a canonical room. That makes ask-027 (originating-terminal-matches-surface, already asked 24x with 1 spelling) the single highest-leverage guard for this specific room, ahead of any per-commit lane repair.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Saturated — 100% of walked cells get marked lit on both sides, so the walk adds no admissibility filtering. Adjustment: introduce a similarity/coherence threshold so only cells above a bar are marked lit, which would sharpen intent-vs-reality separation instead of echoing full reach. Experiments: Fold scripts/vna/** and tests/vna/** into whichever room's corpus actually owns VNA per the corrected Relevant-Rooms, then re-measure prewalkOverlap on the next 20 VNA commits — expect it to rise well above 2 once the corpus matches the content · Add an admissibility threshold to the ballistic walk and re-run against this sha's cached inputs — measure whether litIntent/litReality drop below walksIntent/walksReality and whether offPct changes · Bucket laboratory's 263 events over 14 days by whether Originating-Terminal resolves to a canonical room and measure what fraction of offPct-driving events are mistagged vs genuinely laboratory-owned drift

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since · dictionary ablation saved 742B

    This event inflates laboratory's loss-ratio with a misfiled claim rather than reflecting real drift in laboratory-owned work; premium is restored by fixing the Originating-Terminal-to-room mapping (ask-027) so the room's offPct measures only its own surface.

    Open the signed attestation →
  53. 2026-09-29 · 🧪 laboratory · offPct 35

    fix(vna): C335h — every ledger reader counts what the fold takes

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  54. 2026-09-29 · ☕ network · offPct 19

    comms(self): arm the light switch v1 — how 2026-09-28 went, 20 realizations, what shipped, 9 decisions

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since

    Open the signed attestation →
  55. 2026-09-29 · 📐 architect · offPct 52

    fix(vna): C78c.3 — re-render SPEC-FROM-TREE.md from the live tree, C78 rows carried

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 20→20 over 8 commits since

    Open the signed attestation →
  56. 2026-09-29 · 📐 architect · offPct 18

    spec(vna): tick C472 — verified by steer.mjs verify (a411d302d3 + 2fea6637fd, guard 9/9)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 20→28 over 42 commits since

    Open the signed attestation →
  57. 2026-09-29 · 🧪 laboratory · offPct 18 · structural

    fix(vna): C444 — the worker contract names the stash-free way to test the parent

    Why it left the lane: The only added prose is the new WORKER_CONTRACT bullet: 'NEVER git stash, checkout or restore: copy `git show HEAD:<path>` into your scratch directory...'. That sentence is a fresh restatement of AXIOM 1's W3 corollary (CLAUDE.md, verbatim: 'the checkpoint must read a record the actor did not author (⇒ read the IMMUTABLE commit, never the working tree)') without citing it. The walk recursed from 'git show HEAD:<path>' / 'copy ... into your scratch directory' straight into the axioms-and-method vocabulary space (A2), while the commit's own lane claim (C444, a VNA worker-contract fix) sits in C,B3. 3 of the 10 lane-Hamming units and the whole 18% offPct trace to that one sentence being un-cited axiom content sitting inside an operations file.

    The semantic pull: 'git show HEAD:<path>' and 'copy ... into your scratch directory' are near-paraphrases of AXIOM 1 W3's 'read a record the actor did not author ⇒ read the IMMUTABLE commit, never the working tree' — same mechanism, different words, no pointer back to the axiom. That is exactly the vocabulary the reef associates with the A2 (axioms) coordinate, dragging litReality into A2,C even though lensIntent only claims C,B3.

    Intent–reality gap: The commit message claims a narrow, contained fix: 'the contract now names the method' for one worker-safety bullet in the C444/VNA lane. The receipt shows the actual text landed partly in the axioms lane (A2) because it silently re-derives a hard rule CLAUDE.md says must never be re-derived.

    • Patch scripts/vna/steer-follow-through.mjs bullet to add the 'AXIOM 1's W3' citation (see code_rewrite).
    • Extend tests/vna/c444-steer-two-doors-one-follow-through.test.mjs to assert the citation token is present, not just the stash-free instruction.
    • Verify the room attribution: this commit's Originating-Terminal (📐 VS Code Architect) reported against room 🧪 laboratory for scripts/vna/ + tests/vna/ files that appear in neither room's owned-surface list — check against the already-open ask-027 (tests/pmu-simulator/originating-terminal-matches-surface.test.mjs) before opening a new spelling.
    • Add scripts/vna/** and tests/vna/** to the correct room's owned-surface entry in data/room-bifurcations.json so future VNA-contract edits don't misattribute room ownership.
    • Sweep the rest of WORKER_CONTRACT (steer-follow-through.mjs) for other bullets that paraphrase axioms-and-method.md content without a citation — this is the first instance, unlikely the only one given how many bullets already end in incident citations.

    What we learned: A worker-contract bullet that operationalizes a hard rule (AXIOM 1's read-the-immutable-commit corollary) without citing it is, to the positional walk, indistinguishable from genuine cross-lane duplication — the fix is a citation token, not a content rewrite, and the contract file's convention of writing safety rules as fresh self-contained prose (rather than linking to the axiom that already states them) is what keeps re-manufacturing this exact drift shape.

    The missing guard (the deliverable): tests/pmu-simulator/hard-rule-echo-requires-citation.test.mjs — gzip-NCD similarity between any new WORKER_CONTRACT bullet and docs/architecture/claude-rules/axioms-and-method.md above a threshold must co-occur with a citation token ('AXIOM 0', 'AXIOM 1', or a claude-rules/ path) in the same bullet, else the guard goes red.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Right-sized in breadth (100% lit, no truncation on either side) but over-sensitive in placement: a laneJump of 6 / laneHamming of 10 off a 2-line diff implies one or two axiom-echoing tokens ('git show HEAD:<path>', 'scratch directory') dominated the recursion. Adjustment: log per-token lane contribution for this sha to confirm single-token dominance before reaching for more depth — deepening the walk without diversifying the C-lane reef seed would likely just confirm the same jump, not dilute it. Experiments: Re-run this sha's walk with the citation-patched bullet text (from code_rewrite) and measure whether offPct drops below 15 — the direct ablation test of the citation-dampens-lane-jump hypothesis. · Re-seed the C-lane reef with more of scripts/vna/steer-follow-through.mjs's own prior bullets (self-seeding) so prewalkOverlap on VNA-contract edits rises above 3, then re-measure offPct on this same sha. · Add 'git stash', 'git show', 'checkout', 'restore' to a generic-tool-vocabulary downweight list (they're git plumbing, not axiom-specific) and re-measure offPct on this commit plus the two other 265-event laboratory commits from the last 14 days to see if the class shrinks.

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since · dictionary ablation saved 769B

    An 18%-off-lane commit whose actual defect is an uncited hard-rule echo, in a room already carrying 265 out-of-lane events in 14 days, keeps this lane's loss-ratio elevated; the citation patch plus the echo-detector guard is what restores premium, not a bigger walk.

    Open the signed attestation →
  58. 2026-09-29 · 📐 architect · offPct 16 · structural

    docs(asks): the extension opportunities sheet — 0.3.60 built, the ask refined, the rest ranked

    Why it left the lane: The only file in the diff is docs/asks/2026-09-29-extension-opportunities.txt — a path that does not appear anywhere in data/room-surfaces.json, the tracked source loadRooms() reads for 📐 architect's owned globs (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md). litReality (139) exceeds litIntent (127) with prewalkOverlap only 7 out of 127 — the reef barely recognized the asks-sheet vocabulary as architect's own before the walk even ran, because the file lives in a directory no room's glob list touches.

    Intent–reality gap: The commit claims architect-room docs work (Originating-Terminal 📐 architect, docs(asks) scope, content genuinely authored from an architect session) but the receipt measured 16% of the lit reality mass landing outside every glob architect owns — because the path it wrote to, docs/asks/, is claimed by nobody in data/room-surfaces.json, not because architect actually strayed into another room's territory.

    • Add a `shared` array to data/room-surfaces.json and seed it with docs/asks/ (the impasse skill's cross-room output directory)
    • Ship tests/pmu-simulator/shared-state-files-have-room-owner.test.mjs (ask-003) asserting every path with commits from ≥2 distinct Originating-Terminal values across history is either in a room's `owned` array or in the new `shared` array
    • Grep git history for other directories written by multiple rooms with no owner entry (docs/decks/ event dirs, .thetacog/*) before the guard ships, so its first run doesn't just red-flag docs/asks/ alone and get narrowed to a single path
    • Wire the offPct computation to read the `shared` array and skip lane-mismatch scoring for those paths
    • Re-run the receipt for 580a75cee1 after the config change to confirm offPct drops under 15 for this exact commit shape

    What we learned: The room-ownership model in data/room-surfaces.json is single-owner-per-glob only — it has no representation for a directory that is legitimately written by whichever room happens to be running (the /impasse skill fires 'whenever a run ends with a question for the operator', from any of the 9 rooms). The prior lesson (ff09774e5) fixed the trailer-divergence case; this is the adjacent, unfixed case: a real shared-authorship surface with zero owners, not a mismatched-owner surface.

    The missing guard (the deliverable): tests/pmu-simulator/shared-state-files-have-room-owner.test.mjs

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Saturated, not under- or over-deep: a ~100% walked-to-lit ratio on both sides means the walk finds nothing to prune — every cell it visits lights up. For a 128-line docsOnly commit this is wasted traversal; concrete adjustment: for docsOnly=true commits, cap walk depth/breadth to the point where the lit-ratio first plateaus (this is exactly the open ask-005 docs-only-commit-skips-lattice ticket) rather than running the full walk and then discovering nothing was pruned. Experiments: Add docs/asks/ to the shared-surface list, re-seed the reef, and confirm prewalkOverlap rises materially above 7 for the next asks-sheet commit — if it doesn't, the reef isn't reading room-surfaces.json at all and that's a separate bug · Re-run this sha's receipt after the config patch and confirm offPct drops below 15, holding libSha/reefSha/corpusSha fixed so the comparison is apples-to-apples · For the next 10 docsOnly=true commits across all rooms, compare mean offPct before vs after the shared-surface patch ships; expect the room's 93-events/14-days count to drop measurably for docs/asks/-shaped commits specifically

    Measured outcome (deterministic, not self-graded): room mean offPct 21→17 over 7 commits since

    A structurally unowned shared directory scoring as room drift is a false loss — it inflates this lane's loss-ratio on noise rather than signal, and restoring premium just requires the shared-surface declaration plus ask-003's guard, not any change to how architect actually works.

    Open the signed attestation →
  59. 2026-09-29 · 🧪 laboratory · offPct 60

    spec(vna): C228a — the search order is measured, not fixed

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  60. 2026-09-29 · 🧪 laboratory · offPct 29

    fix(vna): C27/C56 — steer-ui.test.mjs stops racing the live shared render

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  61. 2026-09-29 · ☕ network · offPct 24

    fix(comms): C240d — the letter ends at the rule; the operator's grant note never reaches a reader

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since

    Open the signed attestation →
  62. 2026-09-29 · 🔨 builder · offPct 27

    feat(vna): C464 — the backup store learns rowsFor(manifest); /backup/drift reads real rows

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 27→24 over 6 commits since

    Open the signed attestation →
  63. 2026-09-29 · 🧭 navigator · offPct 36 · mistagged

    fix(vna): C297 — give scripts/vna/audio-basin.mjs its HOME_ONLY why

    Why it left the lane: The diff itself is a 4-line, single-file addition to HOME_ONLY in packages/thetacog-mcp-vscode/src/commands.ts. That file sits nowhere in 🧭 navigator's owned surface (open-room-session.sh, thematic-scheduler.ts, focus-gravity.ts, cognitive-dashboard.html) — it belongs to VS Code extension/command-table territory. The commit's own trailer says 'Originating-Terminal: 📐 VS Code Architect', not navigator. The receipt is scoring a 📐-Architect commit against 🧭-navigator's lane, which is exactly why litReality (137) sprawls past litIntent (104): the walk is hunting for navigator-shaped structure in an architect file and finding none, so it keeps firing outward.

    The semantic pull: Body prose terms like 'doorCommand', 'HOME_ONLY', 'spec basin', 'chat door' pulled the intent-side walk toward A1,C3, while the diff's actual home (commands.ts / DOORS table in packages/thetacog-mcp-vscode) sits at C,C2 — a lattice jump of laneHamming=32, near-maximal. prewalkOverlap=6 against 104/137 lit cells confirms the reef seed already found almost nothing in common before the walk ran.

    Intent–reality gap: The commit message and its own Originating-Terminal trailer correctly claim 📐 VS Code Architect territory (a tiny, well-fenced HOME_ONLY table fix). The event record instead measures this commit against 🧭 navigator's lane, so a correct, narrow commit reads as a 36%-off-lane navigator event.

    • Add packages/thetacog-mcp-vscode/src/commands.ts to 📐 VS Code Architect's owned-surface glob (closes the room-surface-coverage gap, ask-001)
    • Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, asked 21× already) asserting receipt.room == commit trailer Originating-Terminal when the trailer is present
    • Audit the room's other 80 out-of-lane events from the last 14 days for the same trailer/room mismatch before writing off this room's offPct trend as code drift
    • Scale ballistic-walk spread to diff LOC so a 4-line single-file commit can't light 137 cells
    • Seed the gzip-NCD reef with the trailer's declared room token before the walk runs on any commit carrying an Originating-Terminal line

    What we learned: This room's prior three interventions were facts-only and never moved the needle (offPct 3→34, 3→34, 28→26) because they treated every event as code drift. This event shows the pipeline has a second, undiagnosed failure mode in this room: the room label it scores against can diverge from the commit's own self-declared Originating-Terminal trailer, so a chronically-drifting room may actually be a chronically-mislabeled one — no code-side fix in navigator's territory can lower an offPct caused by scoring architect's work under navigator's lane.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Oversaturated for this diff's size: a single-file, 4-line table addition should not out-light a multi-file commit. Concrete adjustment: cap walk branching/depth as a function of diff LOC so litReality can't exceed litIntent by more than a fixed ratio on sub-10-line diffs. Experiments: Re-seed the reef for this sha using the Originating-Terminal trailer string as an explicit seed token, then re-measure whether prewalkOverlap rises above 6 · Ablate: drop commit-message prose from the intent-side walk entirely, seed intent purely from diff file paths + trailer, re-score offPct on this sha and the last 10 navigator events to see how much drops below the 15 threshold · Run the walk with LOC-scaled depth on the last 20 sub-10-line commits and compare litReality/litIntent ratio before and after

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since · dictionary ablation saved 781B

    A correct, narrow fix is inflating navigator's loss ratio by trailer-mismatch noise rather than genuine drift; premium only comes back down once ask-027 ships and the 81-event backlog is re-split into true drift vs mislabeled-room events.

    Open the signed attestation →
  64. 2026-09-29 · 📐 architect · offPct 33

    spec(vna): tick C463 — the notary witnesses a turn; red at c01ce81d0e~1, green at HEAD (5/5)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 20→15 over 10 commits since

    Open the signed attestation →
  65. 2026-09-29 · 🧪 laboratory · offPct 38

    fix(vna): the red-witness archive carries packages/thetacog-mcp/scripts — C463's guard read unmeasured without it

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  66. 2026-09-29 · ☕ network · offPct 37

    feat(comms): C240d — the network door: one graded body, a Gmail draft per reader, nothing sent

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since

    Open the signed attestation →
  67. 2026-09-29 · 🧪 laboratory · offPct 18 · structural

    test(vna): C351 — signed fixture verifies with fetch stubbed to throw, a one-byte flip is refused

    Why it left the lane: The diff is saturated with signature-verification vocabulary — 'verifyCommand', 'verifyEntitlement', 'siteKeyFromSeed', 'mintEntitlement', 'ed25519', 'fetchThatThrows', 'flipOneByte', 'forge vector', 'attest.rs', 'pinned-key' — none of which shares a single token with 🧪 laboratory's declared owned surface (CRM/orchestrator/swarm-comms tooling: thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, init-claude-flow-with-crm.sh). The commit's own trailers never even name laboratory: Originating-Terminal is '🧭 C350/C351 worker' and Relevant-Rooms lists 'VS Code Architect, Terminal Voice, WezTerm Vault'. The receipt nonetheless scored this commit inside laboratory's lane, so the walk correctly found the crypto/auth vocabulary sitting at lensReality=A1,B1 while the claimed lane (whatever laboratory's CRM surface maps to under 'vna' scoping) sits at lensIntent=A1,C1 — laneJump=3, laneHamming=14. This is a room-attribution failure, not a content failure: the work is exactly where a VNA/auth guard test belongs (tests/vna/), it is the RECEIPT'S room label that is wrong.

    The semantic pull: Terms 'verifyEntitlement'/'verifyCommand'/'ed25519'/'signature'/'forge' pull the reality walk toward the auth-verification coordinate (A1,B1); the bare scope tag 'test(vna):' in the subject line is the only thing pulling intent toward A1,C1. Neither pull has anything to do with laboratory's CRM/orchestrator glob — the mismatch is upstream of the walk, in whichever routing step assigned this commit's receipt to laboratory instead of one of the three rooms the commit itself named.

    Intent–reality gap: The commit claims to be C350/C351 VNA-auth guard work relevant to VS Code Architect, Terminal Voice, and WezTerm Vault; the receipt evaluated it against 🧪 laboratory's CRM/orchestrator lane instead — a room the commit never claimed and whose owned surface has zero overlap with tests/vna/**.

    • Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, already asked 25×) so Originating-Terminal/Relevant-Rooms is checked against the room a receipt is attributed to before offPct is scored.
    • Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, already asked 27×) so Relevant-Rooms is verified to actually cover tests/vna/**, scripts/vna/**, src/lib/auth/**.
    • Add an owned-surface glob for tests/vna/**, scripts/vna/**, src/lib/auth/** to whichever of VS Code Architect / Terminal Voice / WezTerm Vault legitimately claims VNA/auth work, so future C350/C351-class commits stop falling through to laboratory.
    • Audit the room's 268 out-of-lane events from the last 14 days for the same Originating-Terminal≠assigned-room pattern before treating them as 268 independent content-drift incidents.
    • When neither Originating-Terminal nor Relevant-Rooms matches any owned-surface room, emit 'UNASSIGNED' rather than silently defaulting to laboratory.

    What we learned: 🧪 laboratory's 268 out-of-lane events in 14 days are not 268 separate semantic mistakes — they are the accumulated cost of a routing fallback that silently drops unresolved-terminal commits into laboratory's lane regardless of content, which is exactly the class ask-027 has been raised 25 times to catch and has still never shipped.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. litIntent/walksIntent and litReality/walksReality are both ~100% (141/141, 136/136) — the walk is SATURATED, lighting every cell it visits with no discrimination. A saturated walk can't distinguish 'visited because relevant' from 'visited because adjacent', which is exactly why a room-attribution error like this one isn't caught upstream. Adjustment: raise the lit-threshold (require a stronger NCD/edge-weight bar before a walked cell counts as lit) so fill-rate drops below ~90%, restoring discriminative power. Experiments: Re-run this commit's receipt with room substituted for 'VS Code Architect' (one of its own Relevant-Rooms) instead of 'laboratory' and measure whether offPct drops below the 15 threshold — directly tests the mistagged-room hypothesis. · Seed the gzip-NCD reef dictionary with vna-auth vocabulary (ed25519, JWT, entitlement, pinned-key) and measure whether prewalkOverlap rises above 6 for this commit class. · Cap lit-fraction at <90% of walked cells for the next 20 laboratory-room commits and measure whether offPct separates true-laboratory content from misattributed VNA/auth content.

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since · dictionary ablation saved 1028B

    Each of laboratory's 268 mis-lane events is unpriced loss-cost from a fallback silently absorbing correctly-written auth-security work under the wrong room's premium; shipping the already-25×-requested terminal-matches-surface guard converts that into a bounded one-time fix and restores the room's loss ratio to reflect only its true CRM/orchestrator surface.

    Open the signed attestation →
  68. 2026-09-29 · 📐 architect · offPct 30 · structural

    spec(vna): tick C121 — the cog face reads percentile, chair-hours and tokens; band s reads UNMEASURED

    Why it left the lane: The diffstat is a single line, one checkbox flipped from '- [ ]' to '- [x]' in the C121 entry of SPEC-VNA-COCKPIT.md. Everything else in that line is byte-identical unchanged prose: 'guard: `tests/vna/c121-cog-is-chair-hours.test.mjs`', 'C93j `hoursOf`', 'C113e', 'cog-weights.json', 'data/vna/cog-discrepancy.ndjson', 'C93f/C93p'. None of that text is new, but litReality=113 vs litIntent=74 and walksReality=113 vs walksIntent=74 show the walk lit up 39 MORE nodes on the reality side than the intent side for a one-character edit — the walk is re-surveying the whole unchanged paragraph's cross-references (chair-hours ledger, cog-weights band table, the discrepancy ndjson, other rooms' guard files) as if they were freshly touched, and those coordinates sit outside 📐architect's owned surface (docs/strategy/, docs/03-product/, .workflow/rooms, docs/01-business/strategy, CLAUDE.md).

    The semantic pull: '(guard: `tests/vna/c121-cog-is-chair-hours.test.mjs`)', 'C93j `hoursOf`', 'cog-weights.json', 'data/vna/cog-discrepancy.ndjson' — literal VNA-engineering coordinate strings sitting inside an architect-authored strategy checklist line — are what the reality walk latches onto; they were present before this commit and after it, so the pull is structural to the paragraph, not to the edit.

    Intent–reality gap: The commit claims a one-line spec-tick ('tick C121') scoped to the architect's own strategy doc, but the receipt measured a reality footprint 1.5x the intent footprint (113 vs 74 lit nodes) spilling into VNA chair-hours/cog-weights/discrepancy-ledger coordinates that belong to other rooms — despite zero new content in the diff. A second, sharper gap sits inside the same line: it ticks C121 to '[x]' while its own guard is stated as 'none yet — REQUIRED' and the paragraph's last two words are still 'Not built.' — the record contradicts itself in the same commit.

    • Revert or correct the C121 checkbox in docs/specs/vna/SPEC-VNA-COCKPIT.md so [x]/'Not built.' stop contradicting each other
    • Ship tests/vna/c121-cog-is-chair-hours.test.mjs before any future tick of C121
    • Ship tests/pmu-simulator/docs-only-commit-skips-lattice.test.mjs (ask-005, asked 13x, still unshipped) so docsOnly=true commits are diff-hunk-scoped instead of paragraph-scoped
    • Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, asked 27x) and add a Relevant-Rooms trailer to this commit's family — the message currently carries only Originating-Terminal
    • Add the commit-trailer rule to CLAUDE.md's COMMIT MESSAGE STRUCTURE section naming the docs/specs/vna/ exception explicitly
    • Grep the offPct/walk implementation for where it decides walk scope on a docsOnly commit and confirm whether it's file-region or diff-hunk based

    What we learned: A 'setpoint' checkbox-tick commit (docsOnly=true, 1-line diffstat) can still register offPct=30 because the walk treats the whole surrounding paragraph — not the edited span — as reality mass; any single-line tick inside SPEC-VNA-COCKPIT.md's cross-referential mega-paragraphs is structurally guaranteed to look like cross-lane drift regardless of which room ticks it. This is distinct from the prior lesson (ff09774e5, about Originating-Terminal/Relevant-Rooms tagging semantics) — here the walk itself isn't diff-aware.

    The missing guard (the deliverable): tests/pmu-simulator/docs-only-commit-skips-lattice.test.mjs

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Over-saturated for this commit class: litReality/litIntent = 1.53x on a 1-line, docsOnly=true diff — the walk is covering the full paragraph/section rather than the edited span. Adjustment: for commitClass=setpoint with docsOnly=true, scope the reality walk to a ±3-line diff-hunk window instead of the whole checklist entry. Experiments: Re-run sha 7bcdb39d1's walk restricted to a ±3-line diff-hunk window and compare offPct against the shipped 30 — predict it drops under the 15 threshold · Correlate diffstat line-count against offPct across all docsOnly=true commits in the last 14 days to confirm small-diff/high-offPct is a class-wide pattern, not a one-off · Add a prewalkOverlap<10 fast-path for docsOnly=true commits that routes to a lighter reef-only check before invoking the full ballistic walk

    Measured outcome (deterministic, not self-graded): room mean offPct 20→22 over 7 commits since · dictionary ablation saved 817B

    This room already carries 101 out-of-lane events in 14 days; a structural (not intentional) drift source that fires on every trivial checkbox-tick inside a cross-referential mega-spec keeps inflating the room's loss ratio without real cross-lane work, so premium restoration runs through fixing the walk's diff-scoping (ask-005) rather than penalizing the room's behavior.

    Open the signed attestation →
  69. 2026-09-29 · 🧪 laboratory · offPct 28

    Revert "feat(vna): C109g — the + says why you buy, with a progress bar"

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since

    Open the signed attestation →
  70. 2026-09-29 · 📐 architect · offPct 35

    docs(ops): IntentGuard + backup build report v1 and the questions by version

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 20→24 over 12 commits since

    Open the signed attestation →
  71. 2026-09-29 · 📐 architect · offPct 19

    spec(vna): tick C335f — fold, append gap check and tail watch read only the new bytes

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 20→20 over 8 commits since

    Open the signed attestation →
  72. 2026-09-29 · 📐 architect · offPct 39

    spec(vna): tick C471 — verified by steer.mjs verify (34c6a36021, guard 10/10)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 20→28 over 42 commits since

    Open the signed attestation →
  73. 2026-09-29 · 🧭 navigator · offPct 31 · mistagged

    feat(vna): C419 — the closer now records where it landed, not dictated intent

    Why it left the lane: The diff touches packages/thetacog-mcp/README.md, packages/thetacog-mcp-vscode/README.md, scripts/vna/public-surface-register.mjs, and two tests/vna/*.mjs files — all voice/positioning surface (the RECORD_OF_INTENT constant + its byte-identical README mirrors). None of these paths intersect 🧭 navigator's declared surface (scripts/open-room-session.sh, .thetacog/cache/room-runners/*.sh, openclaw/src/thematic-scheduler.ts, openclaw/data/thematic-schedule.json, openclaw/src/focus-gravity.ts, openclaw/data/ollama-overnight/thematic-heartbeat.json, .workflow/cognitive-dashboard.html). The commit message carries Steer-Dispatch, Originating-Terminal (📐 VS Code Architect) and Receipt-Verified trailers but NO Relevant-Rooms trailer, so nothing in the commit itself claims navigator — the room label was assigned by something outside the diff's own declaration.

    The semantic pull: lensIntent=A1,B3 vs lensReality=B,A1 with laneJump=5, laneHamming=20 shows the walk's reality cells landed on a different lattice column than the intent cells even though litIntent(143)≈litReality(139) — the mass isn't missing, it's misplaced. The literal strings pulling it — 'RECORD_OF_INTENT', 'public-surface-register.mjs', 'README.md', 'byte-identical' — are all voice/positioning vocabulary that has no anchor anywhere in navigator's scheduler/dashboard glob, so the reef had nothing legitimate to seed a navigator lane with and the walk spread outward (prewalkOverlap=5, low) until offPct crossed 31.

    Intent–reality gap: The commit message describes a coherent, correctly-scoped change ('the closer now records where it landed, not dictated intent' — a one-sentence positioning rewrite plus its two guard tests). The receipt measured that work as 31% outside the 🧭 navigator lane it was filed under — but the work was never navigator's to begin with; the gap is in the room assignment, not in what was built.

    • Add a Relevant-Rooms trailer to this commit's class going forward (packages/*/README.md + scripts/vna/public-surface-register.mjs → voice/herald room, never navigator)
    • Land tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010) so a commit missing a Relevant-Rooms trailer that covers its own diff fails before the receipt runs
    • Land tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027) so Originating-Terminal (📐 VS Code Architect here) is cross-checked against the touched-file ownership, not trusted blind
    • Audit 🧭 navigator's other 80 out-of-lane events in the last 14 days for the same mistag signature (voice/README/register commits wrongly room-tagged) before treating navigator's actual code as the problem
    • Confirm whatever process assigns 'room' to a receipt (since neither Originating-Terminal nor Relevant-Rooms named navigator) falls back to file-glob match, never last-active-terminal or default

    What we learned: Navigator's rising offPct (3→34 across the last three interventions) was never diagnosed because those passes ran facts-only; this pass shows the mechanism is likely a room-attribution default that ignores the diff's own file surface — a structural fact about the tagging pipeline, not about navigator's committed code, which the prior lessons couldn't see without sensemaking.

    The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized in volume (143 vs 139 lit cells, near-parity) but mislocated — the walk isn't shallow or saturated, it's being asked to place content that has no true home in this lane. Concrete adjustment: gate the walk on prewalkOverlap — if overlap<10 (as here, =5), flag the lane assignment LOW-CONFIDENCE before the walk's lit-cell output is trusted as the reality lane. Experiments: Re-run this sha's reef seed with room-ownership globs weighted into the dictionary (README.md, public-surface-register.mjs tagged voice/herald) and measure whether prewalkOverlap rises above 5 · Ablate: add 'RECORD_OF_INTENT' and 'public-surface-register.mjs' to the gzip baseline dictionary under a voice/herald tag, recompress this commit's diff, measure whether offPct drops from 31 · Re-run the walk seeded from the Relevant-Rooms trailer (once added) instead of Originating-Terminal, and compare laneHamming against this run's 20

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since · dictionary ablation saved 991B

    A mistagged 31%-off commit inflates this lane's measured loss ratio on work it never touched, which understates navigator's real 81-event drift problem and overstates the voice/herald lane's discipline; premium is restored by landing the Relevant-Rooms/Originating-Terminal guards so room attribution tracks the diff, not the terminal.

    Open the signed attestation →
  74. 2026-09-29 · 🎤 voice · offPct 31

    fix(blog): C450/C309f — re-cut the brief's last line so 'safe AI' leaves the served surface

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 5 commits since

    Open the signed attestation →
  75. 2026-09-29 · 🧪 laboratory · offPct 29

    fix(voice): the public floor counts uses of "deterministic", not quoted pokes at others

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 12→16 over 4 commits since

    Open the signed attestation →
  76. 2026-09-29 · 🧪 laboratory · offPct 29 · mistagged

    perf(vna): C335f — the append's gap check and the tail watcher read only the new bytes

    Why it left the lane: amend-ledger.mjs's own comment says the append 'dispatches its own fold' (dispatchFold, imported from hook-doors.mjs, guarded by VNA_NO_FOLD_DISPATCH) — the literal token 'dispatch' recurs through the diff (dispatchFold, 'a written row dispatches its own fold', the fold-dispatch guard env var) even though it names the VNA ledger's own internal fold-trigger, not the swarm-comms task-dispatch machinery 🧪 laboratory actually owns (thetacog_dispatch, .thetacog/orchestrator/). The new test harness compounds it: measureFileBytes spawns a real child node process with execFileSync('node', ['-r', pre, script, ...args]) and a generated preload that monkey-patches fs.openSync/readSync/closeSync/readFileSync — subprocess-spawning-plus-module-patching is exactly the shape of orchestrator/swarm tooling. prewalkOverlap=4 (low, before the walk even ran) plus lensReality=A1,C3 vs lensIntent=B3,B and laneHamming=34 show the gzip-NCD reef seed catching on this shared 'dispatch/spawn/child-process' vocabulary and pulling reality toward the orchestrator coordinate.

    The semantic pull: 'dispatchFold' / 'dispatches its own fold' / VNA_NO_FOLD_DISPATCH (amend-ledger.mjs) plus the spawned-child-process + fs-monkeypatch preload harness (c335f test file) — tokens that gzip-compress close to 🧪 laboratory's own swarm-comms/orchestrator dispatch vocabulary despite naming an unrelated VNA-internal mechanism.

    Intent–reality gap: The commit's own Relevant-Rooms trailer names WezTerm Vault, VS Code Architect, iTerm Builder — never 🧪 laboratory — and every changed path (scripts/vna/amend-ledger.mjs, scripts/vna/txt-tail-watch.mjs, tests/vna/c335f-*.test.mjs) sits outside 🧪 laboratory's owned surface (memory/, .mcp.json, thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, punch-list*). The receipt nonetheless filed this event as a 🧪 laboratory drift at offPct 29 — the room claim contradicts the commit's own trailer, not just the receipt's measurement.

    • Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, already asked 26×) so a commit's own trailer is checked against its diff before any room event is filed
    • Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, asked 25×) — 'Originating-Terminal: 🤖 steer-worker' here names no room at all, which is likely the actual fallback trigger
    • Audit whatever routing table produced 'room=🧪 laboratory' for this sha — find the default/catch-all branch and require it to emit UNROOMED instead of laboratory
    • Add scripts/vna/** and tests/vna/** to the owned-surface glob of whichever of WezTerm Vault / VS Code Architect / iTerm Builder actually carries VNA-ledger work, so a future glob-match check finds a home instead of falling through
    • Re-run this sha's room assignment after the fix and confirm it lands on one of the three trailer-named rooms, never laboratory

    What we learned: Two of the ten open guard asks (ask-010 'relevant-rooms-covers-diff', asked 26×, and ask-001 'room-surface-coverage', asked 11×) are precisely this defect class, and neither has ever shipped — meaning this exact mismatch (assigned room ≠ trailer ≠ owned surface) has been re-diagnosed dozens of times across commits without the fix ever landing, because the fix lives in room-routing infrastructure that sits outside any single commit's diff and so never gets a 'my turn' to be touched.

    The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs

    Detector probe: signal attribution — gzip reef 75% · ballistic walk 25%. Saturated, not shallow or right-sized: litIntent==walksIntent (132/132) and litReality==walksReality (137/137) — every walked cell is being counted as lit with zero threshold pruning, so a single shared token like 'dispatch' that the walk merely brushes against gets full lit-cell credit. Concrete adjustment: require a minimum per-cell hit frequency (e.g. ≥2 distinct matched terms) before a walked cell counts as lit, so one coincidental cognate can't fully light an out-of-lane cell. Experiments: Re-run this commit's gzip-NCD reef seed with 'dispatchFold'/'dispatch' split into a VNA-fold-specific subtoken vs a swarm-dispatch subtoken, then re-measure whether laneHamming drops below 34 · Ablation: strip the generated preload/spawn boilerplate (execFileSync + fs monkey-patch block) from the corpus fed to the reef for this sha and re-measure offPct — if it falls substantially, the test-harness boilerplate (not the production code) is the actual driver · Add a per-file glob pin (scripts/vna/**, tests/vna/**) to the reef so laneJump for those paths is bounded regardless of vocabulary overlap with orchestrator/dispatch terms

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since · dictionary ablation saved 881B

    A room-attribution mismatch this exact shape has been flagged 26 times (ask-010) without ever shipping a guard, so the 'room' field this lane's premium is priced against is currently unreliable evidence, not signal — premium stays elevated until ask-010 lands, since fixing this one commit's placement does nothing to stop the next one from being filed under the wrong room again.

    Open the signed attestation →
  77. 2026-09-29 · 🧪 laboratory · offPct 53 · structural

    feat(vna): C413 — the install series: every post and follow-up leaves a dated step, or none

    Why it left the lane: The diff's growth-series work (SPEC-VNA-COCKPIT.md, tick.sh stage, funnel-daily.sh) sits in the claimed C2,C growth-measurement lane, but to compute `grants_minted`/`grants_bound` licence-funnel.mjs had to export `openLedger` from straight-path.mjs and author `grantClaims(rows)`, which inspects raw entitlement-ledger row shape (`r.ref.startsWith('grant')`, `r.kind === 'unclaimed'`, `r.pubkey_fingerprint`) — that is device-binding/entitlement internals, the A2,C lane the receipt lit at litReality=142 vs litIntent=97 (a 46% wider reality spread, laneHamming=24).

    The semantic pull: `export async function openLedger` (newly exported from straight-path.mjs) and `grantClaims`'s field literals `kind === 'unclaimed'` / `r.pubkey_fingerprint` are entitlement-ledger vocabulary, not growth-series vocabulary — those two symbols are what dragged litReality into A2,C while the intent walk (SPEC checklist line, tick.sh stage comment) stayed anchored at C2,C.

    Intent–reality gap: The commit claims one thing: "every post and follow-up leaves a dated step" — a growth-measurement series. The receipt measured the commit reaching into and newly exporting the credits-ledger's private accessor and hand-rolling device-claim detection logic inside the growth file — work the message never fences as in-scope.

    • Create scripts/vna/grant-reader.mjs housing grantClaims()/readGrants(), re-exported for licence-funnel.mjs
    • Re-check whether straight-path.mjs's openLedger export is still needed externally once grant-reader.mjs is the caller; narrow visibility if not
    • Add SPEC-VNA-COCKPIT.md C413 fencing sentence naming the grant-read boundary
    • tests/vna/c413-the-install-series.test.mjs — add a case asserting licence-funnel.mjs's own source does not contain the literals 'pubkey_fingerprint' or 'unclaimed' (guards against re-drift after the move)
    • Register scripts/controller/funnel-daily.sh under a room-owner glob (tests/pmu-simulator/shared-state-files-have-room-owner.test.mjs currently asked 3×)
    • Confirm Relevant-Rooms trailer conventions cover scripts/controller/*.sh edits going forward

    What we learned: A measurement job that reports on an entitlement primitive (grants/claims) cannot stay single-lane unless the entitlement read is exposed as a summary accessor first — otherwise the growth file is structurally forced to author entitlement-row parsing itself, and that parsing is what the walk lights as off-lane, not the growth logic.

    The missing guard (the deliverable): tests/vna/no-raw-ledger-fields-outside-entitlement-owner.test.mjs — a guard scanning growth/funnel-lane files (scripts/vna/licence-funnel.mjs, straight-path.mjs's growth-facing exports) for entitlement-ledger row-shape literals (pubkey_fingerprint, kind===, ref.startsWith('grant')) and failing if found outside a file the entitlement/grant surface owns.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Right-sized, not saturated as a truncation artifact: walksIntent/litIntent=97/97 and walksReality/litReality=142/142 — every step walked was lit on both sides (walkTruncated=false), so the wider reality spread reflects real cross-lane content, not an under-budgeted walk. Adjustment: none to depth; instead gate large multi-concern commits (5+ files touching 2+ prior lenses) with a pre-walk lane-count check before they land, so the spread is caught pre-commit rather than post-hoc. Experiments: Re-run the reef placement using only the SPEC-VNA-COCKPIT.md hunk as seed and check whether prewalkOverlap rises above 5 for a doc-only slice — tests whether the bundling itself is what suppressed reef anchoring · Split this commit's diff synthetically into (a) series-schema-only and (b) grant-reader-only, re-run the receipt on each, and confirm offPct drops under 15 for (a) — validates the structural diagnosis is the actual cause, not a scoring artifact · Add straight-path.mjs's openLedger and the grantClaims literals to the reef corpus with an explicit lane-owner tag, then measure whether the next grant-adjacent commit's prewalkOverlap improves

    Measured outcome (deterministic, not self-graded): room mean offPct 13→14 over 3 commits since · dictionary ablation saved 716B

    This event marks the growth-metrics lane's loss ratio up (structural boundary crossed, not operator error), and restoring the rate is mechanical — ship the grant-reader.mjs extraction plus the raw-ledger-field guard so the next grants-in-a-series commit stays single-lane.

    Open the signed attestation →
  78. 2026-09-29 · 📐 architect · offPct 19

    spec(vna): C412b row — the title in his words

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 21→2 over 5 commits since

    Open the signed attestation →
  79. 2026-09-29 · 🎩 operator · offPct 35

    fix(pmu): C401a — land the actual REFERRED-state diff (prior commit's tree was stale)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Open the signed attestation →
  80. 2026-09-29 · 📐 architect · offPct 59

    spec(vna): C466–C468 — the card places against a committed spec; push + provision named as operator acts

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 20→21 over 6 commits since

    Open the signed attestation →
  81. 2026-09-29 · 📐 architect · offPct 32

    spec(vna): C466 wording — the card places the action, it never stands between the agent and the act

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 21→26 over 29 commits since

    Open the signed attestation →
  82. 2026-09-29 · 📐 architect · offPct 57

    spec(vna): tick C466 — verified by steer.mjs verify (65e5c41705, guard 5/5)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 20→26 over 14 commits since

    Open the signed attestation →
  83. 2026-09-29 · 🧪 laboratory · offPct 34

    fix(vna): C405 — the mutate ledger row carries who picked the next arm

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 13→14 over 3 commits since

    Open the signed attestation →
  84. 2026-09-29 · 📐 architect · offPct 35 · mistagged

    spec(vna): tick C338 — the crossing count rides the commit panel, spec-drift and attest receipts

    Why it left the lane: The diff is a 1-line checkbox flip (`- [ ] C338` → `+ [x] C338`) sitting inside an already-existing ~1000-word spec paragraph saturated with hardware/mechanism vocabulary (ShortLex, pmu-onchip --ballistic, boundary crossing, Rust walk, k_E = 0.003, Merkle/attest). Because the receipt walks the file's content rather than the diff hunk, that surrounding vocabulary — not the one line actually touched — pulled the reality lane to A1,B while the commit's claimed identity (Originating-Terminal 📐architect) sits on A1,A with no Relevant-Rooms trailer naming who actually owns docs/specs/vna/.

    The semantic pull: litIntent=87 vs litReality=104 (reality lit 20% more cells than intent), prewalkOverlap=2 (near-zero gzip-NCD reef overlap before the walk even ran), laneJump=1 but laneHamming=26 — a small formal step that still displaces a quarter of the lit surface. docsOnly=true confirms nothing but markdown moved. The file itself, docs/specs/vna/SPEC-VNA-COCKPIT.md, is absent from 📐architect's owned-surface list (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md) — the room claimed a file it doesn't own, with no Relevant-Rooms trailer to correct that.

    Intent–reality gap: The commit message and Originating-Terminal both claim 📐architect-room work ('spec(vna): tick C338'), but the receipt measured reality landing on a file (docs/specs/vna/SPEC-VNA-COCKPIT.md) that appears nowhere in architect's owned-surface glob, with no Relevant-Rooms trailer naming the room that does own it — the room identity on the commit doesn't match the surface the diff touched.

    • Wire tests/pmu-simulator/docs-only-commit-skips-lattice.test.mjs (ask-005, already open, 12×) to scope docs-only walks to the diff hunk, not the whole file
    • Wire tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, already open, 25×) to require a Relevant-Rooms trailer whenever the diff touches a path outside Originating-Terminal's owned-surface glob
    • Audit .workflow/rooms/*.html (or wherever room owned-surface config lives) for an explicit owner of docs/specs/vna/** — currently no room in the shown surface list claims it
    • Backfill Relevant-Rooms trailers are not retroactive, but flag the pre-commit hook (WARN-only, per WIP-claims precedent) when a commit's Originating-Terminal room has zero owned-surface globs matching the staged diff
    • Check whether other recent 'spec(vna): tick C###' commits from this room show the same missing-trailer + off-surface pattern (recent log shows multiple 'chore(commit-page): publish' + 'spec(vna): tick' commits back to back) — this may be a repeating pattern, not a one-off

    What we learned: A checkbox-only tick on a giant pre-written spec entry is scored by the whole document's semantic gravity, not the one line that changed — meaning the 'tick' commit class (marking already-drafted VNA spec rows done) is structurally guaranteed to inherit whatever vocabulary dominates the surrounding paragraph regardless of which room does the ticking. This is distinct from the prior Originating-Terminal/Relevant-Rooms lesson (ff09774e5, which fixed sanctioned trailer divergence 20→14): here the trailer is missing entirely, not divergent, and the touched file has no declared owner in any room's surface at all — an orphaned-surface gap, not a divergence one.

    The missing guard (the deliverable): tests/pmu-simulator/docs-only-commit-skips-lattice.test.mjs

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized in general (a 1.2x reality/intent spread isn't saturated) but over-applied here: for a docsOnly, single-line-checkbox diff, the walk should be near-zero spread since no semantic content changed. Adjustment: gate walk scope by diff line-count for docsOnly commits — below a threshold (e.g. 5 lines), walk only the changed hunk's local window, not the full file. Experiments: Re-seed the reef from the diff hunk (±20 lines) instead of full-file text for docsOnly=true commits over N lines; measure whether prewalkOverlap rises and offPct falls on the next 10 docs-only commits · Backtest: recompute offPct for the last 20 'chore(commit-page): publish' and 'spec(vna): tick C###' commits under a diff-scoped walk; compare the room's mean offPct before/after · Seed the reef's shared corpus with recurring VNA spec vocabulary (ballistic, ShortLex, pmu-onchip, boundary crossing) so a checkbox-only tick doesn't manufacture false semantic distance from an intent message that already names 'vna' and 'crossing count'; measure prewalkOverlap delta

    Measured outcome (deterministic, not self-graded): room mean offPct 20→20 over 8 commits since · dictionary ablation saved 1006B

    A docs-only checkbox tick reading as 35% off-lane on a file the room doesn't even own inflates this lane's loss-ratio with false-positive noise rather than real drift; premium is restored by scoping the walk to the diff hunk for docs-only commits and closing the orphaned docs/specs/vna/ ownership gap, not by penalizing the room further.

    Open the signed attestation →
  85. 2026-09-29 · 🧪 laboratory · offPct 34

    feat(vna): C474 — the verify door resolves a guard in a sibling repo, on its commit

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  86. 2026-09-29 · ☕ network · offPct 28

    fix(pmu): C401a — an abstention is referred, never paid or refunded on its own

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since

    Open the signed attestation →
  87. 2026-09-29 · 🧪 laboratory · offPct 57

    fix(ops): C184 guard measured load, not the hook — make it load-invariant

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  88. 2026-09-29 · 🧪 laboratory · offPct 25 · structural

    feat(mirror): the four-second paragraph reaches the public README as a spliced region

    Why it left the lane: The diff's vocabulary is pure infra-tooling language — 'splice', 'MARKED regions', 'register', 'mirror-to-public.sh', 'do not edit by hand', the paired HTML comment markers — the same register the reef's gzip-NCD dictionary already associates with laboratory's own tooling corpus (thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/). prewalkOverlap=6 is low against litIntent=143/litReality=121, meaning the walk's SEED already sat in a different corpus neighborhood before a single hop ran; lensReality=B,A1 is where that neighborhood's mass concentrates. None of the four touched files (packages/thetacog-mcp/README.md, scripts/ops/splice-readme-regions.mjs, tests/ops/splice-readme-regions.test.mjs, tests/readme/four-seconds-paragraph.test.mjs) sit inside laboratory's owned-surface glob at all — the pull is lexical, not positional.

    Intent–reality gap: The commit's own Relevant-Rooms trailer names architect, vault, builder — never laboratory — and the diff touches zero paths laboratory owns; yet the receipt filed this event, and 253 others in 14 days, under 🧪 laboratory anyway. The gap isn't in what the commit claimed — it's that the detector's cell-to-room mapping overrides a correct, fenced claim with a content-similarity guess.

    • Ship tests/ops/room-surface-coverage.test.js (ask-001, asked 10× already) — the exact guard that fails this event class
    • Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, asked 25×) as a cheap pre-filter: if Relevant-Rooms excludes a candidate room, never file the event there
    • Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, asked 22×) to cross-check Originating-Terminal (architect here) against the diff's actual surface
    • Backfill-audit the 253 laboratory out-of-lane events from the last 14 days for the same path_hit=false signature to size how much of the backlog is mistagging noise vs real drift
    • Add a path_hit boolean column to the drift-receipt row schema so this diagnosis is mechanical, not manual, on the next event
    • Add the four-seconds marker pair to the splice-region test fixtures' shared corpus tag so future infra-marker commits don't reseed the same reef ambiguity

    What we learned: A room's out-of-lane count can be almost entirely attribution noise, not real boundary crossing: laboratory's 253-event/14-day backlog includes commits that touch NONE of its owned paths, because the detector trusts the gzip-NCD cell's nearest-room default over the commit's own (correct) Relevant-Rooms trailer. The three guards that would fix this have been asked 10, 22 and 25 times respectively and are still open — the bottleneck isn't diagnosis, it's that a known, repeatedly-requested guard keeps losing the queue.

    The missing guard (the deliverable): tests/ops/room-surface-coverage.test.js

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. litIntent/walksIntent and litReality/walksReality are both exactly 1.0 — every walked cell came back lit on both sides, with zero unlit dead-ends. That's a saturation signature, not a right-sized one: a correctly-bounded walk should occasionally hit an empty cell to confirm it found the corpus edge. Adjustment: rerun this commit's walk at 1.5x the current walksIntent/walksReality budget; if litIntent stays pinned at 100%, the cap is being hit before the natural boundary and should be raised for infra-vocabulary commits specifically. Experiments: Recompute prewalkOverlap using a stemmed/deduped token set for shared infra jargon (splice, mirror, register, MARKED) across architect's scripts/ops/* and laboratory's thetacoach-crm-mcp/swarm-comms corpora; measure whether prewalkOverlap rises and whether that narrows the laboratory mismatch rate over the next 20 scripts/ops/* commits · Run splice-readme-regions.mjs and scripts/init-claude-flow-with-crm.sh through the gzip-NCD reef pairwise and record the raw compression-distance number, to quantify vocabulary bleed between architect and laboratory infra scripts as a standing metric · For the next 30 out-of-lane events system-wide, log a path_hit boolean (does the assigned room's owned glob contain any diff path) and measure what fraction of ALL out-of-lane events are path_hit=false — if high across rooms, this is a general detector defect, not a laboratory-specific one

    Measured outcome (deterministic, not self-graded): room mean offPct 12→16 over 4 commits since · dictionary ablation saved 1056B

    A mistagged drift event inflates laboratory's measured loss-ratio without any real boundary crossing having occurred, so the lane's apparent risk is currently overstated by attribution noise rather than by actual scope creep; premium is restored not by narrowing laboratory's real surface but by shipping the already-open path-membership guard (ask-001, 10x unshipped) so future events are filed against the room that actually did the work.

    Open the signed attestation →
  89. 2026-09-29 · 🧪 laboratory · offPct 51

    feat(vna): C174 — ANY script-written .txt is refused as a steer source, not only a spec tree's outline

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  90. 2026-09-29 · 🤖 steer-worker · offPct 50

    fix(vna): C99b — notary-drain.mjs's --audit-link CLI face, missed in d7fd545dab

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 27→37 over 7 commits since

    Open the signed attestation →
  91. 2026-09-29 · 🧭 navigator · offPct 28

    fix(vna): C89a — resync the README controls section again (live page drifted)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since

    Open the signed attestation →
  92. 2026-09-29 · 🧪 laboratory · offPct 27

    spec(vna): C354 — a worker run as the agent has a real write path to the receipt journal, so the guard reports UNMEASURED naming it

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  93. 2026-09-29 · 🧪 laboratory · offPct 23

    fix(vna): C418 — splitAsks never sentence-splits a verb's to/with replacement value

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 13→14 over 3 commits since

    Open the signed attestation →
  94. 2026-09-29 · 🔨 builder · offPct 38

    feat(vna): C463 — the notary witnesses a turn, not only a commit

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 27→24 over 6 commits since

    Open the signed attestation →
  95. 2026-09-29 · ☕ network · offPct 51

    feat(bookclub): C475 — the install block names both halves, the drafting table and the flight recorder

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since

    Open the signed attestation →
  96. 2026-09-29 · 🔨 builder · offPct 22

    chore(book): commit the presend pass's ch3 metavector insert (Domain 2, 2026-09-29)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 26→12 over 11 commits since

    Open the signed attestation →
  97. 2026-09-29 · 🧪 laboratory · offPct 49

    spec(vna): C308 — guard the parent row's tree structure

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 12→16 over 4 commits since

    Open the signed attestation →
  98. 2026-09-29 · 📐 architect · offPct 32

    spec(vna): reopen C163 — guard red at HEAD, conflicts with C89a's own invariant

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 20→11 over 5 commits since

    Open the signed attestation →
  99. 2026-09-29 · 🔨 builder · offPct 30

    spec(vna): C426c — the click is counted, every lifecycle door names its surface

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 27→24 over 6 commits since

    Open the signed attestation →
  100. 2026-09-29 · 📐 architect · offPct 16 · mistagged

    spec(vna): tick C335a — the ledger line cursor notices a same-size rewrite

    Why it left the lane: The diff itself is a single checkbox flip (`- [ ] C335a` → `- [x] C335a`) inside docs/specs/vna/SPEC-VNA-COCKPIT.md, but the unchanged line text the reality walk re-reads is dense VNA-engine vocabulary — 'ndjson-tail.mjs', 'lineCount', 'c.size <= size', 'dispatchFold', 'cursor', 'hash of the 4 KB' — none of which are architect-lane (docs/strategy, docs/03-product, cognitive-dashboard.html) terms. The commit trailers carry only 'Originating-Terminal: 📐 VS Code Architect' with no Relevant-Rooms line, so the detector had no second room to attribute that engine vocabulary to and charged all 123 reality lit-cells against architect's declared lane.

    The semantic pull: Strings 'ndjson-tail.mjs', 'dispatchFold', 'hook stopped folding', 'cursor' pulled the reality walk toward the VNA pipeline/engine coordinates (lensReality=A1,B1, laneHamming=20 vs intent's B1,A1), while the commit message's own claim — 'the ledger line cursor notices a same-size rewrite' — is narrow spec bookkeeping language that only weakly anchors architect's docs/strategy lane.

    Intent–reality gap: The commit claims a narrow spec-bookkeeping action ('tick C335a') attributed solely to 📐 architect, but the receipt measured reality spreading 18 cells wider than intent (123 vs 105 lit) into VNA-engine coordinates that no trailer declared — offPct=16 is the cost of an undeclared second room, not of misplaced work.

    • Wire the spec-tick automation (whatever script produces 'spec(vna): tick Cxxx' commits) to auto-append Relevant-Rooms derived from the ticked row's guard test path
    • Register docs/specs/vna/** in the room-surface-coverage config as a shared cross-room ledger rather than leaving it unlisted on every room's owned-surface block
    • Land tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, already asked 27x) as a commit-msg hook check so a missing Relevant-Rooms trailer fails before the commit lands, not after the receipt fires
    • Backfill Relevant-Rooms trailers (dry-run) on the room's other 100 out-of-lane events from the last 14 days to test whether missing-trailer accounts for most of them
    • For docsOnly + single-checkbox-diff commits, constrain the reality walk's input window to the diff hunk instead of the full surrounding checklist line

    What we learned: A shared cross-room ledger file (SPEC-VNA-COCKPIT.md) with no room owner in any room's declared surface generates drift not because work landed wrong, but because the commit-trailer protocol that's supposed to name the second room (Relevant-Rooms) is being skipped by whatever tooling auto-generates these tick commits — the fix is upstream of any single commit, in the generator.

    The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. litIntent equals walksIntent (105=105) and litReality equals walksReality (123=123) — every walked cell registered as lit with zero saturation cutoff, meaning the walk is reading the full unchanged checklist paragraph rather than the actual 1-character diff delta. Adjustment: for docsOnly commits under some diffstat threshold (e.g. <5 changed chars), clip the reality walk's input to a bounded window around the diff hunk instead of the full line/paragraph. Experiments: Replay the last 14 days of this room's 101 out-of-lane events with Relevant-Rooms backfilled (dry-run) and measure what fraction drop below offPct=15 — tests the missing-trailer hypothesis directly. · For commitClass=setpoint + docsOnly=true + diffstat <5 chars, cap the reality walk's input to the diff hunk ± N chars and re-run this sha's receipt to measure litReality's delta from 123. · Add docs/specs/vna/** to the room-surface-coverage config as 'shared, requires Relevant-Rooms' and measure whether laneHamming drops on the next 10 spec-tick commits from any terminal.

    Measured outcome (deterministic, not self-graded): room mean offPct 20→22 over 7 commits since · dictionary ablation saved 742B

    A 1-point threshold breach on a docs-only checkbox flip is noise, not scope creep — the room's loss ratio stays inflated by trailer-omission rather than judgment, and premium is restored by wiring the missing Relevant-Rooms trailer into the tick-generator, not by narrowing what architect is allowed to touch.

    Open the signed attestation →
  101. 2026-09-29 · 🔨 builder · offPct 16

    fix(vna): C141 — two legitimate new pills re-pin the loose counts, one bug fixed

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 26→30 over 8 commits since

    Open the signed attestation →
  102. 2026-09-29 · 🧪 laboratory · offPct 51

    fix(deploy): the IntentGuard vendor step hashes with sha256sum — the Vercel build OS has no shasum

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  103. 2026-09-29 · 🧭 navigator · offPct 16

    feat(vna): C99b — wire 📋 Copy Audit Link into the extension, real-manifest guard

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since

    Open the signed attestation →
  104. 2026-09-29 · 🧪 laboratory · offPct 55 · mistagged

    fix(vna): C406 — End all knows every script that drives a local worker

    Why it left the lane: The diff's real vocabulary — NODE_DRIVERS, mutate-until.mjs, workers.mjs, steer-runner.mjs, runWorker/trial(), 'End all' — is pure VNA-cockpit/architect language, and the new spec-ledger line it adds to docs/specs/vna/SPEC-VNA-COCKPIT.md shares its '(guard: `tests/vna/...`)' / '(operator 2026-09-28, verbatim:' boilerplate with dozens of other C39x/C40x rows in that same file, diluting this commit's own signature into the shared ledger mass (lensIntent C1,B3 → lensReality C3,A, laneJump 8, laneHamming 23). None of that vocabulary or those paths appear anywhere in laboratory's owned surface (.claude/*, thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, punch-list*) — prewalkOverlap=4 already shows almost no reef overlap with laboratory before the walk even ran. The commit trailer's own 'Relevant-Rooms: laboratory, operator, architect' is what put laboratory in the denominator at all; against that lane, 100% of the 134 lit reality cells necessarily read as off (offPct 55).

    The semantic pull: NODE_DRIVERS / workers.mjs / mutate-until.mjs / steer-runner.mjs pull toward the architect/VNA-cockpit basin (C3,A); the shared spec-ledger boilerplate '(guard: `tests/vna/…`)' pulls toward the generic cross-room ledger mass; nothing in the diff touches a CRM/MCP/orchestrator string, so nothing pulls toward laboratory's actual lane at all.

    Intent–reality gap: The commit trailers claim laboratory is a Relevant-Room for this work, but every touched path (scripts/vna/workers.mjs, docs/specs/vna/SPEC-VNA-COCKPIT.md, tests/vna/c406-*.test.mjs) falls entirely outside laboratory's owned surface — the receipt is correctly measuring that this work never went near laboratory, because it never claimed to be laboratory's work in the first place, only got labeled that way.

    • Build tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, open 29×): for each room named in a commit's Relevant-Rooms trailer, assert its owned-surface glob matches ≥1 path in that commit's diff; fail naming the unearned room.
    • Land the CLAUDE.md commit-trailer clarification above in the same commit as the guard.
    • Wire the check into hooks/pre-commit as WARN-ONLY (matching the WIP-CLAIMS advisory pattern) so a padded Relevant-Rooms trailer is flagged before it ships, not just caught by a standalone test run later.
    • Re-run the room-offPct trend calc excluding any historical commit where a listed Relevant-Room owns zero diff paths, and compare against the reported '265 out-of-lane events in 14 days' for laboratory to size how much of that count is this exact mistagging class versus real drift.
    • Confirm the offPct computation itself sources lane membership from path-ownership match, not raw trailer text — if it currently trusts the trailer's room list verbatim, that trust is the root cause and needs to become derived, never asserted.

    What we learned: The Relevant-Rooms trailer is free-typed by the committing terminal as 'who might care about this story' rather than derived from 'which room's owned-surface glob the diff actually touches' — collapsing narrative relevance and lane membership into one field lets a single mistyped room name manufacture 100% synthetic drift against that room's lane, independent of whether the code landed anywhere near it.

    The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized and fully saturated (125/125 and 134/134 lit-to-walked, no truncation) — depth is not the problem. Concrete adjustment: skip seeding the walk against a candidate room at all when that room's owned-surface glob matches zero of the commit's diff paths (laboratory here), so cycles aren't spent walking a lane that structurally cannot match. Experiments: Pre-filter: before seeding the reef, intersect each Relevant-Room's owned-glob against diffPaths; drop zero-match rooms from the lane set and re-measure laboratory's 14-day offPct mean — expect a sharp drop if mistagging is the dominant driver. · Re-run offPct for the same 265 laboratory events using Originating-Terminal alone (ignoring Relevant-Rooms) as the lane source, and diff the resulting distribution against the current one to quantify how much of laboratory's chronic drift is this exact class. · For commits with prewalkOverlap<10 against their claimed lane, log a pre-walk 'likely mistag' flag and compare its hit rate against post-walk offPct>50 to see if prewalkOverlap alone is a sufficient early predictor, cheaper than running the full walk.

    Measured outcome (deterministic, not self-graded): room mean offPct 13→14 over 3 commits since · dictionary ablation saved 1153B

    A synthetic 55%-off event manufactured by a padded trailer field still counts against laboratory's loss ratio exactly like a real drift, so until ask-010 ships this lane's premium is pricing phantom risk — closing the guard is what lets the room's true offPct trend be underwritten again.

    Open the signed attestation →
  105. 2026-09-29 · 🧪 laboratory · offPct 24

    fix(vna): C123g — the untick is a door: REALITY rows post vna.apertureToggle

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 12→16 over 4 commits since

    Open the signed attestation →
  106. 2026-09-29 · steer-worker · offPct 18 · mistagged

    fix(vna): C243 — the runner-card prereq sentence reads ENGINE_KEYS_LABEL, never a re-typed door name

    Why it left the lane: The diff's only edit is one identifier substitution — the literal 'Engine & Keys' string replaced by an interpolation of ENGINE_KEYS_LABEL, a constant that lives in door-labels.mjs. That module is the canonical single source for the door's name (per C243: 'read the one constant everywhere'), so the reef/walk treats the referenced constant's own text/home as semantic mass belonging to it, not to steer-ui.mjs alone. litIntent==walksIntent (135) and litReality==walksReality (142) — both sides are fully saturated (every walk step lights a cell) — so the walk had no slack to discount a merely-referenced-not-redefined identifier; it lit the constant's home coordinates as hard as the edited file's own.

    The semantic pull: The string 'ENGINE_KEYS_LABEL' and the door-labels.mjs import it resolves to pulled placement toward B1 (the constant's declared home) even though the only file touched was steer-ui.mjs (A1). prewalkOverlap is low (4) — the gzip-seed reef had little pre-existing overlap anchoring this text to a single lane — so the walk's own recursive spread, not the reef seed, did most of the cross-lane lighting.

    Intent–reality gap: The commit and its Relevant-Rooms trailer claim a single-surface, single-room change ('every other surface... is unchanged', Relevant-Rooms: VS Code Architect only) confined to steer-ui.mjs. The receipt measured reality spanning two lanes (A1,B1) with 18% of lit mass outside the declared lane — the declaration undercounted the second door this reference necessarily touches.

    • Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010) — already asked 27x, this event is another confirmed instance of exactly the gap it exists to close
    • Register scripts/vna/door-labels.mjs in the shared-state ownership manifest read by tests/pmu-simulator/shared-state-files-have-room-owner.test.mjs (ask-003) so its owning room is discoverable when auditing a diff's true lane coverage
    • Add a one-line header comment to door-labels.mjs: 'any file that imports these constants must list this module's owning room in its Relevant-Rooms trailer'
    • Audit the last N ask-010 trip events for the same pattern (literal→canonical-constant-reference refactor) to confirm this is the dominant recurring subclass before writing the guard's matcher
    • Add reef exemption/weighting so a reference to an already-declared canonical constant (value unchanged, only interpolated) lights its home coordinate at reduced weight rather than full mass

    What we learned: The C243-class refactor (literal string → canonical shared constant) has a structural side effect the commit-message convention doesn't account for: converting a hand-typed literal to `${CONSTANT}` necessarily makes the edited file's semantic mass partially belong to the constant's *defining* module's lane, not just the file's own lane — and Relevant-Rooms is written for 'files I edited,' not 'lanes my text now points at.' ask-010 (relevant-rooms-covers-diff.test.mjs) has been asked 27 times without landing; this is fresh, concrete evidence of exactly the failure mode it targets, on the cheapest possible diff (2 lines).

    The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. 100% lit-to-walked ratio on both intent (135/135) and reality (142/142) means the walk is fully saturated — every step it takes lights a new cell with no discarded/low-confidence steps. For a 2-line diff that only interpolates an existing constant, that saturation is a red flag: the walk isn't discounting text it merely references versus text it actually rewrote. Concrete adjustment: weight-decay lit cells for identifiers that resolve to an unchanged external constant (resolved via static import, not literal-defined in the diff), so referencing ENGINE_KEYS_LABEL lights its home coordinate at reduced intensity instead of full mass. Experiments: Re-run this commit's walk with the ENGINE_KEYS_LABEL defining string masked out of the seed corpus and check whether offPct drops below the 15 threshold — isolates whether the identifier reference alone is the driver · Register door-labels.mjs exports as lane-exempt/reduced-weight in the reef corpus, then recompute offPct for all ask-010 historical trips that involve a canonical-constant reference, to see if the exemption resolves the same subclass across the board · Scale walksReality's step budget by diff LOC (a bounded formula) and compare lit-to-walked saturation on other 1-3 line commits — if saturation stays pinned at 100% regardless of diff size, the walk depth is undersized relative to its own termination condition, not just this commit

    A mistagged-but-correct commit is a paperwork loss, not a code loss — it inflates this lane's offPct trend and erodes trust in the offPct signal itself; the premium is restored by landing ask-010 (already asked 27x) rather than by re-litigating whether the code was right.

    Open the signed attestation →
  107. 2026-09-29 · 🧭 navigator · offPct 30 · mistagged

    docs(vsix): C414 — his marked verdicts E1 · F1 · F3 on the Marketplace page

    Why it left the lane: The commit's own trailer reads 'Relevant-Rooms: navigator, architect, voice' but the diff touches exactly three paths — docs/specs/vna/SPEC-VNA-COCKPIT.md (one checklist line, C414), packages/thetacog-mcp-vscode/README.md (marketing prose: 'You are paying rent on a transcript.', 'Free (MIT) and local...', 'Try it before you install anything...'), and a new test file — none of which intersect navigator's owned surface (openclaw/src/thematic-scheduler.ts, openclaw/src/focus-gravity.ts, scripts/open-room-session.sh, .workflow/cognitive-dashboard.html). The intent lane (B,A1) was seeded from that trailer's room list, not from the touched paths, so 'navigator' entered the intent lane by habit; the walk then lit reality cells (C2,C) purely in README/spec-doc territory, producing the 30% off-lane share.

    The semantic pull: The pulled terms are pure Marketplace-copy and spec-checklist strings — 'You are paying rent on a transcript.', 'Free (MIT) and local.', 'Try it before you install anything', the C414 checklist bullet in SPEC-VNA-COCKPIT.md — all voice/architect-lane content. Nothing in the diff references thematic-scheduler, focus-gravity, room-session, or cognitive-dashboard, so there is no genuine navigator-owned string dragging placement; the drag is entirely the trailer's inclusion of the room name.

    Intent–reality gap: The commit message's trailer claims navigator as a relevant room for this work; the receipt shows 100% of the lit reality mass sits in README/spec-doc prose with zero overlap with anything navigator owns — the claim names a room the diff never touches.

    • Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010) as a BLOCKING pre-commit check, not an advisory — it has been asked 30× and never landed enforced, which is why this pattern keeps recurring
    • Audit navigator's other 79 out-of-lane events from the last 14 days for the same fixed 'navigator, architect, voice' triad in their trailers before treating each as a distinct cause
    • Add a one-line note to the commit template (if one exists) that Relevant-Rooms is per-diff, never copy-pasted from the previous commit in the same series (C412/C413/C414)
    • Check whether docs(vsix) commits specifically default to this three-room set and correct that default if so

    What we learned: Prior facts-only interventions on this room measured offPct WORSENING (3→34 over 8 commits) or flat (28→26 over 3 commits) — bare fact delivery isn't moving this room. This event reveals the specific mechanism: navigator's drift here isn't code landing wrong, it's commit trailers habitually over-naming rooms in a fixed triad regardless of what the diff touches, and the exact guard that would catch this (ask-010) has been requested 30 times without ever being promoted from advisory to blocking — the escalation this room needs is enforcement, not another explanation.

    The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. litIntent equals walksIntent and litReality equals walksReality exactly — every walked cell lit on both sides, meaning the walk is saturated and provides zero discriminating signal about which walked cells were false positives. Adjustment: introduce a discard/decay criterion so a walked cell can fail to light, otherwise the walk is a rubber stamp on whatever the reef seed already committed to. Experiments: Recompute the reef seed for the last 20 docs(vsix) commits using ONLY diff-touched paths (ignoring the trailer's Relevant-Rooms line) and measure whether offPct drops when trailer noise is excluded from intent seeding · Cluster navigator's 80 out-of-lane events by trailer text — if a majority share the exact 'navigator, architect, voice' triad, that confirms boilerplate-trailer seeding as the dominant cause and reef seeding should ignore trailers entirely in favor of owned-surface glob matching · Ablate prewalkOverlap's dependency on Originating-Terminal + trailer room list vs. pure path-glob membership, then track navigator's offPct over its next 10 commits under each seeding method

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since · dictionary ablation saved 1009B

    Navigator's loss-ratio keeps degrading under advisory-only enforcement (offPct trend 3→34, 28→26 flat across recent interventions); restoring this lane's premium requires shipping ask-010 as a blocking gate rather than leaving a 30-times-requested guard sitting open.

    Open the signed attestation →
  108. 2026-09-29 · 🧭 navigator · offPct 22

    docs(readme): "boundary legibility to any agentic AI" — the instrument is any spec adherence, never scoped to coding tools

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since

    Open the signed attestation →
  109. 2026-09-29 · 📐 architect · offPct 63

    spec(vna): tick C352 C357 — the standalone steer row ships in the package; the pollution claim reads the ratio or nothing

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 20→20 over 8 commits since

    Open the signed attestation →
  110. 2026-09-29 · 🧪 laboratory · offPct 23

    fix(vna): C318f — the posttool hook skips the tail-watch child when nothing grew

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since

    Open the signed attestation →
  111. 2026-09-29 · 🔨 builder · offPct 24

    feat(adapters): C441 — the lane after a preservation demand, prospective only

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 27→33 over 3 commits since

    Open the signed attestation →
  112. 2026-09-29 · 📐 architect · offPct 38

    spec(vna): C477–C480 — /steer spawns in chat, the fit ratchet on the IntentGuard track, the repo as the panel, the ship check reads production

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 22→30 over 8 commits since

    Open the signed attestation →
  113. 2026-09-29 · 🧭 navigator · offPct 19

    fix(vna): C173b — the unclaimed sub-pill offers Claim My Purchase, opening the existing device flow

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since

    Open the signed attestation →
  114. 2026-09-29 · 🧪 laboratory · offPct 29 · mistagged

    feat(vna): C317d — HIS CLICK reads through once a row's own dated evidence line closes it

    Why it left the lane: The diff's own vocabulary — HIS_CLICK_RE, EVIDENCE_RE, '§26 THE STRAIGHT PATH', markSteps, straight-path.mjs — is VNA spec-status-tracking domain language that never appears in 🧪 laboratory's owned surface (memory/, .mcp.json, thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, punch-list*). prewalkOverlap sits at 6 of litIntent=139 — the reef had almost nothing in the laboratory corpus to seed against before the walk even ran. That weak pre-walk seed is why the walk's own spread (139/138, walksIntent≈walksReality) landed at C3,A1 (laneJump 10, laneHamming 20 off the claimed B,C1) instead of confirming a lane that was never actually claimed by this content.

    The semantic pull: HIS_CLICK_RE / EVIDENCE_RE / markSteps / 'THE STRAIGHT PATH' all pull toward VNA-spec coordinates, dragging reality away from whatever coordinate 🧪 laboratory's MCP/CRM/orchestrator surface normally lands on.

    Intent–reality gap: The receipt books this commit against 🧪 laboratory's lane, but the commit's own trailer says 'Originating-Terminal: 📐 VS Code Architect', and every file touched (scripts/vna/straight-path.mjs, tests/vna/c96-straight-path-status.test.mjs) sits outside laboratory's owned-surface list entirely — the room claim contradicts both the trailer and the file surface.

    • Audit .workflow/rooms/*.html for a glob covering scripts/vna/** and tests/vna/**; if none exists, add one under the room that maps to 'VS Code Architect' rather than letting it fall through to laboratory.
    • Run tests/ops/room-surface-coverage.test.js (ask-001) specifically against scripts/vna/** and tests/vna/** to confirm the gap.
    • Run tests/ops/room-glob-overlap.test.js (ask-024) after the new glob lands, to confirm laboratory's catch-all (if one exists) doesn't still shadow it.
    • Re-walk the last 14 days of 🧪 laboratory out-of-lane events (260 total) against the corrected ownership map and count how many reclassify away — that number is the real baseline, not 260.
    • Check .thetacog/mesh/room-pixels.json and .thetacog/reef-reef-health.json for a hardcoded default-room fallback and replace it with an explicit UNMEASURED/unclaimed state instead of a silent laboratory assignment.

    What we learned: 260 out-of-lane events in 14 days for one room is itself evidence against 'this room drifts a lot' and for 'this room is the unowned-surface catch-all' — a persistently high count that three prior facts-only interventions couldn't move below ~13-18 mean offPct is the signature of a structural default-bucket, not of repeated bad judgment calls inside the room.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized, not the problem here — litIntent/litReality (139/138) are nearly identical, so the walk isn't shallow or saturated. Concrete adjustment: none to depth; instead gate the walk on a pre-check (Originating-Terminal vs touched-file glob) so it doesn't spend a full walk confirming a lane that a one-line trailer/glob comparison would have already flagged as mistagged. Experiments: Add a pre-walk gate: compare the commit's Originating-Terminal trailer against the glob-owner of its changed files; on mismatch, route the offPct computation to the matching room and log a 'reattributed' event instead of penalizing the trailer-named or default room. Measurable outcome: laboratory's 14-day out-of-lane count drops from the 260 baseline once mistagged commits stop landing there. · Backfill the last 14 days of laboratory-tagged events through the corrected ownership map and report what fraction were true cross-lane work vs unowned-surface fallbacks — this splits the 260 into 'real drift' and 'attribution bug' counts. · Track prewalkOverlap for every high-offPct event going forward; if mistagged cases cluster below prewalkOverlap<10 (as this one did, at 6), that threshold becomes a cheap pre-filter before spending a full ballistic walk.

    Measured outcome (deterministic, not self-graded): room mean offPct —→58 over 3 commits since · dictionary ablation saved 799B

    An offPct-29 event that is actually a room-attribution bug rather than real cross-lane drift inflates laboratory's loss-ratio on paper without any underlying behavior change — premium is restored by shipping ask-027 and the ownership-glob fix, which converts this event class from 'observed drift' back to 'measurement error, corrected'.

    Open the signed attestation →
  115. 2026-09-29 · 📐 architect · offPct 18

    spec(vna): C469–C470 — one card in any Node (Linux first), and the VSIX carries it

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 20→23 over 16 commits since

    Open the signed attestation →
  116. 2026-09-29 · 📐 architect · offPct 17

    spec(vna): re-tick C297 — verify TICKED at HEAD

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 20→8 over 10 commits since

    Open the signed attestation →
  117. 2026-09-29 · 🎩 operator · offPct 49 · mistagged

    feat(vna): C338 pass 2 — wire the crossing count into the receipt surfaces

    Why it left the lane: The diff's substantive churn is almost entirely lattice-engine internals — coordToAnchor(), sequenceFromHopLog(), the N*anchor+anchor fold into the 20736-cell space, readAtCommit()'s git-show plumbing, BITS_PER_CROSSING/SUFFICIENT_FOR — all inside scripts/pmu/rc-compute.mjs and scripts/pmu/definer-walk-144.mjs, verified by tests/vna/c338-the-crossing-is-counted.test.mjs. None of those paths are in 🎩 operator's owned-surface glob, which claims data/pmu/pipeline/ and data/pmu/claudbridge/ (the engine's DATA/output surface) but never scripts/pmu/ or tests/vna/ (the engine's SOURCE). The commit prose narrates operator-facing destinations ('receipt surfaces', 'the commit-panel caption', 'the extension's attest view') — that language anchored lensIntent at A1,B1 — while the actual bytes changed sit deep in engine math, dragging lensReality to B3,B2 (laneJump=5, laneHamming=28).

    The semantic pull: Strings like 'crossingReceipt', 'hopLog', 'definerWalk144', 'coordToAnchor', '20736-cell space', and 'readAtCommit' are core-engine vocabulary with no home in any operator-owned glob; they pulled the reality reading toward the B-column engine coordinates instead of the A1,B1 dashboard/pipeline coordinates the commit message's surface-facing framing implied.

    Intent–reality gap: The commit message frames this as operator-room work (feeding the operator's receipt/dashboard surfaces), but the Originating-Terminal trailer itself says '📐 VS Code Architect' and the receipt measured the actual work landing almost entirely inside scripts/pmu/'s engine internals — a surface 🎩 operator's glob never claims.

    • Add a non-empty 'Relevant-Rooms:' trailer requirement gated on any diff touching scripts/pmu/** or tests/vna/** (tests/rooms/relevant-rooms-covers-diff.test.mjs, ask-010, already asked 25×).
    • Extend room-ownership config so scripts/pmu/** and tests/vna/** have a declared owner — currently orphaned, which is why resolution fell through to 🎩 operator despite the Architect terminal writing it.
    • Run tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, asked 24×) against this sha to confirm it would have caught the Architect-terminal/operator-room mismatch.
    • Audit the operator room's glob source to confirm the data/pmu/ vs scripts/pmu/ split is intentional, and document it inline in the glob file so it isn't re-litigated.
    • Run tests/ops/room-glob-overlap.test.mjs (ask-024) on scripts/pmu/ and tests/vna/ specifically to confirm they are orphaned (zero owners) rather than silently double-claimed.
    • Backfill Relevant-Rooms on a sample of this room's other 45 out-of-lane events from the last 14 days to check how many share this same missing-trailer signature.

    What we learned: scripts/pmu/ (the engine SOURCE) and data/pmu/ (the engine's DATA/output surface) sit one path segment apart but must belong to different rooms — no room glob currently claims scripts/pmu/ or tests/vna/, so a commit that skips the Relevant-Rooms trailer free-falls to whichever room the lens defaults to, independent of which terminal actually authored it.

    The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Right-sized: litReality (138) equals walksReality (138), meaning every hop landed a genuinely new cell rather than re-treading ground, and walkTruncated=false rules out budget saturation. No depth/budget knob needs adjusting here; the lever is upstream at the reef-seed stage, not the walk. Experiments: Re-seed the reef with a synthetic Relevant-Rooms trailer naming scripts/pmu/+tests/vna/ explicitly for this sha and recompute prewalkOverlap — test whether trailer text is currently under-weighted relative to prose framing. · Seed the gzip baseline dictionary with the literal engine-vocabulary strings below and recompress the room's last 14 days of commits; measure ablation effect (with/without) on offPct across the other 45 out-of-lane events. · Run tests/ops/room-glob-overlap.test.mjs against scripts/pmu/ and tests/vna/ specifically to confirm orphaned-vs-double-claimed status, since that structural fact is implied here but not directly measured.

    A 49% offPct charged against 🎩 operator for work its own Originating-Terminal trailer attributes to the Architect terminal inflates that room's loss-ratio on a defect it did not commit; the lane's premium stays mispriced until scripts/pmu/ and tests/vna/ get a declared owner and every touching commit carries a verified Relevant-Rooms trailer.

    Open the signed attestation →
  118. 2026-09-28 · 🔨 builder · offPct 48 · mistagged

    chore(blog): panel strip for Turn Over the Card (575dfeaec7)

    Why it left the lane: src/data/post-panels-index.json is generated by scripts/blog/build-panels-index.mjs:167 via `JSON.stringify(scan.index, null, 0)` — zero indentation, one line for the entire multi-year index. Appending the single 'turn-over-the-card' entry therefore diffs as an old-line/new-line replace of the WHOLE file, so the walk ingests every historical post-panel subject string visible in the diff — 'docs: Rewrite k_E units from per-operation/per-hop/per-day to per-boundary-crossing', 'patent+blog: Add Landauer duality section', 'book+blog: The Credential of Autonomy', 'content(book): 361x reduced to what it is', 'fix(legal): correct patent claim-number citations', 'voice: never "you don't have to trust me"' — spanning book, patent, legal, voice-craft and pmu lanes that have nothing to do with this commit's actual work (one manifest.json + one encircled.png for one post, plus four tiny commit-page PNGs). That corpus-wide re-ingestion is what drags ~48% of lit reality cells outside the claimed blog/panel-chore lane.

    The semantic pull: Literal strings from the diff pulling placement off-lane: 'k_E', 'patent+blog', 'book+blog', 'Landauer duality', 'legal: correct patent claim-number citations', 'ISO CG 40-series', 'Munich Re' — none authored by this commit, all present only because they are OTHER entries in the same minified JSON line that git shows as changed context.

    Intent–reality gap: The commit claims a narrow scope — 'panel strip for Turn Over the Card' — and the actual file set (docs/pmu/commit-panels/*.png, src/content/blog/2026-09-28-turn-over-the-card/{manifest.json,encircled.png}, src/data/post-panels-index.json) matches that narrow claim exactly. But none of those five paths appear anywhere in 🔨 builder's owned-surface list (src/app/, src/components/, src/lib/, public/, book scripts, hooks, voice-checks, decentralizedtalk/, thetacoach-crm-mcp/, vercel.json), and the commit message carries no Relevant-Rooms trailer at all — so a correctly-scoped chore got billed against a room that never owned the surface it touched.

    • scripts/blog/build-panels-index.mjs:167 — pretty-print or shard the index so appends stay line-scoped
    • Commit-message template for chore(blog) panel commits — add the missing Relevant-Rooms trailer, never omit it
    • Room-ownership config (rooms JSON / .workflow/rooms/*.html) — add a glob for docs/pmu/commit-panels/**, src/content/blog/**/manifest.json, src/data/post-panels-index.json to the actual owning room, explicitly excluding 🔨 builder
    • tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027) — verify this exact commit would have failed it, confirming it's the right guard
    • tests/pmu-simulator/docs-only-commit-skips-lattice.test.mjs (ask-005) — this commit is flagged docsOnly=true yet still walked; check whether it should have skipped placement and reported UNMEASURED instead of offPct=48

    What we learned: A generated single-line JSON index (JSON.stringify(x, null, 0)) turns every incremental append into a whole-corpus diff for the walker — the drift signal here wasn't semantic confusion about panel work, it was a diff-granularity artifact of the generator's own formatting choice, compounded by a commit that shipped with no Relevant-Rooms trailer to anchor its ownership.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, already asked 24×) — this commit's Originating-Terminal (🎩 Kitty Operator) and its actual touched-file surface match neither each other nor 🔨 builder's owned globs; the guard that checks terminal-vs-surface consistency is exactly the one this event should have tripped, and its repeated-ask count (24×) shows it is overdue to land rather than be asked again.

    Detector probe: signal attribution — gzip reef 15% · ballistic walk 85%. Not saturated or too shallow — litIntent=103 vs litReality=101 are nearly matched counts, so the walk's DEPTH is reasonable. The defect is upstream scope: it is being fed the entire minified index line as diff content. Concrete adjustment: cap per-file text ingested into the walk at N KB for files matching *-index.json / *.min.json, or diff JSON-aware (key-level) rather than line-level, before handing content to the recursive ballistic walk. Experiments: Pretty-print src/data/post-panels-index.json (indent 2) and re-run the receipt pipeline against the last 10 commits that touched it; measure whether offPct collapses toward single digits when the diff is line-scoped instead of whole-file. · Add a byte-size/line-length cap to the walk's diff ingestion (skip or truncate lines over ~2KB) and re-run this exact commit through the simulator to measure the offPct delta attributable purely to truncation. · For commits flagged docsOnly=true (this one is), run a bypass experiment per ask-005: skip the lattice walk entirely and confirm the pipeline reports UNMEASURED rather than a computed offPct, then compare false-positive rates across the last 20 docsOnly commits.

    Measured outcome (deterministic, not self-graded): room mean offPct 27→22 over 6 commits since · dictionary ablation saved 1306B

    This event inflates 🔨 builder's out-of-lane count (98 in 14 days) for work it never owned, dragging the lane's apparent loss ratio; premium is restored by the Relevant-Rooms trailer + landed originating-terminal-matches-surface guard (fixes attribution) plus the index-file pretty-print/shard (fixes the underlying noisy measurement so the correctly-attributed room doesn't inherit the same spurious spike).

    Open the signed attestation →
  119. 2026-09-28 · 🔨 builder · offPct 31 · mistagged

    spec(vna): C369 — the iamfim.com testimonial, after the two doors, becomes the unsigned testimonial

    Why it left the lane: The commit's own trailers mis-declare where the work lands: Originating-Terminal reads 📐architect and Relevant-Rooms lists only 'Voice, Operator, Laboratory', but the diff's dominant content — src/app/iamfim-landing/page.tsx (75 lines changed) and the new src/lib/unsigned-testimonial.mjs (14 lines) — sits squarely inside 🔨builder's owned surface (src/app/, src/lib/ are both literally on builder's owned-file list). The register touch in scripts/vna/public-surface-register.mjs is the only piece that plausibly belongs to Voice/architect. Because Relevant-Rooms never named Builder, the intent lane the receipt was checking against never included the coordinate where most of the reality mass legitimately landed, so builder's own correctly-placed files count as 'off-lane'.

    The semantic pull: litIntent(116)==walksIntent(116) and litReality(142)==walksReality(142) — full saturation on both sides, so the walk itself isn't discriminating; the direction is set almost entirely at the reef/seed stage, where prewalkOverlap=5 is tiny relative to 116 walked cells. The strings doing the pulling are structural, not lexical: 'export { UNSIGNED_TESTIMONIAL_KICKER, ... } from ../../src/lib/unsigned-testimonial.mjs' in scripts/vna/public-surface-register.mjs anchors the intent seed to the VNA/register coordinate (B3,A2), while 'src/app/iamfim-landing/page.tsx' + 'src/lib/unsigned-testimonial.mjs' + 'tests/vna/c369-...test.mjs' supply the bulk of lit reality cells at builder's coordinate (C,A2) — three files' worth of mass the intent lane never fenced.

    Intent–reality gap: The commit narrates itself entirely as a VNA/chair-decomposition exercise owned by architect ('Chair decomposition of the operator's words...', Relevant-Rooms omits Builder), but the receipt measured the actual byte mass landing in files 🔨builder already legitimately owns (src/app/, src/lib/) — the work is in-lane by ownership, the trailers just never said so.

    • Regenerate or hand-fix the Relevant-Rooms trailer on 0990c236c-equivalent future commits to include every room whose owned-surface glob is touched, derived from `git diff --stat` rather than the chair-decomposition narrative.
    • Add a header comment in scripts/vna/public-surface-register.mjs declaring co-ownership (Voice authors canonical wording; Builder consumes it via src/lib re-exports) so future editors know both rooms belong on the trailer.
    • Wire tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010) into hooks/pre-commit as a blocking or at minimum loud WARN check — it has been asked 26 times and is still only advisory.
    • Wire tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027) to flag when Originating-Terminal names a room that owns none of the diff's dominant files, as happened here (architect claimed, builder's files dominate).
    • Audit the last 14 days' 62 builder out-of-lane events for the same Relevant-Rooms-omits-builder signature before assuming they're all genuine cross-lane work.

    What we learned: Relevant-Rooms is authored from the commit's STORY (which terminal dispatched, what the operator said) rather than derived from the diff's actual file-owned-surface set — so any commit whose narrative focus is one room but whose bytes land in another room's owned files will systematically omit that room from the trailer. This is the generative mechanism behind ask-010's 26 prior asks, not 26 independent oversights.

    The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Saturated, not discriminating — 100% lit-fraction on both walksIntent/litIntent and walksReality/litReality means the walk exhausted its budget without narrowing. Concrete adjustment: cap the walk's lit-fraction ceiling (e.g. stop at 80% and report UNMEASURED past that) so full saturation is visible as a walk-budget failure rather than silently passing through as a confident placement. Experiments: Recompute prewalkOverlap for this sha with the room-ownership globs (src/app/, src/lib/) added to the reef's seed corpus, and check whether it rises meaningfully above 5 for register-refactor commits that touch both scripts/vna/ and src/app/. · Cap ballistic walk lit-fraction at 80% and re-run this sha; measure whether offPct changes when the walk is forced to discriminate instead of fully lighting both walksIntent and walksReality. · Strip the long narrative doc-comment blocks (the multi-paragraph C367/C369/C372 prose) from the corpus fed to the reef for this sha and re-measure prewalkOverlap, to test whether verbose inline commentary is diluting the seed match away from the actual code symbols.

    Measured outcome (deterministic, not self-graded): room mean offPct 27→33 over 3 commits since · dictionary ablation saved 583B

    This event should barely move builder's loss-ratio once corrected — the underlying work was correctly placed inside builder's owned files, so it's a paperwork mistag rather than genuine cross-lane construction; premium is restored by wiring ask-010 into the commit gate so future trailer omissions are caught before the receipt lands, not by treating this as a real structural violation.

    Open the signed attestation →
  120. 2026-09-28 · 🧪 laboratory · offPct 60

    feat(milestones): the underwriter bank carries the live abstention result — wrong placements 15 → 2 of 30

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since

    Open the signed attestation →
  121. 2026-09-28 · 🔨 builder · offPct 27

    spec(vna): C389 — the submission exhibit crosswalk (Aon · Relm · MSIG · AIUC-1)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 27→33 over 3 commits since

    Open the signed attestation →
  122. 2026-09-28 · 🎤 voice · offPct 16

    content(blog): the result gap r3 — the close asks for the one result the page is missing

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 5 commits since

    Open the signed attestation →
  123. 2026-09-28 · 🧪 laboratory · offPct 57 · structural

    spec(vna): C380–C383 declared — the unsigned-testimonial + LOI forwarding package, ratcheted

    Why it left the lane: The diff's 4 new checklist rows (C380-C383) are saturated with Voice-domain vocabulary — 'testimonial','LOI','forwarding-ready email package','Sonnet reads it cold as a monologue, an Opus sub-agent writes','the intro instantly lands what kind of person it is for' — inside a file whose declared home lane is the VNA spec ledger (C,A2). The walk fully saturated on both sides (litIntent=110/walksIntent=110, litReality=109/walksReality=109 — 100% fill), so every step the walk took got lit; with prewalkOverlap only 6, the reef seed barely agreed intent vs reality up front, and the walk's exhaustive fill then spread mass into row B (voice-adjacent), producing lensReality=B,A2 against lensIntent=C,A2 — a laneHamming of 34.

    Intent–reality gap: The commit claims 'spec(vna): C380-C383 declared' — a pure spec-ledger insertion (docsOnly=true, 4 lines) — but the receipt measured 57% of lit reality mass outside the declared lane because the declared text describes Voice-lane work (testimonial/LOI copy) without any machine-readable domain tag separating 'a ticket about voice work' from 'voice work itself'.

    • Add '(domain: <room>)' tag to every chair-decomposition row in docs/specs/vna/SPEC-VNA-COCKPIT.md going forward, starting with C380-C383
    • Wire the docsOnly flag into the receipt generator to gate/skip the lattice walk per ask-005
    • Reconcile Relevant-Rooms trailer (Voice, Network, Vault) against Originating-Terminal room (🧪 Laboratory/cuo1) — spec declarations from cuo1 should not silently inherit Laboratory as the scoring room when the content domain differs
    • Ship tests/pmu-simulator/docs-only-commit-skips-lattice.test.mjs asserting a pure spec-declaration diff to SPEC-VNA-COCKPIT.md never trips the offPct threshold when docsOnly=true
    • Note in the spec file's own header that chair-decomposition rows are declarations-of-future-work, not the artifacts themselves, and should not be lattice-scored as content

    What we learned: The receipt schema already carries docsOnly as a field, but nothing downstream reads it to gate the walk — ask-005 has been raised 12 times because the flag is computed and shipped in every row (docsOnly=true right here) yet has zero effect on offPct. The gap isn't in detection, it's that a measured signal is being carried but never consumed.

    The missing guard (the deliverable): tests/pmu-simulator/docs-only-commit-skips-lattice.test.mjs

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Saturated, not shallow: 100% lit-to-walked ratio on both intent and reality means the walk isn't discriminating at all on this short, template-heavy checklist text. Adjustment: detect repeated boilerplate n-grams (the '(chair decomposition 2026-09-28 of the operator's words' template repeated 4x) and discount their contribution to the lit-cell count, or halve walk depth specifically for docsOnly commits so less boilerplate gets swept into the lit set. Experiments: Recompute prewalkOverlap using only the diff delta (the 4 new lines) instead of the full accumulated spec file, then re-run this sha's receipt and check whether prewalkOverlap rises materially · Add '(chair decomposition 2026-09-28 of the operator's words' and '(guard: `tests/vna/' to a stopword/exclusion set before the gzip-NCD reef comparison, re-run this sha, and check whether offPct drops · For docsOnly=true commits, run the walk at half depth (55 steps) and compare litIntent/litReality saturation — if still ~100%, saturation is structural to short template text and the fix belongs in gating (ask-005), not walk depth

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since · dictionary ablation saved 1082B

    An unwired docsOnly flag means every future spec-ledger declaration in this room prices as a full-severity lane breach, inflating this lane's loss ratio on noise; restoring premium requires wiring ask-005 so offPct reflects real content drift, not declaration breadth.

    Open the signed attestation →
  124. 2026-09-28 · 🔨 builder · offPct 62 · mistagged

    chore(blog): panel strip for the brief we did not write — rounds 2 and 3

    Why it left the lane: scripts/blog/build-panels-index.mjs:167 does `fs.writeFileSync(OUT, JSON.stringify(scan.index, null, 0) + '\n')` — the WHOLE post-panels-index.json is re-serialized as one minified line on every run, for every post in site history (2025-01 through 2026-09). Touching one slug's panel entry ("the brief we did not write") rewrites the entire blob, so git's diff (and the reef/walk fed from it) sees a single line removed and a single line added containing hundreds of unrelated subjects — "k_E derivation five independent proofs", "Landauer duality", "the-rices-theorem-checkmate", "the-monadnock-and-the-mountain", "a-named-lever-is-a-handhold" — none of which this commit touched in substance. Separately, the event is attributed to room 🔨 builder, but Builder's own file (.workflow/rooms/iterm2-builder.html:658) lists `src/content/blog/*.mdx — owned by 🎤 Voice` under its explicit "Forbidden surface", and the commit's own trailer already says `Originating-Terminal: 🎤 Terminal Voice`. lensIntent=B3,A1 matches Voice's own declared coordinate (`terminal-voice.html:577`, "B3 Tactics.Signal"). The room tag on this event contradicts both the commit's own trailer and Builder's own written self-exclusion.

    The semantic pull: Two independent pulls compound: (1) the diffusion pull — every subject string embedded in the regenerated single-line JSON (dozens of blog-topic names spanning k_E, Rice's theorem, insurance, book chapters) reads as new content dragging the walk across every topic coordinate those posts occupy; (2) the mistag pull — the event is scored against 🔨 builder's owned surface (src/app, src/components, public/, hooks) which the touched files (src/content-derived blog panel index, docs/pmu/commit-panels/*.png) never belonged to in the first place, so almost anything here reads as 'off-lane for builder' by construction.

    Intent–reality gap: The commit message claims routine blog-panel-strip work ("rounds 2 and 3"), consistent with the receipt's own docsOnly=true flag — a low-stakes, room-appropriate chore. But the event scores it against 🔨 builder's lane, a room whose own spec (iterm2-builder.html) explicitly disowns `src/content/blog/*.mdx` and hands it to 🎤 Voice — the same room the commit's Originating-Terminal trailer already names. The 62% offPct is measuring a lane the commit was never claiming to be in.

    • Ship scripts/room-drift-builder-check.sh per its own spec in iterm2-builder.html:670 (flag any staged file outside Builder's owned surface when commit message/room tag says builder) — it is 'spec'd, not yet implemented' per that room's own doc.
    • Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, asked 24× already) — the general form of the same defect, currently the most-repeated open ask in the ledger.
    • Ship tests/pmu-simulator/docs-only-commit-skips-lattice.test.mjs (ask-005, asked 12×) — this commit carried docsOnly=true and still produced a 62% offPct lattice score.
    • Rewrite scripts/blog/build-panels-index.mjs's write call (line 167) to pretty-print + sort keys, or split into per-slug files under src/data/post-panels/.
    • Add src/data/post-panels-index.json and docs/pmu/commit-panels/** explicitly to 🎤 Voice's Owned file/dir surface list in .workflow/rooms/terminal-voice.html (currently only src/content/blog/*.mdx and the scratchpad dir are named there).
    • Ship tests/pmu-simulator/binary-only-commit-seed-cap.test.mjs (ask-020) — the four PNGs in this diff are pure binary and should not seed the walk at all.

    What we learned: The repo's per-post panel index is stored as ONE un-pretty-printed JSON blob spanning every post since 2025-01; because of that single-file, single-line format, no commit that touches even one entry can ever present a line-scoped diff to the drift pipeline — every panel-strip commit, regardless of room, will look like it rewrote the whole blog corpus. This is a NEW class relative to the three prior facts-only interventions in this room (which only reported offPct trend deltas without a mechanism): those never touched the generator; this one names the exact write call (build-panels-index.mjs:167) and the exact room-attribution contradiction (Builder's own forbidden-surface list vs. the commit's own trailer) producing the drift.

    The missing guard (the deliverable): scripts/room-drift-builder-check.sh

    Detector probe: signal attribution — gzip reef 15% · ballistic walk 85%. The walk is not too shallow or saturated in the classic sense — litIntent=92 and litReality=103 are close in magnitude, meaning the walk found comparable density on both sides. The defect is upstream: it is being fed non-representative input (a whole-corpus JSON blob standing in for a one-slug touch). Concrete adjustment: cap or pre-truncate diff hunks for files matching a 'known-generated, single-line' classifier (src/data/*-index.json) before they reach the walk's ingest window, rather than tuning walk depth. Experiments: Re-run this commit's receipt with src/data/post-panels-index.json excluded from the walk's diff input; if offPct drops under the 15 threshold, it confirms the index file alone is the drift source. · Pretty-print post-panels-index.json once (one commit), then replay the receipts for the last 10 historical panel-strip commits against the reformatted history — measure whether offPct drops retroactively holding content constant (isolates diff-granularity from content). · Add a pre-walk classifier flagging 'single-line diff over N KB' as generated/opaque, route those files through docs-only handling, and track this room's offPct trend over its next 20 commits touching that file.

    Measured outcome (deterministic, not self-graded): room mean offPct 27→22 over 6 commits since · dictionary ablation saved 1371B

    This event inflates 🔨 builder's apparent loss-ratio with a false positive — docs-only, correctly-attributed-by-its-own-trailer work is being charged against a lane it never claimed; premium is restored by shipping the room-attribution guard (already spec'd, unshipped) and the generator's diff-granularity fix, both of which are cheap relative to the 24-times-asked cost of leaving ask-027 open.

    Open the signed attestation →
  125. 2026-09-28 · 🔨 builder · offPct 24 · structural

    chore(bookclub): high-score board update — recomputed after send

    Why it left the lane: 98% of the diff's insertion mass (670 of 681 lines) is the brand-new file public/bookclub/editions/2026-09-27.html, a full reader-facing edition page, while the commit message foregrounds only the 14-line data/bookclub/highscore.json recompute ('exact numbers stay in data/bookclub/highscore.json'). The walk's 131 lit reality cells resolve against that dominant prose file, dragging placement from the claimed C,C (chore/board-recompute) to A,A1 (laneHamming=20) — the message describes the small file and the walk measured the big one.

    The semantic pull: The strings 'Automated by scripts/bookclub/highscore-publish.sh', 'Board + edition pages regenerate from the three-tier instrument', and 'heat only on public surfaces' all read as build/tooling language (C,C), but the 670-line HTML body they describe is book-club reader content (quotes, rankings, prose) — the lane-pulling text is the file itself, not the commit message that names it.

    Intent–reality gap: The commit claims a bookkeeping recompute ('exact numbers stay in data/...json') but the receipt measured a full 670-line content-page publish landing 20 lane-hops from the claimed coordinate — the message undersold a page publish as a number update.

    • Narrow the public/ glob in .workflow/rooms/iterm2-builder.html:636 to exclude public/bookclub/editions/** and public/bookclub/highscore.html
    • Declare data/bookclub/highscore.json + public/bookclub/** as shared-state with an explicit owner (ask-003, tests/pmu-simulator/shared-state-files-have-room-owner.test.mjs) — scripts/bookclub/ itself appears in no room's owned-surface list
    • Add a 'Content-Lane:' trailer to scripts/bookclub/highscore-publish.sh's commit-message template
    • Audit other scripts/bookclub/*.sh or similar cross-room generators for the same unowned-script-writing-into-public/ pattern
    • Prototype the docsOnly lattice-skip (ask-005) against this sha to confirm offPct would have been suppressed or down-weighted

    What we learned: 🔨 builder's public/ owned-surface glob is claimed wholesale with zero carve-outs, so any foreign, unowned automation (scripts/bookclub/ appears in no room's owned-surface list at all) that writes generated content under public/ gets its commit attributed to builder's chore lane regardless of what the content actually is — the room-ownership glob is coarser than the pipelines writing into it.

    The missing guard (the deliverable): tests/pmu-simulator/shared-state-files-have-room-owner.test.mjs

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. walksIntent=134 vs walksReality=131 and litIntent=134 vs litReality=131 are nearly symmetric — the walk is not saturated or starved in volume, it is simply unfenced: it fully re-walks a docsOnly, auto-generated content diff as if hand-authored. Adjustment: cap or down-weight the lit-cell budget when docsOnly=true so an automation's dominant-file spread doesn't score as full-strength drift. Experiments: Re-run this sha's receipt with a prototype docsOnly lattice-skip (ask-005) and confirm offPct returns null/UNMEASURED instead of 24 · Seed the gzip reef dictionary with this generator's fixed boilerplate (see compression_dictionary_adds) and re-measure prewalkOverlap on the next 10 bookclub-publish commits to see if it rises and laneHamming falls · For the next 20 commits where one file is >90% of diff insertions, compare offPct with vs without that dominant file excluded from the intent-lane walk, to test whether single-dominant-file diffs need separate walk weighting

    Measured outcome (deterministic, not self-graded): room mean offPct 27→22 over 6 commits since · dictionary ablation saved 971B

    This room already carries 93 out-of-lane events in 14 days and this event is another instance of the same unowned-public/-glob root cause rather than fresh operator risk, so it reads as a systemic mis-scoped-surface loss driver; premium is restored by shipping the shared-state owner guard (ask-003), not by added scrutiny of this room's individual commits.

    Open the signed attestation →
  126. 2026-09-28 · 🧪 laboratory · offPct 64 · mistagged

    spec(vna): tick C367 + C369 (red witnesses pass), restore C378 + C379 lost from the source before commit

    Why it left the lane: The diff touches exactly one file, docs/specs/vna/SPEC-VNA-COCKPIT.md — flipping C367/C369 to '[x]' and appending C378 ('SUB-AGENTS BEEF UP AND REWRITE THEIR OWN MERKLE GOAL ROW') and C379 ('TIE THE LANDFALL SHORTENED TO /MILESTONES... EVERY COMMIT FOR THE NEXT 14 DAYS'). None of those strings, and no part of that file path, intersect 🧪 laboratory's owned-surface list (thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, .thetacog/punch-list*, scripts/init-claude-flow-with-crm.sh, scripts/check-mcp-health.sh, scripts/claude-room). The Relevant-Rooms trailer itself — 'Relevant-Rooms: Operator, Laboratory, Voice' — is the only thing putting Laboratory in this event's frame; C378/C379's own language ('sub-agents', 'goal row', 'tie... to /milestones... every commit') reads orchestration-flavored, which is likely what pulled the reality lattice toward the Ops.Grid/Tact.Speed cells (B1,C1 / B3-row / C1-col) the panel shows lit — but that content lives in a VNA cockpit spec file, not in any file Laboratory owns.

    Intent–reality gap: The commit's trailer claims Laboratory as a relevant room; the receipt measured 64% of lit reality mass outside the intent lane because the sole touched file, docs/specs/vna/SPEC-VNA-COCKPIT.md, isn't part of Laboratory's owned surface at all — the work is a clean, correct spec-tick-and-restore, the room claim on it is wrong.

    • Run `node scripts/ops/rules-for.mjs docs/specs/vna/SPEC-VNA-COCKPIT.md` and correct this commit's Relevant-Rooms trailer to the room(s) that resolve, not Laboratory
    • Land tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, asked 27×) — fail when a Relevant-Rooms entry's owned-glob has zero path overlap with the diff
    • Land tests/pmu-simulator/mistagged-commit-does-not-inflate-offpct.test.mjs (ask-033, asked 12×) — exclude a room's offPct roll-up when its Relevant-Rooms tag fails the ask-010 check
    • Audit a sample of the room's other 262 out-of-lane events from the last 14 days for the same Relevant-Rooms/owned-surface mismatch before treating each as a distinct architecture drift
    • Cap the recursive walk's lit-cell budget for docsOnly checkbox-toggle-only diffs ('- [ ] '→'- [x] ' with unchanged row text) so a 6-line tick commit doesn't spread across 92-121 cells

    What we learned: Laboratory's 262 out-of-lane events/14 days is plausibly dominated by self-authored Relevant-Rooms trailers naming Laboratory on commits whose diffs never touch its owned surface — this is the mistagged class at scale, and the two guards built to catch it (ask-010, ask-033) are already open with 27 and 12 prior asks and still unshipped; the bottleneck isn't diagnosis, it's that nobody has landed them.

    The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. 92-121 lit cells for a docs-only, 4-insertion/2-deletion checkbox-tick diff is heavy spread for the actual content changed (three lines flipped '[ ]'→'[x]', two rows appended verbatim from another file); the walk is over-spreading relative to the diff's true novelty. Adjustment: when docsOnly=true and the diff is dominated by '- [ ]'/'- [x]' toggle lines with otherwise-unchanged row text, only walk the changed token span (the checkbox glyph + row header), not the full unchanged row body. Experiments: Ablation: recompress the last 30 docsOnly=true VNA-cockpit commits with the walk capped to changed-token-only spans vs full-row spans; measure whether offPct on true-mistagged commits drops while genuine drift commits stay flagged · Experiment: for commits with prewalkOverlap=1, weight offPct scoring down since full pre-walk overlap already signals the content is well-known/on-lexicon, reserving full offPct weight for prewalkOverlap<1 cases; measure room mean offPct pre/post over next 20 commits · Experiment: run ask-010's check as a pre-commit dry-run against the last 262 Laboratory out-of-lane events and report what fraction resolve to zero owned-glob overlap — this directly tests the lesson's scale claim

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since · dictionary ablation saved 1010B

    A mistagged Relevant-Rooms trailer on an otherwise-correct spec-tick commit inflates Laboratory's measured loss-ratio without any actual cross-lane work occurring; premium is restored by landing ask-010 (trailer-to-diff coverage check) so offPct stops charging a room for work it never touched.

    Open the signed attestation →
  127. 2026-09-28 · 🧪 laboratory · offPct 54

    feat(comms): C384/C385 — LinkedIn asks only for the email; a reply gets the package through a tracked door

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since

    Open the signed attestation →
  128. 2026-09-28 · 🧪 laboratory · offPct 17 · structural

    spec(vna): C367–C377 declared from the testimonial /steer — quote sentences parked, the unsigned-sentence constraint bound

    Why it left the lane: The diff is 11 insertions into SPEC-VNA-COCKPIT.md, but the CONTENT of rows C372–C377 is not spec-declaration prose — it is fully-drafted customer-facing testimonial copy ('My risk officers buy legacy brands to protect their own jobs...'), a clause-by-clause legal-liability defensibility analysis ('un-fakeable', 'he certified the configuration', 'the liability transferred' — each marked as unbackable and rewritten), and a signature-line UX spec ('empty signature line', 'Would you put your name on this?'). That vocabulary is Voice/comms-claim material (the exact register `voice-and-pitch.md`'s never-debunkable-claims and never-guarantee-behavior rules police), not Laboratory build-ask declaration. lensIntent=C3,A1 (the declared spec/build-ask lane, matching Relevant-Rooms' Laboratory claim) vs lensReality=B,A1 (where the walk actually lit, matching Relevant-Rooms' Voice claim) — laneJump=10, laneHamming=36 — is the positional signature of that same split.

    The semantic pull: Specific strings that pulled reality off the declared lane: the verbatim quoted testimonial block itself ('Testimonial: "My risk officers buy legacy brands...'), the three named unbackable clauses ('un-fakeable', 'he certified the configuration', 'the liability transferred'), and the shipped-replacement copy ending 'I signed the cheque, and we scale the agents with the risk on paper instead of on me.' These are dense, self-contained outward-claim prose blocks embedded inline in a Laboratory-committed file rather than referenced by link.

    Intent–reality gap: The commit message frames this as C367–C377 spec declaration bookkeeping ('the door split the operator's quoted testimonial... parked so the loop never dispatches a worker', 'now names its own guard') — a Laboratory/build-ask operation. What the receipt measured is that the actual mass of the change is finished outward-facing testimonial copy plus a legal-defensibility edit pass over it, which is Voice's owned content class, not Laboratory's.

    • Extract the full testimonial text + three-clause defensibility analysis out of SPEC-VNA-COCKPIT.md C372 into docs/architecture/claude-rules/voice-and-pitch.md under a new anchor, leaving a link in the spec row
    • Do the same extraction check for C367–C371, C377 (each embeds operator-quoted prose inline — audit for the same pattern)
    • Extend tests/vna/c372-testimonial-my-risk-officers-buy-legacy.test.mjs to fail if the spec row contains the raw testimonial/clause prose rather than a link to voice-and-pitch.md
    • Add Relevant-Rooms: Voice as a REQUIRED (not just listed) co-reviewer trailer whenever a Laboratory commit's diff matches testimonial/claim vocabulary (testimonial, sign your name, un-fakeable, certified, liability transferred)
    • Update SPEC-VNA-COCKPIT.md's file header to state the fencing rule: outward-claim prose is link-only, never inlined, regardless of which room's /steer session produced it

    What we learned: The /steer per-sentence decomposer writes the operator's FULL dictated testimonial content (plus the decomposer's own legal-claim vetting) directly into whichever room's spec file happens to be running the session — the coupling that pushes offPct out of lane isn't the room doing wrong work, it's the decomposer defaulting to inline-embed instead of link-out for content that structurally belongs to a different room's owned surface (Voice's claim/voice rules).

    The missing guard (the deliverable): tests/vna/c372-testimonial-my-risk-officers-buy-legacy.test.mjs (open ask) extended to also assert: any SPEC-VNA-COCKPIT.md row containing testimonial-claim vocabulary ('testimonial:', 'un-fakeable', 'certified the configuration', 'liability transferred', 'sign your name') must contain a cross-reference to docs/architecture/claude-rules/voice-and-pitch.md rather than the full prose inline — catching this class before commit, independent of which room fires.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. litIntent/litReality both equal walksIntent/walksReality exactly (122/122, no truncation) — the walk is fully saturated, every visited cell lit. A saturated walk loses spatial resolution on WHERE within the lane the mass actually concentrates (it can tell C3,A1 vs B,A1 apart but not much finer). Adjustment: tighten the aperture (or add a depth cap) so a docsOnly/setpoint commit like this one produces partial fill (lit < walks) rather than 100% saturation, giving offPct a finer gradient instead of a binary in/out reading. Experiments: Rerun this sha with the reef seed window doubled and compare offPct — if it's unchanged, confirms the reef contributes ~0 discriminating signal on setpoint/docsOnly commits and the aperture should shrink reef weight for that commitClass · Backfill laneHammingNull via the permutation null for this commit (currently null) to learn whether laneHamming=36 is a real signal or within noise for docsOnly spec commits · Sample the last 50 docsOnly commits and check what fraction hit litIntent==walksIntent (full saturation) vs partial — if most saturate, the aperture depth for docsOnly commits needs lowering as a class, not per-incident

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since · dictionary ablation saved 1137B

    An out-of-lane testimonial draft sitting inline in a build spec (rather than fenced behind Voice's claim-vetting file) is exactly the kind of unreviewed outward-claim artifact that raises loss-ratio on the comms lane; restoring it means the extraction lands in voice-and-pitch.md and the guard is live before this pattern repeats.

    Open the signed attestation →
  129. 2026-09-28 · 🎤 voice · offPct 18

    book(ch6): the rivers become a cavity — open room, mailbox, mirrors-are-slots, Appendix I's threshold — woven in six-needs order

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 5 commits since

    Open the signed attestation →
  130. 2026-09-28 · 🧪 laboratory · offPct 37

    fix(book): the metavector locator reaches appendices, not chapters only

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since

    Open the signed attestation →
  131. 2026-09-28 · 🧭 navigator · offPct 24

    chore(vscode): 0.3.59 — ship the knockout activity-bar mark

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since

    Open the signed attestation →
  132. 2026-09-28 · 🔨 builder · offPct 61

    chore(blog-panels): the result gap — panel strip for v1 (9454635f20)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 27→22 over 6 commits since

    Open the signed attestation →
  133. 2026-09-28 · 🧪 laboratory · offPct 44

    feat(bookclub): "How the picture is painted" — the row → column → row walk, its two panels, the repo, and the metavector scoped honestly

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since

    Open the signed attestation →
  134. 2026-09-28 · 🧪 laboratory · offPct 43 · mistagged

    fix(vna): C126c — clip-watch daemons reap themselves when their lock no longer names them

    Why it left the lane: The diff is entirely scripts/vna/clip-watch.mjs + tests/vna/*.test.mjs — none of it touches any path in 🧪 laboratory's owned surface (.claude/, .mcp.json, scripts/init-claude-flow-with-crm.sh, thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, .thetacog/punch-list*). The commit's own trailers say Originating-Terminal: 🔒 vault and Relevant-Rooms: vault, operator, performance — laboratory is never named. lensIntent=C,C2 vs lensReality=C,C (laneJump=8, laneHamming=12) shows the walk drifting by one coordinate cell while prewalkOverlap sits at just 2 — the reef seed already found almost no shared ground between the intent lane and whatever laboratory's corpus contains, before the ballistic walk even ran. The 43% offPct is not the daemon-reap fix leaking into laboratory's territory; it is laboratory's lane being asked to score a commit that was never its business.

    The semantic pull: Words like 'sandbox leaks', 'the test gets NO_SPAWN', 'temp VNA_CLIP_STATE_DIR' and 'arm' read as generic testing/experiment vocabulary — the same register 🧪 laboratory's emoji and corpus (MCP health checks, orchestrator smoke tests) carry — even though the actual paths (scripts/vna/, tests/vna/) belong nowhere near laboratory's declared surface. The gzip-NCD reef seed likely keyed on that testing-flavored diction rather than on the path, which is exactly the kind of token-vs-construct slip CLAUDE.md's Class 2 proxy failure warns about: 'sandbox'/'test' matched the room's vocabulary, not the room's actual jurisdiction.

    Intent–reality gap: The commit claims and is trailer-tagged for vault/operator/performance; the receipt scored it against 🧪 laboratory, a room this commit never named and whose owned-surface glob doesn't include scripts/vna/ or tests/vna/ at all.

    • Add scripts/vna/**, tests/vna/** to vault's owned-surface glob (matching Originating-Terminal: vault).
    • Confirm laboratory's glob has no catch-all that silently absorbs unclaimed paths (tests/ops/room-glob-overlap.test.mjs, ask-024).
    • Audit whether scripts/vna/ + tests/vna/ are claimed by ANY room today (tests/ops/room-surface-coverage.test.js, ask-001) — if not, this is a coverage gap, not a one-off mistag.
    • Wire relevant-rooms-covers-diff (ask-010) to flag when the assigned room isn't in the commit's own Relevant-Rooms list.
    • Re-run the receipt pipeline on sha 76817ca5a after the glob fix and confirm it stops counting against laboratory's offPct.
    • Sample the other 348 laboratory out-of-lane events from the last 14 days for the same Originating-Terminal≠laboratory signature.

    What we learned: 🧪 laboratory's 349 out-of-lane events in 14 days is very unlikely to be 349 real drifts — it is much more consistent with laboratory being the reef's default landing zone for any commit whose true path (like scripts/vna/) is unclaimed by any room's owned-surface glob. The prior three interventions moved the room mean offPct up and down (15→13, 15→18, 15→13) with no sustained direction, which is exactly the signature of noise from a systemic misattribution rather than genuine code-placement drift being nudged by sensemaking-free facts. The fix is a one-time ownership-registry correction, not a per-commit intervention.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027) — this event is precisely the case it exists to catch: Originating-Terminal (vault) does not match the room the receipt scored the commit against (laboratory).

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Both walks are fully saturated — litIntent/walksIntent and litReality/walksReality both equal 1.0, meaning every cell the walk visited lit up. A walk that lights 100% of its visited cells can't discriminate in-lane from spilled mass; it needs a stopping rule (marginal-NCD-gain cutoff) so it stops before saturating, restoring some discriminative power between intent and reality. Experiments: Re-seed the reef for sha 76817ca5a after adding the vault glob for scripts/vna/**+tests/vna/**, and check whether prewalkOverlap rises above 2 — confirms the glob gap, not content drift, was driving the low overlap. · A/B the walk budget for this sha at ~half the current cap (e.g. cap 70 instead of 132/139) and measure whether litIntent/litReality fill ratio drops below 1.0 — if it does, saturation was masking real signal. · Pull all 349 laboratory out-of-lane events from the last 14 days, bin by Originating-Terminal==laboratory vs !=laboratory, and compare mean prewalkOverlap between bins — confirms or kills the systemic-misattribution lesson above.

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since · dictionary ablation saved 708B

    🧪 laboratory's apparent loss-ratio on this event is inflated by a misattributed claim rather than a real defect, so premium is restored not by penalizing the room but by correcting the ownership glob so vault-owned work stops being billed against a lane it never occupied.

    Open the signed attestation →
  135. 2026-09-28 · 🧪 laboratory · offPct 23 · mistagged

    fix(bookclub): the ranker never re-offers a passage that already went out live

    Why it left the lane: The diff never touches anything laboratory owns (memory/, settings.json, .mcp.json, claude-room, crm-mcp init, swarm-comms/, orchestrator/, punch-list*). Every changed path — scripts/bookclub/pick-passage.mjs, .claude/skills/club/SKILL.md, tests/bookclub/pick-never-repeats-a-live-send.test.mjs — is content-pipeline work, and the commit's own trailer already says so: 'Relevant-Rooms: voice, operator, builder'. But 'Originating-Terminal: 🎤 Voice' disagrees with the room this event actually got billed to (🧪 laboratory). laneJump=10 and laneHamming=36 are the lattice's way of saying: intent lensed to A,C2 (content/ranking territory), reality lensed to A1,A — neither of which is laboratory's coordinate. The low prewalkOverlap=3 (out of 137 walksIntent) shows the mismatch was already present at the reef-seed stage, before the ballistic walk even ran — this isn't the walk drifting, it's the room label attached to a fully legitimate voice/operator/builder commit.

    Intent–reality gap: The commit claims (correctly, in its own trailers) to be bookclub/content work owned by voice, operator, builder; the receipt nonetheless charged the event to 🧪 laboratory, a room whose owned surface has nothing to do with bookclub, skills, or ranking scripts.

    • Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, already asked 21×) — it would have caught 🎤 Voice landing under 🧪 laboratory directly, no lattice walk needed.
    • Add scripts/bookclub/**, .claude/skills/club/**, tests/bookclub/** to voice/operator/builder's owned-surface coverage (ask-001, room-surface-coverage, asked 10×) so bookclub commits have a home to land in besides laboratory's catch-all.
    • Run node scripts/ops/room-glob-overlap.mjs (ask-024) against this diff — check whether laboratory's glob is over-broad enough to be swallowing paths it shouldn't recognize.
    • Backfill-correct this sha's room tag from laboratory to voice/operator/builder in the room-mean history so laboratory's '261 out-of-lane events in 14 days' figure isn't inflated by misrouted commits.
    • Add a cheap pre-walk check: if Relevant-Rooms excludes the room about to be charged, WARN before spending the full 144-cell walk on a placement that's already contradicted by the commit's own trailer.

    What we learned: 🧪 laboratory's high out-of-lane count (261 events/14 days) is not necessarily 261 instances of laboratory's own work drifting — this event shows at least some of that volume is voice/operator/builder commits being billed to laboratory by a terminal/room mismatch upstream of the walk. The room's offPct trend (15→13→18→13 across prior interventions) may be oscillating because two different populations — laboratory's real drift and misattributed voice/operator/builder drift — are being averaged into one number.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Right-sized, not shallow or saturated-in-the-bad-sense — 100% of both lit counts equal their walk counts with no truncation. The lever here isn't depth, it's seed quality: the reef corpus needs the Relevant-Rooms/Originating-Terminal trailer text folded in so bookclub-domain seeds anchor toward voice/operator/builder before the walk starts, not after. Experiments: Re-seed the reef corpus with room-ownership glob text (voice/operator/builder's owned paths) and re-run this sha's prewalkOverlap — expect it to rise well above 3 if the seed fix works. · Ablation: add the literal trailer line 'Originating-Terminal: 🎤 Voice' as a token into the reef baseline dictionary, recompute laneHamming for this sha and 10 other Voice-originated commits, and check whether the median laneHamming drops. · Backtest: pull the last 20 events routed to 🧪 laboratory, split by whether Relevant-Rooms includes 'laboratory', and compare offPct distributions between the two groups — a large gap confirms trailer-mismatch is a leading indicator worth gating on before the walk runs.

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since · dictionary ablation saved 975B

    This misrouted event nudges laboratory's loss ratio up on paper without laboratory having done anything wrong, and inflates voice/operator/builder's apparent clean streak by the same amount — premium is restored by shipping the terminal-match guard so the charge follows the trailer, not a stale room default.

    Open the signed attestation →
  136. 2026-09-28 · 📐 architect · offPct 25

    spec(vna): tick C386 + C387 (guard green at ab66739e66)

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 22→14 over 33 commits since

    Open the signed attestation →
  137. 2026-09-28 · ☕ network · offPct 31

    fix(bookclub): a metavector pin no longer reads as stale — the repin it advised dropped the metavector

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since

    Open the signed attestation →
  138. 2026-09-28 · 📐 architect · offPct 23 · mistagged

    feat(milestones): C361 — four milestones for what we are not doing yet

    Why it left the lane: Every changed path in the diff — data/milestones-market-contact.json, data/milestones-next.json, data/milestones-progress.json, data/milestones.json, data/vna/milestone-goals.json, docs/specs/vna/direction/2026-09-24-milestone-goals.md — sits under data/vna/ and docs/specs/vna/, none of which match 📐 architect's declared owned-surface globs (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md). The diff's own vocabulary — 'extension surface', 'falsifier', 'hurdle', 'causal lane', 'lift (LIFT_BASIS)' — is VNA-instrument language (Prove/Instrument coordinates), not strategy-narrative language, which is why the walk landed the reality mass at C2,B3 while the commit's message framing (A1,B1 — grounding + initial instrumentation of 'what we are not doing yet') scored the intent lane.

    The semantic pull: Terms like 'milestone-goals.mjs', 'update.sh --no-llm', 'hurdle:', 'falsifier:', and the repeated 'no surface yet — nothing under packages/thetacog-mcp-vscode/ or scripts/vna/ moves this predicate' pulled placement toward the Prove/Instrument (C2,B3) region — these are the exact tokens the lattice reads as proof-stage instrumentation, not strategy grounding.

    Intent–reality gap: The commit message presents this as architect-room strategic sensemaking ('four milestones for what we are not doing yet'), but 100% of the diff is machine-regenerated VNA milestone bookkeeping outside any path Architect owns, and the Relevant-Rooms trailer (Navigator, Operator, Builder) doesn't even name Architect as a stakeholder of its own claimed work.

    • Add a CLAUDE.md owned-surface row naming which room owns data/milestones*.json, data/vna/, and docs/specs/vna/direction/ (currently unclaimed by any documented glob).
    • Reconcile the emoji mismatch between the event-header room label (📐 architect) and the commit trailer's own room label (🏗️ Architect) — decide if they're the same room and standardize the spelling.
    • Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, asked 22×, still open) so a trailer naming a room with zero surface overlap fails pre-commit.
    • Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, asked 33×, still open) so Relevant-Rooms is checked against the actual diff paths.
    • Re-run scripts/vna/milestone-goals.mjs's commit going forward tagged with the corrected Originating-Terminal and confirm offPct drops for this class specifically.

    What we learned: Unlike the prior lesson (ff09774e5) about CLAUDE.md sanctioning Originating-Terminal/Relevant-Rooms divergence, this event shows a stronger failure: NEITHER trailer field names a room whose owned-surface glob covers ANY touched path, and the room's own identity is spelled two different ways (📐 architect in the receipt vs 🏗️ Architect in the trailer) — the sanctioned-divergence rule assumes at least one trailer field is grounded in the diff; here neither is.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized, not saturated or shallow — both sides lit exactly as many cells as they walked (131/131, 137/137). The lever isn't walk depth, it's reef starvation: seed the reef's lexicon with VNA-milestone jargon so intent-side text (commit message + spec) shares more vocabulary with reality-side text (the diff) before the walk begins. Experiments: Add VNA-milestone terms ('lift', 'falsifier', 'hurdle', 'extension surface', 'causal lane') to the reef dictionary and recompute prewalkOverlap for sha 83ac7d7ed4 — measurable: does prewalkOverlap rise from 4? · Add the proposed CLAUDE.md owned-surface row for data/vna/+docs/specs/vna/ and re-score this commit's offPct with the corrected lane — measurable: offPct before/after the glob fix. · Run tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (once shipped) against all 142 of this room's out-of-lane events in the last 14 days — measurable: what fraction are this exact trailer/surface-mismatch class vs genuine cross-lane work.

    Measured outcome (deterministic, not self-graded): room mean offPct 21→33 over 9 commits since · dictionary ablation saved 1182B

    A 23%-off-lane commit whose trailer names no room owning any touched path adds to this lane's already-elevated loss history (142 prior out-of-lane events in 14 days); premium is restored by finally shipping the twice-asked originating-terminal-matches-surface guard so the mismatch is rejected at commit time instead of measured after the fact.

    Open the signed attestation →
  139. 2026-09-28 · 🧪 laboratory · offPct 39

    spec(vna): C378 — a worker rewrites its own row, the operator's quote never moves

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since

    Open the signed attestation →
  140. 2026-09-28 · 🧪 laboratory · offPct 51 · mistagged

    feat(vna): C388 — the hook names each paste row's file, byte range and read command

    Why it left the lane: The event's own room field says 🧪 laboratory, but the commit's trailers say Originating-Terminal: 🏛️ architect and Relevant-Rooms: architect, builder, operator — laboratory appears in neither. The diff touches only scripts/vna/steer-hook.mjs, docs/specs/vna/SPEC-VNA-COCKPIT.md and tests/vna/steer-hook.test.mjs — none of laboratory's owned surface (thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, .thetacog/punch-list*, .mcp.json). walksIntent=124/litIntent=124 and walksReality=143/litReality=143 — both sides are fully saturated (every walked cell lit), and prewalkOverlap is only 5, meaning the gzip-NCD reef already found almost no overlap between whatever text seeded the 'laboratory' intent lane and the VNA-cockpit text that is the actual reality. With no shared seed and a saturated walk on each side, offPct=51 is close to the base rate of two disjoint corpora, not a targeted leak.

    Intent–reality gap: The commit claims (via its own trailers) to be architect/builder/operator work closing C388 on the VNA cockpit hook; the receipt logs it against room 🧪 laboratory, whose owned surface is CRM/MCP/orchestrator infrastructure the diff never touches.

    • Build tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, already asked 22×) so it asserts event.room == commit's Originating-Terminal trailer == surface-owner(files touched), not just trailer-vs-surface
    • Audit the receipt pipeline's room-assignment step: confirm whether it reads Originating-Terminal at all, or infers room purely from the executing session/terminal identity
    • Check tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, 28×) against this commit — Relevant-Rooms (architect, builder, operator) vs the actual files touched (scripts/vna/, docs/specs/vna/, tests/vna/)
    • Pull the laboratory room's last 14 days of 265 out-of-lane events and bucket by (event.room vs trailer.Originating-Terminal) mismatch to confirm this is systemic and not a one-off
    • If systemic, this is the 265-event room-assignment bug, not 265 separate content mistakes — fixing the assignment source fixes the whole backlog at once

    What we learned: This room's repeated offPct spikes are not necessarily content drifting into the wrong lane — the room label on the receipt itself can be wrong while the commit's own trailers are internally consistent and correct. The prior three interventions for this room were facts-only (no sensemaking) and moved offPct 15→13, 15→18, 15→13 — noise around a flat mean, consistent with a metadata bug that content-level fixes cannot touch.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Saturated, not right-sized: litIntent==walksIntent and litReality==walksReality means every node the walk visited lit up on both sides — there's no unlit fringe to show where the walk ran out of relevant material and stopped discriminating. That's consistent with an intent corpus (laboratory's owned-surface text) too thin/narrow to produce negative examples. Adjustment: when lit-rate==walked-rate on the intent side, widen the intent seed (pull in the room's recent commit bodies, not just its static file list) before trusting the walk's spread as evidence of drift. Experiments: Reseed laboratory's reef corpus with its last 90 days of actual commit trailers/bodies (not just the static owned-file glob) and re-run prewalkOverlap on this sha; measure whether overlap rises above 5 for genuinely in-lane laboratory commits · Add the Originating-Terminal trailer text itself as a weighted reef seed input and ablation-test whether it changes offPct on this and similar mistagged events · Run the room-assignment step in isolation on 20 recent laboratory-room events, comparing event.room vs trailer.Originating-Terminal vs surface-owner, to quantify how much of the 265-event backlog is this exact 3-way mismatch versus genuine content drift

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since · dictionary ablation saved 1077B

    An event whose own room label contradicts its own commit trailers is an attribution defect, not a coverage defect — it inflates this lane's apparent loss ratio without any real cross-lane work having occurred, and it's restored by fixing the room-assignment source (ask-027), not by underwriting laboratory more conservatively.

    Open the signed attestation →
  141. 2026-09-28 · ☕ network · offPct 20

    fix(bookclub): an active session defers the model stages, never the send

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since

    Open the signed attestation →
  142. 2026-09-28 · 🧪 laboratory · offPct 50

    feat(vscode): C119k.5 — an inox T, and a round D hanging from the crossbar's right end

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since

    Open the signed attestation →
  143. 2026-09-28 · 🧭 navigator · offPct 16

    fix(vscode): C360 — npm run package copies the vsix to the Desktop AND to /vsx

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since

    Open the signed attestation →
  144. 2026-09-28 · 🧪 laboratory · offPct 28

    test(vna): C361 ticked — the double-check, the grip-toll model, the not-yet milestones

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since

    Open the signed attestation →
  145. 2026-09-28 · 🔨 builder · offPct 25

    spec(vna): C368 — a second looping GIF for the book club, the walk drawn instead of said

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct 27→33 over 3 commits since

    Open the signed attestation →
  146. 2026-09-28 · 📐 architect · offPct 40 · structural

    docs(steer): the results-engine impasse — built, what it changes about the strategy, five questions

    Why it left the lane: The only changed file is data/vna/asks/2026-09-28-results-engine-impasse.txt — the canonical output path the /impasse skill writes to. None of architect's six owned globs (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md) cover data/vna/. The corpus at data/vna/asks/ has been reef-seeded near a different cluster than architect's strategy docs, so the recursive walk lit reality cells at C2,C (141 of them, fully saturated) while the intent side stayed pinned at C,A (110, also fully saturated) — the file simply has no address inside architect's declared territory, so wherever it landed reads as leaked mass.

    The semantic pull: The path fragment 'data/vna/asks/' itself: it is the /impasse skill's own hardcoded output directory, never a docs/strategy/ or docs/03-product/ path. No term in the 90-line body pulled placement — the DIRECTORY the file was born into did, before a single line of prose mattered.

    Intent–reality gap: The commit claims to be architect strategy work (Originating-Terminal: architect, Relevant-Rooms: architect/operator/vault, subject 'the results-engine impasse') but 100% of the diff is one file under data/vna/asks/, a directory none of architect's owned globs reach — the receipt measured 40% of the reality mass outside the intent lane on a commit that is, by its own trailers, entirely one file.

    • Add `data/vna/asks/**` as a declared shared-surface glob in CLAUDE.md (new SHARED STATE table, not folded into architect's row) so the lattice walk has a home lane independent of which room's terminal wrote it.
    • Ship tests/pmu-simulator/shared-state-files-have-room-owner.test.mjs (ask-003, already open, asked 3x) to enumerate every path touched in a commit and fail if it matches zero owned-file-surface glob across ALL rooms, not just the claimant.
    • Extend tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027) so a diff outside Originating-Terminal's globs is NOT flagged if every touched path is covered by the Relevant-Rooms set instead — CLAUDE.md already sanctions this divergence explicitly.
    • Document the /impasse skill's canonical output directory (data/vna/asks/) in its own skill file and state which rooms are Relevant-Rooms by default, so the trailer isn't hand-typed per run.
    • Audit sibling data/vna/** and data/*/ directories for the same unowned-shared-surface gap before the next impasse/steer cycle, so this doesn't resurface one directory at a time.

    What we learned: Fixing HOW the detector reads Originating-Terminal (prior lesson ff09774e5, mean offPct 20→14) does not close this class — this event proves a file can be structurally homeless: data/vna/asks/ matches zero room's owned-file-surface glob, so no trailer-reading fix helps until shared/unowned directories get an explicit registry entry separate from the per-room table.

    The missing guard (the deliverable): tests/pmu-simulator/shared-state-files-have-room-owner.test.mjs

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Right-sized, not shallow or saturated in a bad sense — both sides fully lit their own walk budget cleanly. The one asymmetry worth acting on: reality needed 141 walks to fully light vs intent's 110, meaning the reality-side content is structurally wider than the intent corpus. Adjustment: when docsOnly=true and the diff is a single file, cap walksReality at walksIntent*1.1 or flag the excess as scope-breadth (per the existing 'off-lane = scope-breadth' project convention) rather than penalizing it as drift. Experiments: Recompute prewalkOverlap after seeding the reef dictionary with the literal string 'data/vna/asks/' plus 3-5 surrounding path tokens from recent impasse commits; measure whether prewalkOverlap rises above 5 and offPct correspondingly drops on replay of this sha. · Run the shared-state audit (checklist item 4) and re-score the last 14 days of architect's 141 out-of-lane events against a version of CLAUDE.md with the shared-surface table added, to isolate how many of the 141 were this exact unowned-path class vs genuine cross-lane work. · A/B replay this sha's receipt with Relevant-Rooms treated as a satisfying lane set (per ask-027's proposed fix) vs the current Originating-Terminal-only read, and confirm offPct drops below the 15 threshold with no other change.

    Measured outcome (deterministic, not self-graded): room mean offPct 21→14 over 33 commits since

    This lane's loss ratio stays elevated — 141 out-of-lane events in 14 days with two prior interventions only partially denting it (20→14, 17→26) — until unowned shared-state directories like data/vna/asks/ carry an explicit registry entry, restoring premium the moment ask-003's guard closes the whole unowned-path class rather than this one instance.

    Open the signed attestation →
  147. 2026-09-28 · 🔨 builder · offPct 43 · structural

    feat(iamfim): the builder's door names ThetaCog Steer where it says point it at yourself, and its rail links the listing

    Why it left the lane: The commit message frames itself as pure content ('names ThetaCog Steer where it says point it at yourself') but the diff's actual mass sits in a new shared module, src/lib/marketplace.mjs, plus a re-export rewrite of src/lib/auth/notary-seat-checkout.mjs ('export { MARKETPLACE_ID, MARKETPLACE_URL } from '../marketplace.mjs''). That's a lib/auth boundary refactor (lensReality=A,A1) wearing a landing-copy commit message (lensIntent=C,A). The pull term is 'no node: imports, so the client page can import it' — a runtime-constraint decision about module boundaries, which is exactly the kind of structural call that lands in the lib/auth lane, not the landing-page-copy lane the message claims.

    The semantic pull: The literal string doing the dragging is the comment block in notary-seat-checkout.mjs: 'The constants themselves live in src/lib/marketplace.mjs (no node: imports, so the client iamfim page can use them too)' — this is a module-boundary justification, the signature of lib/auth-lane reasoning, sitting in a commit whose message is entirely about landing-page prose ('names', 'links', 'rail').

    Intent–reality gap: The message claims a copy-only change to one page (point-it-at-yourself line + rail link) but the receipt shows 43% of the lit mass landed outside that lane — driven by extracting and rewiring a shared constants module that a DIFFERENT file (notary-seat-checkout.mjs, the root-layout auth/checkout surface) now re-exports from.

    • Update commit-message convention guidance (if any exists in docs/architecture/claude-rules/build-and-format.md) to require: when a commit both extracts a shared constant/module AND uses it in a page, the subject names the extraction, not just the page-copy outcome.
    • Confirm src/lib/marketplace.mjs is now the single source of truth — grep for any other literal 'thetadriven.thetacog-mcp' strings that should also re-export from it (public-surface-register.mjs is mentioned in the file's own comment as a future re-exporter; verify it isn't duplicating the string).
    • Add a one-line note to iamfim-ledger-door-marketplace.test.mjs's own docstring naming that this test now also guards the lib/ extraction, since the extraction and the door-copy are asserted together in one file.

    What we learned: A commit that touches src/lib/ as a supporting-infrastructure step for a src/app/ page change gets scored as if the lib/ touch were the primary intent — the commit message needs to name the lib-level move explicitly even when it's 'just plumbing' for a copy change, because the receipt can't distinguish 'necessary refactor to ship the copy' from 'the copy was a pretext for the refactor.'

    The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Right-sized but under-anchored: litIntent/litReality (125/121) are close in magnitude, meaning the walk explored comparably on both sides rather than saturating or truncating (walkTruncated=false) — the issue isn't depth, it's that the walk had almost no prewalk anchor (overlap=4) to pull reality toward the intent lane before diverging. Adjustment: raise the prewalk seed weight so commits with low prewalkOverlap get a stronger intent-lane pull before the recursive walk starts, rather than letting laneJump=3 accumulate unchecked. Experiments: Re-run this sha's walk with prewalkOverlap seed weight doubled and measure whether laneHamming drops below 36 while litReality count stays within +/-5 of 121 (tests whether stronger seeding reduces drift without truncating exploration). · Ablate: recompress the last 20 'builder' room commits with marketplace.mjs's docstring template seeded into the gzip dictionary, and measure whether prewalkOverlap rises on commits that touch both src/lib/ and src/app/ in one diff. · Track offPct specifically for commits whose diff spans both src/lib/ and src/app/ over the next 20 builder commits, to test whether cross-directory-in-one-commit is itself a leading indicator (independent of message wording) that should feed the lane-placement prior.

    Measured outcome (deterministic, not self-graded): room mean offPct 27→33 over 3 commits since · dictionary ablation saved 975B

    A structural (not intentional or mistagged) lane miss on the builder room's 61st out-of-lane event in 14 days pushes this lane's loss-ratio up on frequency alone; restoring it needs the subject-line convention fix applied going forward plus watching whether the next few src/lib/+src/app/ combined commits also miss, which would upgrade this from a one-off structural note to a pattern worth a dedicated guard.

    Open the signed attestation →
  148. 2026-09-28 · 🧪 laboratory · offPct 35 · structural

    spec(vna): tick C380–C383 — the forwarding package, guards green at 9e093b534a

    Why it left the lane: docs/specs/vna/SPEC-VNA-COCKPIT.md is claimed EXCLUSIVELY by the operator room in data/room-surfaces.json:155 ('docs/specs/vna/' sits only under the operator entry), but this commit's Originating-Terminal is 🧪 laboratory (cuo1). Any non-operator terminal ticking a row in that file is out-of-lane by ownership alone, before content is even considered. On top of that, the four ticked rows carry dense Voice/GTM prose inline with the checkbox ('TESTIMONIAL', 'LOI', 'FORWARDING-READY EMAIL PACKAGE', 'SONNET READS IT COLD AS A MONOLOGUE, AN OPUS SUB-AGENT WRITES', 'THE INTRO INSTANTLY LANDS WHAT KIND OF PERSON IT IS FOR') — none of these are Laboratory/ops terms, all are Voice/comms terms, which is why the reality walk spread further (115 lit cells) than intent (74) and landed in C1,C2 instead of C,C.

    The semantic pull: Two independent pulls compound: (1) an ownership pull — data/room-surfaces.json:155 assigns 'docs/specs/vna/' only to operator, so laboratory's edit has no legitimate home in the registry regardless of content; (2) a content pull — the literal strings 'TESTIMONIAL AND THE LOI', 'FORWARDING-READY EMAIL PACKAGE', 'SONNET READS IT COLD AS A MONOLOGUE, AN OPUS SUB-AGENT WRITES', 'SPEC THE OUTCOME AND RATCHET THE VERSIONS' are Voice/comms vocabulary carried inline by the checkbox row, dragging the reality walk (litReality=115) past the intent walk (litIntent=74) into C1,C2.

    Intent–reality gap: The commit claims a bookkeeping act — 'tick C380–C383 — the forwarding package, guards green' (docsOnly=true on the receipt row itself) — but the receipt measured a 35% off-lane reality because the file it wrote to is registered to a different room (operator) than the one that wrote it (laboratory), and the row text it ticked is Voice-lane prose, not Laboratory-lane prose.

    • Ship the ask-027 guard (tests/pmu-simulator/originating-terminal-matches-surface.test.mjs) so a terminal/owned-surface mismatch is asserted, not just observed in telemetry
    • Ship the ask-005 guard (tests/pmu-simulator/docs-only-commit-skips-lattice.test.mjs) so docsOnly=true short-circuits full lattice walking
    • Add docs/specs/vna/SPEC-VNA-COCKPIT.md to data/room-surfaces.json as a declared shared-ledger surface, not an operator-exclusive claim
    • Backfill-rescan laboratory's last 14 days of 260 out-of-lane events to split docsOnly checkbox-tick noise from genuine content drift before judging the room's health trend
    • Seed the gzip reef dictionary with the spec row's repeating template strings so future ticks pre-overlap instead of re-walking fresh

    What we learned: The prior three interventions for this room were facts-only (no sensemaking) and moved offPct by only a few points because they never reached the actual mechanism: this room's recurring drift isn't behavioral, it's a registry gap — docs/specs/vna/SPEC-VNA-COCKPIT.md is a de-facto shared cross-room ledger (every room ticks its own C-numbers there via /steer, /goal, snowball dispatch) but data/room-surfaces.json models it as one room's (operator's) exclusive property, so every other room's legitimate tick is definitionally out-of-lane before content is scored at all.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 15% · ballistic walk 85%. Over-saturated for this commit shape: a 4-line, docsOnly=true, checkbox-only diff produced a 115-cell reality walk, i.e. the walker re-lit the full surrounding row prose on every touched line instead of confining itself to the changed hunk. Concrete adjustment: for docsOnly=true commits, bound walksReality to the literal added or removed diff lines (the checkbox glyph swap) rather than the full markdown paragraph each line belongs to. Experiments: Re-run sha b0937efdc7 with walksReality bounded to changed-line spans only; measure whether offPct drops from 35 toward single digits · Gate docsOnly=true plus diffstat-under-20-line commits to skip the full lattice walk entirely; measure the flagged-event rate across laboratory's last 14 days (currently 260) before vs after · Seed the gzip reef dictionary with this file's recurring row template so prewalkOverlap rises on the next tick-only commit and less mass falls to the walk to rediscover

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since · dictionary ablation saved 1103B

    A registry gap that mislabels a shared cross-room ledger as one room's exclusive property manufactures false loss events on every legitimate tick from any other room — the premium fix is closing that gap (shared-ledger declaration plus docsOnly short-circuit), not discounting the room's real loss ratio, which stays unmeasured until the noise is stripped out.

    Open the signed attestation →
  149. 2026-09-28 · 🧪 laboratory · offPct 32 · mistagged

    fix(vna): C255c — a cloud /steer worker streams, so the quiet watchdog stops killing it mid-work

    Why it left the lane: The commit's Originating-Terminal trailer names 🧪 Laboratory (cuo1), but every changed path — scripts/vna/steer-runner.mjs and tests/vna/c255c-cloud-worker-is-never-silent-by-construction.test.mjs — lives under scripts/vna/ and tests/vna/, and neither prefix appears anywhere in Laboratory's owned-surface list (.claude/*, .mcp.json, thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, .thetacog/punch-list*). The walk placed the reality mass (134 lit cells, lens A1,C3) exactly where the code actually sits — VNA runner/worker-protocol territory — while the intent lane (120 lit cells, lens B,A1) was seeded from the claimed room. The 32% off-lane share is the walk faithfully reporting a room claim that never matched the diff, not the fix reaching into a genuinely foreign domain.

    The semantic pull: Diff strings — `WORKER_ARGS`, `--output-format`, `stream-json`, `--verbose`, `parseResult`, the path `scripts/vna/steer-runner.mjs` — are runner/worker-protocol vocabulary with zero overlap against Laboratory's owned vocabulary (`thetacoach-crm-mcp`, `swarm-comms`, `.thetacog/orchestrator`). That vocabulary gap is what dragged the reality lens from B,A1 (Laboratory's usual coordinate) to A1,C3: A1 survives because some shared/common lexicon overlaps, but C3 is new territory the walk assigned once it read the actual file paths instead of the trailer's room emoji.

    Intent–reality gap: The commit's Originating-Terminal trailer claims this is Laboratory's work; the receipt measured 134 lit reality cells landing entirely in scripts/vna/ and tests/vna/, paths outside every glob Laboratory owns — the underlying C255c fix is accurately described in prose, but the room stamped on it is wrong.

    • Fix or reassign the Originating-Terminal trailer on b2a4216d3's room record (Laboratory does not own scripts/vna/**)
    • Add scripts/vna/** and tests/vna/** to whichever room (Operator/Builder) actually maintains the /steer runner, in that room's owned-surface manifest
    • Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027) so this class fails at commit time instead of surfacing only in the receipt
    • Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010) to confirm at least one of Laboratory/Operator/Builder actually covers scripts/vna/** going forward
    • Audit Laboratory's other 351 out-of-lane events from the last 14 days for the same scripts/vna-under-🧪-trailer pattern before assuming each is a distinct drift

    What we learned: Originating-Terminal is set by which terminal session happened to run the commit, not derived from the diff's own paths — so cross-room work executed from a Laboratory-labeled terminal keeps inflating Laboratory's offPct with zero actual Laboratory-domain drift, and the walk (which reads real paths) will keep disagreeing with the trailer (which reads a session label) until the two are mechanically reconciled.

    The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Saturated rather than right-sized: 120/120 and 134/134 hit rates leave no gradient between strongly-relevant and marginally-relevant cells inside either lane. Adjustment: tighten the walk's acceptance/lit threshold so a visited cell can register walked-but-unlit, restoring a discriminative signal instead of counting all 134 reality cells as equally on-topic. Experiments: Re-run this sha's receipt with Originating-Terminal manually set to 'Operator' (or whichever room's glob covers scripts/vna/**) and measure whether offPct drops under the 15 threshold — confirms mistagging as the full explanation · Add a prewalkOverlap/walksIntent ratio check that flags any commit under 5% overlap as a low-confidence-seed warning independent of offPct, since this event's 4/120 ratio would have flagged early · Bucket all 351 of Laboratory's 14-day out-of-lane events by whether the touched files fall inside Laboratory's declared owned-surface globs, to measure what fraction of the room's total offPct burden is mistagging vs genuine domain drift

    Measured outcome (deterministic, not self-graded): room mean offPct 13→11 over 3 commits since · dictionary ablation saved 825B

    This is one of 351 out-of-lane events tagged to Laboratory in 14 days but the evidence traces to a mistagged Originating-Terminal rather than genuine cross-domain drift, so it's inflating the room's apparent loss-ratio on paper; premium restores once ask-027 validates the trailer against owned-surface globs so mistagged commits stop being priced as Laboratory risk.

    Open the signed attestation →
  150. 2026-09-28 · 🧭 navigator · offPct 43

    feat(vscode): C119k.6 — the T breaks out through the shield, the D is logo-sized, and icon.png carries the same TD

    Why it left the lane: (sensemaking unavailable — facts-only intervention)

    Measured outcome (deterministic, not self-graded): room mean offPct —→12 over 21 commits since

    Open the signed attestation →
gemsedu.com #1 ▼5.7%moonshotscapital.com #2 ▼1.8%leadedgecapital.com #3 ▲0.6%differential.vc #4 ▲11%dometic.com #5 ▼6.2%thecignagroup.com #6 ▲5.8%sigma.se #7 ▼9.2%karlsborg.se #8 ▼4.8%teneo.com #9 ▲0.2%ltu.se #10 ▼4.8%emiratesnbd.com #11 ▲1%apcoworldwide.com #12 ▼0.8%rytmus.se #13 ▲5.1%championacaustin.com #14 ▼1.9%amseliplaw.com #15 ▼8.1%clarionschool.com #16 ▼6.2%svenskakyrkan.se #17 ▼5.8%reed.com #18 ▼12.9%scania.com #19 ▼14.4%anthonypllc.com #20 ▲1.7%sigeducation.com #21 ▼7.6%state.gov #22 ▲3.2%scor.com #23 ▼6.3%easystem.se #24 ▲0.1%brodit.se #25 ▼13.5%ericsson.com #26 ▼6.4%khda.gov.ae #27 ▲3.6%parkcity.org #28 ▲52.4%pernod-ricard-china.com #29 ▼16%innoventureseducation.com #30 ▼4%dubaiholding.com #31 ▼0.8%wsp.com #32 ▼6.2%addition.com #33 ▲7.2%bdtmsd.com #34 ▲1.9%expediagroup.com #35 ▼8.7%crslimited.com #36 ▲16.1%baylor.edu #37 ▼4.5%americancenteruae.com #38 ▼5.2%lfg.com #39 ▼5.1%atriumhealth.org #40 ▼4.6%eosvc.com #41 ▲2.3%upandrunningdubai.com #42 ▼2.1%its.jnj.com #43 ▼2.5%cablevision.com #44 ▼2.3%mit.edu #45 ▲0.6%rackspace.com #46 ▼14.6%winningtemp.se #47 ▲1.2%siemens.com #48 ▼4%sunstarstrategic.com #49 ▼16%gunnebo.com #50 ▼8.8%newyorklife.com #51 ▼1.8%volvo.com #52 ▼6.8%oryxworld.com #53 ▼20.9%statefarm.com #54 ▼1.4%jcdecaux.ae #55 ▲10.5%neweratech.com #56 ▼8.9%munichre.com #57 ▼2.7%sc.com #58 ▲6.4%inspiralia.com #59 ▼4.1%linkedin.com #60 ▼5.6%insureai.co #61 ▼20.9%louisville.edu #62 ▲22.1%marsh.com #63 ▼2%bakerbotts.com #64 ▲78.9%ecoclean-group.net #65 ▲153.8%bermanauditadvisorycpa.com #66 ▲8.5%aresmgmt.com #67 ▲16.6%se.abb.com #68 ▼11.2%jkj.com #69 ▲12.3%nsigroup.org #70 ▼1.9%tyrolit.com #71 ▲299.9%jcdecaux.com #72 ▼9.5%fox.com #73 ▲19.2%emerson.com #74 ▲13.6%luxcapital.com #75 ▼6%conning.com #76 ▼8.1%artvillagenursery.com #77 ▼20.9%pacemetals.com #78 ▲12.3%bancamediolanum.it #79 ▲106.1%schmuhlbrothers.com #80 ▲82.4%peraco.com.au #81 ▲199.2%students.rcsj.edu #82 ▲61.6%scnsoft.com #83 ▲64.6%jsx.com #84 ▲209.9%bartec.com #85 ▲141.2%lbl.gov #86 ▼20.9%muskegoncc.edu #87 ▲149.1%rakbank.ae #88 ▼2.3%mindshareworld.com #89 ▲185.9%aig.com #90 ▼5.5%camarda.com #91 ▲25.7%xprize.org #92 ▼5.4%stoughtontrailers.com #93 ▲400%tetrapak.com #94 ▼1.9%dubailand.gov.ae #95 ▲42.7%hsph.harvard.edu #96 ▼20.9%krausanderson.com #97 ▲171.8%nyu.edu #98 ▼11%trenchlaw.com #99 ▼20.9%mckoolsmith.com #100 ▼20.9%gemsedu.com #1 ▼5.7%moonshotscapital.com #2 ▼1.8%leadedgecapital.com #3 ▲0.6%differential.vc #4 ▲11%dometic.com #5 ▼6.2%thecignagroup.com #6 ▲5.8%sigma.se #7 ▼9.2%karlsborg.se #8 ▼4.8%teneo.com #9 ▲0.2%ltu.se #10 ▼4.8%emiratesnbd.com #11 ▲1%apcoworldwide.com #12 ▼0.8%rytmus.se #13 ▲5.1%championacaustin.com #14 ▼1.9%amseliplaw.com #15 ▼8.1%clarionschool.com #16 ▼6.2%svenskakyrkan.se #17 ▼5.8%reed.com #18 ▼12.9%scania.com #19 ▼14.4%anthonypllc.com #20 ▲1.7%sigeducation.com #21 ▼7.6%state.gov #22 ▲3.2%scor.com #23 ▼6.3%easystem.se #24 ▲0.1%brodit.se #25 ▼13.5%ericsson.com #26 ▼6.4%khda.gov.ae #27 ▲3.6%parkcity.org #28 ▲52.4%pernod-ricard-china.com #29 ▼16%innoventureseducation.com #30 ▼4%dubaiholding.com #31 ▼0.8%wsp.com #32 ▼6.2%addition.com #33 ▲7.2%bdtmsd.com #34 ▲1.9%expediagroup.com #35 ▼8.7%crslimited.com #36 ▲16.1%baylor.edu #37 ▼4.5%americancenteruae.com #38 ▼5.2%lfg.com #39 ▼5.1%atriumhealth.org #40 ▼4.6%eosvc.com #41 ▲2.3%upandrunningdubai.com #42 ▼2.1%its.jnj.com #43 ▼2.5%cablevision.com #44 ▼2.3%mit.edu #45 ▲0.6%rackspace.com #46 ▼14.6%winningtemp.se #47 ▲1.2%siemens.com #48 ▼4%sunstarstrategic.com #49 ▼16%gunnebo.com #50 ▼8.8%newyorklife.com #51 ▼1.8%volvo.com #52 ▼6.8%oryxworld.com #53 ▼20.9%statefarm.com #54 ▼1.4%jcdecaux.ae #55 ▲10.5%neweratech.com #56 ▼8.9%munichre.com #57 ▼2.7%sc.com #58 ▲6.4%inspiralia.com #59 ▼4.1%linkedin.com #60 ▼5.6%insureai.co #61 ▼20.9%louisville.edu #62 ▲22.1%marsh.com #63 ▼2%bakerbotts.com #64 ▲78.9%ecoclean-group.net #65 ▲153.8%bermanauditadvisorycpa.com #66 ▲8.5%aresmgmt.com #67 ▲16.6%se.abb.com #68 ▼11.2%jkj.com #69 ▲12.3%nsigroup.org #70 ▼1.9%tyrolit.com #71 ▲299.9%jcdecaux.com #72 ▼9.5%fox.com #73 ▲19.2%emerson.com #74 ▲13.6%luxcapital.com #75 ▼6%conning.com #76 ▼8.1%artvillagenursery.com #77 ▼20.9%pacemetals.com #78 ▲12.3%bancamediolanum.it #79 ▲106.1%schmuhlbrothers.com #80 ▲82.4%peraco.com.au #81 ▲199.2%students.rcsj.edu #82 ▲61.6%scnsoft.com #83 ▲64.6%jsx.com #84 ▲209.9%bartec.com #85 ▲141.2%lbl.gov #86 ▼20.9%muskegoncc.edu #87 ▲149.1%rakbank.ae #88 ▼2.3%mindshareworld.com #89 ▲185.9%aig.com #90 ▼5.5%camarda.com #91 ▲25.7%xprize.org #92 ▼5.4%stoughtontrailers.com #93 ▲400%tetrapak.com #94 ▼1.9%dubailand.gov.ae #95 ▲42.7%hsph.harvard.edu #96 ▼20.9%krausanderson.com #97 ▲171.8%nyu.edu #98 ▼11%trenchlaw.com #99 ▼20.9%mckoolsmith.com #100 ▼20.9%