💳 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-13 · 📐 architect · offPct 24 · mistagged

    feat(pmu): T0 LOCK — the walk tape is sealed after every turn, so the prior a commit reads is sealed before the token stream it governs

    Why it left the lane: The diff is pure runtime engineering — `spawn(process.execPath, [resolve(REPO, 'scripts/pmu/walk-tape-seal.mjs')], { detached: true, stdio: 'ignore' })`, a new executable (`walk-tape-seal.mjs`) calling `attestLedger`, and a node:test file exercising `execFileSync`. None of that is docs/strategy prose or a dashboard — it is scripts/pmu/*.mjs and tests/pmu-simulator/*.test.mjs, neither of which appears anywhere in architect's declared owned-file-surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md). The commit's own Relevant-Rooms trailer ('architect, vault') pulls the lit-reality mass toward those two rooms' declared surfaces while the actual bytes sit in a pipeline-engineering lane — that's the 24% leak.

    The semantic pull: lensIntent=B,C (the architect/spec pixel, consistent with the prior commit 422ebf53df being docs(pmu) spec v8) vs lensReality=C2,C — a one-column shift from the declared-spec lane into the implementation lane. The pull terms are the executable strings themselves: 'spawn(process.execPath', 'attestLedger', 'detached: true' — none of which have any docs/strategy analog; they are the walk lattice's own C2 (code/enforcement) coordinate.

    Intent–reality gap: The commit message frames this as closing a spec-named gap ('Closes the T0 delta the pasted end-state named') under Relevant-Rooms: architect, vault — but the receipt measured 100% of the new bytes landing in scripts/pmu/ and tests/pmu-simulator/, a surface neither room claims in CLAUDE.md.

    • Edit CLAUDE.md's architect OWNED FILE SURFACE entry to add the scoped scripts/pmu/*-seal.mjs carve-out above
    • Add a trailer-consistency test (tests/ops/relevant-rooms-matches-diff.test.mjs) that diffs touched paths against each room's globs and fails/warns when Relevant-Rooms omits the majority-owning room
    • Unify the three independently-specified room-drift-<room>-check.sh proposals (named in lesson ff09774e5) into one canonical scripts/ops/room-drift-check.sh and actually ship it — it has been spec'd three times and merged zero
    • Re-run this event's numbers through a z-score against laneHammingNull before treating offPct=24 as signal (see pipeline_probe below)
    • Backfill the last 75 architect out-of-lane events against the new trailer-consistency test to size the false-positive rate before it gates anything

    What we learned: This is the THIRD independent architect-room event citing the same Originating-Terminal/owned-surface tension (ffaf8d2ac, ff5110f85, ff09774e5) and the fix has been spec'd three times without ever landing — the recurring failure is no longer diagnostic, it's a governance gap: the room that keeps rediscovering the fix (architect) has direct write authority over the very file (CLAUDE.md) that would close it, and hasn't used it. The next event in this class should be judged not on whether the mechanism is understood but on whether the already-known fix shipped.

    The missing guard (the deliverable): tests/ops/relevant-rooms-matches-diff.test.mjs — computes touched-path-to-room ownership from CLAUDE.md's declared globs and fails when the Relevant-Rooms trailer omits the room owning the plurality of touched lines; this is a different, narrower surface than the previously-unshipped room-drift-check.sh (which watched Originating-Terminal alone) and would have caught this exact trailer/diff mismatch.

    Detector probe: signal attribution — gzip reef 20% · ballistic walk 80%. Right-sized in scale (142 vs 139 lit cells is a 2% spread, not saturation or collapse) but the discriminative power is weak: laneHamming=51 sits only 7 above laneHammingNull=44 (~16% above null), close to the 'below threshold' pattern this same lens flags elsewhere (z 1.15 vs needed z≥2). Adjustment: compute a z-score for laneHamming vs its null distribution per event and require z≥2 before firing an intervention, mirroring the lens's own fit-gate. Experiments: Score the last 20 architect out-of-lane events for laneHamming z-score against laneHammingNull and check how many clear z≥2 — if most don't, offPct alone is firing on noise · Pre-seed the reef with each room's CLAUDE.md owned-file-surface globs before the walk runs, then re-measure prewalkOverlap on the next architect pmu-touching commit to see if it rises above ~4% · Ship the unified room-drift-check.sh and re-run this same commit through it retroactively to confirm it would have caught the trailer/diff mismatch pre-commit

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

    An unmistagged but real 24%-off-lane spec-closing commit nudges this lane's loss ratio up on a signal barely above its own null floor (51 vs 44 hamming) — premium is restored by the CLAUDE.md carve-out plus a trailer-consistency guard, not by treating offPct=24 alone as a confirmed loss event.

    Open the signed attestation →
  2. 2026-09-13 · 🎤 voice · offPct 34 · mistagged

    fix(six-percentages): S19 measures redundancy per layout region, not across the spine's echo of the passage — with a firing test

    Why it left the lane: The diff's mass sits entirely in scripts/lib/six-percentages.mjs, data/six-percentages-floors.json and tests/comms/six-percentages-s19-region.test.mjs — the detector's own construct code, not the voice room's owned content globs (books/tesseract/chapters/*.md, src/content/blog/*.mdx, decentralizedtalk/slideData.ts, src/app/6needs/). Vocabulary like 'S19', 'gzOf', 'gzRegions', 'floors.json' is pipeline/instrumentation language, which the reef reads as Ops.Grid (col C1) × Tact.Signal (row B3) — measurement-infrastructure coordinates — while the room's claimed lane is Operator×Herald content authorship. The commit's own trailer even names 'Relevant-Rooms: builder, vault, voice', conceding the cross-room nature, but Originating-Terminal was set to voice alone.

    The semantic pull: 'S19', 'gzip ratio raw:compressed', 'floors.json', 'measure(text...)' and the new gzOf/gzRegions helpers are shared-pipeline vocabulary that the walk resolves to C1,B3/B1,C2-class coordinates (Ops.Grid×Tact.Signal) — the exact 31-cell red mass reported, densest at B2,C2/B3,C2/C1,C2 — none of which fall inside voice's declared content surface.

    Intent–reality gap: The commit message frames this as a voice-room fix discovered during a ch12 book-club send, but zero touched files are inside voice's owned-surface glob — the actual work is a correction to the shared six-percentages detector, which belongs to whichever room owns scripts/lib (builder/vault per the commit's own trailer), not voice.

    • Assign scripts/lib/six-percentages.mjs + data/six-percentages-floors.json + tests/comms/six-percentages-*.test.mjs to an explicit owned-surface glob (builder or vault) in .workflow/rooms/*.html — currently unclaimed by any room
    • Add a commit-trailer convention note in docs/architecture/claude-rules/doors-and-surfaces.md: Originating-Terminal must match the surface-owning room for the majority of changed paths
    • Re-seed the S19 floors under the owning room's reef context rather than voice's, since the measurement change originated as an engineering fix not a content edit
    • Add a WARN-ONLY pre-commit check (parallel to hooks/pre-commit's WIP claims check) that flags Originating-Terminal vs changed-path glob mismatches

    What we learned: scripts/lib/six-percentages.mjs — the six-percentages detector's own implementation — is UNOWNED by any room's glob; voice's terminal ends up committing detector fixes under its own name simply because voice is structurally the first room to notice a false-positive red during a send. Prior lessons for this room reported only a worsening offPct trend with no mechanism; this pass identifies the specific unowned-surface gap causing the mistagging, which a path-ownership table can close in a way a generic trend report could not.

    The missing guard (the deliverable): A room-surface-ownership check (e.g. tests/ops/room-surface-ownership.test.mjs) that reads each commit's changed file paths against the union of all rooms' owned-surface globs and fails/warns when Originating-Terminal names a room whose glob covers none of the changed paths, directing it to the room whose glob does.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. litIntent 137 vs litReality 140 is a near-even fill, so the walk isn't shallow by cell count, but walkTruncated=true combined with laneHamming (50) exceeding laneHammingNull (34) means the walk was cut off before it could resolve toward the correct lane — worse than chance is a truncation symptom, not a saturation one. Adjustment: raise the recursion-depth cap specifically for diffs rooted in scripts/lib/*.mjs (dense technical/pipeline vocabulary needs more recursive resolution than content prose) rather than applying the same depth ceiling used for chapter/blog text. Experiments: Seed the reef with a distinct 'pipeline-code' lexicon cluster for scripts/lib/*.mjs + tests/*.mjs path-prefixes, separate from the 'voice-content' cluster; re-run this commit's walk and measure whether prewalkOverlap rises and offPct drops below 15 · Add a file-path-glob prior that biases lensIntent toward the room whose owned-surface glob the touched paths satisfy, computed BEFORE the gzip-NCD walk runs; measure whether laneHamming falls below laneHammingNull on this and similar detector-fix commits · Ablate walk budget on this exact commit (double the depth cap) and check whether laneHamming drops below 34 (laneHammingNull) — this isolates whether walkTruncated=true is the actual mechanism producing the worse-than-null result

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

    An unowned shared-detector surface being committed under a content room's name raises this lane's loss-ratio by hiding the true cost center (builder/vault's pipeline debt) inside voice's trend line; restoring it means assigning scripts/lib/six-percentages.mjs an explicit owner so the next detector fix prices against the room that actually carries it.

    Open the signed attestation →
  3. 2026-09-13 · 📐 architect · offPct 23

    feat(blog): two banks, one ledger — round 2: bank means riverbank (the inversion that turned the engine into a deal between two banks), the letters' dated asks before the interpretation, same-bytes glossed, lane jump glossed at first use

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

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

    Open the signed attestation →
  4. 2026-09-13 · 🔧 Builder · offPct 52

    fix(scan-ask): the in-box share comes back — "you stripped the bottom button"

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

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

    Open the signed attestation →
  5. 2026-09-13 · 🎤 voice · offPct 24 · mistagged

    feat(bookclub): every green rewrite version emails the operator as the blast renders it — and the gate now judges the render with the panel

    Why it left the lane: The commit's Originating-Terminal trailer claims 🎤 voice, but every touched path — scripts/bookclub/rewrite-preview-subject.mjs, scripts/bookclub/send-now.sh, tests/bookclub/rewrite-preview-on-repin.test.mjs, data/bookclub/rewrite-previews.ndjson — is pipeline/ops scripting for the book-club mail door. None of it touches voice's owned surface (books/tesseract/chapters/*.md, src/content/blog/*.mdx, decentralizedtalk/slideData.ts, src/app/6needs/). lensIntent=A1,A3 (content-shaped) vs lensReality=B3,C (ops/pipeline-shaped) — the walk correctly found the mass sitting in B3,C because that IS where the diff's bytes are; the mislabel is upstream, in which terminal's name got stamped on the trailer.

    The semantic pull: Strings like 'render-email.mjs --panel', 'PANEL_ARGS', 'email-artifact.mjs', 'nohup … & ) ; disown', 'rewrite-preview-subject.mjs' are infra/dispatch vocabulary, not voice's content vocabulary ('chapter', 'passage', 'blog post', 'voice-consistent'). The walk pulled toward B1,B3/B2,C2/C1,C2 (Ops.Grid × Tact.Signal, per the lens's densest cells) because that's the literal semantic neighborhood of shell scripts wiring a mail send-path — the pull is real and correct; it's the intent lane (A1,A3, stamped by the trailer) that never matched what the diff actually is.

    Intent–reality gap: The commit message and trailers assert this is 🎤 voice's work (Relevant-Rooms even lists 'voice' second), but the receipt shows 100% of the lit reality mass sitting outside voice's owned-file glob — the work is legitimate, correctly scoped bookclub-pipeline engineering; the room attribution on the commit is simply wrong.

    • Add scripts/bookclub/**, data/bookclub/**, tests/bookclub/** to 🔨 builder's (or a dedicated bookclub room's) owned-surface declaration in the rooms JSON/.workflow/rooms/*.html
    • Add an explicit EXCLUDE for scripts/bookclub/** and data/bookclub/** in 🎤 voice's owned-surface declaration so recontext.mjs stops treating it as ambiguous
    • Wire a pre-commit lint that reads the Originating-Terminal trailer, resolves its room's owned-file globs, and warns (never blocks — NEVER COMMIT HOOKS-OFF stays inviolate) when zero touched paths match
    • Backfill: re-tag the room attribution on this sha's receipt row (or add a correction row) so the offPct trend for 🎤 voice isn't charged against content work it never did
    • Run recontext.mjs against scripts/bookclub/* to confirm it resolves CONTESTED or UNOWNED today, and fix the mapping in the same pass

    What we learned: This room's Originating-Terminal trailer is bound to which terminal the operator was physically typing in, not to which room's owned-file-surface the diff touches — so any bookclub/ops work typed from a voice-named terminal silently mislabels the lane every time. The three prior 'sensemaking unavailable' events for this room all show RISING offPct (27→39, 21→31, 0→36); a facts-only receipt with no room-glob correction cannot fix a mistagging problem because the receipt never touches the trailer-to-glob mapping that caused it — this is the first pass with a diagnosable mechanism, and it's a routing bug, not a drifting-code bug.

    The missing guard (the deliverable): A pre-commit (warn-only) check that resolves the Originating-Terminal trailer's room against its declared owned-file globs and the actually-staged paths, and flags a zero-overlap commit before it lands — this catches the mistag class at the door instead of downstream in the drift receipt 95 events later.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. walkTruncated=true while litReality (144) already exceeds litIntent (122) means the walk hit its budget ceiling while still actively growing the reality-side lit set — it's under-run, not saturated or too-shallow-by-design. Adjustment: for commits whose diff spans both docs/receipts (binary PNGs, ndjson) and scripts (the actual semantic content), raise the walk's truncation ceiling proportionally to file count so it seals before hitting the wall rather than being cut mid-spread. Experiments: Re-seed the reef using the full diff body (not just the commit message) as the intent corpus for this commit class, re-run, and measure whether prewalkOverlap rises materially above 5 — if it does, offPct should drop without any walk change · Auto-flag every walkTruncated=true receipt for a second pass at 2x budget, and compare offPct before/after on a rolling 20-commit sample to see if truncation itself is a meaningful driver of the lane-jump numbers · Add owned-file-surface glob match as a cheap deterministic second reef signal alongside gzip-NCD, and ablation-test whether it corrects mistagged-room cases like this one specifically

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

    A mistagged room attribution doesn't touch code correctness but corrupts the per-room offPct trend line that prices this lane's premium — 🎤 voice now shows 95 out-of-lane events it never earned, which either overprices voice's actual drift risk or masks builder's; restoring correct trailer-to-glob mapping is what re-prices both lanes accurately.

    Open the signed attestation →
  6. 2026-09-13 · 📐 architect · offPct 20

    feat(pmu): THE APERTURE RATCHET IN THE ONE DOOR — a thin text is never walked bare; the walk re-runs through a ladder of matched masses and stops at the first admissible reading; otherwise the row is UNMEASURED with every attempt on it and an unrouted prompt has no coordinate

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

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

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

    fix(pmu): MATCHED APERTURE EVERYWHERE — per-source caps stamped on every row, the lane's mass for routed turns, the pairing null replaces a shuffle null the sensor was blind to, CLI runs off the tape

    Why it left the lane: Every literal string the diff introduces — 'MATCHED APERTURE', 'capFor(source)', 'aperture_id', 'THE PAIRING NULL', 'lensWalk', 'shuffleWords', 'PMU_WALK_TAPE_CLI' — sits inside scripts/pmu/commit-triptych.mjs, scripts/pmu/prompt-lens.mjs, src/lib/pmu/walk-door.mjs and tests/pmu-simulator/walk-door.test.mjs: pipeline-mechanics code and its unit tests. None of the five changed files touch docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/ or CLAUDE.md — the architect room's entire owned-surface. The mass the receipt lit (litReality=131 cells) is honest engineering work; it simply never had any reason to fall inside a strategy-doc lane because it isn't strategy-doc content.

    The semantic pull: The pull is structural, not lexical seduction: there is no strategy language in this diff competing for placement (no 'roadmap', no 'positioning', no doc-prose) — the walk lands where the tokens actually are, in per-source caps, bulk mass, and null-test code. No cached region narrative exists for this sha, so I'm not asserting a specific out-of-lane coordinate pair; the signal is file-path-level, not cell-level.

    Intent–reality gap: The commit message correctly and precisely describes deep PMU-instrumentation work (matched aperture, pairing null, CLI-tape exclusion) and even honestly declares 'Relevant-Rooms: architect, builder, vault' — but the Originating-Terminal trailer that the detector keys the lane on says 'architect', and 100% of the diff's file mass sits in builder/vault-owned pipeline paths. The work matches its own Story paragraph; it does not match the room it was filed under.

    • Add scripts/pmu/**, src/lib/pmu/**, tests/pmu-simulator/** to builder's (or vault's) owned-glob entry in data/room-bifurcations.json — explicitly not architect's
    • Ship the room-drift-<room>-check.sh script three rooms have already independently spec'd per lesson ff09774e5 — as a WARN-only pre-commit check in the wip.mjs style already established in CLAUDE.md
    • Add bestMatchRoom + mistagged flag to commit-triptych.mjs's row schema and to tests/pmu-simulator/walk-door.test.mjs's KEYS list
    • Insert the Originating-Terminal clarification sentence into CLAUDE.md's COMMIT MESSAGE STRUCTURE section
    • Re-run the bestMatchRoom classifier retroactively over the room's 66 open out-of-lane events to split 'mistagged' from 'genuinely structural/intentional' before deciding what else needs fixing
    • Wire the correction into the existing /subdivide skill so renaming Originating-Terminal is a single already-memorized command rather than a new habit to build

    What we learned: This is the third time the SAME underlying detector-source problem (lane keyed to Originating-Terminal, not to where the diff's paths actually sit) has produced measured lessons in this room (ffaf8d2ac, ff5110f85, ff09774e5) — and the room's offPct went 14→28→17→26→(now still 30) across those passes. Diagnosing the mechanism twice already did not reduce recurrence, because 'spec it a third time' is not a shipped guard: the fix requires a live bestMatchRoom computation wired INTO the detector's own row-writer, and nobody has actually landed that code — three separate rooms independently drafting the identical unshipped script is itself evidence the fix keeps getting re-discovered instead of committed.

    The missing guard (the deliverable): room-drift-<room>-check.sh (pre-commit, WARN-only): compute bestMatchRoom from the staged diff's paths against each room's owned-glob list in data/room-bifurcations.json; if it disagrees with the commit's own Originating-Terminal trailer, print the suggested correction and let commit-triptych.mjs stamp mistagged:true on the resulting drift row so the room's offPct trend can be read net of mistagging.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. walkTruncated=true is the flag to chase before trusting offPct=30 at face value: this commit's own diff just raised the commit-source cap to 12,000 chars (LENS_TEXT_MAX_COMMIT), yet the row still shows truncation. Concrete adjustment: log whether truncation here is char-cap-driven (text_chars > 12000 even after the fix) or hop-budget-driven — if the former, this commit's own Story+diff text may exceed even the new matched cap and the cap needs a second look; if the latter, the hop ceiling, not the char cap, is the saturation point. Experiments: Re-walk this same commit's reality text with PMU_LENS_TEXT_MAX_COMMIT=20000 and diff the resulting offPct/laneHamming against the shipped row — isolates whether walkTruncated was cap-driven · Pull prewalkOverlap for all 66 architect out-of-lane events from the last 14 days and test whether prewalkOverlap<10 predicts offPct>threshold as a cheap leading indicator, before the full walk runs · Re-seed the reef comparison lane as the UNION of all Relevant-Rooms' owned globs (not just Originating-Terminal's) for commits that declare multiple Relevant-Rooms, and re-measure offPct on this commit and its 65 siblings — tests whether most of the backlog is exactly this mistagging class

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

    A mistagged-but-correct commit is a false positive on the room's loss curve, not a real defect — it inflates architect's premium without architect having done anything wrong; restoring the rate requires the bestMatchRoom flag to segregate mistagging from genuine cross-lane leakage so the room isn't underwritten against noise it didn't generate.

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

    feat(blog): every street post carries a Meta vector for its carrying idea at the END — declared in frontmatter, derived from the glossary, or a declared absence (S11)

    Why it left the lane: Every touched path in the diff sits outside architect's declared owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md): scripts/blog/metavector-for-post.mjs, scripts/blog/mdx-cook-check.sh, .claude/skills/mdx-cook/SKILL.md, docs/05-content/blog/mdx-cook-format.md, tests/blog/metavector-for-post.test.mjs, src/content/blog/2026-09-11-four-things-with-nothing-in-common.mdx. No region narrative was cached for this sha, so the coordinate-level story is inferred from the lens block's tooling/test cluster (rows B1-C3, densest B2,C2/B3,C2/C1,C2) versus architect's strategy-doc coordinates — the diff is entirely blog-pipeline spec+script+test work, a different subsystem than what the room's globs cover.

    The semantic pull: Strings like 'scripts/blog/metavector-for-post.mjs', 'mdx-cook-check.sh', '.claude/skills/mdx-cook/SKILL.md' and 'tests/blog/metavector-for-post.test.mjs' are tooling/guard/test surface; nothing in the diff touches docs/strategy/, docs/03-product/, or the .workflow/rooms/*.html dashboards architect owns. The only CLAUDE.md-adjacent surface touched is the commit's own compliance with trailer conventions, not CLAUDE.md content itself.

    Intent–reality gap: The commit message claims architect authorship of a blog-pipeline feature (S11 metavector) and self-declares Relevant-Rooms as 'architect, voice, navigator' — exactly the sanctioned multi-room pattern CLAUDE.md's own commit-trailer protocol requires — yet the receipt still scores it against architect's owned-surface alone and finds 21% of the lit mass outside that lane.

    • Land the previously-spec'd-but-unshipped room-drift-<room>-check.sh reading the Relevant-Rooms trailer, not just Originating-Terminal
    • Add tests/ops/room-lane-uses-relevant-rooms.test.mjs asserting a commit whose Relevant-Rooms includes the reality-lane room is NOT flagged out-of-lane
    • Cap-check Relevant-Rooms at 3 rooms (CLAUDE.md's own limit) in the same guard, so the union-fix can't be gamed by listing every room to dodge lane checks
    • Cross-link this event to ff09774e5 in the guard's commit message so the three independent room specs converge on one shipped artifact instead of a fourth parallel spec
    • Note in CLAUDE.md's room-ownership section that spec+guard+skill commits (SKILL.md, format docs, checker scripts) are inherently cross-room and should default to Relevant-Rooms scoring

    What we learned: The fix for this exact mistagging class was independently spec'd by three rooms (architect, navigator, laboratory per ff09774e5) and STILL never shipped two lessons later — the structural fact this reveals is that a cross-room fix stalls forever when its target file (the shared lane-classifier script) isn't in ANY room's owned-surface glob, so no room feels accountable for actually committing it. 'Spec was written' is being read here as 'problem addressed' when only shipping the guard closes it.

    The missing guard (the deliverable): tests/ops/room-lane-uses-relevant-rooms.test.mjs — a commit fixture with Originating-Terminal=X, Relevant-Rooms=[X,Y,Z], and files matching Y's owned-surface must score in-lane; currently no such test exists so the three independently-spec'd fixes had nothing forcing them to converge into one shipped change.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized, not shallow or saturated — the 100% match between walks* and lit* on both sides with walkTruncated=false shows the walk covered its full seeded space without truncation. The lever to pull is upstream: widen the reef's pre-walk seed corpus (e.g. include cross-room glossary/shared-vocabulary terms) so legitimately-related cross-lane commits get prewalkOverlap credit before the walk starts, rather than relying on the walk to discover a relationship the reef missed. Experiments: Re-seed the architect reef dictionary with scripts/blog/*.mjs and .claude/skills/*.md tokens, then re-run this sha's prewalkOverlap and confirm it rises above 4 for spec+guard commits · A/B the lane classifier over the last 20 architect commits: Originating-Terminal-only vs union(Relevant-Rooms) owned-surface, and compare mean offPct between the two · Ablation-test seeding the gzip baseline dictionary with the compression_dictionary_adds strings below and measure whether offPct on this commit and the two prior architect events drops

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

    The work itself is well-guarded (S11 check, dedicated test, spec update) and carries no defect, so this event should cost the lane nothing once re-scored — but a THIRD unresolved recurrence of the same classifier gap (after ff09774e5 measured an improvement) is what erodes trust in the receipt as a signal, and only shipping the union-of-Relevant-Rooms fix (not another spec) restores it.

    Open the signed attestation →
  9. 2026-09-12 · 📐 architect · offPct 16 · mistagged

    test(bookclub): the settled sequence is trigger → passage → stakes — re-aimed with the Razor → Exhibit → Verdict cut

    Why it left the lane: The only file the diff touches is tests/ops/bookclub-daily.test.js — a test asserting the ORDER of blocks in the daily book-club email body. Nothing under architect's owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md) was touched at all. The strings that actually drove the walk — 'the SETTLED sequence', 'RE-AIMED 2026-09-12', 'Litmus L25', 'PULSE_HEADINGS', 'markers =' — are ops/content-pipeline vocabulary, not strategy-doc vocabulary, so the receipt's ballistic walk correctly lit ops coordinates while the commit's Originating-Terminal trailer claimed architect.

    The semantic pull: 'tests/ops/bookclub-daily.test.js', 'the body follows the SETTLED sequence', 'Litmus L25 guards the same order', and 'markers = [...]' are all content-ordering/ops-pipeline terms; none of them intersect docs/strategy or CLAUDE.md vocabulary, so the walk's mass lands on the ops/operator side of the lattice regardless of which terminal typed the commit.

    Intent–reality gap: The commit message and Originating-Terminal trailer assert this is architect-room work; the receipt measured zero touched files inside architect's owned surface and 100% of the lit reality mass in the ops/operator region — the trailer is a terminal-identity fact ('this session ran it'), not a domain claim, and the detector reads it as the latter.

    • CLAUDE.md: add the changed-file-glob-first classification rule to COMMIT MESSAGE STRUCTURE (quoted above in spec_rewrite)
    • Ship scripts/ops/room-drift-<room>-check.sh (named independently by architect/navigator/laboratory in prior lesson ff09774e5, still unshipped) — compute primary room from staged-file glob match, compare to Originating-Terminal, only flag when NEITHER Originating-Terminal NOR Relevant-Rooms contains the glob-matched room
    • Add an owned-surface glob for tests/ops/** to whichever room's manifest legitimately claims ops-pipeline tests (operator or builder, per the lens header's 'QC room: 🔨 builder') so future ops-test commits route correctly regardless of originating terminal
    • Audit the room's other 69 out-of-lane events from the last 14 days and split them into mistagged (file glob resolves cleanly to a different room) vs genuine content drift (file glob resolves to architect's own surface but content wandered) — the two need different fixes and are currently being scored identically

    What we learned: This is the THIRD time this room has independently arrived at 'the detector's Originating-Terminal-only classification is the problem' (prior: ffaf8d2ac, ff5110f85 facts-only; ff09774e5 named the fix). The fix has been spec'd twice and shipped zero times, and the room's chronic rate (70 events/14 days) is consistent with EVERY commit typed from the architect terminal being tagged architect regardless of which files it touches — meaning the room's own offPct trend (20→14 after the last intervention, now back up) is not evidence the content is drifting, it's evidence the fix keeps getting re-diagnosed instead of shipped. The new fact this event adds: the trailer is literally true (this terminal did originate the commit) and the detector's error is a category mistake (identity-of-typist read as domain-of-work), not a data quality problem — no amount of better prose in the trailer fixes it, only glob-first classification does.

    The missing guard (the deliverable): scripts/ops/room-drift-<room>-check.sh — a pre-commit or post-commit check that resolves the primary room from staged/changed-file globs against every room's owned-surface list and fails/warns only when that resolved room is absent from BOTH Originating-Terminal AND Relevant-Rooms (matching CLAUDE.md's own sanctioned-divergence rule), rather than the current offPct-only signal which cannot distinguish mistagged-identity from genuine cross-lane content drift.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Right-sized, not shallow or saturated — litIntent/walksIntent and litReality/walksReality are both ~100% lit with near-identical counts (136/136, 134/134), meaning the walk fully explored both sides symmetrically. The lever to pull is upstream of the walk (the reef seed), not the walk's depth. Experiments: Re-run this exact sha's reef placement seeded from the staged-file-path glob instead of the Originating-Terminal trailer string, holding everything else constant, and check whether offPct drops below the 15 threshold — if it does, that confirms the seed (not the walk) is the mistagged-class root cause · Bucket the room's other 69 out-of-lane events from the last 14 days by whether changed-file globs resolve to a DIFFERENT room than Originating-Terminal, and measure what fraction of the room's mean offPct is explained by that mismatch alone vs genuine content drift · Once room-drift-<room>-check.sh exists, run it in dry-run/log-only mode over the next 20 architect-tagged commits and compare its predicted room reassignment against the receipt's own offPct to validate it before making it a gate

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

    A mistagged-trailer false-positive raises this lane's apparent loss ratio without any real content drift, which erodes trust in the receipt itself; restoring it means shipping the already-twice-spec'd glob-first room-drift-check so offPct measures content placement, not which terminal happened to type the commit.

    Open the signed attestation →
  10. 2026-09-12 · 🔨 builder · offPct 47 · structural

    feat(lens): the end-state spec, ours — lane kinematics read off the tape (report-only), the config set that is 'configured correctly', the predicted reach

    Why it left the lane: The diff is 100% scripts/pmu/prompt-lens.mjs, scripts/pmu/tape-turn.mjs, tests/pmu-simulator/tape-turn.test.mjs and docs/superpowers/specs/2026-09-12-end-state-kinematic-aperture.md — pipeline/ops-grid vocabulary (laneKinematics, aperture_version, --ballistic --start, KIN_K/KIN_DECAY, pmu-onchip --lattice, tape/turns.ndjson) that gzip-NCD-seeds and walks straight into the Ops.Grid/Tact.Signal cluster (B1–B3 × C1–C3, cols 9–11, densest B2,C2/B3,C2/C1,C2), none of which overlaps builder's posted lane (src/app/, src/components/, src/lib/, public/…).

    The semantic pull: Terms actually in the diff — 'laneKinematics()', 'aperture_version', '--start', 'pmu-onchip --ballistic', 'tape/turns.ndjson', 'session_lane', 'anchor_coord' — are infra/pipeline nouns with no app-surface analog, so the reef seed and the recursive walk both land in the Ops.Grid/Tact.Signal block (B1,C1 · B1,C2 · pull to C1,B3) rather than anywhere near C,B3 (git-discipline/builder).

    Intent–reality gap: Originating-Terminal claims '🔨 builder', whose posted lane is app/UI surface — but every changed path (scripts/pmu/*, docs/superpowers/specs/*) sits outside BOTH builder's and operator's posted owned-surface lists, even though this exact terminal's own machine-updated focus_areas field already says '2026-09-12 — scripts/pmu (5c, grid-anchored) · block / attractor / pixel' (iterm2-builder.html:78).

    • Add scripts/pmu/ + docs/superpowers/specs/ to .workflow/rooms/iterm2-builder.html's Owned file/dir surface <ul>
    • Add the same two paths to .workflow/rooms/kitty-operator.html's Owned file/dir surface <ul>
    • Patch ownedSurface() in scripts/interventions/build-intervention-prompt.mjs to union focus_areas paths into the static list before the cap=12 truncation
    • Patch scripts/interventions/intervention-fire.sh:74 to also parse the Relevant-Rooms trailer (not just Originating-Terminal) and pass all named rooms through to ownedSurface() checks — closes the gap fb93ed948 diagnosed but left unshipped
    • Add a guard asserting every room HTML's focus_areas path-prefixes are a subset of (or explicitly listed as shared in) that same room's Owned file/dir surface list
    • Re-run this sha's intervention with the patched ownedSurface() and confirm scripts/pmu/ now appears in the owned block

    What we learned: The room HTML files are internally inconsistent by construction: focus_areas is machine-refreshed daily (punch-list #16, room-themes-cycle) while Owned file/dir surface is a static hand-authored list the lane-fit scorer treats as ground truth — the two sections live in the same file and are allowed to contradict each other indefinitely, which is a strictly narrower and more actionable finding than fb93ed948's Relevant-Rooms-trailer gap (whose fix was never shipped, per its own 30→40 outcome).

    The missing guard (the deliverable): A test that reads every .workflow/rooms/*.html, extracts focus_areas path-prefixes and the Owned file/dir surface <ul>, and fails if any focus_areas path is not a prefix-match of an owned-surface entry (or an entry in an explicit 'shared surface' list) — this would have failed the day iterm2-builder.html's focus_areas first recorded scripts/pmu without the owned list being updated, before any commit could inherit the mismatch.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Saturated AND truncated: litIntent==walksIntent and litReality==walksReality (zero walked-but-unlit cells, full utilization) while walkTruncated=true — the walk hit its budget ceiling before exhausting the search, so 144 is likely a floor on reality's true spread, not the ceiling. Adjustment: rerun this sha's walk with budgetMs raised (e.g. 2500→5000, matching definerWalk144's own budget) and diff whether litReality grows past 144 on this multi-file (spec+3 code files) commit. Experiments: Re-seed this sha's reef placement with docs/superpowers/specs/2026-09-12-end-state-kinematic-aperture.md excluded from the bundle (code-only) and measure whether prewalkOverlap rises above 3 — isolates whether the new spec's novel vocabulary (laneKinematics, aperture_version) or the .mjs code itself drives the seed mismatch. · Add scripts/pmu/ and docs/superpowers/specs/ as path-prefix hints to the builder+operator rooms' reef seed corpus, then re-measure prewalkOverlap on this sha and the last 5 out-of-lane 🔨 builder commits touching scripts/pmu — expect material improvement if path-hinting closes the seed gap. · Rerun ownedSurface('🔨 builder') with cap raised from 12 to 24 (or unioned with focus_areas per the code_rewrite above) on this exact sha and diff the resulting owned block in the intervention prompt — directly testable today with no new instrumentation.

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

    A shared-infra surface (scripts/pmu/) with no room's posted ownership covering it is an uninsurable gap in the lane model itself — every future commit there prices in a false-positive out-of-lane penalty until the owned-surface lists and the union fix ship, which is what restores the premium to reflect actual (structural, not behavioral) risk.

    Open the signed attestation →
  11. 2026-09-12 · 📐 architect · offPct 51 · structural

    feat(bookclub): the metavector goes at the END and the stamp means the section was refined — rule, four surfaces, two guards

    Why it left the lane: No cached region narrative exists for this sha, so the WHY is read off the file-path evidence directly: the room's owned surface for 📐architect is docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md. The diff's only touch to that surface is 3 lines in docs/architecture/claude-rules/doors-and-surfaces.md (the split-out address CLAUDE.md points at). Everything else — scripts/book/insert-fishbone.mjs, scripts/bookclub/metavector-step.sh, scripts/bookclub/presend-pass.sh, tests/book/refined-stamp-means-prose-changed.test.mjs (80 lines, new file), tests/ops/metavector-stepper.test.mjs, tests/ops/upsert-metavector-at-end.test.mjs — is book-club pipeline implementation and test code, ~110 of 113 changed lines, none of it inside any glob this room declares. The mass pulled toward 'scripts/bookclub', 'scripts/book', 'tests/book' because that is where the actual work (placement wording + a new guard) had to live; the room tag never had a home for it.

    The semantic pull: Literal strings driving the pull: 'scripts/bookclub/metavector-step.sh', 'scripts/book/insert-fishbone.mjs', new file 'tests/book/refined-stamp-means-prose-changed.test.mjs' (80 insertions alone — the single largest hunk in the diffstat), and 'tests/ops/upsert-metavector-at-end.test.mjs'. Against that, the room's own vocabulary ('docs/strategy', 'docs/03-product', '.workflow/rooms') appears zero times in the diff. The one line that IS in-lane-adjacent — the 3-line edit to docs/architecture/claude-rules/doors-and-surfaces.md — is exactly the kind of thin, rule-prose edit the room's glob is built for, and it is dwarfed 37:1 by lines in unowned paths.

    Intent–reality gap: The commit message frames this as a wording-consistency fix — 'the stepper's help text, presend-pass's header, insert-fishbone's own header and doors-and-surfaces.md all still said ABOVE... wording fixed on all four' — which reads as a rules-surface correction, architect's home turf. The receipt measured the opposite: 51% of the lit reality mass sits outside the declared lane because the actual deliverable (a new prose-provenance guard plus three script edits) is book-club engineering, not rule-prose.

    • Grep for the literal glob strings that describe 📐architect's surface (e.g. 'docs/03-product/', 'docs/strategy/') to locate the actual room-ownership config file, then add scripts/bookclub/**, scripts/book/**, tests/book/**, tests/bookclub/** under the room that should own book-club engineering (voice, per this commit's own Relevant-Rooms).
    • Ship the union-based room-drift-<room>-check.sh spec'd three times per lesson ff09774e5 (architect, navigator, laboratory each proposed it independently) — compute offPct against the UNION of every room named in Relevant-Rooms, not Originating-Terminal alone.
    • Consolidate tests/book/refined-stamp-means-prose-changed.test.mjs, tests/ops/upsert-metavector-at-end.test.mjs, and tests/ops/metavector-stepper.test.mjs under one tests/bookclub/ directory so a single glob can claim all book-club guards instead of straddling tests/book and tests/ops.
    • Re-run this sha's receipt with the walk step-budget doubled as an ablation — walkTruncated=true is set on this row, and a truncated walk may be inflating offPct independent of real drift.
    • Add a low-confidence flag on any receipt row where walkTruncated=true so offPct=51 isn't read with the same weight as a converged walk's number.
    • Backtest the union-based classifier against this room's last 69 out-of-lane events once shipped, to measure how many reclassify as in-lane.

    What we learned: Lesson ff09774e5 diagnosed that Originating-Terminal-only classification conflicts with CLAUDE.md's own sanctioned Originating-Terminal/Relevant-Rooms divergence, and named the fix (a union-based room-drift-check) three separate times without anyone shipping it. This event shows WHY it never shipped: the fix is necessary but insufficient. Even unioning all three rooms named in this commit's Relevant-Rooms trailer (architect, navigator, voice) would not have covered scripts/bookclub/**, scripts/book/**, or tests/book/** — because no room's declared glob reaches that surface at all. The gap is not just 'check the wrong room', it's 'the ownership map has an entire undeclared feature domain' — book-club engineering has no home coordinate in the room-ownership config, so any commit doing real work there is structurally homeless regardless of which room or how many rooms get checked.

    The missing guard (the deliverable): A two-part guard: (1) room-drift-<room>-check.sh computing offPct against the UNION of every room in Relevant-Rooms (the fix already spec'd three times, finally shipped) AND (2) a companion 'no-orphan-surface' test that walks the full room-ownership config and asserts every path touched by the last N days of commits maps to at least one room's glob — so a domain gap like scripts/bookclub/** having zero owners is caught structurally instead of being rediscovered per-incident.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Truncated and asymmetric — litReality (135) exceeds litIntent (114) by 18%, and the walk hit its budget before either side could converge back toward the lane. Concrete adjustment: when litReality > 1.15×litIntent AND walkTruncated=true, automatically re-run with a doubled step/node budget before the offPct is trusted, and mark the first-pass row low-confidence rather than final. Experiments: Re-run b4698c1fe3's receipt with the walk budget doubled; if offPct drops materially, ship the truncated-row confidence discount as a standing rule. · Seed the gzip baseline dictionary with the compression_dictionary_adds strings below and recompute prewalkOverlap for this and the room's other 69 recent events — a rise in overlap would show the low reef score was a vocabulary-seeding gap, not true semantic distance. · Ship the union-based room-drift-check.mjs and backtest it against this room's last 14 days of events to measure how many of the 69 out-of-lane commits reclassify once Relevant-Rooms globs are unioned and the book-club glob gap is closed.

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

    A 51%-off receipt on a room already running 69 out-of-lane events in 14 days reads as elevated loss-ratio risk for the architect lane; premium is restored not by architect doing less cross-cutting rule work, but by closing the ownership-map gap so book-club engineering has a home coordinate and stops registering as drift every time a rules-consistency pass touches it.

    Open the signed attestation →
  12. 2026-09-12 · 🔨 builder · offPct 27 · structural

    feat(pmu): the seed stage standardised — mass-matched, calibrated placement inside pmu-onchip --lens, one call per prompt (seed + walk + fence + 144-byte lattice)

    Why it left the lane: The diff's mass sits in scripts/pmu/prompt-lens.mjs, scripts/pmu/tape-turn.mjs, .thetacog/pmu/src/lens.rs, tests/pmu-simulator/placement-mass-matched.test.mjs and docs/superpowers/specs/2026-09-12-*.md — none of these match any glob in 🔨 builder's owned surface (src/app/, src/components/, src/lib/, public/, the book-build scripts, hooks/pre-commit, decentralizedtalk/, thetacoach-crm-mcp/, vercel.json). Only src/lib/pmu/compress.mjs lands inside the generic src/lib/ glob; the rest of the strings that carry the real work — 'pmu-onchip --lens --seed matched', 'lens.rs matched_seed()', 'BULK_EYE_COARSE/FINE', 'gzip-NCD', '144-byte lattice' — are PMU-sensor vocabulary with no matching coordinate in builder's declared surface at all. The region-narrative cache is empty for this sha ('no region narrative cached'), so this is read off owned-surface coverage, not off a cached coordinate pull.

    The semantic pull: pmu-onchip / lens.rs / prompt-lens.mjs / --seed matched / BULK_EYE_COARSE / placePixelBulked / 144-byte lattice — repeated verbatim across the commit message, the spec, and the code comments — are all sensor-calibration terms that live exclusively under scripts/pmu/, .thetacog/pmu/, src/lib/pmu/ and tests/pmu-simulator/, a path set the builder room's glob never claims.

    Intent–reality gap: The commit message is honest and explicit about scope (Relevant-Rooms: laboratory, builder, operator; Story names the sensor itself as the object of the fix), but the receipt scores it purely against Originating-Terminal's (🔨 builder) declared surface — which has no glob for PMU internals — so a correctly multi-room-declared commit still reads as 27% off-lane.

    • Add scripts/pmu/**, .thetacog/pmu/src/**, src/lib/pmu/**, tests/pmu-simulator/**, docs/superpowers/specs/** to the owned-surface glob of whichever .workflow/rooms/*.html actually is meant to hold PMU-sensor work (laboratory, per this commit's own Relevant-Rooms ordering)
    • Rewire the offPct computation to score against the UNION of all Relevant-Rooms trailer surfaces, then re-verify against fb99d088d/fbb82dd1b/fb93ed948's measured outcomes before trusting it (fb93ed948's attempt at this exact fix regressed offPct 30→40)
    • Run /recontext to explicitly mark scripts/pmu/**, tests/pmu-simulator/**, docs/superpowers/specs/** as UNOWNED (not just off-lane) until a room claims them, per the recontext skill's UNOWNED/CONTESTED distinction
    • Backfill-audit the 68 out-of-lane events in 🔨 builder over the last 14 days: bucket into 'touches scripts/pmu/** or tests/pmu-simulator/** (unowned-surface class)' vs 'genuine builder-lane drift' to size this fix before shipping it broadly
    • Investigate walkTruncated=true on this receipt (litIntent=140/litReality=139 against a 144-cell lattice) — confirm it's a ply/fill cap and not silently masking a larger intent/reality split

    What we learned: fb93ed948 already found the pipeline ignores the Relevant-Rooms trailer, and its fix made things worse (room mean offPct 30→40) — this event shows WHY that fix alone can't work: laboratory/builder/operator apparently don't have an owned-surface glob for PMU-pipeline internals (scripts/pmu/**, tests/pmu-simulator/**, docs/superpowers/specs/**) at all, so even a correct union-of-Relevant-Rooms read finds nothing to match against. The gap has moved one level down: from 'which room is consulted' to 'no room currently claims this surface.'

    The missing guard (the deliverable): tests/ops/room-surface-coverage.test.mjs — walk every path touched in the last N commits and assert each matches at least one room's owned-surface glob in .workflow/rooms/*.html; fail with the specific unclaimed path so an UNOWNED surface is caught before it silently inflates a room's offPct.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. litIntent=140 vs litReality=139 against a 144-cell lattice with walkTruncated=true suggests the walk is hitting a ply/fill cap rather than naturally saturating — near-total fill on both sides can mask a real divergence under a truncation ceiling. Adjustment: raise (or log the reason for) the ply/fill cap so a 140/139 near-total fill is confirmed as genuine coverage and not an artifact of an early cutoff. Experiments: Recompute prewalkOverlap for the last 20 off-lane 🔨 builder events, split into 'touches scripts/pmu/** or tests/pmu-simulator/**' vs other, and measure whether low overlap (<10) correlates specifically with the unowned-surface class · After adding the PMU glob to a room's owned surface, recompute (not re-place) this exact sha's offPct offline as a before/after ablation on the one commit · Re-run the walk on 5 recent walkTruncated=true receipts with a doubled ply budget and measure whether litIntent/litReality counts change materially, to confirm the cap is real and not already the fence

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

    An honestly multi-room-declared commit reading as 27% off-lane inflates this lane's apparent loss ratio on a false signal, which erodes trust in the receipt itself; premium is restored by claiming the PMU-internal surface for its real owning room and re-scoring against the Relevant-Rooms union so offPct reflects genuine drift again.

    Open the signed attestation →
  13. 2026-09-11 · 🔨 builder · offPct 45 · mistagged

    fix(bookclub): honour a suppression at SEND time, not only when the audience is built

    Why it left the lane: The diff's mass is dominated by books/tesseract/chapters-html/03-domains-converge.html (177 changed lines: new h2 'Four Things With Nothing in Common', the ordered-list block 'The drop is a record you did not write' / 'Pacioli did not preach honesty' / 'A cache set is a mailbox with a fixed number of slots' / 'The floor holds because two electrons cannot share a slot', the '<!-- convergence-quartet: c1-mailbox -->' marker, and a full renumbering of every 'data-line=' / 'id="line-NNN"' anchor downstream of the insertion) versus the claimed-lane code, which is only blocklist.mjs (31 lines) and the new test (66 lines). The walk's lit-cell mass followed the larger, more repetitive text (book prose + anchor boilerplate), not the smaller git-discipline diff, which is exactly why offPct read 45 against a threshold of 15.

    The semantic pull: Strings pulling the walk off-lane: 'Four Things With Nothing in Common', 'convergence-quartet: c1-mailbox', the four numbered claims (record/Pacioli/cache-set/exclusion-principle), '<!-- metavector:goodhart-s-law-when-metrics-become-targets -->', and the repeated '<a id="line-NNN" class="line-anchor"></a>' anchor pattern that recurs dozens of times as the renumbering cascades through the rest of the chapter. None of these terms relate to 'suppression', 'isBlocked', 'central-mirror.db', or 'audience.mjs' — the actual claimed-lane vocabulary is confined to 97 of the 189 changed lines.

    Intent–reality gap: The commit message and trailers describe one narrow fix — honouring a mirror suppression at send time via blocklist.mjs's isBlocked() — and the Relevant-Rooms trailer lists only builder/operator/network. The receipt measured a commit whose majority byte-mass is an unrelated book-chapter content addition that the message never mentions and no trailer fences.

    • hooks/pre-commit: replace/guard the git-add-A step with an explicit-path stage + cross-surface check
    • scripts/pmu/receipt row: add a boolean bundle_flag when staged paths cross ≥2 room-owned-surface globs
    • receipt pipeline: consult the Relevant-Rooms trailer (still unimplemented per fb93ed948) so a correctly-declared multi-room commit is scored differently from a silently bundled one
    • tests/ops/: new guard test asserting a commit touching books/tesseract/** and scripts/** in one diff is rejected unless both rooms appear in Relevant-Rooms
    • docs/architecture/claude-rules/axioms-and-method.md or CLAUDE.md ITERATION DISCIPLINE: add the concrete failure mode observed here (regenerated book HTML riding in on an unrelated code-fix commit) as a named example

    What we learned: fb93ed948 already showed the receipt pipeline never reads Relevant-Rooms, but this event shows that fix alone isn't sufficient: the trailer itself (builder/operator/network) was written in good faith and still omitted the room actually touched, because the bundling happened silently at `git add -A` staging time, invisible to the author. The gap isn't only in the READER (receipt math ignoring Relevant-Rooms) — it's upstream, at the WRITER: nothing forces the author to notice a second, unrelated iteration got staged before the trailer is composed. Fixing grading without fixing staging leaves the trailer itself untrustworthy as an input.

    The missing guard (the deliverable): A pre-commit check that diffs staged paths against the room-owned-surface globs (the same list used for this lens's 'YOUR JOB — THE ROOM'S OWNED FILE SURFACE') and blocks the commit when staged paths span ≥2 disjoint rooms' surfaces whose union isn't reflected in the Relevant-Rooms trailer — forcing either a split (`git commit --only`) or an honest multi-room declaration before the commit exists, not after a receipt grades it.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. litReality (134) exceeding litIntent (110) by 24, combined with walkTruncated=true on a diff whose semantic file alone was truncated at 260 of 402 lines, indicates the walk was cut off before fully resolving the book-HTML's repeated anchor/metavector boilerplate — it read enough to register heavy off-lane mass but not enough to distinguish 'real new content' from 'renumbering churn.' Adjustment: strip repeated `<a id="line-NNN" class="line-anchor"></a>` and `<!-- metavector:... -->` boilerplate from the walk corpus before spending ply budget on chapters-html diffs, so the truncated budget is spent on unique prose instead of anchor renumbering noise. Experiments: Ablation: rerun this sha's receipt with line-anchor/metavector boilerplate regex-stripped from the chapters-html diff and compare offPct — measurable delta tells us how much of the 45% was renumbering noise vs real content pull. · Add a bundle_flag boolean to the receipt row computed purely from staged-path-glob overlap (no walk needed) and correlate post-hoc against offPct across the 58 out-of-lane events in this room's last 14 days — if bundle_flag predicts high offPct better than the walk does, the walk is doing redundant work the staging check could do for free. · Seed a chapters-html-specific reef signature (metavector block headers, glossary anchor prefixes) and rerun prewalkOverlap — test whether raising prewalkOverlap from 3 changes offPct materially or just makes the seed feel more confident without changing the verdict.

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

    An undeclared cross-domain bundle like this is exactly the loss event a lane-fit policy prices against — each occurrence (58 in 14 days for this room) raises the room's loss ratio; premium comes back down only once the pre-commit staging guard makes the bundle mechanically unrepresentable, not just statistically rarer.

    Open the signed attestation →
  14. 2026-09-11 · 🛰️ unattributed · offPct 19 · structural

    fix(blog/theta-empty): voice — reporting posture, not selling

    Why it left the lane: The commit message frames itself narrowly as a VOICE/STYLE fix ('Voice audit... ERROR — Selling Posture... WARNING — Interpretive hedging'), which anchors the intent lane to the git-discipline/voice domain. But the two lines actually touched are the load-bearing claim sentences themselves — 'enterprise AI insurability', 'a mathematical cap on the D&amp;O liability that Article 14 lands at the deployer's door', '*Effective* structurally requires a signal of independent verification ... from the substrate' — pure insurance/legal/patent vocabulary. The reality walk lights on those tokens (litReality=127) and lands on B3.Tactics.Signal/insurance-patent coordinates (steering line shows 11 pulls to B3.Tactics.Signal, 5 to C1.Operations.Grid) that the narrowly-declared voice lane never fenced, producing the 19% off-lane share.

    Intent–reality gap: The commit claims a pure tone/posture edit with zero substance change ('we read... → structurally requires', 'we are selling → this is'), but the receipt measures reality mass sitting on the Article-14/insurability/D&O claim coordinates, because the two touched sentences ARE those claims, not decoration around them — a 2-line diffstat with a 19%-over-threshold offPct.

    • Add the missing Originating-Terminal / Relevant-Rooms trailers to this commit's template (currently zero trailers present, which is why the room fell to 🛰️ unattributed) — thetadrivencoach's own COMMIT MESSAGE STRUCTURE rule requires them.
    • docs/architecture/claude-rules/voice-and-pitch.md: add a note that a voice-only edit landing inside an Article-14/insurability/patent claim sentence must declare dual-lane scope in the commit body.
    • commit-msg hook: lint diff tokens against a legal/insurance lexicon (Article 14, D&O, EU AI Act, insurability); if hit AND message self-declares 'voice/style only', require the dual-lane scope note before allow.
    • docs/reports/voice-audit-2026-05-09.html: cross-reference which flagged violations sit inside claim sentences vs pure narrative, so future audit fixes on claim sentences carry the same scope note by convention.

    What we learned: This is a FOURTH distinct mechanism accumulating under '🛰️ unattributed' (priors: blank-trailer-on-delegated-commit, full-reef-rewrite-by-harvest, malformed-certainty-1.00-interlink) — and it is structurally different from all three: here the commit message itself under-bounds its own intent by declaring 'voice/style only' for an edit whose touched words are simultaneously the substantive insurance/legal claim, so ANY surgical style-only edit that lives inside a dense subject-matter (legal/patent/insurance) sentence will structurally out-lane, independent of trailers or tooling — the root is intent-narrowing on words that carry two roles (tone AND claim) at once.

    The missing guard (the deliverable): A commit-msg lint that scores the changed-line tokens against a load-bearing domain lexicon (Article 14, D&O, insurability, EU AI Act, patent-claim terms); if the message self-declares a narrow single-purpose lane ('voice fix', 'style only') while the diff hits that lexicon, block until a dual-lane scope note is added or Relevant-Rooms names both lanes.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. litIntent=144/144 is FULL saturation — the intent walk lit every cell in the lattice, which means it stopped discriminating; when 'in-lane' is everywhere, 'off-lane' becomes a measurement of reality's narrowness rather than a real boundary violation. Concrete adjustment: truncate the intent-walk input to the commit's imperative subject plus the 'was:'/'now:' delta clauses only — drop the audit narrative (the unchanged-landings list, the Rule-13 proposal paragraph) before walking, since that prose is not what shipped. Experiments: Truncate intent-walk input to subject + 'was:'/'now:' delta lines only for this sha; re-run the receipt and check whether litIntent drops below 144 (de-saturates) and whether offPct moves. · Ablate: strip commit messages of quoted 'unchanged/positive-landing' content (audit narrative not reflected in the diff) before walking, across the last 20 voice-fix commits; measure offPct delta. · A/B a stopword-style discount on frequently-quoted legal/patent boilerplate (Article 14, EU AI Act, D&O) in the reef seed so it stops dominating prewalkOverlap for commits that are genuinely voice-only; measure the prewalkOverlap distribution shift.

    This lane's loss ratio nudges up slightly — a fourth distinct unattributed mechanism in 14 days signals the room-detection layer itself is under-instrumented, not that the underlying voice edit was risky; premium is restored by enforcing trailer presence plus the dual-lane scope note at commit-msg time so measurement artifacts stop being counted as genuine drift.

    Open the signed attestation →
  15. 2026-09-11 · 🔨 builder · offPct 48 · mistagged

    docs(skill): /unsube is sqlite-first — the remote is never the record; seeded rows carry a seed: stamp

    Why it left the lane: The diff's actual vocabulary — 'gmail-sync.js', 'gmail_inbox', 'gmail_sent', 'rules.db', 'central-mirror.db', 'sync-verdict.mjs', 'gmail-connector.json', 'unsub-seed.mjs' — is pure inbox/mail-sync domain language. None of it appears in 🔨 builder's declared owned surface (src/app/, src/components/, src/lib/, public/, build-book-html.sh, convert-chapters-to-html.mjs, pre-commit hooks, voice-*-check.sh, decentralizedtalk/, thetacoach-crm-mcp/, vercel.json). The touched paths — .claude/skills/unsube/SKILL.md and scripts/bookclub/unsub-seed.mjs — sit entirely outside that glob, so the walk's mass necessarily lit cells the builder lane never claims. No region-narrative was cached for this sha, so the specific coord names aren't available, but the path evidence alone accounts for the pull.

    Intent–reality gap: The commit message and Originating-Terminal trailer claim this is 🔨 builder work ('docs(skill): /unsube is sqlite-first'), but the receipt measured 48% of lit reality mass outside the builder lane because the touched files (.claude/skills/unsube/, scripts/bookclub/) belong to no glob in builder's owned surface — the author's own Relevant-Rooms trailer ('operator, builder, network') already conceded this wasn't purely a builder change, yet the single field the pipeline reads (Originating-Terminal) still said builder.

    • Add `scripts/bookclub/**` and `.claude/skills/unsube/**` to whichever room's owned-surface glob in `.workflow/rooms/*.html` actually covers inbox/mail-sync work (network or a new mailbox room) — right now no room's declared surface claims either path.
    • Cache the region-narrative (encircled coords) for every offPct-breach event at receipt-emit time — this event and 2 of the last 3 prior lessons for this room ran 'sensemaking unavailable, facts-only', which is degrading the intervention loop itself.
    • Update CLAUDE.md's commit-trailer rule per spec_rewrite above.
    • Wire the receipt pipeline to compute offPct against the glob-matched room (from touched paths), not the self-authored Originating-Terminal trailer — this is the escalation past fb93ed948, which only asked the pipeline to read Relevant-Rooms (also self-authored) and measured the room get worse (30→40).
    • Add a WARN-ONLY pre-commit line (matching the WIP-claims precedent: advisory, never blocking) printing the glob-matched room next to the declared Originating-Terminal when they diverge.

    What we learned: The room-ownership data needed to catch this class already exists as an enumerable, non-gameable fact — the 'owned file surface' glob list handed to this very intervention — but the receipt pipeline never diffs a commit's touched paths against it. fb93ed948 found the pipeline ignores the self-authored Relevant-Rooms trailer; this event shows the deeper gap: even when a non-self-authored, structural signal (actual path-to-glob membership) is available and would have caught it, nothing computes it.

    The missing guard (the deliverable): A deterministic check — pre-commit WARN or a scheduled batch script — that for each commit computes the room whose `.workflow/rooms/*.html` owned-surface glob contains the majority of touched paths, and flags (not blocks) when that computed room disagrees with the commit's own Originating-Terminal trailer. This is glob-vs-path, not trailer-vs-trailer, so it isn't defeated by the same gameable-self-authored-field problem the prior fix ran into.

    Detector probe: signal attribution — gzip reef 20% · ballistic walk 80%. Saturated, not discriminating: every cell the walk visited on both the intent and reality side lit up (113/113, 117/117), and walkTruncated=true means it was cut off before it could naturally narrow. A 100% lit-rate combined with near-zero reef overlap suggests the walk isn't being pruned by the reef seed at all here. Concrete adjustment: when prewalkOverlap/walksIntent falls below ~5%, tighten the ply budget or raise the fill threshold that triggers truncation, so a weakly-seeded walk stops early instead of exhaustively lighting whatever it touches. Experiments: Seed the reef corpus with .claude/skills/**/SKILL.md and scripts/bookclub/** content under an explicit 'network'/'inbox' domain tag, re-run gzip-NCD on the last 20 unsube-adjacent commits, and check whether prewalkOverlap rises above 2. · Feed the checked-in owned-surface globs (.workflow/rooms/*.html) into the reef as high-weight seeds keyed by path, so a diff whose paths match a glob seeds directly instead of being discovered cold by the walk — measure the walkTruncated rate before/after on the next 60 commits. · Re-score this event and its room's last 60 commits' offPct against the glob-matched room instead of Originating-Terminal, and compare the resulting mean offPct to the 31.3.2026-09 baseline this room already carries (31→14, null→26, 30→40) to see whether glob-matching outperforms both the untouched baseline and the Relevant-Rooms attempt.

    Measured outcome (deterministic, not self-graded): room mean offPct 24→26 over 112 commits since · dictionary ablation saved 661B

    A skill/doc commit correctly scoped in content but stamped with the wrong originating room inflates this lane's measured loss ratio without any actual cross-lane risk having occurred — premium here is restored not by tightening builder's behavior but by giving the pipeline a real path-to-glob check so mistagged, harmless commits stop being priced as breaches.

    Open the signed attestation →
  16. 2026-09-11 · 🔨 builder · offPct 33 · structural

    feat(lens): the recall loop — every prompt graded against the rules it needed, and the retrieval optimised on the miss

    Why it left the lane: The commit's six touched paths are docs/superpowers/specs/2026-09-11-lens-recall-closed-loop.md, scripts/pmu/lens-hit-rate.mjs, scripts/pmu/lens-recall-grader.mjs, scripts/pmu/lens-recall-optimize.mjs, scripts/pmu/prompt-lens.mjs, and tests/pmu-simulator/lens-recall-grader.test.mjs. Checked against data/room-surfaces.json (the tracked source `loadRooms()` reads for owned-surface globs), 'builder' owns src/app/, src/components/, src/lib/, public/, the two book-build scripts, hooks/pre-commit, scripts/voice-*-check.sh, decentralizedtalk/, thetacoach-crm-mcp/, vercel.json — zero overlap with any of the six. Only one file (the test, via laboratory's broad 'tests/' glob) is owned by any room at all; the other five sit in scripts/pmu/ and docs/superpowers/specs/, neither of which appears anywhere in data/room-surfaces.json's 10 'owned' arrays (grep confirms zero hits for 'scripts/pmu' in that file, against 441 .mjs files already living there).

    The semantic pull: The vocabulary is pure measurement/instrumentation — 'lens-recall-grader', 'pinned haiku worker', 'catalogue', 'trigger-anchor', 'green-gate', 'cursor-gated' — which never touches builder's frontend/book-build nouns (src/app, public/, book HTML). The pull toward 'out of lane' isn't semantic drift into a wrong room's territory; it's that no coordinate in the lattice claims this territory for ANY room, so the walk lights scripts/pmu/* and docs/superpowers/specs/* as off-lane relative to whichever terminal happens to author it.

    Intent–reality gap: The commit message and its own Relevant-Rooms trailer ('laboratory, builder, operator') correctly self-declare this as multi-room PMU-instrumentation work; the receipt measured it against Originating-Terminal (builder) alone, whose owned surface has no PMU-tooling glob at all — and even reading Relevant-Rooms wouldn't fully close the gap, since laboratory's owned list covers tests/ but not scripts/pmu/ or docs/superpowers/specs/ either.

    • Add "scripts/pmu/**" and "docs/superpowers/specs/**" to laboratory's owned array in data/room-surfaces.json (or operator's, given it already owns data/pmu/pipeline/ and data/pmu/claudbridge/ — pick one, don't split scripts/pmu/ across two rooms)
    • Re-run the receipt for 202490a195 after the glob edit to confirm offPct falls toward 0 for this exact commit — that's the measurable test, not a projected number
    • Audit whether any of the room's other 63 out-of-lane events in the last 14 days are the same scripts/pmu/-is-unowned pattern rather than 63 independent mistags (the /recontext skill already exists for exactly this: 'UNOWNED (no room accountable)')
    • Extend tests/milestones/room-surfaces.test.mjs (already guards the 8 known _deadClaims) to also fail when a directory holding N+ tracked files matches zero owned glob across all rooms — scripts/pmu/ at 441 files should have tripped this long before commit 202490a195
    • Going forward, tag PMU/lens-instrumentation commits with Originating-Terminal: 🧪 laboratory (not 🔨 builder) once the glob claim above lands, so self-tagging and the owned-surface map agree

    What we learned: data/room-surfaces.json is the tracked ground truth for lane-fit (the HTML briefings are gitignored/regenerable, this file is hand-maintained), and it can have a directory with 441 committed files that no room's owned array claims — the receipt then has no correct answer to give any Originating-Terminal that touches it. Unlike fb93ed948 (a Relevant-Rooms field that exists but isn't consulted), this is an owned-surface gap: the field that WOULD be consulted has nothing in it for this path, so consulting it wouldn't have been sufficient by itself.

    The missing guard (the deliverable): A test enumerating every top-level directory/file with N+ git-tracked paths and asserting it matches at least one room's 'owned' glob in data/room-surfaces.json — the inverse of the existing _deadClaims guard (which catches owned globs pointing at nothing; this catches real surfaces owned by nothing). scripts/pmu/ at 441 files should fail loudly under this guard today.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Saturated, not discriminating — a 100% fill ratio on both sides means the walk lights every reachable cell rather than filtering signal from noise within the reached region. Concrete adjustment: cap the walk's max-hop/fill threshold so it stops before full saturation and reports a partial-fill count, which would make fill ratio itself a usable secondary signal instead of always reading 100%. Experiments: Re-seed the reef with data/room-surfaces.json's owned globs as an explicit dictionary term set (scripts/pmu/, docs/superpowers/specs/ currently contribute zero seed weight to any room) and re-run this sha's receipt to confirm prewalkOverlap rises · Ablation: recompute offPct for all 63 of this room's out-of-lane events in the last 14 days with scripts/pmu/** reassigned to laboratory in the config, and measure what fraction of the 63 collapse to in-lane — this directly tests whether the room's whole out-of-lane count is dominated by this one structural gap · Add a pre-walk coverage check that flags (not blocks) any commit whose diff paths hit zero rooms' owned globs at all, before the walk runs — cheaper and earlier than discovering it after offPct comes back high

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

    An unowned 441-file surface means every commit that touches it is priced as a loss (out-of-lane) regardless of how well-guarded the work is, which inflates this lane's apparent loss-ratio for reasons that have nothing to do with code quality; restoring it means one glob edit to data/room-surfaces.json plus the inverse-coverage guard, not a behavior change from the room.

    Open the signed attestation →
  17. 2026-09-11 · 🎩 operator · offPct 18 · mistagged

    fix(voice): you CAN buy your own licence — kill the self-exclusion, one word was doing the damage

    Why it left the lane: The diff's semantic mass sits almost entirely in prose/copy strings — 'alibi', 'certify its own innocence', 'attestation licence', 'SOX separation of duties', 'vendor'/'customer' — repeated across six files (newsletter draft, render-email.mjs, gift/page.tsx, GiftLicenseFloater.tsx, plus the new guard test). None of that vocabulary lives near git-discipline/C.Operations×B3.Tactics.Signal; it's voice-and-pitch content work. The commit message itself is almost entirely a copy-editing narrative (word choice, axis substitution, T.J. Hooper) with the git-discipline trailers (Originating-Terminal, Relevant-Rooms, Gates 59/59) bolted on as boilerplate — so the walk finds heavy mass in comms/voice space while the claimed lane is operator/git-process, producing the 25+ off-lane cells (B1-B2 × C1-C3, all 'topology/velocity/throughput/exchange').

    Intent–reality gap: The commit message frames itself as a git-discipline/operator event (trailers, gate counts, room tags) but the actual work — the content of the commit — is a voice/copy fix on the gift-licence pitch; the receipt correctly measured the work landing in comms/voice territory, not in the operator/git-process lane its trailers claim.

    • Update CLAUDE.md's room-surface table (or the equivalent owned-surface manifest) to explicitly list src/components/GiftLicenseFloater.tsx, src/app/gift/page.tsx, data/cta-angles.json, and docs/comms/newsletter/drafts/*.html under the 🎤 voice room, not 🎩 operator, so future commits touching them default-tag correctly.
    • Add a pre-commit or post-commit lint that cross-checks 'Relevant-Rooms' trailer against the owned-surface glob of the files actually staged, warning (not blocking) when Originating-Terminal disagrees with the surface majority.
    • Backfill: none — this is a single mistagged commit, not a corpus-wide drift; no bulk rewrite warranted.
    • Confirm tests/voice/licence-is-yours-to-buy.test.mjs is registered under the voice test suite, not an operator/git-discipline suite, so its failures route to the right room.

    What we learned: A commit's Originating-Terminal trailer records which physical terminal the operator had open, not which room's owned-surface the diff actually touches — so a voice/copy fix typed from the operator terminal ships with operator-lane trailers and the receipt (correctly) flags it as off-lane, even though the code and guard are exactly right. The gap is the TRAILER-TO-SURFACE binding, not the work.

    The missing guard (the deliverable): A commit-msg or post-commit hook that computes the room implied by the staged files' owned-surface globs (per CLAUDE.md / .workflow/rooms/*.html) and WARNS (non-blocking, per WIP-CLAIMS precedent) when it disagrees with the commit's own Originating-Terminal/Relevant-Rooms trailers — closing exactly the gap this event exposed.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. litReality (133) exceeding litIntent (118) with walkTruncated=true suggests the walk is running wide rather than deep and getting cut off before it can concentrate mass back toward a tighter cluster — right-sized breadth but truncated depth; concrete adjustment: raise the ply/hop budget (or disable truncation) specifically when litReality/litIntent ratio exceeds ~1.1, so the walk finishes converging instead of stopping mid-spread. Experiments: Run the same commit through the walk with walkTruncated forced false and compare offPct — if it drops materially, truncation (not seed placement) is the actual driver and the fix is a depth-budget increase, not a reef change. · Ablate prewalkOverlap by re-seeding the reef with the gift/voice surface files added to its corpus and re-run this commit's receipt; if offPct falls below 15 without any code change, the reef corpus (not the walk) was under-covering this surface and that's the cheaper fix. · Add a synthetic commit fixture using only files under src/components/GiftLicenseFloater.tsx + data/cta-angles.json with an accurate 'Originating-Terminal: 🎤 voice' trailer, and confirm it lands in-lane — isolating whether the trailer mismatch alone (not the content) produces the offPct breach.

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

    This event alone is a mistagging, not a defect in the shipped fix or guard — it nudges this lane's (git-discipline/C×B3) breach rate up without reflecting a real process failure, so premium should NOT rise on this evidence; what restores confidence is the owned-surface↔trailer cross-check landing so the NEXT voice-typed-from-operator-terminal commit tags correctly and this room's breach count reflects only genuine git-discipline misses.

    Open the signed attestation →
  18. 2026-09-11 · 🔨 builder · offPct 33

    feat(lens): the requirements reversed — confidence on every rule and hat, the config version on every entry, the mass as emoji, and a six-leg health check

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

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

    Open the signed attestation →
  19. 2026-09-11 · 🔨 builder · offPct 25

    feat(tape): tape.turn.v1 — the per-prompt attestation tape: two blocks, per-lane chains, ed25519, masking, canaries, freeze

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

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

    Open the signed attestation →
  20. 2026-09-11 · 🔨 builder · offPct 46 · structural

    fix(chat): the gemini harvest drives Safari off-screen again; Chrome is never launched unless asked

    Why it left the lane: The diff's actual mass is scripts/chat/chrome-cdp.mjs, scripts/chat/gemini-web-all.sh, scripts/chat/sync-all.sh, tests/chat/gemini-harvest-is-safari-offscreen.test.mjs — strings like 'ensureChrome', 'THETACOG_ALLOW_CHROME', 'browser-lease.sh', 'gemini.google.com/app', 'GEMINI_TRANSPORT=cdp'. None of these paths appear in builder's owned surface (src/app/, src/components/, src/lib/, public/, book-build scripts, hooks/pre-commit, decentralizedtalk/, thetacoach-crm-mcp/, vercel.json). Verified by grep: scripts/chat/** and tests/chat/** are claimed as 'Owned file/dir surface' by ZERO of the 9 .workflow/rooms/*.html files. The 31 red coords spread evenly across nearly the whole B(Speed/Deal/Signal)×C(Grid/Loop/Flow) grid rather than concentrating — the signature of infra work with no home pixel, not of a commit that wandered from a real lane.

    The semantic pull: The pull toward C.Operations×B3.Tactics.Signal (git-discipline) came from the commit MESSAGE's own self-referential vocabulary — 'Guard:', 'Root:', 'Originating-Terminal:', the trailer schema, 'a guard that enforced a misread operator sentence is worse than no guard' — which is exactly the language the git-discipline pixel is tuned to recognize. litIntent=110 walked that vocabulary; litReality=140 walked the actual diff content (Chrome/CDP/Safari/browser-lease terms), which has no assigned pixel anywhere in the 144-lattice room ownership, so it scattered across 31 cells instead of landing in one.

    Intent–reality gap: The commit message speaks fluently in git-discipline/guard-replacement terms (matching builder's tuned pixel) while the reality it describes — a browser-automation bugfix in scripts/chat/ — sits in a directory no room's owned-surface glob claims, so the receipt has nowhere correct to place 140 lit reality cells.

    • Add `scripts/chat/**`, `tests/chat/**` to .workflow/rooms/rio-navigator.html 'Owned file/dir surface'
    • Record the routing decision in scripts/open-room-session.sh (Navigator's own stated mechanism for routing-ambiguity tasks)
    • Ship scripts/room-drift-navigator-check.sh and scripts/room-drift-builder-check.sh — both already spec'd as 'not yet implemented' in their own room docs — so a staged file outside the owned surface is flagged AT COMMIT TIME, not discovered later via offPct
    • Extend prompt-lens.mjs / tape-on-commit.mjs lane-fit computation to read the Relevant-Rooms trailer (currently only Originating-Terminal and the derived touched-surface room are consulted — confirmed by grep, no Relevant-Rooms read in either file's offPct path) and compute offPct against the UNION of all named rooms' owned surfaces
    • Add scripts/chat/** ownership to the Forbidden-surface lists of the other 8 rooms once Navigator's claim is explicit, closing the ambiguity for good

    What we learned: The room-ownership map itself has real gaps, not just an unread trailer: scripts/chat/** and tests/chat/** are unclaimed by any of the 9 .workflow/rooms/*.html files (verified by grep across all nine), so ANY commit landing there is structurally unplaceable regardless of how correctly it self-declares Relevant-Rooms. fb99d088d and fbb82dd1b's earlier lessons about the pipeline ignoring the trailer were necessary but not sufficient — the trailer can only route to a room that has actually claimed the surface, and here none had.

    The missing guard (the deliverable): scripts/room-drift-navigator-check.sh (already spec'd in .workflow/rooms/rio-navigator.html: 'flags any staged file outside the owned surface when the commit message includes room: navigator or the session is open in Rio' — never implemented) plus its builder counterpart, both extended to check ALL rooms named in Relevant-Rooms (not just the single triggering room) before allowing a commit to land on unowned surface.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized, not shallow or saturated — 2 plies at 0.98% fill is far under the 70% cap, and litIntent/litReality are within 1.27x of each other. The asymmetry is a seeding problem, not a depth problem: a single intent lane structurally caps litIntent below what a legitimately multi-room commit (Relevant-Rooms: navigator, builder, operator) would need. Adjustment: seed the walk from each Relevant-Rooms room's owned-surface glob as a separate intent lane and report the best-fit lane's offPct, rather than one fixed Originating-Terminal lane. Experiments: Add scripts/chat/**, tests/chat/** to rio-navigator.html's owned surface, then re-run the receipt against sha 2fb15506a with the same libSha/reefSha and confirm offPct drops materially below 46 · Wire Relevant-Rooms into prompt-lens.mjs's lane-fit computation and re-run this same commit plus fb93ed948's and fbb82dd1b's commits, measuring the offPct delta across all three (a real fix should lower all three, not just this one) · Run scripts/ops/rules-for.mjs against every path in scripts/chat/** and tests/chat/** once ownership is set, confirming zero remaining unowned paths in that tree

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

    An out-of-lane fire on genuinely unowned surface is a measurement-architecture loss, not a work-quality one — it inflates this lane's loss ratio on a false signal; premium is restored by closing the ownership gap (Navigator claims scripts/chat/**) and shipping the pre-commit ownership guard so future commits on that surface are correctly priced instead of flagged as drift.

    Open the signed attestation →
  21. 2026-09-11 · 🔨 builder · offPct 16 · structural

    docs(ops): Diamandis reads — nothing attributable to him, four aliases on one list, do not answer, Salim already has his own thread

    Why it left the lane: litIntent=143 exactly matches the diffstat of docs/ops/reads/2026-09-11-diamandis-reads.txt (143 ++++, the intent-lane file). Everything else the commit touched — public/data/insurability.json (12 lines), public/data/receipts-playback.json (2), public/data/receipts-strip.json (464), public/data/series-countdown.json (12), src/data/post-panels-index.json (2, but the file is one minified JSON blob so that '2' represents the whole manifest line being rewritten) — is regenerated telemetry/panel-manifest boilerplate: repeated template strings like 'chore(blog): attach commit tolerance panel as OG image [panel-attached]', '/blog/post-panels/…', and 'bytes':392391,'lit':1287 filler entries. That mass is templated dashboard/panel vocabulary, not ops-signal vocabulary, so the ballistic walk correctly places it in Tactics.Speed/Deal × Operations.Grid/Loop/Flow (topology, velocity, throughput, exchange) — coordinates that read like the /milestones adoption-board and vega-series machinery, orthogonal to the git-discipline/ops-signal lane the commit message claims.

    The semantic pull: 'docs/ops/reads/2026-09-11-diamandis-reads.txt | 143 ++++' pulled toward C.Operations × B3.Tactics.Signal (correct, litIntent=143 matches exactly). '464 +++---' in public/data/receipts-strip.json and the rewritten single-line src/data/post-panels-index.json (panel entries like '\"2026-09-11-four-things-with-nothing-in-common\":{\"panels\":[...\"chore(blog): attach commit tolerance panel as OG image [panel-attached]\"...]}') pulled toward the encircled reds — B1,C1 Tactics.Speed×Operations.Grid (topology), B2,C2 Tactics.Deal×Operations.Loop (exchange), B1,C3 Speed×Flow (throughput) — because that JSON is the literal output of the benchmark/panel-refresh pipeline (the same 'chore(benchmark): refresh adoption board…(detached, deterministic, LLM-free)' commits seen throughout this repo's history), which speaks in dashboard/throughput terms, not ops-analysis terms.

    Intent–reality gap: The commit message claims pure docs(ops) analysis — 'the per-address record, stripped of shared-message rows and Defender bursts… all three aliases suppressed tonight' — with zero mention of telemetry. But 5 of 6 changed files (478 of 621 total diff lines) are auto-regenerated dashboard/panel-manifest JSON that the receipt's walk correctly identifies as living in a completely different lattice region.

    • grep -l "writeFileSync.*receipts-strip.json" scripts/ — confirm the generator and that it self-commits rather than leaving the file dirty for the next `git add -A`
    • Same check for public/data/insurability.json, receipts-playback.json, series-countdown.json, and src/data/post-panels-index.json generators
    • Add a pre-commit guard: refuse (or warn+split) when staged paths intersect both docs/ops/**/*.txt and public/data/*.json|src/data/post-panels-index.json in the same commit
    • Verify scripts/build-panels-index.mjs runs its own detached commit on push, matching the documented 'chore(blog): panel strip + OG image' pattern, instead of relying on the next commit's git add -A
    • Document the split rule explicitly under CLAUDE.md § GIT DISCIPLINE: 'regenerated telemetry never rides an unrelated commit'

    What we learned: Off-lane offPct on a docs/ops commit is often not about the content the human/agent wrote at all — it's a TIMING artifact of when the telemetry-refresh hook last ran relative to the foreground commit. litIntent matching the docs file's diffstat exactly (143=143) while litReality balloons on regenerated JSON shows the drift signal here is discovering staging order, not authorial intent — a class the prior three lessons (room-mean-offPct swings, the Relevant-Rooms trailer gap) never named.

    The missing guard (the deliverable): A pre-commit check that refuses or auto-splits any commit whose staged diff mixes docs/ops/** with the known regenerated-telemetry globs (public/data/*.json, src/data/post-panels-index.json), forcing the telemetry side into its own detached chore commit first.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. litReality/walksReality = 142/142 and litIntent/walksIntent = 143/143 — every single walked cell lit. That's saturation, not shallow coverage: the walk currently can't distinguish a strong hit from a weak one because 100% of steps light a cell. Adjustment: gate 'lit' behind a minimum gzip-NCD compression-delta threshold so only cells crossing real similarity count, rather than auto-lighting every walked cell. Experiments: Re-run this commit's walk with a lit-threshold gate and check whether litReality drops below walksReality 142 — confirms/denies the saturation hypothesis and should sharpen offPct. · Exclude public/data/*.json and src/data/post-panels-index.json from the reality-walk's input corpus specifically for docs/ops-tagged commits and re-score this commit — if offPct drops toward 0, it confirms telemetry files are the drift source, not the docs content. · Measure prewalkOverlap across the last 20 breach (offPct>15) commits vs the last 20 in-lane commits to test whether low prewalkOverlap (18 here) predicts breach; if it correlates, add a prewalkOverlap floor as a pre-flight gate.

    Measured outcome (deterministic, not self-graded): room mean offPct 24→26 over 114 commits since · dictionary ablation saved 1079B

    An unexplained bundle of dashboard telemetry inside an unrelated ops-analysis commit reads to an underwriter as untracked scope creep in the git-discipline lane, raising this lane's loss-ratio; restoring premium requires the split commit pattern (spec_rewrite) plus the pre-commit mixing guard, both of which make the bundling itself the thing that fails fast rather than the thing the receipt has to discover after the fact.

    Open the signed attestation →
  22. 2026-09-11 · 🔨 builder · offPct 20 · mistagged

    fix(lens): the echo names intersections, spells out the first cells of each band, and draws the grid; block A carries the whole walk

    Why it left the lane: Every file the diff touches — scripts/pmu/prompt-lens.mjs, scripts/pmu/tape-turn.mjs, tests/lens/receipt-compact.test.mjs — sits in a surface that isn't claimed by ANY room's declared glob. Verified against both candidate owners: 🔨 Builder's owned list (src/app/, src/components/, src/lib/, public/, scripts/build-book-html.sh, scripts/convert-chapters-to-html.mjs, hooks/pre-commit, scripts/voice-*-check.sh, decentralizedtalk/, thetacoach-crm-mcp/, vercel.json) has no scripts/pmu/ or tests/lens/ entry; 🧪 Cursor Laboratory's 'Owned file/dir surface' (.workflow/rooms/cursor-laboratory.html) lists docs/03-product/, src/app/6needs/, src/lib/tesseract/, scripts/voice-audit-*.sh, scripts/validate-*.sh, data/trust-debt/ — also no scripts/pmu/ or tests/lens/ entry. The commit's own trailer even names the discomfort correctly (Relevant-Rooms: builder, laboratory, operator — three rooms, none of which formally owns the surface). The pull toward 'out of lane' isn't semantic content drift; it's that the grader charges the full offPct against whichever terminal was open (builder) for a diff sitting on unowned ground.

    The semantic pull: The diff's own vocabulary — LATTICE, renderGridLines, walkProvenance, seed_coords, encircledBands — is pmu/lens internals language, structurally alien to Builder's UI/site-build surface (src/app/, public/, vercel.json) but also absent from Laboratory's declared spec/component/test-audit surface. There's no lexical pull toward a wrong room; there's an absence of any right room to pull toward.

    Intent–reality gap: The commit message frames this as ordinary iteration work on 'the echo' — a display/UX refinement that reads like it belongs wherever the operator happened to be dictating. The receipt measured 100% of the touched paths (scripts/pmu/, tests/lens/) as landing outside the Originating-Terminal's (🔨 builder) owned surface — and, checked directly, outside every room's owned surface. The claim isn't wrong about WHAT was built; it's silent about WHERE the ledger says that work is allowed to live.

    • Add `scripts/pmu/**`, `tests/lens/**` to 🧪 Cursor Laboratory's owned-surface list in .workflow/rooms/cursor-laboratory.html (currently absent — verified by direct read)
    • Implement scripts/room-drift-cursor-check.sh for real — the room's own doc says it is 'spec'd, not yet implemented' — generalized to run for any room, not just cursor
    • Change the lane-grading path to union Relevant-Rooms trailer rooms (not just Originating-Terminal) when computing which surface a commit is judged against
    • Backfill: re-grade the 67 builder out-of-lane events from the last 14 days under the corrected owned-surface map and report how many were mistagged vs genuinely out of lane
    • Close the 6 already-queued duplicate asks (sp-793, sp-794, sp-798, sp-800, sp-809, sp-810 — all due 2026-09-12, all describing this same guard) against the single commit that actually ships it, so the ledger doesn't keep re-opening the identical ticket
    • Add a one-line rule to CLAUDE.md or claude-rules/doors-and-surfaces.md: 'pmu/lens work declares Originating-Terminal: laboratory, never the terminal it happened to be dictated in'

    What we learned: This exact guard — a hook that resolves a commit's true room from its staged-file globs and cross-checks Originating-Terminal/Relevant-Rooms — has been independently queued at least six times in Cursor Laboratory's own to-do list (sp-793, sp-794, sp-798, sp-800, sp-809, sp-810, all 'due 2026-09-12') and room-drift-cursor-check.sh is still literally documented as 'spec'd, not yet implemented.' The repo's real failure isn't a missing diagnosis — fb93ed948 named it precisely — it's that the intervention pipeline re-diagnoses and re-queues the same fix every time this drift class fires instead of ever landing it as code. Prose diagnosis is being retained (AXIOM 1's evict-or-retain) while the actual correction is never evicted from the backlog into the tree.

    The missing guard (the deliverable): Ship scripts/room-drift-cursor-check.sh (already spec'd) as a real pre-commit/post-commit gate, generalized across all nine rooms: compute the room implied by staged paths via `.workflow/rooms/*.html` owned-surface globs; fail/flag when Originating-Terminal owns none of the staged paths and no Relevant-Rooms entry does either (orphaned surface) or when a different Relevant-Rooms entry does (mistagged) — this is the single check that would have caught this event before commit.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Right-sized, not shallow or saturated: walkTruncated=false and litIntent/litReality sit close together (133/128) rather than one side hitting a wall. No evidence of walkSaturated flagging here. Concrete adjustment: instrument the marginal-new-cell rate per hop for this commit class and cap hops once it drops below a small threshold — if litReality's 128 cells are already dense within a tight cluster, extra hops are being spent for no placement benefit and can be trimmed without changing offPct. Experiments: Ablation: re-grade the last 14 days of builder-room commits with owned-surface resolution = UNION(Originating-Terminal, Relevant-Rooms) vs Originating-Terminal-only, and measure how many of the 67 out-of-lane events evaporate — this directly tests fb93ed948's hypothesis with numbers instead of prose · Experiment: concatenate the Relevant-Rooms trailer text into the intent-side gzip corpus before seeding the reef, and measure whether prewalkOverlap rises for multi-room-trailer commits like this one · Experiment: once scripts/pmu/** and tests/lens/** are added to Cursor Laboratory's owned surface, re-run this commit through the grader and confirm offPct is reported as 0-vs-laboratory rather than 20-vs-builder — a direct before/after on the same sha

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

    An orphaned surface that recurs as offPct against the wrong room for 67 events in 14 days is a measurement-integrity defect, not a builder performance one — it inflates builder's loss ratio on work it never actually mis-scoped; premium restores the moment scripts/pmu/** has a declared owner and the grader consults Relevant-Rooms, converting six queued-but-unshipped tickets into one merged fix.

    Open the signed attestation →
  23. 2026-09-11 · 🎤 voice · offPct 22 · structural

    fix(blog): Four Things 500s in production — one eaten `>`; validate-mdx now COMPILES the MDX instead of grepping it

    Why it left the lane: The room's owned surface is src/content/blog/*.mdx, docs/05-content/blog/scratchpad/, decentralizedtalk/slideData.ts, src/app/decentralized*, src/app/6needs/, scripts/voice-*-check.sh. Of the 116 inserted lines in this diff, only 1 (the `<div className="...">` fix in 2026-09-11-four-things-with-nothing-in-common.mdx) lands there. The other 115 — scripts/blog/mdx-compile-check.mjs (44 lines, new file), the Check-13c block wired into scripts/validate-mdx.sh (18 lines), and tests/blog/mdx-compiles.test.mjs (53 lines) — sit under scripts/blog/, repo-root scripts/, and tests/blog/, none of which match the voice glob. offPct=22 is exactly that ratio showing up as lit-reality mass outside the intent lane.

    The semantic pull: The diff's own vocabulary pulls toward build-tooling coordinates: 'compile' / 'compileCheck' / '@mdx-js/mdx' / 'next-mdx-remote parser family' / 'validate-mdx.sh Check 13c' / 'tests/blog/mdx-compiles.test.mjs'. These are pipeline-guard terms, not blog-authorship terms — the walk lit heavily on scripts/ and tests/ paths because that's where 99% of the new bytes actually are.

    Intent–reality gap: The commit message frames itself as a voice-room content fix ('fix(blog): Four Things 500s in production — one eaten `>`'), but the receipt measured the reality mass landing mostly in scripts/blog/, scripts/validate-mdx.sh, and tests/blog/ — infra/build-tooling paths outside src/content/blog/*.mdx.

    • Add the same-commit-guard glob above to wherever 🎤 voice's owned-surface is declared (likely .workflow/rooms/voice.html or data/room-bifurcations.json).
    • Update CLAUDE.md's COMMIT MESSAGE STRUCTURE section so the lane/offPct pipeline is told to credit a commit's declared 'Relevant-Rooms: voice · builder · architect' trailer, not just 'Originating-Terminal', when computing which paths are in-lane — this commit already self-declared the cross-room touch correctly and the pipeline didn't use it.
    • Ticket the seven back-catalogue posts the new guard found as non-compiling (named in the commit's Story as 'a debt this commit names rather than fixes') into punch-list.json so they don't silently rot.
    • Consider a thin wrapper scripts/voice-mdx-compile-check.sh (calling scripts/blog/mdx-compile-check.mjs) so the entry point matches the existing scripts/voice-*-check.sh convention voice already owns, reducing future special-casing.
    • Name explicitly, as a repo-level policy question, the collision between ITERATION DISCIPLINE ('one iteration = one commit, never bundle') and CODE DEFINITION-OF-DONE ('guard ships in the SAME commit as the fix') — this commit is a correct instance of the second rule that reads as a violation of the first when scored by room.

    What we learned: This room's content-fix commits are structurally bundled with cross-room infra by CLAUDE.md's own same-commit-guard mandate, and the room's owned-surface declaration has never been extended to reflect that mandate — so every future 'voice fixes a content bug and ships its guard in the same commit' commit will keep tripping offPct, because the pattern is CORRECT behavior per the rulebook, not an error. This is new relative to the three prior facts-only interventions (which offered no mechanism and were each followed by WORSE room offPct — 27→39, 21→31, 0→36): the escalating trend is consistent with a structural cause that a facts-only nudge cannot fix, because there was nothing wrong to stop doing.

    The missing guard (the deliverable): A lane-attribution step in the receipt pipeline that reads the commit's own 'Relevant-Rooms:' trailer and scores offPct against the UNION of those rooms' owned-file globs, not just the single 'Originating-Terminal' room. Testable: replay this exact commit (Relevant-Rooms: voice · builder · architect) through the guard and assert offPct drops below 15 once scripts/blog/, scripts/validate-mdx.sh, and tests/blog/ are credited to builder/architect.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Right-sized, not shallow or saturated: walksIntent=walksReality=138 and litIntent=litReality=138 means the walk lit every cell it visited on both sides symmetrically (100% fill of what it walked, well under any truncation ceiling). The drift here is positional (WHERE cells landed), not a coverage/depth problem, so no depth adjustment is indicated. One concrete adjustment: make the walk's lane-COMPARISON step Relevant-Rooms-aware (per missing_guard) rather than adding plies or seeds. Experiments: Ablation: seed the reef's prewalk with the commit's own 'Relevant-Rooms' trailer tokens for the last 20 multi-room-trailer commits, recompute offPct with/without, and check whether prewalkOverlap rises and offPct falls for commits that were rule-compliant like this one. · Backtest: pull every commit in the last 14 days carrying a 3-room Relevant-Rooms trailer (a filterable set) vs single-room trailers, and compare mean offPct between the two groups — if 3-room commits systematically score higher, that's direct confirmation of the structural hypothesis over a one-off. · After the owned-surface glob ships, track this room's mean offPct over its next ~10 commits specifically — the north star is: does it fall, unlike the prior three interventions where it rose (27→39, 21→31, 0→36)?

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

    offPct 22 against a 113-event/14-day backdrop that has gotten worse after each of the last three interventions marks this lane as a deteriorating risk; premium is restored by the Relevant-Rooms-aware lane credit plus the owned-surface glob extension, which together stop rule-compliant same-commit-guard work from being scored as a loss it structurally is not.

    Open the signed attestation →
  24. 2026-09-11 · 🎩 operator · offPct 34 · mistagged

    fix(guard): newlines survive, so a neighbouring correct claim stops vouching for a false one

    Why it left the lane: The diff's entire mass sits inside tests/voice/licence-is-yours-to-buy.test.mjs — terms like 'readerCopy', 'clauseOf', 'SELF_EXCLUSION', 'VENDOR_SUBJECT', 'SEPARATION angle' are voice/comms-guard vocabulary (Tactics.Signal territory), not one byte touches data/trust-debt/, docs/01-business/pipeline/, or any other path on 🎩 operator's owned-surface list. The commit's own Relevant-Rooms trailer already names 🧪 laboratory, 🎤 voice, 📐 architect — not 🎩 operator — which is the receipt independently confirming the same thing the walk found.

    The semantic pull: Regex/whitespace-handling strings ('.replace(/[^\S\n]+/g, ...)', 'clauseOf(sentence, m[0])', 'SELF_EXCLUSION.map', 'VENDOR_SUBJECT.test') pulled the walk toward B3.Tactics.Signal (comms-copy correctness) and away from C1/C2/C3 Operations (pipeline/grid/loop/flow) coords the operator room actually owns — hence 100% off-lane against 31 red cells concentrated in Tactics.Signal ×11.

    Intent–reality gap: The commit message and trailers describe (correctly) a guard-test fix for a voice/comms laundering bug and even self-report the right owning rooms in Relevant-Rooms — but Originating-Terminal still says 🎩 operator, so the receipt measured reality (tests/voice/**) against operator's owned-surface intent and found zero overlap.

    • Add an owned-surface glob check that runs commit-trailer Originating-Terminal against the changed paths and WARNs (not blocks, per HOOKS-NEVER-BLOCK) when they don't intersect any listed Relevant-Room's surface
    • Give 🎤 voice / 🧪 laboratory an explicit owned-surface entry for tests/voice/** and tests/laboratory/** in .workflow/rooms/*.html so the walk has a lane to place this class of commit into
    • Re-tag this commit's Originating-Terminal trailer via `git notes` (never amend, per NEVER-AMEND rule) so the historical record matches the work
    • Cross-check the other 15 out-of-lane events in this room's 14-day window for the same Originating-Terminal-vs-Relevant-Rooms mismatch pattern before assuming this is a one-off

    What we learned: A commit can self-diagnose its own mistagging — the Relevant-Rooms trailer already named the correct owners while Originating-Terminal didn't — and the receipt still had to catch it externally because nothing reads Relevant-Rooms against Originating-Terminal at commit time. The room-tagging convention has two fields that can disagree with each other, and nothing reconciles them.

    The missing guard (the deliverable): A commit-msg or post-commit check that parses Originating-Terminal and Relevant-Rooms trailers, resolves each room's owned-surface glob from .workflow/rooms/*.html, and WARNs when Originating-Terminal's own glob set has zero overlap with the staged paths AND Originating-Terminal is absent from Relevant-Rooms — i.e. lint the tagging convention against itself, not just against the receipt after the fact.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Right-sized but starved: litReality=102 vs litIntent=121 (84% fill) isn't saturated or shallow, it's just seeded from the wrong side of the tagging mismatch. Concrete adjustment: reseed the reality-side walk from the Relevant-Rooms trailer tokens in addition to Originating-Terminal so the walk isn't forced to reconcile two disagreeing room claims from a single seed. Experiments: Reseed the gzip-NCD reef from Relevant-Rooms trailer tokens (not just Originating-Terminal) for the last 16 operator out-of-lane events and measure whether mean offPct drops · Weight the reef prior by matching diff file-globs against each room's .workflow/rooms/*.html owned-surface list before the walk runs, then measure variance reduction in offPct across this room's next 10 commits · Track prewalkOverlap across this room's recent out-of-lane events; if it stays under ~10 consistently, raise the minimum reef sample size required before the walk trusts placement

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

    A mistagged-not-misplaced event doesn't raise loss expectancy on the actual work (the guard fix is sound) but it does inflate this room's measured offPct trend on paper, which is exactly the kind of false-signal breach that erodes trust in the premium calc unless the trailer-reconciliation guard restores it.

    Open the signed attestation →
  25. 2026-09-11 · 🎤 voice · offPct 27 · mistagged

    feat(mdx-cook): street-level is the default — optimise for grounding and a scale collision; the meal conceit retired to opt-in

    Why it left the lane: The four changed paths in the diff are: .claude/skills/mdx-cook/SKILL.md, docs/05-content/blog/mdx-cook-format.md, scripts/blog/mdx-cook-check.sh, tests/blog/mdx-cook-street-mode.test.mjs. Checked against the room's OWN declared owned-surface list — books/tesseract/chapters/*.md, src/content/blog/*.mdx, docs/05-content/blog/scratchpad/, decentralizedtalk/slideData.ts, src/app/decentralized*, src/app/6needs/, scripts/voice-*-check.sh — zero of the four match. docs/05-content/blog/mdx-cook-format.md sits one directory above the owned scratchpad/ subfolder; scripts/blog/mdx-cook-check.sh doesn't fit the voice-*-check.sh naming pattern; .claude/skills/ and tests/blog/ aren't claimed at all. That mismatch, not any single dragging keyword, is what the receipt's offPct=27 and dim2 104/144 breadth are counting — no region narrative is cached for this sha, so the pull is reconstructed from the glob diff itself rather than encircled coords.

    The semantic pull: There is no cached encircled-region narrative for 5bcfdb02e, so no specific ShortLex coordinate strings can be cited as the magnet. The only real signal available is the path-vs-glob mismatch above, plus the receipt's own magnet field reading 'flat/funnel' (no dominant single coordinate) — consistent with mass spread across four structurally different file kinds (skill doc, format doc, shell+python checker, test) rather than one runaway term.

    Intent–reality gap: The commit message and trailers claim this is voice-room work end to end (Originating-Terminal: 🎤 voice; Persona-Intent about the next post-cooking session) and the content genuinely is a blog-format policy decision. But the receipt measures against the room's registered owned-surface globs, and those globs were drawn narrower than voice's actual toolchain (skill file, checker script, its test) — so 'claimed voice' and 'measured voice' disagree not because the work left the room's real job, but because the room's own file-surface declaration under-describes its job.

    • Locate and widen the room-ownership declaration (referenced elsewhere in CLAUDE.md as the '.workflow/rooms/*.html owned-surface glob' pattern) for 🎤 voice to include .claude/skills/mdx-cook/**, scripts/blog/mdx-cook-*.sh, tests/blog/mdx-cook-*.test.mjs, docs/05-content/blog/**
    • Audit the other mdx-cook-adjacent guard (the meal-format C1-C28 checks in the same scripts/blog/mdx-cook-check.sh) for the identical unclaimed-path problem — it predates this commit and has presumably been drifting the same way
    • Add a CI/test assertion that every scripts/blog/*-check.sh or .claude/skills/*/SKILL.md referenced by a room's skill triggers is covered by that room's owned-surface globs
    • Rename or alias scripts/blog/mdx-cook-check.sh so its naming convention doesn't silently exclude it from scripts/voice-*-check.sh style globs going forward

    What we learned: This room's three prior interventions were all 'facts-only' (no sensemaking) and each one measurably made the room WORSE (27→39, 21→31, 0→36 offPct) — meaning bare drift reporting without touching the owned-surface glob does not converge, it degrades. The new structural fact this event reveals: the degradation is explainable, because none of those prior passes could have fixed anything — the room's owned-surface list itself has never been checked against the actual paths its own tooling commits touch, so every voice-room commit that edits its own skill/checker/test furniture was guaranteed to read as off-lane regardless of content quality.

    The missing guard (the deliverable): tests/ops/room-surface-coverage.test.mjs: for every commit whose trailer carries 'Originating-Terminal: <room>', diff the changed paths against that room's owned-surface glob list; fail if the intersection is 0% (as it was here — 0 of 4 files matched voice's own declared surface). This is the generic version of the mistagged-boundary class and would have caught this before the receipt even needed to fire.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Under-utilized/truncated: fill is 0.98% against a ≤70% ceiling and walkTruncated=true is flagged on the receipt row itself. With only 2 plies and a hard truncation flag set, the walk isn't being given room to disambiguate four structurally different files (doc/skill/script/test) sharing one commit. Adjustment: re-run this sha with walkTruncated forced false and one additional ply, and compare offPct — if it drops, the truncation itself is inflating the drift reading, not the content. Experiments: Seed the reef with each room's owned-surface glob strings themselves, then re-measure prewalkOverlap on this sha — if voice-owned path tokens (mdx-cook, scripts/blog, .claude/skills) start scoring overlap, the reef was simply blind to them before. · Recompute this sha's receipt with walkTruncated=false and diff offPct against the shipped 27 — a controlled ablation naming exactly how much of the drift is a truncation artifact. · Run the proposed room-surface-coverage check retroactively over the room's last 14 days of commits and compare its flagged set against the '114 out-of-lane events in 14 days' the room is already carrying — if the overlap is large, the coverage gap (not content drift) explains most of this room's recent breach rate.

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

    An off-lane read here is a false loss signal, not a real one — the underlying work is legitimate voice output that a too-narrow owned-surface glob mispriced as drift, and premium on this lane is restored by widening the glob and shipping the coverage guard, not by the room writing more cautious commit messages.

    Open the signed attestation →
  26. 2026-09-11 · 🔨 builder · offPct 24 · mistagged

    feat(lens): the attractor — pixel ──► named intersection cell with the mass on both axes; 3×3 block heat replaces the 12×12 text grid on the echo

    Why it left the lane: Every changed line in the diff sits inside scripts/pmu/prompt-lens.mjs (attractorOf, renderBlockHeat), scripts/pmu/lens-recall-grader.mjs (judgePrompt, drift_kind), scripts/pmu/lens-recall-optimize.mjs (proposeFromMisses cross-axis), scripts/pmu/lens-hit-rate.mjs (drift_kinds tally), scripts/pmu/tape-turn.mjs, tests/lens/receipt-compact.test.mjs and tests/pmu-simulator/lens-recall-grader.test.mjs — i.e. the lens/PMU receipt engine's own source and its test harness. None of those paths appear anywhere in 🔨 builder's declared owned-surface list (src/app/, src/components/, src/lib/, public/, scripts/build-book-html.sh, scripts/convert-chapters-to-html.mjs, hooks/pre-commit, scripts/voice-*-check.sh, decentralizedtalk/, thetacoach-crm-mcp/, vercel.json) — not one glob matches scripts/pmu/**. The commit's own Relevant-Rooms trailer lists 'builder, laboratory, operator', self-declaring that the work spans rooms — but the receipt pipeline only fences against Originating-Terminal. No cached lattice-coord region narrative exists for this sha, so the drift is legible here on the file-surface axis rather than the [row,col] axis, and it points the same direction: 100% of the touched paths are outside builder's glob set.

    The semantic pull: Literal strings pulling the placement: 'scripts/pmu/prompt-lens.mjs', 'scripts/pmu/lens-recall-grader.mjs', 'scripts/pmu/lens-recall-optimize.mjs', 'attractorOf(r', 'renderBlockHeat(r)', 'drift_kind' — none intersect builder's globs; the nearest builder-owned string in the whole diff is zero (no src/app, src/components, public, or book-build path appears anywhere in the 7-file diff stat).

    Intent–reality gap: The commit message accurately describes what it built — attractorOf geometry, the 3×3 block-heat echo, drift_kind classification wired through the judge/optimizer/tape (23/23 tests) — and that description matches the diff exactly; the gap is not in the work, it's that the commit is filed under Originating-Terminal 🔨 builder while 100% of its files sit in a domain (scripts/pmu/**, tests/lens/**) builder's owned-surface list never mentions.

    • Add scripts/pmu/**, tests/lens/**, tests/pmu-simulator/** to Laboratory's owned-surface manifest (wherever rooms declare their globs, e.g. .workflow/rooms/*.html) — right now no room's listed surface claims this path at all.
    • Ship the fb93ed948 fix that was diagnosed but never landed in code: make the lane-fence/offPct computation consult the Relevant-Rooms trailer as alternate valid lanes (union of Originating-Terminal ∪ each Relevant-Room's globs), not Originating-Terminal alone.
    • Rename/open a dedicated 'Cursor Laboratory' terminal (per the /subdivide room-naming convention) before starting lens/pmu-engine work, instead of continuing in a window still labeled 'iTerm Builder'.
    • Add a non-blocking pre-commit note: if ≥90% of staged files match scripts/pmu/** and the current terminal is tagged builder, print a one-line retag suggestion.
    • Cross-check the other 67 out-of-lane events in this room's 14-day window for the same file-surface signature (scripts/pmu/** under Originating-Terminal builder) to confirm this is the dominant recurring shape, not a one-off.

    What we learned: fb93ed948 already found that the pipeline ignores the Relevant-Rooms trailer, but its measured outcome (offPct 30→40) shows that NAMING the gap without shipping the code fix makes nothing better — the diagnosis alone is not a guard. This event adds the missing half: scripts/pmu/** (the receipt/attractor engine's own source) currently has NO owner in ANY room's declared file-surface list, builder's or otherwise — so this isn't a case of picking the wrong room, it's a coverage hole that will misfire under whichever terminal happens to be open when lens-engine work gets done, until the glob is added somewhere.

    The missing guard (the deliverable): A guard that (a) asserts every path under scripts/pmu/**, tests/lens/**, tests/pmu-simulator/** is claimed by at least one room's owned-surface manifest, and (b) when a commit's Relevant-Rooms trailer is populated, recomputes offPct against the UNION of those rooms' globs before flagging a lane trip — fails loud if scripts/pmu edits keep landing under a room (any room) that doesn't own them.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. litIntent (138) and litReality (129) are close in magnitude and walkTruncated=true is set on both — the walk is hitting a cap rather than naturally converging, which can mask whether the true divergence is larger or smaller than reported. Adjustment: raise the walk's cell cap for this commit class (scripts/pmu/** touches) and re-run to see if litIntent/litReality separate further or actually converge once untruncated. Experiments: Re-seed the gzip-NCD reef dictionary with scripts/pmu/** + tests/lens/** file content and re-measure prewalkOverlap on the next 5 commits touching this path — predict overlap rises above 3 once the reef recognizes this corpus as its own domain. · Recompute offPct for the last 68 builder out-of-lane events using Relevant-Rooms-union lane matching instead of Originating-Terminal-only, and measure how many of the 68 flip to in-lane. · Track walkTruncated=true frequency specifically for scripts/pmu/** commits over the next 20 events; if truncation holds steady, raise the cap and confirm litIntent/litReality convergence changes.

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

    A mistagged-but-correct commit like this reads as a loss event on builder's book when it is really an unpriced risk sitting on an unowned surface (scripts/pmu/**); premium on this lane is restored by claiming that glob under Laboratory and making the lane-fence honor Relevant-Rooms, not by penalizing builder for work it did correctly.

    Open the signed attestation →
  27. 2026-09-11 · 🛰️ unattributed · offPct 18 · mistagged

    voice(blog/theta-is-empty): apply audit + ghost-read fixes — strip meta-commentary, single CTA, define n_pixel variables, in-non-Turing-complete-hardware

    Why it left the lane: The commit message claims a narrow lane — 'voice audit fixes,' 'ghost-read fixes,' four ERRORs, one W1, a handful of named ghost-read items — but the diff physically touches every one of the post's twelve lettered sections (A through L) plus the SEO interlink and the closing CTA block. Terms actually in the diff that carry the mass wide: 'single primary CTA — /rooms', 'consolidate exit', 'SEO interlink', 'inline reference to xor-gate post', and the wholesale removal of the numbered 'One./Two./Three.' close. Each of those is a structural rewrite of a DIFFERENT section (D, H, I, J, L) done under one commit message written at the granularity of 'apply audit fixes' — a single intent-lane label stretched across a full-post restructuring pass, not a scoped fix.

    Intent–reality gap: The message frames this as a bounded audit-response patch (4 ERRORs + W1 + 3 ghost-read points + 1 SEO link); the receipt shows the edit touched the entire lettered structure of the post — orientation paragraph, four feeling-assignments, the close's CTA architecture, a formula definition, and an interlink — which is a full-post consolidation pass wearing a bug-fix label.

    • Add a 'scope' line to the voice-audit tool's output template so when it BLOCKs with 4+ ERRORs spanning distinct sections, the auto-generated commit message defaults to 'restructure' framing instead of an itemized patch-list framing
    • Update docs/architecture/claude-rules/voice-and-pitch.md's audit-fix commit convention to require naming letter-sections touched, not just ERROR numbers, when >2 sections are touched
    • Cross-check src/content/blog/2026-05-08-theta-is-empty-targets-fill-it.mdx against ./scripts/validate-mdx.sh per the always-run rule (not evidenced in this diff context)
    • Verify the SEO interlink to /blog/2026-05-06-the-post-commit-xor-gate resolves post-build
    • File the CTA-consolidation pattern ('single primary CTA, alternatives as branches') as a reusable voice rule if it recurs on other posts, so future audit-fix commits can cite it as an intent-lane precedent instead of inventing scope each time

    What we learned: The voice-audit tool's own severity signal (BLOCKED with 4 ERRORs + W1, spanning independent sections) is a leading indicator of full-document reality-lane spread that the commit-message convention does not surface — the tool already knows the fix will be wide before the commit is authored, but nothing routes that knowledge into the message's claimed scope.

    The missing guard (the deliverable): A pre-commit check that counts distinct lettered-section headers (## A —, ## B —, etc.) touched in a blog-post diff and, when count > 2, requires the commit message to contain a scope word ('restructure'/'full-pass'/'consolidate') rather than only an itemized ERROR/fix list — cheap, mechanical, and testable against this exact diff.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. litIntent (142) and litReality (136) are close in magnitude but walkTruncated=true flags the walk was cut before full convergence on a post with 12 lettered sections — for a full-post structural edit like this one, the walk is UNDERSIZED for the document's actual section count; raise the per-commit ply/hop budget when diffStat spans >8 distinct heading anchors in one file. Experiments: Run the walk with walkTruncated forced false on this exact sha and diff litIntent/litReality delta against the truncated run — measures how much of the 18pt offPct is truncation artifact vs real drift · Add diffStat heading-count (grep '^## [A-L] —' on the touched file) as a walk-budget multiplier input and re-run this sha to see if offPct converges toward the threshold · Ablate prewalkOverlap=7 to 0 and re-score sigmaDrift to isolate how much of -1.33 is seed-driven vs walk-driven, confirming the 25/75 split above

    This is a lane-labeling defect, not a work-quality defect — the room's loss ratio is dinged on the mistagging signal (now 7 out-of-lane events in 14 days for 🛰️ unattributed), and it's restored by the commit-message scope fix above plus resolving the room-attribution blank flagged in the two prior 🛰️ unattributed lessons, not by touching the post's actual prose.

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

    fix(blog): the halt is real and yours — six surfaces said nothing could stop the agent; the guard now bans the mirror overshoot

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

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

    Open the signed attestation →
  29. 2026-09-11 · 🎤 voice · offPct 20 · structural

    docs(book): regression spec v3 — R8 the unexamined fact, moves 15–20, the mechanics seventeen agents learned

    Why it left the lane: The diff is a book file by path (books/tesseract/reviews/2026-09-11-...md) but its actual vocabulary is process/QA content, not narrative prose: 'regression class R8', 'grep the guards', 'tests/voice/book-*.test.mjs', 'the mechanism sentence exists', 'guard that bans a sibling's materials must strip hrefs', 'grep for the UNIT of a struck number'. Those terms cluster with testing/tooling operations, not with chapter craft — the room's owned-surface glob only names books/tesseract/chapters/*.md, so a reviews/ meta-spec has no declared home lane and the walk's 142 lit-reality cells spread past the 132 lit-intent ones toward Operations/Tactics coordinates instead.

    The semantic pull: Strings that drag placement off-lane: 'grep the guards', 'tests/voice/book-*.test.mjs', 'the guard's own lookahead exemption', 'Guards assert the mechanism sentence exists', 'A per-entry check ... runs before any fan-out', 'the sweep runs inside the chapter'. These read as pipeline/QA-governance language (Operations.Grid / Tactics.Signal territory) layered on top of a file whose only intent-lane signal is its path under books/tesseract/.

    Intent–reality gap: The commit claims book-editing intent ('docs(book): regression spec v3', Relevant-Rooms 🎤 voice/🔒 vault/💻 architect) but the receipt measured 20% of lit reality mass landing outside the voice lane — the content is a QA/regression-taxonomy document about the editing PROCESS, not book prose, and the room's declared surface never fenced that genre.

    • Add `books/tesseract/reviews/*.md` to voice's owned-surface glob (currently only `books/tesseract/chapters/*.md` is listed) so review/spec docs resolve to a declared lane instead of drifting
    • Add a `Lane: process-meta` vs `Lane: prose` commit-trailer convention for anything under books/tesseract/reviews/
    • Seed the reef with this file's recurring vocabulary cluster (regression class, mechanism sentence, guard) as a sub-lane so future reviews/ commits get better prewalkOverlap
    • Run the sourcing pass flagged at the end of the diff itself (ch10 '60–80% probability', '500 million to a billion'; ch8 ~321/~772 unsourced/behaviour-guarantee language) — it's an open TODO this commit already named but didn't close
    • Extend `no-behavior-guarantee` scan (already added to SURFACE_DIRS per this diff) to also run over books/tesseract/reviews/*.md, not just chapters/, since review docs now discuss guarantee language directly

    What we learned: Room ownership is declared by directory glob, not by genre — a 'book' file whose content is entirely about testing/guard mechanics still inherits the voice lane purely from living under books/tesseract/, and the walker has no way to distinguish 'book prose' from 'book-adjacent QA spec' until the glob or trailer says so explicitly. This is a new structural gap: the prior three lessons for this room were all facts-only (no sensemaking channel available then); this is the first time the mechanism is traceable to a specific missing glob entry rather than a generic 'offPct rose' note.

    The missing guard (the deliverable): A coverage test (e.g. tests/ops/owned-surface-coverage.test.mjs) that walks every git-tracked path under books/tesseract/** and asserts it matches at least one room's declared owned-surface glob — reviews/, notes/, outlines/, or any future subdirectory added without a matching glob update fails the guard at commit time instead of surfacing only as a downstream offPct spike.

    Detector probe: signal attribution — gzip reef 55% · ballistic walk 45%. Right-sized, not shallow or saturated: litIntent 132 vs litReality 142 is a modest 10-cell delta at 2 plies, consistent spread rather than runaway divergence. Adjustment: for books/tesseract/reviews/*.md specifically, add a third ply pass keyed to the QA-vocabulary cluster (guard/regex/test) so the walk can separate 'book meta-spec' sub-lane from 'book prose' sub-lane instead of both sharing one shallow read. Experiments: Seed the reef with a 'book-meta-spec' vocabulary cluster (regression class, mechanism sentence, guard, retention leg) drawn from this file, then recompute prewalkOverlap on the next reviews/*.md commit and check it rises above 10 · Track room-mean offPct separately for books/tesseract/reviews/*.md vs chapters/*.md over the next 10 commits to confirm reviews/ is the systematic driver, not a one-off · After adding the glob + trailer, re-run this exact sha's receipt through the pipeline offline and confirm offPct drops below 15 with the corrected lane declaration

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

    An undeclared genre inside a correctly-pathed file reads as a lane breach and nudges 🎤 voice's loss ratio up on paper without any real editorial fault; restoring the premium is the glob extension plus the coverage guard, which converts this from a recurring 'mystery drift' into a one-time fencing fix.

    Open the signed attestation →
  30. 2026-09-11 · 📐 architect · offPct 35 · mistagged

    feat(ops): the spend door — frontier tokens default OFF, gemstart opens it; sh-only ingest 15–30 min lid-closed; gcal retry storm capped

    Why it left the lane: 16 changed paths are all operations/controller code — scripts/ops/spend-mode.sh (new), scripts/chat/gemini-pulse-tick.sh, scripts/gcal-agent/poll-execute.sh, scripts/controller/{decision-cycle,cos-overnight,whatsapp-cos}.sh, scripts/cog/accept-to-spec.mjs, scripts/rooms/daily-shoot.sh, .claude/commands/{gemstart,gemstop}.md, tests/ops/spend-mode.test.mjs, tests/gcal-agent/retry-storm-capped.test.js. None match architect's owned globs (docs/strategy/{architecture,requirements,spec-*,plan-of-record-*,cardinal-*}, docs/03-product/{positioning,features,branding}, .workflow/rooms/*.html, docs/01-business/strategy/, CLAUDE.md) as defined in scripts/room-drift-architect-check.sh's own is_architect_owned() predicate. The commit's own trailer names the true owner: 'Relevant-Rooms: operator · architect · builder' — builder owns scripts/**, which is exactly the walk's steering line: 'pull: B3.Tactics.Signal ×11 · C1.Operations.Grid ×5 · B1.Tactics.Speed ×3 · B2.Tactics.Deal ×3 · C2.Operations.Loop ×3 · C3.Operations.Flow ×3 · off-lane 100%' — Operations/Grid/Loop/Flow/Signal are the builder-adjacent coords the '14 sites' wiring drags mass into.

    Intent–reality gap: The commit's Originating-Terminal trailer says 📐 architect; the receipt measured 100% of lit reality mass (litReality=139) outside architect's owned surface. But the commit's own Relevant-Rooms trailer already discloses this — 'operator · architect · builder' — so the commit is not lying, the detector is reading the wrong trailer.

    • Wire scripts/room-drift-architect-check.sh into an actual hook — no .git/hooks/commit-msg file exists at all today (only pre-commit/post-commit/pre-push), so the script has never fired via git since it was staged executable in 5674280430 on 2026-05-12.
    • Add tests/ops/room-drift-architect-check.test.sh asserting (a) a hook file actually invokes the script, (b) a synthetic commit with 'Originating-Terminal: 📐 architect' + non-owned staged paths triggers it (proves the regex fix), (c) the same commit with 'Relevant-Rooms: operator · architect · builder' and paths under scripts/** exits 0 via the new exemption.
    • Patch CLAUDE.md's COMMIT MESSAGE STRUCTURE section per spec_rewrite above so the receipt pipeline's room-lane source is documented, not implicit.
    • Audit scripts/rooms/room-activity.mjs:233/351-352 and scripts/pmu/prompt-lens.mjs:1327 (both already read Originating-Terminal for room attribution) — confirm neither is the actual offPct-computing path for this receipt; if one is, apply the same Relevant-Rooms-first fix there instead of/in addition to the shell script.
    • Grep the last 14 days of 📐architect commits for Relevant-Rooms containing 'builder' or 'operator' and cross-check against the 156-event out-of-lane count cited for this room — this likely accounts for a large share of it.

    What we learned: The fix for this exact class was already built, not just spec'd — scripts/room-drift-architect-check.sh has existed as an executable since 2026-05-12 (commit 5674280430), the thing the prior lesson (ff09774e5) said three rooms independently spec'd without anyone shipping. It WAS shipped. It has never fired: no .git/hooks/commit-msg exists to call it, and its own trigger regex looks for a retired string ('room: architect') that the mandated trailer format (Originating-Terminal/Relevant-Rooms) never emits. A hook-shaped script sitting outside .git/hooks/ with a dead trigger condition is functionally unshipped forever, and nothing caught the gap because no test asserts the hook actually fires — shipped code with zero firing-test coverage is indistinguishable from no code at all.

    The missing guard (the deliverable): tests/ops/room-drift-architect-check.test.sh: assert scripts/room-drift-architect-check.sh is invoked by a file under .git/hooks/ (or an equivalent lint-staged/husky config checked into the repo, not the local .git/hooks/ copy alone) AND assert its commit-message trigger matches the CURRENT mandated 'Originating-Terminal: <emoji> <room>' trailer via a synthetic fixture — both assertions FAIL today, which is the seen-to-fail evidence.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized in ply count but starved on breadth for a commit this wide: only 2 plies against a diff touching 16 files across 6 script subsystems (ops/chat/gcal-agent/controller/cog/rooms), and walkTruncated=true confirms it hit budget before fully resolving. Adjustment: scale ply budget (or the fill% cap, currently 0.85% vs an implied 70% ceiling) with diff-file-count — a commit touching ≥10 files across ≥4 top-level script directories should get one extra ply before truncating. Experiments: Re-run this receipt with the reef seed restricted to the 3 Relevant-Rooms' owned globs (operator/architect/builder) instead of the full 144-cell reef, and diff offPct — if it drops well below 35, that confirms Originating-Terminal-only seeding (not Relevant-Rooms) is the actual driver and quantifies the gap. · Append each Relevant-Room's owned-surface file list to the gzip-NCD dictionary as a seed corpus for commits carrying multi-room trailers, then measure whether prewalkOverlap rises above 2 for this commit specifically on re-run. · Backfill: grep the last 14 days of 📐architect-Originating-Terminal commits, split by whether Relevant-Rooms lists a second owning room (sanctioned) vs not (true drift), and report the split against the 156-event count cited for this room — this sizes how much of the room's drift backlog this one fix actually clears.

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

    A shipped-but-unwired guard sitting dormant for 4 months while its own room's offPct climbed 14→28→26→35 is a loss-ratio problem specific to this lane — every future architect-tagged infra commit is mispriced as drift until the hook actually fires; restoring it is the wiring fix above, not a new instrument.

    Open the signed attestation →
  31. 2026-09-11 · 📐 architect · offPct 30 · mistagged

    feat(pmu): one typed reader — a refusal can never be read as a measurement

    Why it left the lane: The diff is entirely scripts/pmu/tape-receipt.mjs, scripts/pmu/tape-blend-sweep.mjs, tests/pmu-simulator/tape-receipt-is-typed.test.mjs and specs/s-0150.one-typed-reader-for/* — zero touches to 📐 architect's own owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md). spec.md itself self-declares 'Coordinate C2 Operations.Loop', a coordinate architect's glob never claims. Any lane computation seeded from Originating-Terminal=📐architect's owned paths necessarily reads the walk/tests/spec mass as leaked, because none of it lands where architect is permitted to land.

    The semantic pull: Not a semantic pull toward a wrong topic — a structural pull toward wherever the code actually belongs (scripts/pmu, tests/pmu-simulator) because that's what a 'typed reader for a tape receipt' concretely requires. The pull is the mismatch between the Originating-Terminal trailer (📐 architect) and the Relevant-Rooms trailer (🔨 builder, 🧪 laboratory) which CLAUDE.md's own commit-trailer protocol explicitly permits — the detector is reading only the first field.

    Intent–reality gap: The commit claims architect authorship (Originating-Terminal: 📐 architect) and a Story about AXIOM 1 discipline; the receipt measures 100% of the touched-path mass in scripts/pmu + tests/pmu-simulator + specs/ — files owned by builder and laboratory, not architect. The work is correct; the room attribution on the commit is not.

    • CLAUDE.md COMMIT MESSAGE STRUCTURE section: state that Originating-Terminal must match the room whose owned-glob covers the majority of touched paths, not whichever terminal typed the commit
    • specs/*/spec.md template: add an 'Owning-Room:' header field derived from Targets, so lane checks don't have to reverse-engineer it from trailers
    • Ship room-drift-<room>-check.sh for real — three prior lessons (ff09774e5 and its siblings) spec'd this identically and none shipped; this is the fourth occurrence in this room alone
    • Wire the lane detector to accept ANY room in Relevant-Rooms whose owned-glob matches ≥threshold of touched paths as in-lane, not only Originating-Terminal
    • Audit the room's other 127 out-of-lane events from the last 14 days for the same mistagging signature (Relevant-Rooms owns the paths, Originating-Terminal doesn't) to size how much of the 14→28→26→... trend is this bug vs real drift

    What we learned: Prior lesson ff09774e5 diagnosed this exact mechanism and was independently re-derived by three rooms, and it measurably worked as AWARENESS (offPct 20→14) — but awareness alone decays once the actual detector code isn't patched: this room is back to offPct 30 with 127 out-of-lane events in 14 days. A diagnosis-only intervention has a half-life; only a shipped guard is durable. This event is the decay curve made visible.

    The missing guard (the deliverable): A lane-classification check that computes touched-path-to-owned-glob overlap for EVERY room named in Relevant-Rooms (not Originating-Terminal alone) and calls a commit out-of-lane only if NO listed room's owned-glob is satisfied — implemented as the room-drift-<room>-check.sh already spec'd three times and never shipped.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Right-sized, not shallow or saturated — litIntent≈litReality means the walk covers comparable ground on both sides. The adjustment isn't depth, it's seed source: seed the intent walk from spec.md's self-declared Coordinate field when present, in addition to the Originating-Terminal owned-glob. Experiments: Recompute lane classification for the last 20 out-of-lane architect events using spec.md's Coordinate field as an alternate seed; measure how many resolve to in-lane · For commits with ≥2 Relevant-Rooms, compute offPct per room and take the min across rooms; ablation-test against current single-room offPct over 30 days of receipts · Add 'Owning-Room:' parsing to the receipt pipeline and ablation-test whether it reduces false-positive out-of-lane flags for spec-driven commits specifically

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

    This is a false-positive against 📐 architect's loss-ratio — the work is sound and correctly scoped, only mislabeled — so the lane's premium is restored not by architect doing less cross-lane work but by shipping the Relevant-Rooms-union lane check that a threefold-spec'd, never-shipped fix has been waiting on since the prior lesson.

    Open the signed attestation →
  32. 2026-09-11 · 🎤 voice · offPct 20 · structural

    docs(book): regression spec v2 — fourteen moves, six axes, the mechanism inventory, the fan-out mechanics

    Why it left the lane: The claimed lane is git-discipline (commit/push/iteration bundle), but item 14 ('Mechanics — what keeps seventeen agents from colliding') and the 'Scope of the fan-out' section are pure multi-agent orchestration/concurrency content: 'seventeen concurrent agents', 'the orchestrator runs ONE build after all chapters land', 'if git commit fails on index.lock, wait 5-15 seconds and retry', 'One opus agent per file, all dispatched in one message', and the mechanism-inventory's 'link it — never re-derive it' reuse-economy language. These pull toward Operations.Grid (the 17-chapter dispatch topology), Operations.Loop (the fan-out/build-once cycle), Operations.Flow (concurrent-commit throughput), and Tactics.Deal (the link-don't-re-derive exchange pattern) — none of which is 'commit an iteration' craft, which is the only thing the git-discipline pixel covers.

    The semantic pull: Same as above — the diff's own inventory/dispatch vocabulary (agent count, build sequencing, lock-retry timing, mechanism-reuse-as-exchange) is structurally Operations/Tactics content wearing a 'docs(book)' commit-message.

    Intent–reality gap: The commit claims a book/voice deliverable ('the brief the seventeen agents receive... written after the pilot'), but the receipt shows 20% of the lit reality mass sitting in Operations.Grid/Loop/Flow × Tactics.Speed/Deal cells — the doc is, in its majority mass, an orchestration/concurrency-control protocol, not book-voice content, even though it is filed and committed as one.

    • Create docs/architecture/claude-rules/book-fanout-mechanics.md and move item 14 + fan-out scope + mechanism inventory into it
    • Leave a single-line pointer from the reviews doc to the new mechanics file
    • Add 🔨 builder as a second Relevant-Rooms/co-owner entry for any future books/tesseract/reviews/*.md commit that touches concurrency/dispatch language
    • Extend ITERATION DISCIPLINE in CLAUDE.md: a regression-spec commit mixing craft axes with orchestration mechanics is TWO iterations, split into two commits by room
    • Add an owned-surface glob for docs/architecture/claude-rules/book-fanout-mechanics.md under the builder room's declared surface

    What we learned: This room's 'regression spec' artifacts are dual-content by construction: their job is to brief N parallel agents on BOTH what to write (craft) and how not to collide while writing it (concurrency/dispatch) — no doc template separates those, so every such spec commit will off-lane on its mechanics half regardless of how many prior facts-only interventions fired (the prior three all measured the pattern worsening, never diagnosed it).

    The missing guard (the deliverable): A pre-commit check on books/tesseract/reviews/*.md that scans the staged diff for orchestration-keyword hits (concurrent|index\.lock|dispatch|fan-out|agents? per file|race) and, if found without a matching second Relevant-Rooms entry beyond 🎤 voice, blocks with 'split this commit: craft vs mechanics.'

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Right-sized in volume, under-fenced in breadth: litIntent≈litReality but the lit reality cells are scattered across all six off-diagonal Operations×Tactics blocks rather than clustering near the declared C×B3 cell. Adjustment: cap ply-2 term expansion to words co-occurring with the commit's own domain trailer (git-discipline) rather than letting fan-out/dispatch vocabulary expand into the full Operations/Tactics corpus. Experiments: Re-run this sha's walk with the reef seed restricted to the git-discipline rule cluster only (exclude general orchestration corpus) and measure whether offPct drops below 15 · Add a second domain trailer to reviews/*.md commits and test whether the lens narrows placement when trailer-declared rooms constrain the walk · Ablate the phrases 'seventeen concurrent agents' / 'index.lock' / 'dispatched in one message' from the reef and re-score 711fcf2266 to measure how much of the 31-red spread they alone account for

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

    A chronic (108-event) off-lane pattern in one room raises this lane's loss-ratio regardless of any single commit's intent quality; splitting craft from mechanics content and gating on the keyword check is what would let underwriting re-price the git-discipline lane back down.

    Open the signed attestation →
  33. 2026-09-11 · 🔨 builder · offPct 41 · mistagged

    fix(hooks): the attestation tape gets its own Stop hook — it had been dead since 08-28

    Why it left the lane: The diff's real work is two lines of substance: a new entry in .claude/settings.json's Stop hooks array, and the new script scripts/cog/lens-sidecar-stop-hook.sh. .workflow/rooms/claude-laboratory.html explicitly lists '.claude/settings.json, .claude/settings.local.json — hook config, permissions, env vars' under that room's Owned file/dir surface, and iterm2-builder.html's own Forbidden-surface list even names hook rule SPECS as Lab Cursor's, not builder's. Builder's declared surface (src/app/, src/components/, public/, book scripts, CRM, vercel.json) matches neither changed file. The terms that pulled the mass sideways are exactly the ones laboratory's doc uses verbatim: 'hook config' / 'Stop hook' / the scripts/cog/ prefix — laboratory vocabulary, not builder's.

    Intent–reality gap: The commit message frames this as a routine builder fix ('the attestation tape gets its own Stop hook'), but the receipt measured 41% of the lit reality mass sitting outside the builder lane because the touched files (.claude/settings.json, scripts/cog/) are laboratory's declared territory, not builder's — the work is correct, the room tag is not.

    • Implement scripts/room-drift-builder-check.sh exactly as iterm2-builder.html's own 'Drift-detection hook' section already spec's it ('flags any staged file outside the owned surface when the commit message includes room: builder or the session is open in iTerm2') — it is documented, not built.
    • Generalize that check to all 9 rooms, resolving owned surface by reading .workflow/rooms/<room>.html's 'Owned file/dir surface' list for whichever room the Originating-Terminal trailer names, not a hardcoded builder-only path.
    • Add scripts/cog/** explicitly to claude-laboratory.html's Owned file/dir surface list alongside .claude/settings.json — Stop-hook capture scripts keep landing there and the glob should say so.
    • Cross-check Originating-Terminal against Relevant-Rooms at commit time: if the staged diff matches a room's owned surface only when that room is one of the Relevant-Rooms and not the Originating-Terminal, warn with the suggested retag.
    • Record the correction on this specific commit via git notes (never amend, per the parallel-rooms rule) rather than rewriting the trailer.

    What we learned: The exact guard this event needed is not a gap to discover — it is already specified, by name, inside the builder room's own architecture doc ('scripts/room-drift-builder-check.sh (spec'd, not yet implemented)'). This repo has repeatedly diagnosed this failure class at the documentation layer and never graduated the diagnosis into an enforced script; fb93ed948's generic 'Relevant-Rooms is ignored' finding measured worse afterward (30→40) most likely because nothing concrete shipped — the fix that would work already has a name and a spec, it just needs to be written.

    The missing guard (the deliverable): A pre-commit check implementing the already-spec'd scripts/room-drift-builder-check.sh (generalized to all 9 rooms): for each staged path, resolve the owning room via .workflow/rooms/*.html's declared Owned file/dir surface; if the resolved room differs from both Originating-Terminal and every room in Relevant-Rooms, warn (advisory, matching the WIP-CLAIMS enforcement pattern already used elsewhere in this repo).

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. walkTruncated=true with near-identical fill counts on both sides (104/97, 104/102) means truncation, if it mattered, affected intent and reality symmetrically — inconclusive on its own. Concrete adjustment: rerun this sha with the truncation cap doubled and diff offPct; if it drops, the cap is masking convergence repo-wide and should rise, if stable, truncation is ruled out as a driver for this class. Experiments: Recompute this commit's receipt using .workflow/rooms/*.html's Owned file/dir surface text as the reef seed per room (not the room's terminal name alone), then remeasure offPct to test whether laboratory's lane absorbs the .claude/settings.json + scripts/cog mass. · Seed 'Stop hook', 'hooks.json', 'scripts/cog' as reef dictionary terms tied to a laboratory-lane bucket, then recompress the last 14 days of laboratory-relevant commits and check whether prewalkOverlap rises above 3 for this class. · Bucket the room's 64 out-of-lane events by whether the touched paths match ANOTHER room's declared owned surface vs match NO room at all — splits mistagged from genuinely structural/orphan cases and would validate or refute the mistagged verdict here at scale.

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

    An infra-correct commit mistagged into the wrong room's lane inflates that room's measured loss ratio without any actual defect in the work, which is restored only by fixing attribution (the already-spec'd drift-check guard) rather than by discouraging the underlying hook-repair work itself.

    Open the signed attestation →
  34. 2026-09-11 · 🎤 voice · offPct 35 · structural

    fix(track): the iamfim constellation was not broken, it was 72 hours stale — regenerate, and guard the age

    Why it left the lane: The diff carries zero vocabulary from 🎤 voice's owned surface (books/tesseract/chapters/*.md, src/content/blog/*.mdx, decentralizedtalk/slideData.ts, src/app/6needs/). Instead every touched path and every term is track/infra: src/data/scan-dots.json (lat/lon/ageH/tier/trail/generatedAt/coverage), tests/track/scan-dots-freshness.test.mjs, and prose like 'the route's own header says by hand', 'no launchd job, controller stage, or hook', 'wiring the regen into hooks/pre-push'. That is Operations.Grid/Signal-shaped language (cadence, staleness, regeneration cron) with no B3.Tactics.Signal content-craft mass, so the walk had nothing in the voice lane to anchor on and spread almost entirely into infra coords.

    The semantic pull: Terms 'freshness guard', 'generatedAt', 'age', 'regenerate', 'launchd job', 'controller stage', 'hooks/pre-push' pulled the placement toward Operations.Grid/Loop/Flow (the 28 encircled reds are dominated by Tactics.Speed×Operations.Grid/Loop/Flow — topology, velocity, throughput, exchange), none of which overlaps the voice room's content coordinates.

    Intent–reality gap: The commit message is scoped and honest — it explicitly self-labels 'Persona-Intent: n/a — infra' and lists Relevant-Rooms as voice/network/builder — but Originating-Terminal is still stamped 🎤 voice even though nothing in the diff belongs to voice's owned-file glob; the receipt then measures pure track/infra reality against a content-room's intent lane and, unsurprisingly, finds it almost entirely off-lane.

    • Add the Originating-Terminal↔file-glob rule (see spec_rewrite) to CLAUDE.md or docs/architecture/claude-rules/doors-and-surfaces.md
    • Extend each room's owned-file-surface declaration (wherever the '.workflow/rooms/*.html' globs live) with an explicit EXCLUDE list for src/data/**, scripts/track/**, tests/track/** pointing to 🔨 builder/🌐 network
    • Ship an advisory (not blocking, per NEVER COMMIT HOOKS-OFF) post-commit script comparing the Originating-Terminal trailer to `git diff --name-only` against every room's glob, printing the best-match room when they disagree
    • Backfill the room-ownership doc/table to name track/iamfim explicitly as 🔨 builder/🌐 network territory so future infra fixes from any terminal self-correct the tag before committing

    What we learned: Originating-Terminal is entirely self-declared free text with zero cross-check against the diff's actual touched paths — any terminal, regardless of which room's content it's mid-session on, can commit unrelated infra work under that room's banner, and the drift receipt then faithfully measures a content-lane's intent against infra-shaped reality every time. This is a room-attribution defect, not a code-placement defect, and it generalizes past this one commit to every 'quick infra fix from whatever terminal was open' pattern.

    The missing guard (the deliverable): A post-commit advisory (tests/ops/originating-terminal-matches-surface.test.mjs style, WARN-only like the WIP-claims guard) that diffs the Originating-Terminal trailer against `git diff --name-only <parent>..HEAD` mapped through each room's owned-file-surface glob, and prints the room whose glob actually covers the majority of touched paths when it disagrees with the declared one.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Breadth looks right-sized (litIntent≈litReality, 123 vs 132) but starved of shared seed material given prewalkOverlap=3 — the fix is not deeper plies, it's widening what the reef seeds for this room so a legitimate cross-room infra vocabulary (scan-dots, iamfim, freshness, regenerate, launchd, beacon) has somewhere non-voice to anchor before the walk runs. Experiments: Re-run this commit's receipt with Originating-Terminal forced to 🔨 builder and confirm offPct drops below the 15 threshold — isolates the room-tag as the driver vs any genuine semantic drift. · Seed the reef with a track/infra vocabulary cluster (scan-dots, iamfim, freshness, regenerate, launchd, beacon) tagged to 🔨 builder/🌐 network, then recompute prewalkOverlap on this same commit — measure whether it rises materially above 3. · For the next 20 commits tagged 🎤 voice, compute file-glob match % against voice's owned-surface list at commit time and correlate against offPct — confirms whether room-mismatch predicts offPct better than message semantics alone.

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

    This event follows three prior facts-only interventions on 🎤 voice with a worsening offPct trend, so it raises the lane's loss-ratio by diluting the receipt's signal for genuine content drift with recurring room-mislabeling noise; premium is restored only by deriving room attribution from the diff's touched paths rather than trusting the self-declared Originating-Terminal trailer.

    Open the signed attestation →
  35. 2026-09-11 · 🖥 cuo1 placedTap · offPct 47 · structural

    fix(scan): a tap that reaches the lightbox root closes it — the phone delivers Placed to the root, not the button

    Why it left the lane: The diff's mass is dominated by DOM/touch-mechanics vocabulary — three literal `touch-manipulation` class insertions, the root hit-test `onClick={(e) => { if (e.target === e.currentTarget) close('backdrop'); }}`, the overlay selector `div.fixed.inset-0.z-[90]`, and the test's `dispatchEvent('click')` on `[role="dialog"]` — none of which are tracking/telemetry terms. Those terms walk to the Speed/Grid/Loop/Flow coordinates (touch-manipulation removes the 300ms tap delay = velocity/throughput; root-vs-child hit-testing = topology), pulling 47% of lit reality off the Signal×Send coordinate (C,B3) that the room's commit-message-inferred lane sits on — a lane built from 'click', 'route', 'outcome', 'receipt', 'tape', 'fetch' in the prose, not from the CSS/event-delivery code actually touched.

    The semantic pull: `touch-manipulation` (×3 literal insertions), `e.target === e.currentTarget` (root-identity hit-test), `div.fixed.inset-0.z-[90]` (overlay root selector), `dispatchEvent('click')` (synthetic event bypassing normal bubbling) — each is DOM-structure/input-latency vocabulary, dragging placement into B1-B3 × C1-C3 (Tactics.Speed × Operations.Grid/Loop/Flow) away from the room's inferred Signal×Send seed at C,B3.

    Intent–reality gap: The commit claims to be a 'placedTap' fix — closing the lightbox when the phone's tap lands where the operator expects — but the receipt measured under half the lit mass actually landing in the tap-tracking/telemetry lane; the rest sits in general DOM-event-delivery and touch-latency territory that the room's declared (or rather undeclared) lane never fenced.

    • Create `.workflow/rooms/cuo1-placedtap.html` (or the project's actual owned-surface path) declaring the ScanNeighbourhoodAsk.tsx + its test file as owned surface, scoped to include touch-delivery mechanics explicitly
    • Extract `close()` + its `fetch` telemetry call into `useScanCloseTracking.ts`; update `ScanNeighbourhoodAsk.tsx` to import it
    • Add a code comment at the new root `onClick` cross-referencing the owned-surface declaration so the next reader knows this line is claimed DOM-mechanics, not tracking, work
    • Run `bash scripts/pmu/post-drift-history.sh` against this sha once the owned-surface file exists, to confirm offPct drops on re-score
    • Add a CI/pre-commit check: a commit from a room with no matching `.workflow/rooms/*.html` entry gets flagged BEFORE scoring, not silently scored 100% off-lane
    • Seed `touch-manipulation` and `uppercase tracking-[0.16em]` into the gzip baseline dictionary (see compression_dictionary_adds) and re-run the ablation

    What we learned: A room can accrue commits and an offPct history with NO owned-surface declaration behind it at all — the lane the receipt scores against is silently reconstructed from commit-message prose alone, which means every future fix to this same component is pre-destined to score off-lane the moment its vocabulary tilts toward implementation (CSS/DOM/touch) rather than narrative (tracking/receipt/tape), regardless of code quality.

    The missing guard (the deliverable): A pre-score gate that refuses to compute offPct for a room with no matching `.workflow/rooms/*.html` owned-surface file — surfacing 'UNSCOPED ROOM' instead of a numeric offPct, so an absent declaration is never silently rendered as a 47% violation.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. walkTruncated=true with litIntent/litReality both in the 120-134 range on a 2-file, 31-line diff suggests the walk hit a depth/budget ceiling before it could fully resolve such a small, sharply-bounded change — right-sized for a large diff, too shallow for this one. Adjustment: raise (or waive) the truncation budget when diffStat line-count is below a small threshold (e.g. <50 changed lines), since small diffs are cheap to walk to full depth. Experiments: Re-run the reef seed placement for sha 94658f9ff with the owned-surface file present and measure whether prewalkOverlap rises above 6 — if it does, the missing-declaration hypothesis is confirmed as the dominant cause · Ablate: recompute offPct with `touch-manipulation` and `uppercase tracking-[0.16em]` added to the gzip baseline dictionary and compare against this run's 47% to see if generic Tailwind boilerplate is itself inflating the Speed/Grid seed weight · Compare prewalkOverlap across the room's other commits from the last 14 days (the '1 out-of-lane event' baseline) to check whether low overlap is a per-room pattern or unique to this sha

    An unscoped room scoring 47% off-lane on a legitimate one-file bugfix inflates this lane's apparent loss ratio with a false claim; restoring the owned-surface declaration and re-scoring is what separates real drift from a phantom lane before any premium adjustment is warranted.

    Open the signed attestation →
  36. 2026-09-11 · 📐 architect · offPct 18 · mistagged

    fix(blog,book): kidney — he did not organise the battle; he gave the little kids the map

    Why it left the lane: The commit's Originating-Terminal is '📐 architect', but architect's owned surface is docs/strategy/, docs/03-product/, docs/01-business/strategy/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, and CLAUDE.md. NONE of the 12 touched paths sit in that list — the real mass is books/tesseract/chapters(-html)/07-*, src/content/blog/2026-09-11-*.mdx, docs/architecture/claude-rules/the-field-invariant.md, and tests/voice/book-exponential-is-a-foam-knife.test.mjs. The one path that superficially looks architect-shaped — docs/architecture/claude-rules/the-field-invariant.md — shares the string 'architect' with the room label ('architect' vs 'architecture') without sharing the actual glob; the room's real owned-surface list explicitly excludes docs/architecture/. That lexical rhyme is the pull toward the architect lane while the true content (book prose + a voice-test guard) belongs to voice/builder.

    The semantic pull: Two concrete strings drive it: (1) the path segment 'docs/architecture/claude-rules/the-field-invariant.md' textually contains 'architect', gzip-matching the room label '📐 architect' even though the owned-surface glob for that room never lists docs/architecture/; (2) the added guard block in tests/voice/book-exponential-is-a-foam-knife.test.mjs ('const RETIRED_ROLE = [...]', 'assert.doesNotMatch(text, re, ...)') is infra/test vocabulary that reads like Operations/Grid material, not architect-strategy material, dragging reality mass toward the builder-owned coordinate instead. No per-sha region narrative is cached, so coordinate attribution here is inferred from the owned-surface table and the diff strings, not from a cached ballistic-walk trace.

    Intent–reality gap: The commit message and trailers claim the architect lane (Originating-Terminal: 📐 architect) for what is, path-for-path, a voice/book-craft prose fix plus a builder-owned test guard; the receipt measured 18% of the lit reality cells sitting outside every glob architect actually owns.

    • Ship the unified scripts/ops/room-drift-<room>-check.sh spec'd independently by architect/navigator/laboratory per lesson ff09774e5 — it is still unshipped after 8+ commits and this event recurs without it.
    • Add a warn-only check to that script: 0 touched paths matching Originating-Terminal room's owned-surface glob → print the room whose glob DOES match the plurality (here: voice 2/4 semantic files, builder 1/4).
    • Document explicitly, next to the architect room's owned-surface list, that docs/architecture/** is a SHARED cross-room ruleset directory, not architect-owned, to kill the 'architecture' vs 'architect' string collision at the source.
    • Audit the room's other 127 out-of-lane events in the last 14 days for the same substring-collision signature (any touched path containing 'architect' as a substring of a longer word) and report what fraction this mechanism explains.
    • Update the commit-trailer template/checklist so Relevant-Rooms is read as the multi-room intent seed by the detector, not just displayed.

    What we learned: Prior lesson ff09774e5 diagnosed the detector keying off Originating-Terminal alone despite CLAUDE.md sanctioning Originating-Terminal/Relevant-Rooms divergence — that is a TRAILER-SEMANTICS gap. This event reveals a SEPARATE, narrower mechanism that survives even a perfect trailer fix: a bare substring collision between a room's display name ('architect') and an unrelated directory name ('docs/architecture/') can independently mistag a commit, because nothing in the owned-surface declarations or the classifier distinguishes 'this path contains my name' from 'this path is in my glob'.

    The missing guard (the deliverable): A path-glob-vs-Originating-Terminal check (the room-drift-<room>-check.sh spec'd three times, never shipped) that fails loudly (warn-only, never blocking, per the hooks-never-block rule) when zero touched paths match the claimed room's owned-surface globs, and additionally flags when the ONLY apparent match is a bare substring hit (e.g. 'architect' inside 'architecture') rather than a real glob hit.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Right-sized, not shallow or saturated: every walk step lit a cell on both sides (125/125 intent, 134/134 reality), and the intent-to-reality growth is a modest +9 cells (~7%). One concrete adjustment: scale the intent-side walk budget by the number of rooms declared in Relevant-Rooms (here 3: architect/voice/builder) so a multi-room-declared commit gets an intent lane wide enough to legitimately cover all three, instead of a single-room-sized intent budget racing a wider reality spread. Experiments: Seed the gzip-NCD dictionary with the literal owned-surface glob strings per room (e.g. 'docs/strategy/', 'tests/', 'src/content/blog/') and re-run this commit's receipt to see if offPct drops when placement is anchored to real globs instead of label strings. · Strip room-label substrings that collide with unrelated directory names (log 'architect' vs 'architecture' as a known collision pair) from the room-identity dictionary entries, then re-measure this sha. · Parse Relevant-Rooms into the intent-lane walk seed (multi-room intent) for commits declaring >1 room, and compare offPct against Originating-Terminal-only seeding over the next 10 such commits.

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

    A fourth independent instance of the 'room-drift-check never shipped' debt plus a newly-identified substring-collision vector keeps this lane's loss-ratio elevated (128 out-of-lane events/14 days); premium is restored only when the unified path-glob check actually lands in a commit (not just a fourth spec) and CLAUDE.md's trailer rule stops treating a name-rhyme as a lane match.

    Open the signed attestation →
  37. 2026-09-11 · 🔨 builder · offPct 58 · mistagged

    docs(spec): lens recall loop — pieces 11-13 (catalogue email, pass diff, tape turn-by-turn) and the first live measurement (17%)

    Why it left the lane: The diff touches exactly one file — docs/superpowers/specs/2026-09-11-lens-recall-closed-loop.md — which is 100% outside builder's owned surface (src/app, src/components, src/lib, public, book/CRM scripts, hooks). The strings doing the pulling are the row-11/12/13 additions themselves: 'catalogue email', 'attestation tape', 'Stop hook' — these are pmu/lens infrastructure vocabulary, not builder-lane vocabulary (UI/book/CRM). The commit is pure spec-doc bookkeeping for a system (lens-recall) that lives entirely in scripts/pmu/ and docs/superpowers/, so every lit cell the walk found sits outside the five paths builder legitimately claims — hence offPct=58 against a 15 threshold, with the walk finding almost total non-overlap (litIntent=128 vs litReality=127, prewalkOverlap only 6).

    The semantic pull: The trailer says 'Originating-Terminal: 🔨 builder' but Relevant-Rooms lists 'laboratory, operator, builder' — the commit itself admits multi-room relevance, then the receipt only reads the single Originating-Terminal field as the lane definition (this is the exact fb93ed948 gap, already logged as a prior lesson for this room, and it recurred here at a larger magnitude: 26→58).

    Intent–reality gap: The commit claims to be a 🔨 builder-room action; the receipt measured the actual work landing entirely in pmu/lens spec territory (scripts/pmu/, docs/superpowers/specs/) that no builder-owned glob covers — the room tag is wrong, not the work.

    • Add a path-to-room resolver step in the receipt pipeline that consults Relevant-Rooms trailer + .workflow/rooms/*.html owned globs before computing offPct, not just Originating-Terminal
    • Update CLAUDE.md COMMIT MESSAGE STRUCTURE to state explicitly that Originating-Terminal should match the room whose owned surface the diff lands in, falling back to Relevant-Rooms[0] when they diverge
    • Add an owned-surface glob for docs/superpowers/specs/** and scripts/pmu/** to whichever room (laboratory or operator) actually owns lens-recall spec work, closing the 'unowned surface' gap this commit fell into
    • Add a lightweight pre-commit check that warns (not blocks) when Originating-Terminal's owned-surface glob has zero overlap with the changed paths, pointing the author at Relevant-Rooms
    • Cross-reference fb93ed948 in the pipeline code itself (a comment citing the lesson) so the next person touching lane-resolution logic sees the prior diagnosis instead of re-deriving it

    What we learned: fb93ed948 diagnosed this exact mechanism (Originating-Terminal-only lane resolution ignoring self-declared Relevant-Rooms) three commits ago and it was filed as sensemaking only — no code or spec patch shipped, so the same room produced the same failure again at more than double the offPct (26→58). Sensemaking without a shipped patch does not reduce recurrence; the measured outcome column confirms it (30→40 after fb93ed948, and now this).

    The missing guard (the deliverable): tests/pmu-simulator/lane-resolver-consults-relevant-rooms.test.mjs — asserts that for any commit with a Relevant-Rooms trailer, the receipt's lane computation is NOT solely a function of Originating-Terminal; feed it a synthetic commit with Originating-Terminal=builder, Relevant-Rooms=[laboratory,operator,builder], paths under docs/superpowers/specs/, and assert offPct is computed against the union of Relevant-Rooms' owned surfaces, not against builder's alone.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Right-sized, not shallow or saturated: litIntent and litReality are nearly equal (128 vs 127) and walksIntent/walksReality track closely (128/127), so the walk explored comparably-sized regions on both sides rather than truncating early on one side — walkTruncated=true is flagged, though, so confirm the truncation bound isn't clipping either side asymmetrically before trusting the 58% figure at higher precision; one concrete adjustment: re-run with the truncation cap raised 2x on this same sha and diff the offPct to confirm it's stable, not an artifact of where the walk was cut off. Experiments: Re-run the reef seed step for sha 995cd8eb24 with Relevant-Rooms paths (laboratory, operator owned globs) added to the seed corpus alongside builder's, and check whether prewalkOverlap rises materially above 6 — if it does, that's direct evidence the reef is under-seeded for multi-room commits specifically · Run walkTruncated=false (raise or remove the cap) on this sha and compare offPct; if it moves >5 points, the truncation bound needs tightening/documenting as a known source of receipt variance · Ablate: recompute offPct for the last 10 'docs(spec):'-prefixed commits in this room with a Relevant-Rooms-aware lane union vs the current Originating-Terminal-only lane, and report the delta in mean offPct — this directly tests whether the spec_rewrite's resolver would have caught this class historically

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

    A repeat of a previously-diagnosed-but-unfixed lane-tagging defect (26→58, second occurrence) raises this lane's loss-ratio because sensemaking-only passes are proven not to reduce recurrence here; premium is restored only by landing the Relevant-Rooms-aware resolver + guard in an actual commit, not by a third round of diagnosis.

    Open the signed attestation →
  38. 2026-09-11 · 🛰️ unattributed · offPct 24 · structural

    auto-apply(blog-research): external-source on 2026-05-08-theta-is-empty-targets-fill-it (cert=0.95, imp=0.85)

    Why it left the lane: The diff itself is one markdown-link wrap around the phrase 'dark silicon' inside a paragraph that is otherwise dense patent/architecture prose ('address-decoder geometry that carries semantic identity', 'the displacement vector', 'the architecture this patent describes'). walksReality=124 and litReality=124 (vs walksIntent=142/litIntent=142) show the reality-side walk covered nearly as much ground as the intent side even though the ACTUAL edit was a single hyperlink insertion — meaning the walk seeded from the surrounding paragraph's technical vocabulary, not the one-line diff. prewalkOverlap=8 is thin relative to either walk (~6%), so the reef's intent seed and the reality seed barely agreed before the recursive walk even started, and that early divergence is what compounds into offPct=24.

    The semantic pull: The commit message ('auto-apply(blog-research): external-source on ... cert=0.95, imp=0.85') declares a narrow intent — add one citation. But the file text the walk actually reads from carries the patent/architecture register ('dark silicon', 'address-decoder geometry', 'the architecture this patent describes', 'displacement vector') — vocabulary that belongs to a different lane than 'blog-research citation add'. The tool edited one line but the receipt's context window is paragraph-scoped, so it inherited that paragraph's technical density.

    Intent–reality gap: The commit claims a bounded, mechanical action (insert one external-source link, cert=0.95) but the receipt measured reality spreading almost as wide as intent (124 vs 142 lit cells) against a nearly-unrelated seed (prewalkOverlap=8) — the tool's own stated scope and the walk's measured scope disagree by construction, not because the edit was actually broad.

    • Find and patch the auto-apply(blog-research) commit-authoring script to always emit Originating-Terminal + Relevant-Rooms trailers
    • Register a room/owned-surface entry for the blog-research auto-apply bot so it stops falling into 🛰️ unattributed by default
    • Bound the reality-walk context window to the diff hunk (or a fixed token radius) for small, mechanical single-line edits
    • Add an owned-surface glob claiming src/content/blog/**/*.mdx external-source edits for the blog-research bot's declared room
    • Backfill trailers on the room's other 5 out-of-lane events from the last 14 days and re-measure offPct trend
    • Extract trailer-emission into a shared lib (scripts/lib/commit-trailers.mjs) used by every auto-tool, so this fix also closes the two prior blank-trailer mechanisms in this room at once

    What we learned: This is a FIFTH distinct mechanism accumulating under '🛰️ unattributed' (priors: co-scheduled bundling, blank-Originating-Terminal-with-filled-Relevant-Rooms, malformed-certainty splice) — here the auto-apply(blog-research) tool emits commits with ZERO room trailers at all (not a partial fill), AND separately the reality-side walk is paragraph-scoped rather than diff-scoped, so even a single well-formed, low-risk citation insertion measures as heavily off-lane purely because of context-window sizing, not content risk.

    The missing guard (the deliverable): A pre-commit check that flags any commit whose diff stat is small (≤2-3 lines) but whose message lacks Originating-Terminal/Relevant-Rooms trailers, specifically gating the auto-apply(blog-research) tool's own commit path — it should refuse to land without trailers rather than defaulting silently to unattributed.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Oversized for the actual edit: litReality=124 for a 1-line diff suggests the walk is reading the whole surrounding paragraph/file rather than the changed span. Adjustment: cap the reality walk's seed radius to the diff hunk ± a small fixed window when the diff stat is this small. Experiments: Re-run the receipt for sha 9c4003381 with the reality walk's context window bounded to ±2 sentences around the changed line and compare the resulting offPct against 24 · Backfill Originating-Terminal/Relevant-Rooms trailers onto the room's other 5 out-of-lane events from the last 14 days and re-measure the room's offPct trend over the next 14 days · Ablation-test seeding 'https://en.wikipedia.org/wiki/' into the gzip reef dictionary and measure whether prewalkOverlap rises for other auto-apply(blog-research) commits

    A fifth distinct mechanism landing under 🛰️ unattributed in 14 days marks this fallback lane as structurally uninsurable — the underlying content risk (a well-formed citation link) is near-zero, so the loss is entirely measurement noise from trailerless auto-commits and an unscoped walk; premium is restored once the auto-apply(blog-research) tool self-declares its lane and the walk is bounded to the diff it actually touched.

    Open the signed attestation →
  39. 2026-09-11 · 🛰️ unattributed · offPct 20

    auto-apply(blog-research): external-source on 2026-05-08-theta-is-empty-targets-fill-it (cert=0.95, imp=0.85)

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

    Open the signed attestation →
  40. 2026-09-11 · 🔨 builder · offPct 53 · mistagged

    feat(skill): /unsube — the unsubscribe door on demand, plus unsub-seed.mjs for the not-yet-live mirror

    Why it left the lane: The three touched paths — `.claude/skills/unsube/SKILL.md`, `scripts/bookclub/unsub-seed.mjs`, `.thetacog/unsub-replies.ndjson` — carry vocabulary (`gmail_inbox`, `suppress`, `Message-ID`, `in-thread`, `ON CONFLICT(id) DO UPDATE`) that is comms/mailbox-pipeline language, not front-end/build language. None of them match any glob in 🔨 builder's owned surface (`src/app/`, `src/components/`, `src/lib/`, `public/`, `scripts/build-book-html.sh`, `scripts/convert-chapters-to-html.mjs`, `hooks/pre-commit`, `scripts/voice-*-check.sh`, `decentralizedtalk/`, `thetacoach-crm-mcp/`, `vercel.json`). With zero reef-seed overlap in builder's own territory (prewalkOverlap=6 is tiny against litIntent=135), the walk had nothing local to anchor on and spread to near-saturation on both sides (litIntent 135/144, litReality 144/144), landing mass across the 28 red cells (B1×C1/C2/C3, B2×C1/C2/C3, pulling toward B3.Tactics.Signal, C1.Operations.Grid) — coordinates that belong to comms/operations, not to builder's topology/grid work.

    Intent–reality gap: The commit's own trailer names three rooms — 'Relevant-Rooms: builder, operator, network' — but shipped under 'Originating-Terminal: 🔨 builder' alone, and the receipt pipeline (per prior lesson fb93ed948) only reads that single field; a self-declared multi-room commit and a genuinely mistagged one still produce the same offPct because the field meant to disambiguate is invisible to the measurement.

    • Extend room-ownership config (wherever the owned-surface globs for network/operator live — e.g. `.workflow/rooms/network.html`) to explicitly claim `scripts/bookclub/**` and `.thetacog/unsub-*.ndjson`, since that room already fires `unsub-sweep.sh` daily via launchd.
    • Add `.claude/skills/**` to a room's owned-surface glob — currently NO room's list includes it, so every skill-authoring commit from any terminal will mis-grade the same way this one did.
    • Fix the commit-trailer convention doc (CLAUDE.md COMMIT MESSAGE STRUCTURE section) to state Originating-Terminal must match a file-glob owner, per spec_rewrite above.
    • Add a WARN-ONLY pre-commit check (same pattern as `wip.mjs`) that greps staged paths against the claimed Originating-Terminal's owned-surface globs and prints a mismatch before the commit lands, so this is caught before the receipt fires rather than after.
    • Backfill: grep `git log --diff-filter=A -- '.claude/skills/'` for prior skill-authoring commits and check whether they show the same unowned-surface pattern, to size the gap beyond this one event.

    What we learned: fb93ed948 diagnosed 'the pipeline doesn't read Relevant-Rooms' and its fix (reading the field semantically) measured WORSE (30→40 offPct). This event shows why: the real gap isn't that Relevant-Rooms goes unread, it's that NO room's owned-surface glob list includes `.claude/skills/` at all — skills are a new artifact class that sits above/across room territory, so any skill-authoring commit is structurally unownable by the current glob config regardless of which terminal fires it or how the trailer is parsed. The fix has to be mechanical glob-membership (does ANY touched path match ANY room's globs?), not semantic trailer-reading.

    The missing guard (the deliverable): A deterministic `scripts/ops/room-surface-check.mjs <committed-paths> <Originating-Terminal>` that computes exact glob membership (no reef/walk semantics) and (a) WARNs if 0% of touched paths belong to the claimed room's globs, distinguishing MISTAGGED (paths belong to a different named room) from UNOWNED (paths belong to no room at all — `.claude/skills/`'s actual current state); (b) for UNOWNED, skips the expensive 861ms reef/walk lane-fit grading entirely, since a commit can't be positionally graded against a lane nobody has claimed.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Over-saturated for the commit's size: a 3-file, 133-line diff lighting 135/144 and 144/144 cells is running to near-full lattice coverage rather than a focused subset — that's the walk finding 'everywhere the vocabulary doesn't match builder' rather than pinpointing a compact true lane. Adjustment: scale max walk plies/fan-out by diff size (LOC+files-changed) so small commits saturate to a bounded fraction (e.g. ≤40% of 144) instead of running to near-total lattice coverage regardless of commit size. Experiments: Seed a `.claude/skills/**` reef lane (keywords: 'skill', 'SKILL.md', 'Triggers', frontmatter fields) and re-run this commit's receipt — measure whether prewalkOverlap rises above 6 and offPct drops, isolating a reef-seed gap from a genuine cross-room commit. · Re-run with walk plies capped at 1 for commits under 150 LOC (this one is 133) and compare offPct against the current 53 — if it drops materially, saturation rather than true cross-lane spread was inflating the reading. · Backfill the last 10 `.claude/skills/**`-touching commits across all rooms and check whether offPct clusters high for all of them — confirms the unowned-surface hypothesis applies repo-wide, not just to this event.

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

    An offPct-53 mistagged commit inflates this room's apparent breach rate without any actual builder-lane defect, which corrupts the loss-ratio signal the premium is priced from; restoring it means extending room ownership to cover .claude/skills/** (and scripts/bookclub/**) so future skill-authoring commits price against the room that actually owns them, not against builder's unrelated territory.

    Open the signed attestation →
  41. 2026-09-11 · 🔨 builder · offPct 29 · structural

    feat(lens): the receipt echo, specified — Rust decides every cell, ShortLex order fixed, mobile width, names + bodies for rules AND hats, the page with the real PNG

    Why it left the lane: Every changed path in the diff sits in the PMU/lens measurement subsystem — '.thetacog/pmu/src/lattice.rs', '.thetacog/pmu/src/main.rs', 'scripts/pmu/prompt-lens.mjs', 'scripts/pmu/lens-receipt-page.mjs', 'scripts/pmu/tape-turn.mjs', 'tests/lens/receipt-compact.test.mjs', 'docs/superpowers/specs/2026-09-11-receipt-echo-spec.md' — none of which match any glob in builder's owned surface (src/app/, src/components/, src/lib/, public/, the two named book-build scripts, hooks/pre-commit, decentralizedtalk/, thetacoach-crm-mcp/, vercel.json). The pull isn't semantic confusion inside one lane, it's total absence of an owned lane for this content: 7/7 files land outside builder's glob, hence offPct=29 against a 15 threshold and driftPct=0.979.

    The semantic pull: Terms like 'pmu-onchip --lattice --pixel --fence --cells', 'shortlex-coords.mjs', 'AX', and 'LATTICE === AX' are PMU-internal classifier vocabulary, not builder vocabulary (UI/book/CRM build). The commit's own trailer 'Relevant-Rooms: builder, laboratory, operator' concedes this — the author already knew the work spanned rooms beyond the Originating-Terminal.

    Intent–reality gap: The commit message reads as coherent single-lane feature work ('the receipt echo, specified') stamped Originating-Terminal: builder, but the receipt measured 100% of the touched files outside builder's declared surface — the claimed lane and the measured lane share zero files.

    • Add an owned-surface glob entry (scripts/pmu/**, .thetacog/pmu/**, tests/lens/**, docs/superpowers/specs/**) to whichever room's .workflow/rooms/*.html config is meant to own the PMU/lens receipt pipeline — today no room's builder-visible surface claims it
    • Update the offPct/lane-fit computation to OR across every room named in a commit's Relevant-Rooms trailer, not just Originating-Terminal
    • Add a line to CLAUDE.md's COMMIT MESSAGE STRUCTURE section requiring Originating-Terminal to match plurality-of-diff ownership
    • Run the /recontext skill (or equivalent surface-coverage audit) to enumerate every room's owned glob and flag scripts/pmu/**, .thetacog/pmu/**, tests/lens/** as currently UNOWNED across all nine rooms, not just missing from builder
    • Ship the guard from missing_guard in the same commit as the config fix

    What we learned: Prior lesson fb93ed948 diagnosed that the pipeline never CONSULTS the self-declared Relevant-Rooms field. This event shows that consultation alone would not have fixed it: none of the three self-declared rooms (builder, laboratory, operator) appear to own a glob covering .thetacog/pmu/** or scripts/pmu/** at all — the PMU/lens receipt-pipeline surface is UNOWNED at the config level, not merely mis-attributed. 70 out-of-lane events for this room in 14 days is the structural signature of an actively-developed subsystem with no room's file-surface claiming it, which no amount of better commit tagging fixes until ownership is assigned.

    The missing guard (the deliverable): A surface-coverage audit test that unions every room's owned-surface glob and fails if any directory with N+ commits in the trailing 90 days (starting with scripts/pmu/, .thetacog/pmu/, tests/lens/, docs/superpowers/specs/) matches zero rooms — i.e. a CI-enforced version of what the /recontext skill already computes ad hoc, turned into a red test rather than an on-demand report.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. walkTruncated=true with walksIntent/walksReality nearly equal (136/140) suggests the walk hit its bound before fully resolving a 7-file, cross-subsystem diff — right-sized for a single-room commit but capped early for a multi-room one. Adjustment: raise the hop/time budget specifically when the diff touches ≥2 top-level subsystems (as counted by distinct top-level dirs), then re-run this sha and compare offPct/region breakdown against the truncated run. Experiments: Seed the reef with the Relevant-Rooms trailer text in addition to the commit body for commits that declare it, then measure prewalkOverlap delta across a batch of past Relevant-Rooms-carrying commits · Add the proposed PMU/lens owned glob to its room config, recompute this sha's offPct and the room's 14-day mean, and compare against the current 29%/70-events baseline · Disable walkTruncated (raise timeout) for this sha and 5 other walkTruncated=true shas, and check whether offPct/driftPct converge or diverge from the truncated values

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

    A chronic 70-event/14-day out-of-lane rate on an unowned high-churn surface inflates this lane's loss ratio with false-positive drift that no amount of correct tagging can cure; assigning the PMU/lens glob to a real room and teaching the lane-math to honor Relevant-Rooms restores the premium by making offPct measure genuine misplacement again instead of a config gap.

    Open the signed attestation →
  42. 2026-09-11 · 🎤 voice · offPct 30 · mistagged

    feat(bookclub): unsub-sweep reads the inbox mirror, honours every request, and grades the human-detector against it

    Why it left the lane: The commit is tagged room 🎤 voice, whose owned surface is book/blog/deck content (books/tesseract/chapters/*.md, src/content/blog/*.mdx, decentralizedtalk/slideData.ts, src/app/6needs/). The diff's actual mass is five new/changed scripts and two new tests, all under scripts/bookclub/*.mjs and tests/bookclub/*.mjs — SQL joins over resend_emails/bookclub_events/ip_geo/user_activity_logs, a verdict()-classifier harness, an HTML report generator with inline CSS/table markup. Strings like 'SELECT created_at, event_type, dest, ip, user_agent FROM bookclub_events', 'const geoRows = tc.prepare(...)', 'export function renderClass', 'export function aggregate' are pipeline/detector engineering, not prose — they walk straight into the Operations.Grid/Operations.Loop/Tactics.Speed coordinates (topology, velocity, exchange) the encircled regions name, none of which the voice room owns.

    The semantic pull: The commit message's own vocabulary is code-shaped even though the room tag is 🎤 voice: 'matcher', 'suppresses each sender', 'per-recipient dossier', 'verdict() called 0% HUMAN', 'anchors the leak audit on the INBOX date'. Terms like 'sweep', 'ingest-unsubscribes.mjs', 'unsub-analysis.mjs' and the SQL/JS identifiers in the diff are exactly the tokens that pull placement toward Operations.Grid (data plumbing) and Tactics.Signal (the detector's own grading) — there is no book/blog prose token anywhere in the 841-line diff to counterweight it.

    Intent–reality gap: The commit message claims voice-room work (bookclub sweep sensemaking) but the receipt measured 136 reality lit-cells landing overwhelmingly outside the 131 intent lit-cells' lane — the work is a full detector/pipeline build (SQL joins, a classifier harness, an HTML report), not the prose/voice surface the originating terminal implies.

    • Add scripts/bookclub/*.mjs + tests/bookclub/*.mjs to 🔨 builder's owned-surface glob in the room roster (.workflow/rooms/*.html or the room-ownership table this receipt reads from).
    • Add a CLAUDE.md line under WIP CLAUDE/room-ownership: 'Originating-Terminal declares WHERE you typed, not WHERE the work belongs — the commit-trailer room MUST match the owned-surface glob of the touched paths, checked before commit.'
    • Add a pre-commit advisory (WARN-ONLY, matching the WIP-claims pattern) that diffs the Relevant-Rooms/Originating-Terminal trailer against `git diff --cached --name-only` and flags when >50% of touched paths fall outside that room's owned-surface glob.
    • Update docs/architecture/claude-rules/doors-and-surfaces.md's room-ownership section to state explicitly that scripts/bookclub/** is 🔨 builder territory regardless of which terminal authored the commit.

    What we learned: Room attribution in this repo is set by WHICH TERMINAL THE OPERATOR TYPED FROM, not by which owned-surface glob the touched paths actually match — a purely pipeline commit (SQL + JS + tests, zero prose files touched) can be filed as 🎤 voice simply because that was the active terminal, and nothing before this receipt checks trailer-vs-paths agreement.

    The missing guard (the deliverable): tests/ops/room-trailer-matches-paths.test.mjs — reads a commit's Originating-Terminal/Relevant-Rooms trailers, resolves that room's owned-surface glob from the roster, and fails (or warns, matching the WIP-claims severity) when the majority of `git diff --name-only` paths fall outside every named room's glob — this commit (100% scripts/bookclub + tests/bookclub, 0% voice-owned paths) would have flagged before landing.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Right-sized but under-fed: fill is 0.98% (well under the 70% ceiling) so the walk isn't saturated, and 2 plies with walkTruncated=true suggests it stopped early rather than running out of room. Concrete adjustment: given prewalkOverlap=4 is so low, raise the walk depth to 3 plies specifically when prewalkOverlap falls below ~10% of litIntent, so a weak reef seed doesn't leave the walk under-recursed on a diff this code-dense. Experiments: Seed the reef with a synthetic 'pipeline vocabulary' cluster (SQL keywords, better-sqlite3 API names, .mjs export patterns) distinct from the 'prose vocabulary' cluster already anchoring 🎤 voice, then re-run this same commit through the reef and measure whether prewalkOverlap rises above 4 and offPct drops below 30 — if not, the reef's room-clustering granularity, not the walk, is the bottleneck. · Ablate: recompute this commit's receipt with the room trailer forced to 🔨 builder instead of 🎤 voice and confirm offPct drops near 0 — this proves the drift is entirely an attribution/mistagging effect rather than a genuine content-placement defect, closing the loop on boundary_failure='mistagged'. · Track prewalkOverlap as a leading indicator: for the last 20 events in this room, correlate prewalkOverlap<5 with eventual offPct>threshold — if the correlation is strong, prewalkOverlap alone becomes a pre-commit early-warning without waiting for the full walk.

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

    An out-of-lane pipeline commit filed under the wrong room inflates that room's loss-ratio on a false signal (109 prior 🎤 voice breaches in 14 days may include other mistagged builder work), diluting the premium signal for genuine voice-lane drift; restoring it means extending 🔨 builder's owned-surface glob and shipping the trailer-vs-paths guard so room attribution — and therefore the room-level breach rate this lane is priced on — reflects actual path ownership, not dictation location.

    Open the signed attestation →
  43. 2026-09-11 · 🔨 builder · offPct 23 · structural

    feat(lens): the echoed receipt is compact — terminal named, QC room once, top five intersections, every line speakable

    Why it left the lane: The commit's diffstat shows 4 files, but only 3 (prompt-lens.mjs + 2 test files) are the claimed lens/receipt work. The 4th, src/data/post-panels-index.json, is a giant single-line generated JSON manifest (blog panel history) that was rewritten wholesale — a 1-line diff in a file whose full-file byte mass is dominated by boilerplate like 'chore(blog): attach commit tolerance panel as OG image [panel-attached]' (repeated dozens of times) and 'auto-apply(blog-research): external-source on'. If the drift walker's reality-mass computation reads whole-file content rather than diff hunks, this one incidental file can outweigh the actual lens work in bytes and drag the placement toward blog/panel coordinates.

    The semantic pull: post-panels-index.json's repeated literal strings ('chore(blog): attach commit tolerance panel...', 'fix(blog): sweep daily-unit...') are blog-content-domain tokens with zero relation to 'renderReceiptCompact'/'topIntersections'/'spokenRule' in the real diff. No region narrative was cached for this sha, so the exact pulled coordinate is unconfirmed — but the receipt row's walkTruncated=true plus a 23% offPct on an otherwise single-purpose commit is consistent with this file's mass overwhelming the seed before the walk could settle into the git-discipline lane.

    Intent–reality gap: The commit message and Story describe ONLY the receipt-compaction work in scripts/pmu/prompt-lens.mjs — it never mentions post-panels-index.json. The receipt measured 100% of encircled cells out-of-lane, which cannot be explained by 172 insertions of lens code alone; the unmentioned generated-manifest rewrite is the more likely source of the gap between the claimed and measured lane.

    • grep -rn 'offPct' scripts/pmu/ to find the exact reality-mass computation and confirm whether it reads whole-file or diff-hunk content
    • add src/data/post-panels-index.json to a generated-manifest exclusion/low-weight list in that walker
    • add a hooks/pre-commit check: warn when scripts/pmu/*.mjs and src/data/post-panels-index.json are staged together but the commit message doesn't mention blog/panel
    • log why walkTruncated=true fired for this commit (budget cap? byte-size cap?) into data/pmu/pipeline/state.json so the truncation cause is inspectable per-sha
    • extend CLAUDE.md ITERATION DISCIPLINE with the named-file split rule above
    • re-open fb93ed948's Relevant-Rooms-not-consulted lesson — its measured outcome regressed (30→40) after the prior intervention, so whatever was shipped for it did not land or was insufficient; this event may be a second symptom of the same unconsulted-trailer gap

    What we learned: A commit can be 100% correctly scoped to its claimed lane and STILL register maximally out-of-lane if an unrelated single-line generated manifest rides along in the same commit and the walker measures reality against whole-file byte mass rather than diff mass — the generated file's boilerplate becomes a gravity well that swamps genuinely-scoped work. This is distinct from (though compounds) the earlier-flagged Relevant-Rooms-trailer gap: even a single-declared-room commit is vulnerable if it happens to touch one of these manifest files.

    The missing guard (the deliverable): A test asserting the drift walker's per-commit reality-mass computation is bounded by diff-hunk size for files on a known-generated-manifest list, so a 1-line change to a 400KB single-line JSON cannot alone flip a commit's encircled bands to 100% red.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. walksIntent(133)≈walksReality(127) and litIntent≈litReality — the walk's spread is well-matched and not obviously saturated or too shallow in raw counts. The concrete lever is walkTruncated=true: raise (or make size-aware) the truncation budget specifically for commits whose diff touches a byte-heavy single-line JSON file, so the walk gets the cycles to traverse past the initial mass-heavy seed. Experiments: Recompute this sha's reef placement with src/data/post-panels-index.json excluded from the reef seed and diff the resulting offPct against the recorded 23% — if it drops sharply, the file-mass hypothesis is confirmed · Instrument walkTruncated with the truncation reason (budget-ms cap vs node-count cap) written to the per-commit receipt row so future diagnoses don't have to guess · Run the last 10 commits that touched src/data/post-panels-index.json alongside unrelated work and check whether offPct correlates with that file's presence — if yes, this is a recurring class, not a one-off

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

    An out-of-lane rate driven by generated-file mass rather than actual scope drift inflates this lane's apparent loss ratio without a real defect underneath; excluding known generated manifests from reality-mass weighting restores the premium to reflect the room's true (much lower) drift rate.

    Open the signed attestation →
  44. 2026-09-11 · 📐 architect · offPct 35 · structural

    feat(ops): switchboard + tape-derived spend report — every autonomous job with a switch, its 24h sessions/list-$/out:in; the hotspot IS the token meter

    Why it left the lane: The diff's own vocabulary is Operations-cluster, not Strategy-cluster: 'switchboard'/'launchd job'/'loaded (launchctl)'/'off <job>'=bootout/'on <job>'=bootstrap are process-topology terms (→ C1.Operations.Grid, C2.Operations.Loop reds), and 'spend family'/'list-$'/'out:in'/'wireMB'/'sessions' are telemetry-reporting terms (→ B3.Tactics.Signal, the top pull at ×11). None of the six architect-owned globs (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md) appear anywhere in the diff stat — every changed path (scripts/ops/*, tests/ops/*, .claude/commands/switchboard.md, scripts/gcal-agent/poll-execute.sh) sits outside them.

    The semantic pull: 'switchboard'/'launchd' pulled the walk toward Operations.Grid+Loop (job topology/lifecycle); 'spend'/'list-$'/'out:in'/'sessions' pulled it toward B3.Tactics.Signal (measurement/reporting) — together they account for 17 of the 28 red pulls, the two largest buckets on the panel.

    Intent–reality gap: The commit's Originating-Terminal trailer says 📐architect, but per CLAUDE.md's own ThetaCog Room Naming table the App→Role binding is FIXED ('VS Code' is always 'Architect', regardless of content) — so any ops work typed in that window auto-stamps architect. The receipt confirms it: 'running-in 📐architect (vscode) · QC→ 🔨builder' — the QC line already computed the correct room from content and it isn't architect.

    • CLAUDE.md: add owned-surface globs for scripts/ops/**, tests/ops/**, .claude/commands/** to whichever room's table currently omits them (builder/operator) so ops work has a legitimate home lane at all
    • Ship scripts/ops/room-surface-check.mjs (post-commit): glob-match staged files against each room named in the Relevant-Rooms trailer; a room with zero matches gets logged to .thetacog/room-surface-mismatch.ndjson, not silently accepted
    • CLAUDE.md commit-trailer protocol: state explicitly that Originating-Terminal and Relevant-Rooms answer different questions (location vs. content-ownership) and are expected to diverge — this is the escalation past ff09774e5's finding, which stopped at 'divergence is sanctioned' without saying WHY it's structurally guaranteed to happen
    • Backtest architect's 156 out-of-lane events (last 14d) through the same filter: Originating-Terminal=architect but ≥1 file matching a non-architect room's owned-surface — quantify what fraction is this exact terminal-binding cause
    • Add a `Terminal-App:` trailer (separate from `Originating-Terminal:`) so a VS Code session doing builder-content work can record both facts without contradiction

    What we learned: The room-drift signal here isn't operator carelessness or a lax trailer convention (ff09774e5's finding) — it's manufactured by a FIXED App→Role naming table: 'VS Code' always resolves to 'Architect' regardless of what gets built in that window. Any session that opens ops/infra work in the VS Code terminal will auto-mis-stamp its Originating-Terminal every single time, independent of intent quality. ff09774e5 fixed the detector's *tolerance* for divergence; this event shows the *generator* of that divergence is the terminal-naming scheme itself.

    The missing guard (the deliverable): scripts/ops/room-surface-check.mjs — post-commit, glob-match every file in the commit against each room named in Relevant-Rooms per CLAUDE.md's owned-surface table; a named room with zero path overlap gets written to .thetacog/room-surface-mismatch.ndjson (visibility first, gate later once the false-positive rate is measured).

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized in depth (2 plies, fill 0.85% of the lattice) but over-permissive in threshold: 'visited' and 'lit' are currently the same set. Adjustment: add a minimum incidence weight before a visited cell counts as lit, so a coordinate hit once by a generic word (e.g. 'report') doesn't carry the same weight as one hit repeatedly by domain-specific terms ('launchd', 'switchboard'). Experiments: Add scripts/ops/**, tests/ops/**, .claude/commands/** as owned-surface globs for builder/operator and re-run this exact commit through the detector; measure whether offPct drops once ops content has a legitimate home lane · Seed the gzip baseline dictionary with the compression_dictionary_adds below and re-run prewalkOverlap on this sha; measure whether the reef seed overlap rises from 3 · Replay the 156 architect out-of-lane events from the last 14 days filtered for 'Originating-Terminal=architect AND ≥1 changed path matches a non-architect room's owned-surface'; measure what fraction this terminal-binding cause explains vs other causes

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

    A chronic (156-event/14d) structural mismatch between a fixed terminal-naming table and content-based room ownership inflates this lane's loss-ratio every time ops work opens in the VS Code window; premium is restored by the surface-check guard making the mismatch visible per-commit rather than by any single spec fix, since the root cause (terminal choice) stays outside the detector's control.

    Open the signed attestation →
  45. 2026-09-11 · 🏗️ Builder · offPct 21 · mistagged

    fix(pmu): a refusal is not a panel — the composer carries the decoder's refusal out, annotate-regions refuses to write it as a PNG

    Why it left the lane: Every changed line lives in scripts/pmu/annotate-regions.mjs, scripts/pmu/tolerance-panel.mjs, and tests/pmu/refusal-is-never-rendered-as-a-panel.test.mjs. None of those paths appear anywhere in Builder's declared owned-surface list (src/app/, src/components/, src/lib/, public/, scripts/build-book-html.sh, scripts/convert-chapters-to-html.mjs, hooks/pre-commit, scripts/voice-*-check.sh, decentralizedtalk/, thetacoach-crm-mcp/, vercel.json) — the diff has zero overlap with Builder's glob, so 100% of the lit mass reads as off-lane by construction.

    The semantic pull: The strings dragging the placement are pure PMU-pipeline internals — `composeTolerancePanel`, `tol.refused`/`tol.refusal`/`tol.litMass`, `annotate-regions --png`, `encircle-panel.sh` — none of which are Builder-surface vocabulary (no `src/app`, `src/components`, `public/`, or build-book-html tokens anywhere in the diff). The commit's own trailer names it: 'Relevant-Rooms: Builder, Performer, Architect' — Architect is already named as a stakeholder, but Originating-Terminal still reads Builder.

    Intent–reality gap: The commit message accurately describes what the code does (propagate the decoder's refusal through composeTolerancePanel and make annotate-regions refuse to emit a PNG) — there is no false claim about the WORK. The gap is that it shipped under Originating-Terminal 🏗️ Builder, whose declared file-surface glob does not include scripts/pmu/ or tests/pmu/ at all, so the lane-check measured 100% off-lane against a reference surface the work was never claiming.

    • Locate the source-of-truth for room owned-surface globs (grep for the literal Builder list strings, e.g. `grep -rl 'scripts/build-book-html.sh' .workflow/ data/ docs/architecture/`) and add scripts/pmu/**, tests/pmu/** to whichever room is the true PMU owner
    • Retroactively check 054a9df7ca and 4ae13b3135 (same PMU audit, same session) for the same Originating-Terminal mismatch
    • Add a pre-commit or receipt-time check: warn when 100% of a commit's changed paths fall outside the Originating-Terminal room's declared glob but fully inside another room's glob — suggest the Relevant-Rooms correction before the receipt scores offPct
    • Document scripts/pmu/ + tests/pmu/ ownership explicitly in docs/architecture/claude-rules/doors-and-surfaces.md so the next PMU fix doesn't re-open this gap

    What we learned: The owned-surface globs enumerate UI/build-script territory per room but leave scripts/pmu/ and tests/pmu/ unclaimed by any room shown here — a correctly-scoped, well-guarded PMU fix will always read as maximally off-lane (not just over threshold) as long as its actual file surface has no room home at all; this is a routing/config gap, not a discipline failure.

    The missing guard (the deliverable): A CI guard that unions every room's owned-surface glob and asserts no path under scripts/**, tests/**, src/**, data/** is left unclaimed by all rooms combined — i.e. an UNOWNED-surface check (the same class recontext already computes interactively) run as a standing test, not just on demand.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Right-sized. Near-equal walksIntent/walksReality and litIntent/litReality counts show the walk filled comparably on both sides rather than saturating one side or truncating early (walkTruncated=false confirms this). No depth adjustment needed here; the fix belongs upstream of the walk, in what the reef is allowed to seed against. Experiments: Recompute prewalkOverlap using the room's owned-surface glob paths (not just commit prose) as additional reef seed weight, then re-score this same commit — measure whether offPct drops once scripts/pmu/ is in-glob for the tested room · Ablation: run tolerance-panel.mjs against this commit's diff with Builder's glob extended to include scripts/pmu/**, tests/pmu/**, and confirm offPct falls under the 15 threshold · Backtest: pull the last 10 Builder-attributed commits whose diff paths are 100% under scripts/pmu/ or tests/pmu/ and check whether they all score similarly off-lane — confirms this is a systematic glob gap, not a one-off

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

    A structurally-sound, guarded fix reading as 100% off-lane inflates this lane's measured loss-ratio with false-positive drift rather than real risk; restoring it means closing the glob gap so PMU-pipeline commits price against the lane that actually contains them, not against an empty intersection.

    Open the signed attestation →
  46. 2026-09-11 · 🎭 Alacritty Performer · offPct 17 · structural

    chore(pixel): curate billboard flags on push (detached, LLM pick)

    Why it left the lane: hooks/pre-push:87 runs `node ./scripts/pixel/curate-carousel.mjs`, `git add src/data/pixel-carousel.json`, then `git diff --cached --quiet || git commit -m "chore(pixel): curate billboard flags on push (detached, LLM pick)"` with NO pathspec on the commit call. The `git add` line only stages the carousel JSON, but the commit is unscoped — it commits the WHOLE index. The receipt's diff shows only `books/tesseract/chapters/00-preface.md` (the `/book/chapters/about-the-author` → `/book/chapters/99-about-the-author` link fix), which was almost certainly a leftover STAGED-but-uncommitted edit from this session's earlier book-link-fix pass (companion to the just-prior commits `91124954b0 fix(blog): four book deep links...` and `ac3f386d93 ...one dead link`). Whichever step in the pre-push chain fires next inherits anything sitting in the index, regardless of what it itself staged.

    Intent–reality gap: The message claims a pixel/billboard-carousel curation step whose only declared write target (per the hook's own comment) is `src/data/pixel-carousel.json`; the receipt shows 100% of the landed mass in a book chapter file the pixel job never touches and this room does not own.

    • hooks/pre-push:50 — pathspec-scope the benchmark auto-commit to `-- src/data/benchmark-board.json public/.well-known/semantic-vega.json`
    • hooks/pre-push:71 — pathspec-scope the book-HTML auto-commit to `-- public/book/chapters/*.html public/book/appendix/*.html public/bookedits.html`
    • hooks/pre-push:87 — pathspec-scope the pixel auto-commit to `-- src/data/pixel-carousel.json`
    • hooks/pre-push:104 — pathspec-scope the insurability auto-commit to `-- public/data/*.json` (per insurability-compiler.mjs's actual OUT paths)
    • tests/pmu-simulator/prepush-scoped-autocommit.test.mjs — grep hooks/pre-push for every `git commit -m` and fail if it lacks a trailing pathspec matching the nearest preceding `git add`
    • note in hooks/pre-push's header comment that these 4 detached steps share ONE index and MUST NOT rely on ambient staged state — each commit call is a partial-index snapshot by design, not a convenience default

    What we learned: This room's three prior interventions were facts-only and the room's mean offPct climbed each time (null→26→33→48) — the pattern getting WORSE under repeated bare fixes is itself the signal that the true cause was never in this room's owned surface at all. It's in a SHARED pre-push hook with four structurally-identical unscoped-commit sites; no amount of 🎭 Alacritty Performer-specific remediation touches that, because the hook fires from whichever room's terminal happens to run `git push` and inherits whatever anyone left staged. The durable fact: a detached auto-heal commit is only as scoped as its OWN `git commit` call, not its `git add` call — and this repo has four copies of that exact gap in one file.

    The missing guard (the deliverable): tests/pmu-simulator/prepush-scoped-autocommit.test.mjs: parse hooks/pre-push, and for every line matching `git commit -m` assert it carries a trailing `-- <pathspec>` whose paths are a subset of the nearest preceding `git add` line's paths. Fails loudly (not silently) if a new detached auto-heal block is added to the hook without pathspec-scoping its commit.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. 100% lit-to-walked on both sides plus walkTruncated=true reads as UNDER-DISCRIMINATING, not right-sized — the walk isn't spreading wide enough before it stops to actually tell apart 'book content' from 'pixel carousel' coordinates, it's just filling everything it touches. Adjustment: raise the ply budget specifically for docsOnly=true commits (where the reef signal is naturally weak) so saturation happens after separation, not before. Experiments: Ablation: recompress the last 20 docsOnly commits against a reef seeded ONLY from the touched file's own top-level directory (e.g. books/tesseract/ vs public/data/) instead of the whole-repo reef; measure whether offPct on genuinely single-lane commits drops. · Add a cheap pre-walk short-circuit: diff the commit's `git show --stat` paths against the pushing room's owned-surface glob BEFORE running the full ballistic walk — for the unscoped-commit class specifically, this catches the mismatch in O(1) without spending the full walk budget. · Re-run sha d55e8261f with walkTruncated forced off (full depth) and compare resulting offPct to today's 17 — determines how much of this reading is walk-truncation artifact vs real cross-lane mass.

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

    This event and its three structurally-identical siblings in the same hook mean any room's push can silently carry another lane's uncommitted edit under a foreign commit message — an uninsurable ambiguity in whose work a commit actually represents — and pathspec-scoping the four sites plus the grep-guard restores that premium by making 'what did this commit actually touch' a mechanically provable question again, independent of push timing.

    Open the signed attestation →
  47. 2026-09-11 · 🔨 builder · offPct 26

    feat(bookclub): unsub-reply — every unsubscribe answered in its own thread with the reader's whole record + the query

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

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

    Open the signed attestation →
  48. 2026-09-11 · 📐 architect · offPct 22 · mistagged

    fix(book): the day's 29 commits audited against the repo — four regressions, one mechanism, one guard

    Why it left the lane: The diff's actual sentences are dense with hardware-operation vocabulary — 'compare-and-swap', 'atomic cycle', 'address path', 'pipeline stall', 'cache line', 'the swap lands', 'store buffer', '30-34 watts', '23-25 watts', 'zero-cost'/'fixed-cost' — which are Operations-lattice terms (Grid=addressing, Loop=pipeline/cycle, Flow=throughput/wattage). The commit's claimed lane is a single Signal cell (git-discipline audit: 'audit', 'grep', 'guard', 'seen to fail'). Those two vocabularies barely overlap, so the walk lights 28 cells spread across Grid/Loop/Flow/Speed/Deal instead of staying on B3.Signal.

    The semantic pull: Strings 'the swap lands or not', 'tens of cycles', 'address path', 'no lock, no loop' pull toward C1 Operations.Grid and C2 Operations.Loop; '30-34 watts'/'23-25 watts'/'twenty watts' and 'fixed-cost'/'zero-cost' pull toward C3 Operations.Flow; the DBA/Cache-Architect dialogue's 'fan-out', 'JOIN', 'propagation' pulls toward B2 Tactics.Deal. None of these are architect's git-discipline vocabulary.

    Intent–reality gap: The commit message claims a git-discipline audit action (verify 29 same-day book commits, fix 4 regressions, ship one guard test) filed under 📐architect's own lane; the receipt measured the edited content itself — book-chapter prose about CAS/atomic/address-path/watts spanning books/tesseract/**, public/book/**, and tests/voice/** — none of which appears in architect's owned-file-surface list (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md).

    • Add books/tesseract/**, public/book/**, tests/voice/**, tests/pmu-simulator/** to whichever room actually builds/tests the book (likely 🔨builder's owned-surface list) — currently unclaimed by architect, and status of vault/builder/navigator/laboratory lists is unverified.
    • Ship the single unified scripts/ops/room-drift-check.mjs and delete/redirect the three dead duplicate specs already sitting in architect/navigator/laboratory.
    • Amend CLAUDE.md § COMMIT MESSAGE STRUCTURE with the union-classification rule (spec_rewrite above) — CLAUDE.md is already on architect's owned surface, so this is the one edit architect can make without touching another room's file.
    • Add tests/ops/room-lane-union-classify.test.mjs seeded with this exact sha's trailers + diffstat as a fixture; assert it fails today (0% owned-surface match across all three listed rooms) and passes once a book glob is added.
    • Run `node scripts/ops/rules-for.mjs books/tesseract tests/voice` before adding a new glob, to confirm no room already secretly claims this surface under a name not visible here.
    • Update the ff09774e5 lesson's three duplicate spec entries to point at the single shipped script instead of independently re-proposing it a fourth time.

    What we learned: Three separate rooms (architect, navigator, laboratory) independently arrived at the identical fix and none shipped it — parallel diagnosis without a single directly-responsible room converges on paralysis, not correction. A self-diagnosed guard needs to be pinned to exactly one room's owned-file-surface (here: CLAUDE.md, which architect already owns) the moment it's spec'd, or it will be re-diagnosed a fourth time by the next out-of-lane event instead of shipped.

    The missing guard (the deliverable): tests/ops/room-lane-union-classify.test.mjs — a fixture using this sha's own trailers + diffstat, asserting the detector classifies offPct against the UNION of all Relevant-Rooms' owned-surface globs (not Originating-Terminal alone), and that it fails loudly with an 'UNCLAIMED SURFACE' message when the union still doesn't cover the touched paths, rather than silently reporting a bare offPct number.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. litIntent(142)==walksIntent(142) and litReality(136)==walksReality(136) exactly — every walked cell registers as 'lit' with zero discrimination threshold. Not shallow (walkTruncated=false), not obviously over-deep either — it's SATURATED-BY-DEFAULT: the walk currently can't tell a strong hit from a weak one. Adjustment: add a minimum per-cell gzip-NCD similarity floor before a walked cell counts as 'lit', so litIntent/litReality reflect semantic strength rather than mere visitation. Experiments: Recompute offPct for the last 20 out-of-lane events using the UNION-of-Relevant-Rooms classification instead of Originating-Terminal-alone; measure whether room-mean offPct drops below the current 30% breach rate (n120 series). · Add a book/tesseract lane entry to one room's owned-surface glob list, re-run this exact sha through the detector, and confirm offPct drops under the 15 threshold — a direct before/after ablation on one commit. · Add a lit-cell similarity floor (reject cells below a fixed gzip-NCD score) and re-run the last 20 events; measure whether litIntent/litReality gaps become more discriminating (i.e. whether offPct now correlates better with commits independently known to be well-scoped vs sprawling).

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

    An audit-and-fix commit with a shipped guard is a good loss event to have on the books, but filing it under a lane whose owned surface covers none of the touched files inflates this room's off-lane loss-ratio on a false signal — premium on 📐architect's git-discipline lane stays elevated until the union-classification fix ships and this exact sha reclassifies under 15%.

    Open the signed attestation →
  49. 2026-09-11 · 🎤 voice · offPct 40 · structural

    comms(self): four things with nothing in common — what I did with the tail of 4.txt

    Why it left the lane: The commit's Story trailer talks in git-discipline vocabulary ('the autonomy rule's email after — intent vs reality... two Gemini overshoots, the two sweep incidents and the unpushed state') which the keyword-fallback classifier pegged to C.Operations × B3.Tactics.Signal, but the BODY of the .md is a full session ledger naming eight discrete commits (0907d5228e, ec741ef9de, a1acb6dc05, e2d2da1545, 6d72eececc, 1c0cb55ecf, 160c1665c3, d76eee5841) and their operations — 'bank+mint+guard', 'ch3 section', 'book build', 'post v1', 'asides at full strength', 'seeds + drafts re-minted', 'drafts... (noted)', 'panel... (noted)'. Those are Grid (build/mint), Loop (sweep/re-mint iteration), Flow (nine courses, throughput) and Deal (commits swept BETWEEN rooms — an exchange) terms simultaneously, so the walk lights every Tactics×Operations cell instead of the one it was filed under.

    The semantic pull: 'bank', 'mint', 'guard' pull toward C1.Operations.Grid (build/inventory); 'swept into other rooms' commits' and 'git notes... naming what was swept' pull toward C2.Operations.Loop (cyclical re-attribution) and B2.Tactics.Deal (exchange — the literal handoff of drafts/panel between rooms); 'nine courses', 'seven asides at full strength', 'four LinkedIn drafts... minted' pull toward C3.Operations.Flow (throughput); the density of named commit shas read like a transaction ledger, which is exactly what B2,C1/C2/C3 'exchange' cells are keyed on.

    Intent–reality gap: The commit message claims a single lane — git-discipline, 🎤 voice, 'commit push iteration bundle' — but the receipt measured a report that narrates eight commits' worth of work across four other domains (convergence-quartet infra, book chapter, blog post, LinkedIn drafts) plus two cross-room sweep incidents, so reality fired in nearly every cell (31 reds, off-lane 100%) while intent claimed one.

    • Add `Report-Scope:` to the COMMIT MESSAGE STRUCTURE trailer list in CLAUDE.md for docs/comms/self/ commits
    • Add the self-report lane branch to the keyword-fallback classifier (skip single-lane scoring when Report-Scope is cross-room)
    • Ship tests/pmu-simulator/self-report-lane-exempt.test.mjs asserting docs/comms/self/**/approved/*.md commits either carry Report-Scope or are excluded from the offPct threshold check
    • Mark docs/comms/self/** as a shared/cross-room glob in whatever config lists 🎤 voice's OWNED FILE SURFACE, rather than implicitly exclusive to voice
    • Backfill: grep docs/comms/self/*/approved for prior self-report commits missing the trailer, note them, no forced rewrite of history

    What we learned: THE EXPLANATION IS THE SUFFICIENT STATISTIC / autonomy-ratchet 'email after' rule mandates a self-report that narrates intent-vs-reality across everything that happened in the session — that format is STRUCTURALLY cross-room by design, so scoring its commit against one inferred lane will always overflow; prior lessons for this room were facts-only and didn't catch that the room's own compliance artifact (the ratchet email) is the recurring source, not sloppy tagging.

    The missing guard (the deliverable): tests/pmu-simulator/self-report-lane-exempt.test.mjs — asserts any commit whose changed paths are entirely under docs/comms/self/**/approved/ carries a `Report-Scope:` trailer and is scored against a dedicated self-report lane (or exempted), never against a single inferred domain.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Saturated, not discriminating: 100% of visited cells lit on both intent and reality sides at only 2 plies. A walk that lights everything it touches carries no signal about WHICH cells matter more. Adjustment: require a minimum per-cell compression-gain (gzip-NCD delta) above a floor to count as 'lit', instead of binary presence-lights-the-cell, so a shallow 2-ply walk stops reporting full saturation as normal. Experiments: Partition the reef corpus so docs/comms/self/**/approved/*.md self-reports are compared against a self-report sub-corpus, then re-run prewalkOverlap for this sha and check whether it rises materially (would confirm the mismatch is corpus-selection, not content) · Ablate the binary lit-threshold: recompute litIntent/litReality for the last 20 commits requiring ≥X% gzip-NCD gain per cell instead of presence, and measure whether the 100%-fill saturation seen here disappears for genuinely single-lane commits while persisting for reports like this one · Re-run this sha's classification with an explicit Report-Scope trailer injected (a dry-run patch to the message only) and confirm offPct drops when the classifier isn't forced through keyword-fallback

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

    A structurally-guaranteed false 'out of lane' flag on every autonomy-ratchet self-report inflates this lane's measured loss-ratio with non-actionable noise; restoring it means the self-report lane is split out and exempted before the next ratchet email fires, not by narrowing what the report is allowed to say.

    Open the signed attestation →
  50. 2026-09-11 · 🎤 voice · offPct 23 · mistagged

    build(book): rebuild after ch4 takes the three weaknesses — the receipt is the width, the threshold is the coordinate, the slot must be writable

    Why it left the lane: The room's owned-surface glob for 🎤 voice lists only the markdown source (books/tesseract/chapters/*.md), but this commit's diff is 100% derived-build output from CLAUDE.md's own mandatory BOOK EDITING step: books/tesseract/chapters-html/04-you-are-the-proof.html, books/tesseract/exports/tesseract-complete-book.txt + two .epub blobs, docs/book/COMPLETE-BOOK.txt, docs/book/tesseract-physics.epub, and public/book/chapters/04-you-are-the-proof.html + public/book/.source-hash. None of those five output paths match the declared glob, so a fully compliant rebuild (docsOnly=true, per the receipt) reads as 100% off-lane. Compounding it: the prose itself is dense with hardware-literal vocabulary used as metaphor — 'a register: an x86 core that exchanges a value into a slot lands the old contents in the calling register', 'cache-line scale', 'address arithmetic', 'boundary crossing', 'eviction' — which the gzip-NCD reef reads the same way it reads an actual infra commit, pulling mass toward Operations.Grid/Loop/Flow and Tactics.Signal instead of voice/content coordinates. prewalkOverlap=3 against walksIntent=98 shows the reef seed match before the walk even started was thin, consistent with a vocabulary collision rather than a real cross-lane act.

    The semantic pull: Two forces, not one: (1) five untagged output paths (chapters-html/*.html, exports/*.txt+*.epub, docs/book/*, public/book/chapters/*.html, public/book/.source-hash) sitting entirely outside the 🎤 voice glob; (2) literal strings 'register', 'x86 core', 'exchanges a value into a slot', 'cache-line scale', 'address arithmetic' inside the prose gzip-matching to the same Operations.Grid/C1 and Tactics.Signal/B3 pixels a real infra commit would light.

    Intent–reality gap: The commit claims a narrow, compliant scope — 'Derived set for 958bab7e23... Every new deep link resolves in built HTML. No push' — and the receipt agrees this is docsOnly=true rebuild work; the gap is not in what the commit did but in what the room's lane declaration was ever told to expect from that mandatory rebuild step.

    • Find the file that actually declares the 🎤 voice owned-surface glob (grep -rl 'books/tesseract/chapters/\*.md' .workflow/ data/ scripts/) and extend it with the five build-output paths above
    • Audit every other room with a mandatory build step (patent .workflow/ exports, decks, etc.) for the identical source-glob-vs-build-output gap
    • Add a commit-trailer or detector rule: a commit whose subject matches /^build\(book\): rebuild after [0-9a-f]{9,}/ inherits the lane of the cited parent sha instead of being independently walked
    • Backfill: recompute offPct for the last N 'build(book): rebuild after' commits with the corrected glob to confirm the false-positive rate drops
    • Cross-reference the fix in CLAUDE.md's BOOK EDITING section so the owned-surface list and the build-step rule stay in sync going forward

    What we learned: CLAUDE.md mandates a build step (build-book-html.sh) that writes to five derived paths outside the room's declared source glob — every compliant book-edit-then-rebuild commit is therefore structurally guaranteed to drift, which is new information: the three prior interventions for this room were facts-only and each left offPct worse (27→39, 21→31, 0→36), meaning nobody had yet located that the glob itself — not the work — is the defect.

    The missing guard (the deliverable): tests/ops/owned-surface-covers-build-outputs.test.mjs — for every room whose CLAUDE.md section names a mandatory 'run this build script before committing' rule, diff that script's known output paths against the room's owned-surface glob and fail if any output path is uncovered.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Saturated, not shallow: fill = lit/walks = 1.00 on both the intent side (98/98) and the reality side (112/112) — the walk is lighting every cell it steps on rather than discriminating signal from noise. Adjustment: add a confidence-decay threshold per hop so a cell only lights if the match strength clears a floor, instead of counting every step as a hit. Experiments: Ablation: exclude docsOnly=true derived-build commits (diff >80% matches the known `<p data-line="` / `<a id="line-` template) from the drift walk entirely and measure whether the room's offPct trend drops over the next 20 commits · Seed the reef with a metaphor-context tag: terms (register, slot, cache line, eviction, silicon, boundary crossing) appearing inside books/tesseract/**/*.md get reduced weight toward Operations/Tactics pixels; measure offPct on the next 10 real content-edit book commits · Run the owned-surface-coverage check (checklist item 1) across all 9 rooms and count how many carry the same source-glob-vs-build-output gap, before/after offPct per room

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

    This event is a false-positive claim against 🎤 voice's loss ratio — the room did CLAUDE.md-mandated, compliant work and was charged a 23%-offPct breach for it; premium is restored the moment the owned-surface glob covers build-book-html.sh's five output paths, not by the room changing behavior.

    Open the signed attestation →
  51. 2026-09-11 · 📐 architect · offPct 22 · mistagged

    feat(book): ch7 — the field and the hall get their own headings so the book club can pin the field alone

    Why it left the lane: The commit's Originating-Terminal trailer claims 📐architect, but every touched path — books/tesseract/chapters/chapter-07-the-gap-you-can-feel.md, chapters-html/07-the-gap-you-can-feel.html, public/book/chapters/07-the-gap-you-can-feel.html, exports/tesseract-complete-book.txt — is book-chapter content, none of which appears in architect's owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md). The actual diff content ('## The Golf-Flag Bow', '## The Bow in the Hall', new <h2 id=...> anchors) is pure voice/book-craft work. The commit's own Relevant-Rooms trailer lists '🎤 voice · 📐 architect · 🧭 navigator' — voice first — so even the commit's own metadata half-admits the mistag before the receipt measures it.

    Intent–reality gap: The message frames this as tooling logistics for tomorrow's book club (pick-passage.mjs splits on ## only, so the field needed its own heading) and says nothing about room ownership; the receipt then measured 100% of the lit mass landing in book-chapter files, 0% inside any path architect legitimately owns.

    • Add `./scripts/room-drift-architect-check.sh "$1" || exit 1` (respecting its own override marker) to hooks/commit-msg, then reinstall .git/hooks/commit-msg from the tracked source so the two stop diverging
    • Reconcile hooks/pre-commit (tracked) against the installed .git/hooks/pre-commit — diff shows whole sections present in the tracked file missing from the installed one, meaning the installed enforcement layer is generally stale, not just for this guard
    • Write scripts/room-drift-voice-check.sh (owned surface: books/tesseract/**, src/content/blog/**) since this commit's own Relevant-Rooms trailer names voice as the collaborating room and no such check exists yet — matches prior lesson's finding that 3 rooms spec'd this identical fix and none shipped it
    • Add an explicit `books/tesseract/*|public/book/*) return 1 ;;` case (with a comment) to is_architect_owned() in scripts/room-drift-architect-check.sh so the exclusion is documented rather than relying on the silent default-return-1 fallthrough
    • Update CLAUDE.md § COMMIT MESSAGE STRUCTURE per spec_rewrite above
    • Audit git log for 'room-drift-check: skip' usage — the override exists but nothing currently counts or rate-limits it, so it is available as an unaudited escape hatch the moment the hook is actually wired in

    What we learned: A guard script existing, being executable, and even being committed with a message claiming it as 'staged from spec → executable' is NOT the same as the guard being installed in the enforcement path. CLAUDE.md's own CODE DEFINITION-OF-DONE rule ('the deliverable is the regression guard, not the patch') was satisfied at the file-existence level here but not at the wired-into-hooks level, and nothing in the repo currently distinguishes those two states — which is exactly why offPct kept climbing (14→28, 17→26) across the two prior facts-only interventions even after the room believed this class was already fixed: the fix was real but inert.

    The missing guard (the deliverable): tests/ops/room-drift-guards-wired.test.mjs — globs scripts/room-drift-*-check.sh and fails unless the tracked hooks/commit-msg (or hooks/pre-commit) source-greps a call to each match; a guard script with zero callers anywhere outside a permission allowlist is treated as absent.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Saturated, not under- or over-shallow: litIntent equals walksIntent (144/144) and litReality equals walksReality (102/102) — the walk never fails to light a cell it visits, on either side. Combined with walkTruncated=true, this reads as the walk exhausting its ply/hop budget while still accepting every cell it reaches, i.e. its per-cell acceptance threshold is too permissive to ever produce a genuine miss. Concrete adjustment: tighten the per-cell gzip-NCD acceptance threshold (or cap walksReality's ceiling below litReality's natural saturation point) so 'lit' stops being synonymous with 'walked' — only then can offPct discriminate a mistagged-but-internally-coherent commit like this one from a genuinely scattered one. Experiments: Reseed the reef dictionary with book-chapter heading/anchor strings ('<h2 id=', 'class="line-anchor"') and rerun prewalkOverlap on this sha offline — measurable outcome: does prewalkOverlap rise above 2, and does that change offPct on replay? · Add a path-ownership short-circuit before the ballistic walk: when >80% of staged paths match a DIFFERENT room's owned-surface glob than Originating-Terminal claims, skip the walk and report boundary_failure=mistagged directly — measurable outcome: compare walk-computed offPct vs the short-circuit verdict on the last 20 architect commits · Ablation-test excluding books/tesseract/exports/*.txt (a generated re-export, redundant with chapters-html/*.html) from the reality-side corpus — measurable outcome: does litReality drop and does offPct converge closer to the chapters-html-only signal?

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

    An out-of-lane book-content commit tagged as architect work inflates this lane's measured loss ratio for a risk architect never actually took on; premium is restored the moment room-drift-architect-check.sh is wired into hooks/commit-msg so the tag itself becomes self-correcting at commit time rather than only diagnosed after the fact.

    Open the signed attestation →
  52. 2026-09-11 · 📐 architect · offPct 40 · structural

    feat(book): the reminder — an exponential is a foam knife in the kidney, in ch6, ch9 and the conclusion

    Why it left the lane: The commit message is written entirely in architect/ops vocabulary — 'Guard test 3 in tests/voice/book-exponential-is-a-foam-knife.test.mjs now passes,' 'Relevant-Rooms,' 'Story:' — which seeds the intent walk near C.Operations/B.Tactics process coordinates. The actual diff payload is dense literary-mathematical prose ('Katz, 1953,' 'Galton–Watson,' 'Lyapunov exponents,' 'foam knife in the kidney,' 'thermodynamic tax') landing entirely inside books/tesseract/ and public/book/ — paths that do not appear anywhere in 📐architect's declared owned-file-surface. prewalkOverlap=4 (near-floor) confirms almost no shared vocabulary between the meta-commit-message framing and the prose it actually shipped, before the walk even ran.

    Intent–reality gap: The commit claims architect-room provenance and cites a guard-test pass as its deliverable, but 100% of the changed files (books/tesseract/*, public/book/*) sit outside every path 📐architect legitimately claims — the receipt measured book-prose work landing in a lane no declared surface for this room covers.

    • Locate and dump the room-ownership config that generated the 'THE ROOM'S OWNED FILE SURFACE' block for architect in this prompt, confirm which room (if any) currently claims books/tesseract/** and public/book/**
    • Add books/tesseract/**, public/book/** to whichever room legitimately owns book prose (voice, by CLAUDE.md's own territory split)
    • Ship the unified room-drift-<room>-check.sh already independently spec'd three times per prior lesson ff09774e5, now scoped to path→room ownership rather than Originating-Terminal-vs-Relevant-Rooms
    • Backfill: rerun the receipt for the other book-touching commits in this room's 154-event/14-day window to see how many share this exact mistag class vs a genuinely different cause
    • Audit whether any OTHER frequently-touched path (not just books/) is similarly undeclared by any room — the 40% offPct here may just be the most visible instance of a broader unclaimed-surface gap

    What we learned: A room's declared owned-file-surface can go stale relative to what the room actually, repeatedly does — 154 out-of-lane events in 14 days for one room means the gap isn't a single mis-tag, it's an undeclared recurring practice (book editing) with no room formally claiming its paths at all, so every commit in that practice is structurally doomed to read as drift regardless of which terminal originates it.

    The missing guard (the deliverable): A pre-commit path→room ownership check (the room-drift-<room>-check.sh spec'd three times per ff09774e5, never shipped) that computes, for the commit's changed paths, which declared room-surface glob set covers ≥X% of them, and WARNS when that room differs from the commit's own Originating-Terminal trailer — turning this class of drift into a pre-commit signal instead of a post-hoc receipt.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Right-sized, not saturated or shallow — litIntent/litReality track walksIntent/walksReality closely (139/139, 131/131), meaning every walked cell lit, with no runaway fan-out. The adjustment isn't walk depth, it's seed vocabulary: feed the walk book-craft terms so literary content seeds toward a book/voice coordinate instead of defaulting to whatever the ops-language commit message pulls toward. Experiments: Seed the reef dictionary with book-craft vocabulary (Katz, Galton-Watson, Lyapunov, resonator, contraction, 'foam knife in the kidney') and rerun the e96d699b2b receipt to measure whether offPct drops once book prose has its own attractor · Add an explicit books/tesseract/** + public/book/** → room mapping to the reef config and replay the last 14 days of architect commits to check whether room-mean offPct falls from its current elevated baseline · Split commit-trailer meta-vocabulary ('Guard test', 'Relevant-Rooms', 'Originating-Terminal', 'Story:') into its own lane in the seed so it stops competing with the actual payload vocabulary for placement on every commit, not just book ones

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

    A book-only commit landing 40% off-lane under an architect trailer reads as noise against this room's loss ratio when the real cause is an unclaimed path, not bad work — premium here is restored by declaring book-path ownership once, not by architect editing more carefully.

    Open the signed attestation →
  53. 2026-09-11 · 🎤 voice · offPct 19 · structural

    feat(book): ch3 — Four Things With Nothing in Common: the convergence quartet, agree-first, each item carrying the sentence that breaks it

    Why it left the lane: The chapter's own prose is built from the reef's infra vocabulary: 'a cache set is a mailbox with a fixed number of slots' and 'arranged in sets with a fixed number of ways' hits Operations.Grid; 'the evicted line either goes back to memory... and the bus pays' and Pacioli's 'every transaction lands twice, in two accounts, and the books balance or they do not' hit Tactics.Deal/exchange; 'a dependent load takes longer... that latency is not a log the program wrote. It is a receipt the floor wrote' hits Tactics.Signal (the single heaviest magnet, x11) and Tactics.Speed/velocity. The walk ran in keyword-fallback at depth 0, so it scored these literal token matches flatly rather than recognizing they are analogy, not infra description.

    The semantic pull: Strings pulling mass off-lane, verbatim from the diff: 'cache set', 'ways', 'evicted line ... bus pays', 'a dependent load takes longer', 'a receipt the floor wrote', 'transaction lands twice, in two accounts', 'the books balance or they do not', 'displacement is countable', 'no third account'. Every one of these is CLAUDE.md/AXIOM-1 language repurposed as book metaphor, and the reef was seeded from exactly that corpus, so gzip-NCD + the keyword-fallback walk see them as strong hits on Operations.Grid/Loop/Flow and Tactics.Speed/Deal/Signal rather than as book-lane prose.

    Intent–reality gap: The commit claims a book-content lane (ch3 of Tesseract Physics, room=voice, file=books/tesseract/chapters/chapter-03-domains-converge.md) — pure prose, no infra touched. The receipt measured 19% of the lit reality mass landing in git-discipline/ops coordinates (Grid/Loop/Flow/Signal/Deal/Speed) because the prose's central literary device IS that infra vocabulary, used analogically.

    • Tag all four convergence-quartet anchors in chapter-03-domains-converge.md with borrows-vocab per item
    • Add path-scoped vocab-dampening list for books/tesseract/chapters/*.md in the reef seed script
    • Add the 'expected to score against Operations/Tactics' note to docs/architecture/claude-rules/build-and-format.md
    • Re-run offPct for the last 6 book-chapter commits under the dampened reef and record the delta
    • Update .workflow/rooms/voice.html owned-surface note: convergence-metaphor chapters legitimately touch Operations.*/Tactics.* when borrows-vocab-tagged
    • Ship the guard test named in missing_guard in the same commit as the dampening list

    What we learned: Tesseract Physics's convergence chapters are written FROM the same vocabulary bank (cache/eviction/receipt/coordinate/slot/grid/exchange/signal) that seeds the PMU's own Operations/Tactics lattice, because CLAUDE.md's own AXIOM 1 language is the book's source material. Content that succeeds at the book's stated goal — making the reader feel that infra physics and lived experience are 'the same physics' — will structurally always breach offPct against a reef built from those same axioms. The room's 110-event/14-day rate is not authoring indiscipline (the three priors, all facts-only with no sensemaking, only made it worse: 27→39, 21→31, 0→36); it is the reef and the book converging on identical vocabulary. The fix is a lane-aware dampener, not more author discipline — the first two facts-only passes had nothing to dampen with because no sensemaking ran.

    The missing guard (the deliverable): tests/pmu-simulator/book-chapter-vocab-dampening.test.mjs — ingest a books/tesseract/chapters/*.md fixture containing the known convergence-metaphor terms (cache, eviction, receipt, mailbox, coordinate, slot, exchange, signal, grid, loop, flow) and assert the path-scoped dampening list is applied before NCD scoring; replay sha ec741ef9de through the dampened pipeline and assert offPct falls back under the 15 threshold.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. litIntent=138/walksIntent=138 and litReality=121/walksReality=121 — both sides fully saturated with walkTruncated=false, at depth 0. Full saturation at zero recursion depth on a semantically dense, metaphor-heavy chapter means the walk is UNDER-utilized: it saturated cheaply via keyword-fallback rather than by actually walking the lattice structure. Concrete adjustment: for books/tesseract/chapters/*.md, disable keyword-fallback and force depth>=1 so genuine recursive placement (which can distinguish 'cache set used analytically' from 'cache set used as metaphor' via surrounding structure) runs instead of flat term matching. Experiments: Re-run the walk for ec741ef9de and the prior 5 book-chapter commits with keyword-fallback disabled (force depth>=1); measure offPct delta across those 6 commits · Add the vocab-dampening list scoped to books/tesseract/chapters/*.md and re-run ablation over the room's last 14 days (110 events); measure room mean offPct before/after · Seed the reef with a dedicated book-metaphor coordinate cluster and re-run this commit; measure whether prewalkOverlap rises from 3 toward the walksIntent scale (better initial seeding, less fallback reliance)

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

    Standing alone this is a false-positive-shaped breach that shouldn't raise the voice lane's loss ratio once diagnosed as structural, but with 110 out-of-lane events in 14 days and three straight facts-only interventions that made the trend WORSE (27→39, 21→31, 0→36), the lane currently prices as high-loss; the premium only comes back down once the dampening guard ships and the room's mean offPct is shown bending downward over the next several book-chapter commits.

    Open the signed attestation →
  54. 2026-09-11 · 🎤 voice · offPct 38 · structural

    fix(book): straylight — the Villa has no slot; a sentence nothing can be held against is true forever

    Why it left the lane: The diff's own load-bearing vocabulary — 'slot', 'coordinate', 'evict/erasure takes the address not the information', 'displacement', 'put out into someone's hand', 'retain' — is the SAME lexicon AXIOM 1 (record conservation) uses in this repo's own infra rules (evict-or-retain, W1-W6, 'coordinate'). The reef's gzip-NCD seed (prewalkOverlap=23) picks up that overlap before the walk even starts, and the ballistic walk then spreads litReality=113 cells across Operations.Grid/Loop/Flow and Tactics.Speed/Deal — the exact coordinates where the infra rulebook lives — even though every one of those 113 cells sits inside a single book-prose file. Real strings driving it: 'Nothing in the Villa has a slot', 'the old box comes out into your hand before the new one goes in', 'a coordinate already holding the last incident report', 'a channel with room for one ion, put out by the next signal, its leaving the record'.

    The semantic pull: Narrative sentences built to explain AXIOM 1 as Gibson allegory reuse AXIOM 1's own technical nouns verbatim, so the reef cannot tell 'a chapter ABOUT the axiom' from 'a commit DOING axiom-shaped infra work'.

    Intent–reality gap: The commit claims pure book-prose work in one interlude file (fix(book): ... — accurate, docsOnly=true, single-file diff), but the receipt measured 38% of the lit reality mass landing in Operations/Tactics infra coordinates the commit never claimed and the room's owned surface never touches.

    • Add crossDomainMetaphor frontmatter to interlude-straylight-warning.md listing slot/coordinate/evict/displacement/retain as intentional AXIOM-1 borrowings
    • Audit ch8 (mailbox/erasure-takes-the-address), ch12 (paired sentence), 00-the-ship (the instrument/ion channel) for the same vocabulary overlap since this commit now links to all three
    • Add a docsOnly+path-scoped lexicon branch to the offPct pipeline before it scores book-chapter diffs against the full 144-cell reef
    • Ship a guard test asserting a pure-prose, docsOnly=true, single-book-file commit doesn't independently trip offPct>15 purely on AXIOM-vocabulary term overlap without checking crossDomainMetaphor first
    • Cross-reference this finding from docs/architecture/claude-rules/axioms-and-method.md so a future drift review doesn't re-diagnose the same mechanism from scratch

    What we learned: This repo's own internal technical vocabulary (AXIOM 1's evict/retain/coordinate/slot) is reused verbatim as book narrative metaphor — the axiom's memorability is exactly what makes any chapter that dramatizes it collide with the infra Operations/Tactics lattice; prior facts-only passes in this room never named THIS mechanism, only reported the trend worsening.

    The missing guard (the deliverable): A path+docsOnly-scoped lexicon dampener test: when 100% of changed files are books/tesseract/chapters/*.md and docsOnly=true, assert the offPct verdict is computed against a book-metaphor sub-lexicon (or a widened threshold) rather than the full infra reef — currently docsOnly=true is computed and carried in the receipt row but never used to gate or reweight the lane match.

    Detector probe: signal attribution — gzip reef 55% · ballistic walk 45%. walkTruncated=true while litReality/walksReality=100% (113/113) means the walk hit its budget ceiling before it could naturally converge — the 'full fill' is against a truncated ply budget, not a completed search. Adjustment: raise the ply budget specifically for docsOnly=true commits with word-count deltas this large (1910→2099, +9.9%) so long narrative prose gets enough walk depth to disambiguate metaphor terms from infra terms instead of saturating early. Experiments: Ablation: reprocess the last 20 docsOnly=true book-chapter commits with prewalkOverlap seeding excluding the AXIOM-1 term set (slot/coordinate/evict/displacement/retain); measure whether mean offPct drops toward the 15 threshold · Raise walk ply budget when walkTruncated=true AND docsOnly=true; measure whether litReality/litIntent coordinate overlap improves versus the current truncated-budget run · Build a separate book-metaphor reef bank distinct from the AXIOM/infra reef bank and re-run the room's 109 off-lane events from the last 14 days against both; measure the offPct delta

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

    This event nudges the 🎤 voice lane's loss-ratio up (109 off-lane events/14d, 3 prior facts-only passes trending worse), but since the underlying reality is legitimate, high-quality book prose, premium is restored by declaring the AXIOM-vocabulary borrowing in frontmatter and giving the detector a docsOnly-scoped lexicon branch — not by treating future book commits that quote AXIOM 1 as infra drift.

    Open the signed attestation →
  55. 2026-09-11 · 🛰️ unattributed · offPct 20 · structural

    chore(commit-page): panel-repair bbe59c55f — re-grounded panels [panel-attached]

    Why it left the lane: The diff's semantic file (the MDX frontmatter pointer swap) is a 2-line, correctly-scoped change. But src/data/post-panels-index.json is stored as ONE minified JSON line covering every post ever published, so touching a single slug's entry ('2026-09-08-nobody-has-to-tell-you-youre-blind') forces git — and the receipt's content ingestion — to treat the ENTIRE line as changed. The walker then reads literal commit-subject strings baked into that dump: 'Rice's theorem', 'k_E', 'insurance', 'ShortRank', 'Landauer duality', 'Codd's bargain', dozens of unrelated blog topics spanning the whole corpus history — and spreads placement across all of them, none of which the actual work (attaching two PNGs + repointing one image: field) touched.

    The semantic pull: Literal strings from the diff's post-panels-index.json blob — e.g. repeated template 'chore(blog): attach commit tolerance panel as OG image [panel-attached]', post subjects like 'undecidability is the asset', 'the reinsurer's standard of care', 'Codd's bargain', 'k_E is per-crossing and dimensionless' — are all present verbatim in the single line that git reports as touched, and the ballistic walk treats their topic content as this commit's reality.

    Intent–reality gap: The commit claims a narrow mechanical chore — 're-grounded panels' for one post's OG image — but the receipt measured reality spread (94 lit cells, 100% fill) across topics belonging to the entire blog corpus, because the generated manifest it touched is undifferentiated by line.

    • scripts/blog/build-panels-index.mjs — pretty-print or one-line-per-slug serialization for src/data/post-panels-index.json
    • Locate and patch the panel-repair automation (the script emitting '[panel-attached]' commits, likely under scripts/pmu/ or scripts/blog/) to always emit Originating-Terminal + Relevant-Rooms trailers
    • Drift-receipt ingestion config — exclude/structurally-flag src/data/post-panels-index.json (and any other single-line generated JSON/ndjson under data/ and .thetacog/) from full-content semantic walk
    • Add a guard: fail if src/data/post-panels-index.json round-trips to a single line (regression test for the minification-causes-explosion class)
    • Add a WARN-ONLY post-commit check (per hooks-never-block) flagging any commit touching docs/pmu/commit-panels/** or src/data/post-panels-index.json with no Relevant-Rooms trailer

    What we learned: A generated single-line JSON manifest is not merely a state-in-derived-artifact problem (already known) — it is a DIFF-GRANULARITY problem: minification erases the line-level boundary the receipt's content walk depends on, so touching one of hundreds of entries reads as touching all of them. This is a SIXTH distinct 🛰️ unattributed mechanism, orthogonal to the prior five (bundling, blank-trailer, malformed-certainty, zero-trailer-on-auto-apply, paragraph-scoped walk) — it fires even with a perfectly scoped, single-purpose commit, purely from file FORMAT.

    The missing guard (the deliverable): tests/pmu/generated-manifest-line-scoping.test.mjs — assert that src/data/post-panels-index.json (and any file the panel/pipeline scripts write) is never a single minified line; a single-line diff on a large generated JSON file should trip a WARN before the drift receipt ingests its full content as 'reality'.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Saturated but truncated: every reality step lit a new cell (94/94) yet the walk stopped short of intent's depth (139) — undersized for a diff this large, not shallow by design. Adjustment: size the walk-step budget to the diff's UN-minified line count (or byte-size-adjusted), not its raw line count, so a one-line 400KB file doesn't get the same budget as a genuine one-line change. Experiments: Re-run this exact commit through the pipeline with post-panels-index.json pretty-printed in the diff feed only (no file change) and measure whether offPct drops below 15 — isolates the line-diff-explosion hypothesis directly. · Strip any file matching src/data/post-panels-index.json from the walked diff content for this commit and re-run; compare offPct with vs without to quantify this file's contribution to the 20% figure. · Raise walksReality's step cap to match walksIntent (139) for this commit and re-run; if offPct converges downward the drift was walk-shallowness, if it stays flat the drift is confirmed to be seed/content pollution.

    This lane's loss-ratio ticks up on a false positive (a correctly-scoped, single-post panel fix reads as touching the whole blog corpus), which erodes trust in the 🛰️ unattributed bucket's signal; premium is restored by pretty-printing the manifest and excluding generated single-line data from the walk, so offPct reflects actual content risk again.

    Open the signed attestation →
  56. 2026-09-10 · 🎤 voice · offPct 30 · mistagged

    spec(architect): run the chapter-repair fan-out through the tesseract, with the envelope attached

    Why it left the lane: The diff is 137 lines of one new file, docs/specs/approved/2026-09-10-tesseract-chapter-repair-protocol.md, whose frontmatter literally says `to_room: architect` / `from_room: voice`. The body's live vocabulary — 'bifurcate', 'the signed mesh', 'per-coordinate specs', 'the WIP rule exists to prevent', 'the orchestrator had to own git', '16 agents on one index is the collision', 'placed at its coordinate' — is Operations/Tactics dispatch-machinery language, not book/blog content language. That vocabulary is exactly what pulls the walk into Tactics.Speed (B1: topology/velocity/throughput), Tactics.Deal (B2: exchange), and Operations.Grid/Loop/Flow (C1/C2/C3), with the pull table showing B3.Tactics.Signal×11 and C1.Operations.Grid×6 as the two heaviest magnets — a spec about routing work between rooms is itself a Signal/Grid artifact.

    The semantic pull: Strings 'bifurcate', 'signed mesh', 'placed by the PMU', 'WIP rule', 'orchestrator serializing', 'per-coordinate specs', 'collision' in the diff map directly onto Operations.Grid (placement/collision), Operations.Loop (serialization/orchestration), Operations.Flow (fan-out/throughput), and Tactics.Deal/Speed (dispatch exchange, velocity) — the 31 red coordinates are effectively the vocabulary of docs/architecture/claude-rules/doors-and-surfaces.md and DELEGATE-TO-SUBTASKS, not of books/tesseract/chapters or src/content/blog.

    Intent–reality gap: The commit message and the file's own YAML both declare this is a spec FOR the architect room about the dispatch/bifurcate mechanism (to_room: architect); the receipt graded it against voice's lane (book/blog content authorship) because the commit trailer stamps Originating-Terminal as voice. The claim ('spec(architect): …') and the grading lane (voice) contradict each other before any content is even read.

    • Patch the lane-resolver script (scripts/pmu/*, wherever Originating-Terminal is parsed) to read `to_room` frontmatter on docs/specs/approved/*.md before falling back to the trailer.
    • Add a rule to CLAUDE.md COMMIT MESSAGE STRUCTURE: to_room frontmatter governs drift-lane grading for spec commits, Originating-Terminal does not.
    • Add/extend docs/architecture/claude-rules/doors-and-surfaces.md to state docs/specs/approved/*.md is a shared cross-room intake surface, never owned by the committing room.
    • Audit the room's other 104 out-of-lane events in the last 14 days for the same pattern (docs/specs/approved/*.md committed from one room, to_room another) — if it dominates, the fix above closes most of the room's breach count in one move.
    • Ship the guard test (see missing_guard) in the same commit as the lane-resolver patch, per CODE DEFINITION-OF-DONE.
    • Reorder this commit's own Relevant-Rooms trailer precedent: graded room first.

    What we learned: Cross-room deliverables — a spec whose own frontmatter declares `to_room` different from the committing terminal — are structurally guaranteed to read as off-lane under the current pipeline, because the lane resolver keys off Originating-Terminal (who typed it) and never reads the routing field the spec itself carries (where it's headed). This is a class of false-positive drift distinct from the prior three facts-only interventions for this room, which never identified a mechanism — this one names it: the resolver is looking at the wrong field.

    The missing guard (the deliverable): tests/pmu-simulator/spec-lane-matches-to-room.test.mjs — for every commit touching docs/specs/approved/*.md that has a `to_room` frontmatter key, assert the receipt's graded lane-room equals `to_room`, not Originating-Terminal; fail if they diverge.

    Detector probe: signal attribution — gzip reef 20% · ballistic walk 80%. Too shallow. walkTruncated=true at only 2 plies, yet the diff is conceptually cross-cutting (dispatch, placement, WIP, orchestration, mesh) and produced 31 red regions across 6+ distinct B/C coordinates — a 2-ply walk on a cross-room document like this one hasn't had room to converge onto a smaller, more precise coordinate set before hitting its truncation limit. Adjustment: raise the ply cap specifically for docs/specs/approved/*.md (or any commit whose frontmatter declares a to_room different from Originating-Terminal), since those documents are definitionally cross-coordinate. Experiments: Re-run the walk on sha 28ba9d05b with walkTruncated forced false (raise the ply cap) and compare offPct against the current 30 — isolates whether truncation itself, not the content, produced the breach. · Seed the gzip-NCD reef prewalk from the `to_room` frontmatter's corpus instead of (or in addition to) the committing room's corpus for docs/specs/approved/*.md, then measure whether prewalkOverlap rises materially above 3. · Pull the last 14 days of this room's 105 out-of-lane events and bucket by path — if docs/specs/approved/*.md accounts for a majority, the to_room fix alone should collapse most of the room's breach rate; measure the room-mean offPct before/after the resolver patch lands.

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

    A mistagged cross-room spec inflates this lane's measured breach rate without reflecting any real content-authorship drift, so the fix is definitional (patch the resolver, add the guard) rather than behavioral — until it lands, every future to-architect spec drafted from voice will keep taxing this lane's loss ratio for free.

    Open the signed attestation →
  57. 2026-09-10 · 🛰️ unattributed · offPct 39 · structural

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

    Why it left the lane: The diff stat shows the commit's mass is dominated by public/bookclub/editions/2026-09-09.html (648 insertions) — a full generated newsletter edition page — while data/bookclub/highscore.json only changed 40 lines and public/bookclub/highscore.html only 14. The commit message scopes intent to 'high-score board update' (a narrow numeric-grid claim, C.Operations.Grid territory) but the reality corpus the walk actually ingested is a full day's edition content: headings, passages, quoted prose — semantically far richer and broader than a scoreboard recompute, which is exactly the kind of content that spreads litReality (140) past litIntent (125) into B1/B2/B3 Tactics coords the board claim never fenced.

    The semantic pull: 'editions/2026-09-09.html' is a rendered content page (not board data) sitting in the same commit as 'highscore.json' under one message that only names 'board'; the encircled pull (B3.Tactics.Signal ×11, C1/C2/C3.Operations ×14) is the walk finding the edition page's narrative/tactical language while the intent lane only declared the grid/data half.

    Intent–reality gap: The message claims a bounded, numeric operation ('board + edition pages regenerate from the three-tier instrument... exact numbers stay in data/bookclub/highscore.json') as if it were one board-scoped recompute; the receipt measured a commit whose actual reality mass is a freshly-rendered 648-line content page, a categorically different artifact from a JSON scoreboard.

    • scripts/bookclub/highscore-publish.sh: add trailer emission (Originating-Terminal: 🛰️ automation, Relevant-Rooms: <owning rooms>) to its git commit call
    • scripts/bookclub/highscore-publish.sh: split the board-data commit from the edition-page-render commit (two `git commit` calls, not one `git add -A`)
    • docs/.workflow/rooms/*.html: add an owned-surface glob for public/bookclub/** and data/bookclub/** — currently 'owned surface not found for this room', which is why every automated bookclub commit falls to 🛰️ unattributed
    • tests/: add a guard asserting bookclub-daily automated commits carry Originating-Terminal + Relevant-Rooms trailers (fails on the historical pre-fix bytes of this exact commit)
    • re-run the detector on the next 5 highscore-publish.sh commits post-fix and confirm offPct trend drops toward the 15 threshold

    What we learned: This is a FOURTH, distinct mechanism accumulating under '🛰️ unattributed' (prior three: co-scheduled bundling by blanket git add -A, full-reef-rewrite harvests, malformed-certainty interlink splices) — here the root cause is that ONE automated script intentionally bundles two semantically unrelated artifact types (a compact numeric board recompute and a full prose edition-page render) under a single narrowly-worded commit message, and because the script never emits room trailers, room detection falls back to unattributed on top of the scope mismatch — meaning 'unattributed' is not one bug but a growing bucket of independent automation-authorship gaps, each needing its own fix rather than a shared one.

    The missing guard (the deliverable): A pre-commit check scoped to scripts/bookclub/highscore-publish.sh's commit path: refuse (or warn-then-block) when the staged diff includes a >200-line insertion to public/bookclub/editions/*.html UNLESS the commit message explicitly names 'edition' as a declared artifact AND carries Originating-Terminal/Relevant-Rooms trailers — turning silent dual-artifact bundling into a visible, intent-declared act before it can land as one narrowly-worded commit.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Right-sized in ply count (2 plies matches the norm) but oversaturated on INPUT: litReality=140 across a commit whose reality corpus is one large prose page (648 lines) means the walk is being fed raw edition content as if it were compact positional signal. Adjustment: for commits touching public/bookclub/editions/*.html, cap the ingest to a delta-summary (new headings/section titles) rather than the full rendered body, so the walk's reality corpus stays proportionate to what a 'board update' commit should actually claim. Experiments: Experiment: re-run this commit's receipt with public/bookclub/editions/*.html excluded from the reality ingest corpus; measure whether offPct drops below 15 (isolates whether the edition page alone is the drift source) · Experiment: for the next 5 highscore-publish.sh runs, split into two commits as proposed in code_rewrite and compare each half's offPct independently against this commit's combined 39% · Experiment: add the trailer fix alone (no commit split) for 5 runs and measure whether room attribution alone (moving off 🛰️ unattributed) changes offPct, isolating trailer-effect from split-effect

    An offPct=39 breach with no owned surface and no room attribution reads as unpriced automation risk on this lane — it's cleared by the trailer fix (restores attributable room) and the commit split (restores a fenced intent lane), both of which turn this repeat 🛰️ unattributed pattern into a priceable, bounded one.

    Open the signed attestation →
  58. 2026-09-10 · 🔒 WezTerm Vault · offPct 46 · mistagged

    fix(book): the migration proof was a Redis wildcard scan — make it the real path

    Why it left the lane: The room's owned-surface glob is docs/01-business/patents/, docs/legal/, data-room*/, docs/incidents/ — nothing under books/. The diff touches only books/tesseract/chapters/chapter-08-from-meat-to-metal.md and public/book/chapters/08-from-meat-to-metal.html, and its vocabulary (`cell = row * GRID + col`, `ballistic.rs`, `grid[r_idx * GRID + j]`, `lattice buffer`, `cache-aligned`) is architecture/physics-proof language, not legal/patent language. prewalkOverlap=4 against litIntent=138 shows almost no lexical anchor existed between the vault's legal-lane seed terms and this commit's actual text before the walk even ran — the mismatch is visible at the reef-seed stage, not manufactured by the walk.

    The semantic pull: Terms like `ballistic.rs`, `grid[r_idx * GRID + j]`, `cache-aligned`, and `the offset IS the semantic position` pull toward the Operations.Grid/Tactics.Signal architecture coordinates the commit's own routing line names, while the vault's declared lane (patents/legal/data-room/incidents) has zero token overlap with any of that vocabulary — the 46% off-lane mass is the distance between those two vocabularies, not a defect in the prose itself.

    Intent–reality gap: The commit message claims a straightforward book-content fix ('replace a fabricated Redis proof with the real path') and the Originating-Terminal trailer stamps it 🔒 WezTerm Vault, but the receipt measures the work landing entirely outside the vault's owned legal/patent surface — the work is correct, the room claim on it is not.

    • Add scripts/ops/verify-room-trailer.mjs: diff git changed-paths against every room's owned-surface glob (source: this event's 'THE ROOM'S OWNED FILE SURFACE' block, one per room), compute best-match room, warn (not block) when Originating-Terminal != best-match
    • Wire verify-room-trailer.mjs into the post-commit hook as an advisory-only check (mirrors WIP-claims enforcement pattern already in CLAUDE.md), appending mismatches to a ndjson ledger for trend tracking
    • Extend CLAUDE.md's COMMIT MESSAGE STRUCTURE section with the spec_rewrite text above
    • Add books/tesseract/** and public/book/** to the owned-surface glob of whichever room legitimately does book editing (this commit's own Relevant-Rooms names 🧪 laboratory and 🎩 operator, not vault) so future mismatches resolve to a real owner instead of 'no room'
    • Audit the other 2 out-of-lane vault events in the same 14-day window for the identical trailer/glob mismatch pattern to confirm this is systemic rather than one-off

    What we learned: Two prior facts-only passes on this exact room (ed47d982a, 98e6bac11) and one sensemaking pass (ccc40f5cd0) already named 'trailer vs glob, nothing cross-checks it' — and the room's offPct trend got WORSE after each (14→24, then 0→48). Narrating the mechanism without shipping the check does not move the metric; this room specifically needs the enforcement artifact, not a fourth diagnosis of the same gap.

    The missing guard (the deliverable): A post-commit advisory check (scripts/ops/verify-room-trailer.mjs) that computes owned-surface-glob overlap per room against the commit's changed paths and flags — non-blocking, ndjson-logged — whenever Originating-Terminal names a room that isn't the top match.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Right-sized, not the defect: fill 0.98% is far under the 70% saturation ceiling, walkTruncated=false, and litIntent/litReality track within 10% of each other — the walk has headroom and isn't truncated. The lever to pull is upstream (reef seeding), not walk depth. Experiments: Seed each room's reef bank with its owned-surface glob tokens (e.g. 'patents','legal','data-room','incidents' for vault) so prewalkOverlap reflects glob-match strength, not just free-text similarity — ablation: recompute prewalkOverlap for the room's last 20 commits with/without glob-seeded tokens and check correlation with offPct · Give book/architecture vocabulary ('chapter','ballistic.rs','lattice','grid') its own reef bank scoped to the rooms that actually own book work, then re-run this commit's placement and confirm offPct rises further (correctly signaling mismatch) rather than falls · Cross-tabulate Originating-Terminal against git-diff-glob-match for all 3 out-of-lane vault events in the 14-day window and re-run the room's offPct trend filtered to glob-match-only commits, to see whether pre-filtering separates genuine drift from tagging error

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

    A mistagged-but-correct commit doesn't raise the vault lane's actual loss ratio, but three uncorrected mistags in 14 days erode confidence in the trailer as a placement signal at all — the premium is restored by the advisory glob-check turning 'self-reported' into 'cross-checked' without blocking the room's real (legal/patent) work.

    Open the signed attestation →
  59. 2026-09-10 · 🎤 voice · offPct 25

    fix(book): ch11 — holding a bit and erasing one are two different costs

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

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

    Open the signed attestation →
  60. 2026-09-10 · 🎤 voice · offPct 16 · structural

    build(book): rebuild HTML for all 17 repaired chapters

    Why it left the lane: The commit message frames this as a single mechanical step (git-discipline/rebuild: 'Vercel serves pre-built HTML from public/book/, not markdown... this ran'), but the actual diff bundles 17 chapters' worth of substantive technical rewrites spanning physics, CS theory and market claims. Strings like '(33)^3 = 36,000x' and '100 nanoseconds versus 3. A 33x slowdown per access' pull toward B1.Tactics.Speed (velocity/throughput coords); 'The Benchmark Commitment... that's a debate we win with numbers' and the four Time-Bounded Tripwires pull toward B2.Tactics.Deal (exchange coords); the cache-miss/JOIN-cascade mechanics ('Distance structurally consumes precision', 'synthesis time explodes') pull toward C3.Operations.Flow. None of that content lives in git-discipline's B3.Tactics.Signal home coordinate, so the walk lights 16% of reality mass outside the declared lane even though most of the commit (84%) is correctly anchored near B3.Signal/C1.Grid.

    The semantic pull: Multi-domain technical prose (speed multipliers, benchmark/market claims, throughput mechanics) embedded inside a commit tagged purely as a build/rebuild step drags the walk into B1/B2/C3 coordinates the git-discipline lane doesn't own.

    Intent–reality gap: The message claims a narrow, mechanical action ('rebuild HTML... triggers the anchor sweep') scoped to git-discipline/build; the receipt measured reality across 17 chapter files carrying dense cross-domain content (speed, deal, flow coordinates) that the git-discipline pixel was never built to hold.

    • CLAUDE.md COMMIT MESSAGE STRUCTURE: document the new `Lane:` trailer alongside the existing Originating-Terminal/Relevant-Rooms/Story trailers
    • Owned-surface config (rooms JSON / .workflow/rooms/*.html): add books/tesseract/chapters-html/** and public/book/chapters/** to whichever room actually owns rebuild commits (QC already resolves this to 🔨 builder / C1.Operations.Grid) instead of leaving it unclaimed under 🎤 voice
    • scripts/build-book-html.sh: auto-stamp `Lane: book-build` trailer when staged diff is 100% derived-HTML paths
    • tests/ops (new guard): fail if a commit whose diff is scoped entirely to chapters-html/**+public/book/chapters/** lacks the `Lane: book-build` trailer
    • Consider batching rebuilds closer to each prose-repair commit (smaller chapter groups per rebuild) rather than one 17-chapter mega-rebuild, to reduce walk spread per commit

    What we learned: The book-rebuild pipeline has no concept of a 'derived multi-file build' commit class distinct from 'single-topic content edit' — so every mechanical HTML regeneration that bundles many chapters' prior prose work reads as drift against the narrow git-discipline pixel, structurally guaranteeing recurring offPct breaches in this room every time a rebuild runs, independent of whether the underlying content work was sound.

    The missing guard (the deliverable): A commit-trailer + CI check requiring `Lane: book-build` on any commit whose staged diff is scoped entirely to books/tesseract/chapters-html/** + public/book/chapters/**, with the drift-receipt pipeline scoring that lane against a wider/exempted threshold instead of the room's content-authoring git-discipline pixel.

    Detector probe: signal attribution — gzip reef 15% · ballistic walk 85%. litIntent=109/walksIntent=109 and litReality=136/walksReality=136 — 100% fill on both sides means every cell the walk visited also counted as 'lit'; there is no walked-but-unconfirmed category, i.e. the walk isn't discriminating signal from noise, it's saturated. Adjustment: introduce a minimum gzip-NCD confirmation strength per cell so 'lit' requires exceeding a threshold, not merely being visited — currently visitation and confirmation are the same event. Experiments: Re-score sha 3308b4dde7 with a synthetic `Lane: book-build` trailer applied and compare offPct against the unmodified score, to test whether lane-exemption alone would have kept this under threshold · Ablation: strip books/tesseract/chapters-html/** and public/book/chapters/** from the walk's file-set for this sha only, recompute offPct, and compare against the full-file-set baseline to isolate how much of the 16% is purely path-driven vs content-driven · Across the room's 106 out-of-lane events in 14 days, correlate offPct against files-touched-per-commit; if correlation is strong, the fix is structurally a lane/tagging problem (this hypothesis) rather than a content-quality problem

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

    A rebuild commit that reads as 16%-off-lane against its own room's pixel erodes 🎤 voice's loss-ratio on every mechanical HTML regeneration it runs; restoring it means the lane tag change above gets wired into the scorer so fan-out from batched derived-file commits is priced separately from genuine content drift.

    Open the signed attestation →
  61. 2026-09-10 · 🎤 voice · offPct 32 · structural

    fix(book): conclusion — the vault stops being infinite, and R stops colliding with R_c

    Why it left the lane: The diff replaces loose metaphor ('DNS figured this out', 'the vault is infinite', 'no heat generated') with precise mechanism prose: 'your resolver reaches the entire infrastructure', 'a walk has no maximum length', 'boundary crossing', 'the lattice's own geometry', 'twenty-two neighbors', 'terminate correctly at every step'. Those are exactly the token family the reef's own Operations/Tactics rule corpus is built from (the encircled reds name 'topology', 'velocity', 'throughput', 'exchange'). litReality landed at only 89 of the 136 intent-lit cells, and 32% of that reduced mass sits outside the declared lane — the walk found real content, it just resolved the book's mechanism vocabulary against infra homonyms of that same vocabulary.

    The semantic pull: 'terminate correctly at every step' / 'lattice's own geometry' / 'twenty-two neighbors' -> B1,C1 Operations.Grid·topology. 'a walk has no maximum length' / 'crossing' (used twice, R vs R_c paragraph) -> B1,C2 Operations.Loop·velocity, B1,C3 Operations.Flow·throughput. 'register your coordinate against the map. The verification runs the moment you do' (the tesseract.nu CTA rewrite, replacing 'acquire your Fuel, and stake your claim') reads as a transaction verb -> B2,* Tactics.Deal×Operations·exchange coordinates.

    Intent–reality gap: The commit claims a clean, single-file book/voice fix (and the diffstat proves it: one file, conclusion.md, no code touched). The receipt measured 32% of the walked mass landing in Operations.Grid/Loop/Flow and Tactics.Speed/Deal coordinates — not because the work left the book, but because the book's subject IS the walking-lattice mechanism the detector's own coordinate vocabulary is named after.

    • Add the 'Vocabulary-Note' trailer convention for book commits formalizing R/R_c/k_E/lattice claims, documented alongside the existing trailer rules.
    • Wire the receipt's already-computed docsOnly=true flag into the offPct threshold decision for commits whose diff is 100% inside a room's owned-surface glob — today it is recorded (docsOnly=true, ingestSuspect=false) but this event fired at the generic threshold=15 anyway.
    • Extend CLAUDE.md's CANONICAL NUMBERS block with the R vs R_c distinction this commit just made explicit, so it's restated verbatim rather than re-derived per chapter (mirrors the open k_E-units gap CLAUDE.md itself already flags).
    • Grep the other five chapters for the pre-fix 'vault is infinite' / 'no heat generated' phrasing this commit fixed at two sites — the commit's own FOUND note (ch.6's downgrade silently unreflected in the conclusion) shows this class of unflagged duplicate claim recurs across chapters.
    • Backtest the room's 103 out-of-lane events over the last 14 days against a docsOnly-aware threshold to size how much of that count is this same structural homonym vs. genuine scope creep.

    What we learned: The three prior interventions for this room were all facts-only and the room's offPct trend rose every single time (27->39, 21->31, 0->36) — that's not noise, it's a signal that commit-hygiene nudges can't fix a detector-side bias. This event shows the specific mechanism: the receipt already computes docsOnly=true, but nothing downstream reads it before comparing offPct to the flat 15% threshold. The room's chronic volume is plausibly a classifier problem, not a discipline problem.

    The missing guard (the deliverable): A test asserting: when a commit's receipt has docsOnly=true AND every changed path matches the committing room's declared owned-surface glob (here books/tesseract/chapters/*.md under 🎤 voice), the offPct is evaluated against a docs-specific band rather than the general 15% threshold — and it should fail red today, because this event is exactly that case (docsOnly=true, single-file, 100%-owned-glob diff, offPct=32).

    Detector probe: signal attribution — gzip reef 40% · ballistic walk 60%. Shallow, not saturated: fill is 0.98% against the 70% ceiling and litReality (89) undershoots litIntent (136) by 35%. The walk is stopping short of reconciling mechanism vocabulary back into the intent lane rather than exhausting a saturated one. Adjustment: for docsOnly=true commits, raise the ply/hop budget so the walk has room to resolve book-mechanism terms back toward voice-lane coordinates instead of terminating at the nearest ops/infra homonym. Experiments: Experiment: tag Operations.Grid/Loop/Flow + Tactics.Speed/Signal rule text with a homonym-exclusion list (topology, velocity, throughput, exchange, crossing, boundary, coordinate) when the commit's owned-surface is books/tesseract/chapters/*.md; rerun the last 103 🎤 voice out-of-lane events and measure how many drop under threshold=15. · Experiment: give docsOnly=true commits a distinct offPct threshold (e.g. 25) and backtest against the same 103-event window to measure the false-positive reduction. · Experiment: seed the intent-lane reef for books/tesseract/chapters/*.md with the chapter's own prior committed text to raise prewalkOverlap above today's 3, and measure whether the next book-mechanism commit's offPct falls.

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

    A structural, homonym-driven offPct spike on a verified in-lane, docsOnly, single-file prose fix is a false-positive loss event, not a real drift loss — left as-is it inflates this room's loss ratio and erodes trust in the 15% threshold itself; wiring docsOnly into the threshold plus the reef disambiguation is what restores the threshold's signal value instead of accepting a permanently noisy 🎤 voice lane.

    Open the signed attestation →
  62. 2026-09-10 · 📐 architect · offPct 23 · mistagged

    feat(pmu): pipeline step registry — one algorithm, named levels, measured translations

    Why it left the lane: The diff is 100% implementation code: src/lib/pmu/pipeline-registry.mjs (237 lines: `export const STEPS`, `resolveStep`, `translateToCanonical`) and tests/lens/pipeline-modularity.test.js (224 lines of guard assertions). Neither path is inside 📐architect's owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, docs/01-business/strategy/, CLAUDE.md). The commit message's own Story trailer even names a different room as the actual source: 'The vault room mined this ask from the operator's own words' — Originating-Terminal was stamped architect, not vault or builder, even though src/lib/pmu/ and tests/lens/ are 🔨builder's normal owned-surface output (already correctly listed second in Relevant-Rooms).

    The semantic pull: Nothing in the diff's content pulled toward architect coordinates — the pull is entirely in the COMMIT MESSAGE voice, not the code: phrases like 'THE ASK, VERBATIM', 'AXIOM 1 / W6 — SUFFICIENCY', 'the ratchet is', 'ratchet step' are architect's strategy-memo register, laid over a payload (`resolveStep`, `LEVEL_IDS`, `Object.freeze(STEPS)`, `translateDomain`) that is pure builder-grade module code. The room lane was set by the PROSE describing the work, not the PATHS the work actually touched.

    Intent–reality gap: Commit claims Originating-Terminal 📐architect while 100% of the 461-line diff lands in src/lib/pmu/ and tests/lens/ — zero bytes touch docs/strategy/, docs/03-product/, docs/01-business/strategy/, or CLAUDE.md, which is architect's entire declared surface.

    • Fix the trigger regex in scripts/room-drift-architect-check.sh:59 to match `^Originating-Terminal:.*architect` instead of the literal, unused `room: architect`
    • Wire scripts/room-drift-architect-check.sh into hooks/commit-msg (warn-only) so it actually runs on every commit, not only in VS Code sessions or via manual --check
    • Add tests/ops/room-drift-check-fires.test.mjs: stage a synthetic commit (Originating-Terminal: 📐 architect + a src/lib/pmu/ file) and assert the script exits 1 — the guard itself has been silently non-firing and had no test proving it ever ran
    • Generalize the same wiring to the other rooms' equivalent scripts if they exist (builder, navigator) — prior lesson ff09774e5 found 3 rooms independently spec'd this class of fix without any of them shipping it; check for room-drift-builder-check.sh / room-drift-navigator-check.sh before writing new ones
    • Amend CLAUDE.md's commit-trailer protocol to state Originating-Terminal should reflect whichever room's owned-surface the MAJORITY of the diff touches, not the room that merely mined or phrased the ask
    • Flag sha 401421eba in the offPct trend as attribution noise (mistagged), not genuine scope drift, so the room-mean-offPct series isn't conflating detector-blindness with real behavior change

    What we learned: The guard for this exact drift class was already BUILT (scripts/room-drift-architect-check.sh) but has never fired on a single real commit because its trigger string was written against a commit-message format ('room: architect') that CLAUDE.md never standardized — the standardized format is the Originating-Terminal trailer. This is one layer past the prior ff09774e5 finding (which found the fix unshipped): here the fix WAS shipped, as a file, but silently dead on arrival because its own trigger condition was never tested against the real trailer format — a guard keyed to a string nobody writes is operationally identical to no guard, and 'the script exists in the repo' is not evidence it ever runs.

    The missing guard (the deliverable): tests/ops/room-drift-check-fires.test.mjs — stages a synthetic commit carrying `Originating-Terminal: 📐 architect` plus a file under src/lib/pmu/ (outside architect's owned surface) and asserts scripts/room-drift-architect-check.sh --check exits 1. Without this, a guard's own trigger condition can silently rot (as it did here) with nothing failing.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Right-sized on depth, under-saturated on fill: 2 plies at ~4.8k w/s finished at 0.98% fill, far under the 70% ceiling, with symmetric litIntent/litReality — there is headroom, not saturation. Concrete adjustment: raise ply depth to 3 specifically for architect-room commits, since its owned-surface globs (docs/strategy/, docs/03-product/, .workflow/, docs/01-business/) are unusually scattered across the tree versus other rooms' more contiguous surfaces, and the extra ply gives the walk more chance to find prewalkOverlap before fill risk becomes real. Experiments: Recompute prewalkOverlap for the last 20 architect-tagged commits at ply depth 3 vs the current 2; check whether mean overlap rises above 3 without fill crossing the 70% ceiling. · Seed the reef directly from scripts/room-drift-architect-check.sh's is_architect_owned() glob list (already hand-maintained ground truth for architect's surface) instead of having the walk rediscover the surface fresh each run; diff the two and log disagreements. · Ablation-test whether the literal token 'Originating-Terminal:' in every Claude commit message is itself diluting the reef seed toward whichever room name happens to follow it, independent of the diff's actual paths — this could be actively suppressing prewalkOverlap across ALL rooms, not just architect.

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

    This event reclassifies as attribution noise (a dead-on-arrival guard) rather than genuine scope creep, which should compress architect's apparent loss-ratio once the trigger is fixed — but until it ships, every architect-tagged code commit keeps inflating the room's measured offPct against a risk that was never real, mispricing the lane's premium against a phantom signal.

    Open the signed attestation →
  63. 2026-09-10 · 🎤 voice · offPct 22 · structural

    fix(book): ch4 — 100 picoseconds is not one cycle, and the neuron formula was invented

    Why it left the lane: The repaired Layer-1 paragraph and Weapons 1-3 rewrite are dense with generic technical-operations vocabulary — 'combinational logic', 'propagation delay', 'one clock period', 'pipeline', 'no loop, no branch, no lookup', 'proof-of-work', 'the path a signal has to cross' — that under keyword-fallback matching is indistinguishable from the lattice's own Tactics/Operations business terms (Speed=velocity/throughput, Operations.Loop, Operations.Flow, Tactics.Deal=exchange). 'proof-of-work' in particular is a literal exchange/deal term borrowed for a hardware-trust argument, and it (plus 'exchange'-shaped phrasing around verification) is exactly what pulls B2.Tactics.Deal. The walk telemetry confirms the mechanism: mode=keyword-fallback, not semantic.

    The semantic pull: Cross-domain homonyms: the same words ('cycle','pipeline','throughput','loop','exchange') mean 'clock/silicon timing' in this diff and 'business tactics/ops cadence' in the lattice's 144-cell vocabulary; keyword-fallback mode can't tell which sense fired, so it lights both.

    Intent–reality gap: The commit claims a bounded, correctness-only repair inside chapter 4 (fixing a picosecond/cycle arithmetic error and a fabricated neuron formula) filed under this room's git-discipline lane; the receipt measured the resulting prose scattering lit cells across nearly the entire Tactics×Operations submatrix (28 reds, 100% off-lane) because the corrected hardware-grounding language shares its vocabulary with the lattice's business-tactics terms.

    • Add `Domain: book-content` to the required-trailers list in CLAUDE.md's COMMIT MESSAGE STRUCTURE for book/blog commits
    • Add books/tesseract/** vocabulary-override table to the walk's keyword-fallback bucket so hardware-grounding terms don't map to Tactics/Operations
    • Ship a regression guard: keyword-fallback mode + books/tesseract/** glob + offPct>15 should fail until the override exists
    • Re-run the walk on 4679b73d8 with the override applied and record the offPct delta before declaring this closed
    • Audit whether 'git-discipline' is literally the classifier's DEFAULT lane for every commit regardless of content, independent of book edits
    • Diff this event's mechanism against fffc72f47/ff7c75f19/fe6d2be6e — check if the same keyword-fallback collision explains why all three prior facts-only interventions in this room made offPct worse, not better

    What we learned: This room's commit-message template is domain-agnostic (same trailers for a book edit as for infra work), so the intent classifier has no signal to distinguish 'this commit's body is about silicon timing' from 'this commit's body is about git process' — it appears to fall back to git-discipline by structure. Combined with keyword-fallback matching, ANY commit using generic technical vocabulary (cycle, loop, throughput, exchange) in its body will scatter across the business-tactics lattice regardless of correctness, which plausibly explains why this room's prior three facts-only interventions each coincided with RISING offPct (27→39, 21→31, 0→36) rather than falling: the fixes added more precise technical language without touching the classifier that misreads it.

    The missing guard (the deliverable): A guard asserting: for any commit whose walk telemetry reports mode=keyword-fallback AND whose changed paths match books/tesseract/**/*.md or src/content/blog/*.mdx, offPct must not exceed the room threshold — failing loudly until either the vocabulary override or a semantic (non-fallback) walk mode is in place for prose-heavy commits.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Saturated, not shallow: litIntent/walksIntent=100% and litReality/walksReality=100%, meaning every cell the walk visits lights up with no dark cells to discriminate signal from noise. Adjustment: require a corroborating second keyword hit (or a minimum term-frequency threshold) before marking a cell lit in keyword-fallback mode, so a single cross-domain homonym can't single-hit-light a Tactics/Operations cell. Experiments: Re-run this commit's walk with keyword-fallback forced OFF (semantic/embedding mode if available) and diff the resulting offPct against 22 — isolates how much of this event is a fallback-mode artifact vs real drift · Build a sense-tagged token table for {cycle,pipeline,throughput,loop,exchange,velocity} keyed by co-occurring vocabulary (GHz/cache/XOR/gate → hardware sense; deal/close/pitch → business sense) and re-run this sha's walk with tagging on vs off, measuring offPct delta · Backfill the same override across the last 14 days of this room's 99 out-of-lane events to see what fraction share this exact keyword-fallback collision, distinguishing a systemic cause from a one-off

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

    99 out-of-lane events in 14 days with a rising trend after three prior facts-only fixes marginally raises this lane's loss-ratio; premium is restored only once the vocabulary-override backfill (checklist item 4) shows a measured offPct drop on this and comparable book-content commits, converting a systemic classifier defect into a bounded, tested exception.

    Open the signed attestation →
  64. 2026-09-10 · 🧪 laboratory · offPct 23 · mistagged

    fix(pmu): the reef scorer's prompt side stops carrying the candidate — the magnet was shipped, not avoided

    Why it left the lane: The receipt caches no region narrative for this sha, so the only positional evidence available is the diff's file paths measured against room laboratory's declared owned-surface glob. All three changed paths — scripts/pmu/reef-ingest-snippets.mjs, tests/pmu/reef-snippet-mass.test.mjs, .thetacog/guard-seen-to-fail.ndjson — sit under scripts/pmu/, tests/pmu/, and a shared cross-room receipts ledger, none of which appear in laboratory's owned globs (.claude/*, .mcp.json, scripts/init-claude-flow-with-crm.sh, scripts/check-mcp-health.sh, scripts/claude-room, thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, .thetacog/punch-list*). offPct=23 is exactly the reading you get when a commit self-tags a room whose surface the diff never touches — there is no in-lane mass for 100% of the changed lines to land on.

    The semantic pull: Import lines `from '../../src/lib/pmu/unified-drift.mjs'`, `from './reef-focus.mjs'`, `from '../cog/rule-grab.mjs'`, and the file's own path `scripts/pmu/reef-ingest-snippets.mjs` are builder/PMU-lens vocabulary — gzip-NCD, ballistic aperture, reef domains — terms that exist nowhere in laboratory's CRM/MCP/swarm-comms/orchestrator surface. That vocabulary drags the lit mass toward builder's coordinates regardless of which terminal name sits in the Originating-Terminal trailer.

    Intent–reality gap: The commit message and its Originating-Terminal trailer claim this landed as 🧪 laboratory work; the receipt measured 100% of the touched mass (scripts/pmu/, tests/pmu/, the shared guard ledger) outside laboratory's owned surface. The work itself is correctly scoped PMU-scorer engineering — only the room self-tag is wrong.

    • Add scripts/pmu/**, tests/pmu/**, src/lib/pmu/** to builder's owned-surface declaration (wherever room ownership is formally recorded) so the claim is explicit rather than implicit-by-convention.
    • Grep .workflow/rooms/*.html for 'pmu' first, to confirm no other room ambiguously claims the same paths before adding builder's claim.
    • Write node scripts/ops/rooms-for.mjs <paths> (parallel to the existing rules-for.mjs / wip.mjs pattern) mapping changed paths to the owning room, printing a WARN when Originating-Terminal disagrees.
    • Wire rooms-for.mjs into the same pre-commit hook family as wip.mjs (WARN-only, per the WIP CLAIMS precedent) rather than a hard block — mistagging is noisy, not destructive.
    • Backfill-check the other 13 laboratory out-of-lane events in the last 14 days for the same signature (self-tagged laboratory, paths 100% outside its glob) before treating this as isolated.
    • Amend COMMIT MESSAGE STRUCTURE in CLAUDE.md to state the ownership-match rule explicitly rather than leaving it implied by Relevant-Rooms.

    What we learned: Originating-Terminal/Relevant-Rooms trailers are self-reported by whichever terminal happens to run the commit, with nothing checking them against the diff's actual paths — a session can do correct builder work, correctly list builder in Relevant-Rooms, and still mistag Originating-Terminal as the terminal it typed from, silently corrupting that room's own offPct trend. Prior lessons for this room recorded measured outcomes only with no sensemaking; this is the first time a mechanism has actually been named for a laboratory event.

    The missing guard (the deliverable): A pre-commit, WARN-only check — node scripts/ops/rooms-for.mjs $(git diff --cached --name-only) — that resolves the majority-owning room for staged paths and flags disagreement with the Originating-Terminal trailer already in the commit message buffer.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Too shallow for a cross-room commit. litIntent==walksIntent and litReality==walksReality means every step lit a fresh cell (0% wasted revisits), but only 2 plies ran against a 144-cell lattice — fill is 0.98%, i.e. the walk stopped almost immediately instead of exploring enough to find in-lane overlap. Adjustment: when Relevant-Rooms lists ≥2 rooms (as here — laboratory, builder, architect), bump ply depth from 2→3-4 before settling, so the walk has room to find a genuinely shared coordinate instead of freezing on the first room-adjacent cell it touches. Experiments: Re-score sha 47e79620a with Originating-Terminal forced to 'builder' and compare offPct — if it drops under 15, this confirms the drift is pure mistagging and validates rooms-for.mjs as the fix. · Ablation: add 'reef', 'gzip-NCD', 'ballistic aperture', 'lens-reef.json' as vocab terms on builder's reef domain entry, re-run placement on this commit's message, and measure whether prewalkOverlap rises above the current 6. · Sweep the room's last 14 out-of-lane events for the same signature (self-tagged laboratory, diff paths 100% outside its glob) and report what fraction of the '14 in 14 days' figure is mistagging vs real drift — this directly tests whether the room's current premium number is overstated.

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

    Mislabeling PMU-scorer work as laboratory inflates laboratory's measured off-lane rate on top of its already-elevated 14-events-in-14-days baseline, overstating that lane's loss ratio while understating builder's true share of PMU-surface risk; premium is restored by shipping the rooms-for.mjs ownership check so each room's offPct reflects only the paths it actually touched.

    Open the signed attestation →
  65. 2026-09-10 · 🎤 voice · offPct 23 · structural

    fix(book): ch5 — Casimir becomes a simile again, and the Meld gets a real objection

    Why it left the lane: No region narrative is cached for this sha, so the coordinate-level pull can't be named directly — but the receipt's own numbers point at the seed stage, not the walk. prewalkOverlap=12 against walksIntent=walksReality=140 means the gzip-NCD reef only found ~8.6% shared mass between the commit-message seed and the diff seed BEFORE the walk ran. The message body is dense with process-report vocabulary that never appears in the diff itself: 'TIER-1 anti-regression failure', 'the un-migrated majority votes the fix back out', 'Six-need ratchet: 488 -> 493', 'Round 3 attempted and abandoned', 'Guards: all four green'. None of that vocabulary occurs in the actual chapter-5 prose changes (Casimir simile, the hedge cut, the Talent VP line, the team-forge addition). Two vocabularies, one commit: the diff seeds cleanly into book-content space, the message seeds toward audit/process space, and the walk (140/140, fully saturated on both sides) expands each from its own start point without reconverging on 23% of the lit mass.

    The semantic pull: 'Six-need ratchet: 488 -> 493', 'Guards: all four green', 'REFUSED, and this is the substance of the pass:', and the itemized APPLIED/REFUSED ledger structure read like a CI status report rather than a content changelog — that vocabulary is what a git-discipline/Operations-domain pixel is built to recognize, and it lives in the message, not the diff.

    Intent–reality gap: The commit message frames itself entirely as book-content editing (five prose edits to chapter 5, all inside the room's owned books/tesseract/chapters/*.md glob), but the message's own convention — inline ratchet score, guard checklist, APPLIED/REFUSED ledger — reads to the walker as a change-control report, so 23% of the lit reality mass filed outside the content lane the diff actually occupies.

    • Update the book-edit skill's commit-message template to emit Six-Need-Ratchet: and Guards: as trailers, not body sentences
    • Add scripts/voice-commit-message-check.sh (fits the room's owned scripts/voice-*-check.sh glob): for commits touching books/tesseract/chapters/*.md, warn if the body (excluding trailers) matches /Guards:|ratchet|APPLIED:|REFUSED,/i
    • Document the trailer convention in the book section of CLAUDE.md / claude-rules/build-and-format.md so it doesn't drift back to inline prose next session
    • Backtest: re-walk the last 5 book-edit commits (ch0,ch3,ch4,ch6,ch7) with Guards/ratchet lines hypothetically moved to trailers, compare offPct before shipping the guard room-wide
    • Flag separately (not fixed by this pass): whether the git-discipline/C,B3 domain is structurally over-claiming voice-room content commits regardless of message wording — 97 out-of-lane events in 14 days is too high to attribute to one template alone

    What we learned: The three prior interventions for this room were all 'facts-only' (no sensemaking) and all three made the room's mean offPct worse afterward (27→39, 21→31, 0→36) — that's a pattern, not noise: a receipt without a mechanism doesn't just fail to help, it correlates with degradation, which is the argument for insisting sensemaking ships every time rather than being optional when unavailable.

    The missing guard (the deliverable): scripts/voice-commit-message-check.sh — a pre-commit check scoped to books/tesseract/chapters/*.md commits that fails or warns when the message BODY (not trailers) contains process-report tokens (Guards:, ratchet, APPLIED:, REFUSED,) — forcing that accounting into the trailer block where it belongs structurally.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. litIntent/walksIntent and litReality/walksReality are both exactly 100% — every cell the walk touches registers as lit on both sides. That's saturation, not shallow use: there's no headroom left to distinguish a strong intent/reality match from a weak one once every traversed cell counts as 'lit'. Concrete adjustment: replace the binary lit/not-lit criterion with a minimum compression-gain threshold (a cell only counts as lit if it improves gzip-NCD compression by some margin, not merely if the walk touches it) so the lit-rate can fall below 100% and start carrying discriminative signal again. Experiments: Strip Guards:/ratchet lines from the message-seed input for the last 10 book-edit commits and re-run the reef seed step; measure whether prewalkOverlap rises from ~8.6% toward the room's median · Split commit body from trailers before seeding (walk the body only for content-lane commits); measure offPct delta on a 20-commit backtest · Add a lit-rate ceiling check to the walk config (fail loud if litIntent/walksIntent or litReality/walksReality hits 100% on >N consecutive commits) so seed-saturation becomes visible instead of silent

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

    High-frequency, low-severity template mismatch (97 events/14 days, three prior worsening interventions) keeps this lane's loss ratio climbing on volume alone; restoring it needs the trailer-convention fix plus the pre-commit token guard landed and measured before the next premium read, not another facts-only pass.

    Open the signed attestation →
  66. 2026-09-10 · 🎤 voice · offPct 48 · mistagged

    fix(elicit): never retry an empty response; 5min timeout → 45s + the token-burn audit

    Why it left the lane: The diff's vocabulary is entirely infra-ops, not book/blog: 'REPAIR LOOP' and 'while (!parsed.ok && repairs < 2)' pull toward Operations.Loop; 'TIMEOUT_MS' dropping '5 * 60 * 1000' to '45 * 1000' plus 'a 1-turn classification that has not answered in 45s will not answer at 300s' pulls Tactics.Speed x Operations.Flow (stall/throughput); the C section's 'nettop -P -x -L 1', 'per-PID', 'egress-watch.sh' pulls Operations.Grid (topology/routing); '18,499,534 cache-create, 179,470 output — 103:1 in:out' pulls Tactics.Deal (exchange/cost accounting). The receipt's own pull row confirms this exact shape: B3.Tactics.Signal x11, C1.Operations.Grid x6, C2.Operations.Loop x4, C3.Operations.Flow x4, B1.Tactics.Speed x3, B2.Tactics.Deal x3 - four ops vocabularies fanning across the whole Tactics x Operations block, none of it touching 🎤 voice's owned surface (books/tesseract/chapters, src/content/blog, decentralizedtalk/, src/app/6needs).

    The semantic pull: 'REPAIR LOOP' -> Operations.Loop (C2); 'TIMEOUT_MS'/'45s'/'5min stall' -> Tactics.Speed x Operations.Flow (B1/C3); 'nettop'/'per-PID'/'egress-watch' -> Operations.Grid (C1); '103:1 in:out'/'18.5M cache-create' -> Tactics.Deal (B2). Zero book/blog/decentralized-talk terms appear anywhere in the diff.

    Intent–reality gap: The commit trailers Originating-Terminal as 🎤 voice (claimed lane C,B3 git-discipline), but every touched file - scripts/elicit/classify-decisions.mjs, tests/ops/no-retry-on-empty.test.mjs, docs/ops/token-burn-audit-2026-09-10.md - sits outside voice's owned surface entirely, and the commit's own Relevant-Rooms trailer already names 🎩 operator, 🔒 vault, 🧪 laboratory as the rooms this touches - the operator's own metadata contradicts the terminal label.

    • CLAUDE.md: add the Originating-Terminal-must-match-owned-surface rule to COMMIT MESSAGE STRUCTURE
    • scripts/pmu/intervene.mjs: add the files-touched vs Originating-Terminal cross-check before offPct scoring
    • tests/ops/originating-terminal-matches-surface.test.mjs: new guard, both halves
    • Audit the room's other 96 out-of-lane events in the last 14 days for the same terminal-vs-content mismatch pattern before trusting any of their sensemaking
    • Verify the owned-surface glob source (likely .workflow/rooms/voice.html) is actually what the resolver reads, not a stale copy
    • Re-run this commit's offPct against Relevant-Rooms[0] (🎩 operator) as a sanity check that reattribution actually clears the 15% threshold

    What we learned: All three prior lessons for this room show offPct WORSENING after facts-only intervention (27->39, 21->31, 0->36) - that trend is consistent with a room-assignment bug, not a content-drift trend: if commits keep landing here by terminal identity rather than by file ownership, every ops-shaped commit typed from the voice terminal adds to voice's breach count regardless of what the intervention says, so the room's measured offPct climbs no matter how good the sensemaking is. The structural fact this event reveals: the drift receipt's room label is sourced from session identity (Originating-Terminal), not from the diff's actual owned-surface footprint - those two things are allowed to disagree, and nothing today catches it when they do.

    The missing guard (the deliverable): A guard that checks, for every commit, whether the files touched intersect the Originating-Terminal room's declared owned-surface glob - zero overlap must hard-flag MISTAGGED before offPct is scored against that lane. tests/pmu/originating-terminal-owned-surface.test.mjs - SMOKE: a commit touching only scripts/elicit/*, docs/ops/*, tests/ops/* trailered 🎤 voice must flag MISTAGGED; NO SMOKE: a commit touching books/tesseract/chapters/*.md trailered 🎤 voice must NOT flag.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Right-sized on fill (0.98%, well under the 70% cap) but likely under-discriminating at 2 plies - litIntent/litReality (142/100) is rich enough that mass smears across nearly the whole B1-B3 x C1-C3 block rather than converging on the one or two coordinates (Operations.Loop for the retry fix, Operations.Flow for the timeout) that actually carry the diff's content. Adjustment: run a 3rd ply restricted to the B/C axes only (skip A) to test whether mass concentrates on Operations.Loop specifically once given one more hop to converge. Experiments: Seed the reef dictionary with 'Originating-Terminal' plus each room's owned-surface glob strings, then re-run prewalkOverlap on the last 20 mistagged-suspect commits and measure whether overlap rises and offPct concentrates on the correct room. · Add a pre-walk gate comparing diff file paths against room owned-surface globs and ablate it over the room's 97 out-of-lane events from the last 14 days, measuring what fraction resolve to MISTAGGED vs genuinely structural or intentional. · Recompute this commit's offPct using Relevant-Rooms[0] (🎩 operator) as the claimed lane instead of Originating-Terminal (🎤 voice) and check whether it drops under the 15% threshold - that single number proves or disproves the mistag hypothesis for this event.

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

    If representative of this room's other 96 out-of-lane commits in 14 days, 🎤 voice's drift premium is currently being priced against ops noise it never generated; restoring it requires the owned-surface cross-check (not another round of per-commit sensemaking), after which the room's true loss ratio can be re-measured on content-only commits.

    Open the signed attestation →
  67. 2026-09-10 · 🎤 voice · offPct 17 · structural

    fix(book): ch1 — Turing stated as what he proved, and (c/t)^n stops being called a speedup

    Why it left the lane: The diff is not five repairs to existing prose — it also inserts a wholly NEW ~180-word Meld exchange ('**DBA:**' ... 'Fine -- humor me on your own trade, then... your write just became a fan-out'; '**Cache Architect:**' ... 'It fans out. It does not tear... The propagation cost is measured the instant it happens... If it blows the band...'). That block is dense with literal systems/ops vocabulary — fan-out, JOIN, write time, propagation cost, compensation band, downstream reader, blown band — which is exactly the lexicon the reef maps to Operations.Grid/Loop/Flow and Tactics.Speed/Deal/Signal. A gzip-NCD/ballistic walk keyed on vocabulary cannot distinguish 'a novel's character explaining real DB mechanics' from 'us doing DB work', so the new dialogue pulled mass across all nine Operations×Tactics cells (31 reds) even though the file (books/tesseract/chapters/*.md) is squarely in voice's owned surface.

    The semantic pull: Concrete strings: 'fan-out' / 'JOIN' / 'write time' / 'downstream' / 'propagation cost' / 'compensation band' in the new DBA/Cache-Architect turns → pulled toward C1.Operations.Grid (×6, schema/table/'Grid' vocabulary), C2.Operations.Loop (×4, 'propagation... in the same pass' reads as a loop), C3.Operations.Flow (×4, 'write time'/'downstream' reads as data flow), and B3.Tactics.Signal (×11, 'the propagation cost is measured the instant it happens' / 'blown the band' reads as literal signal/telemetry talk). The other five repairs (Turing corollary, Casimir mechanism split, P=1 vesicle-release, (c/t)^n sign fix) are all in-chapter prose corrections with no comparable technical-domain vocabulary and did not independently justify 31 reds.

    Intent–reality gap: The commit message frames the change as 'Five repairs, all of them making a claim more checkable' — an editorial-correction claim. The receipt measured a NEW content block (not a repair) whose vocabulary reads as literal Operations/Tactics work across 31 cells; the intent lane (book-chapter editorial fix, git-discipline) never fenced 'add new technical dialogue answering an objection'.

    • books/tesseract/chapters/chapter-01-unity-principle.md — confirm the Meld-2 addition renders correctly post ./scripts/build-book-html.sh (book-editing rule, not yet re-run per this diff)
    • Add a 'New-Content:' distinction to the commit-message convention for book chapters so additions (new dialogue/sections) are never folded into a 'repairs' enumeration
    • Tag existing Meld dialogues (chapter 1's Hardware Engineer/DBA/Cache Architect exchange) as a recognized vocabulary cluster in the reef so future edits to them don't re-trigger the same 31-cell spread
    • Run scripts/pmu/post-drift-history.sh on this post/chapter if it also exists as a blog cross-post, per the standing tool instruction, to keep the per-commit tolerance panel current
    • Decide whether a technical appendix for Meld-referenced mechanisms (CAS, fan-out, JOIN) should exist as a separate file, and if so add it to voice's or architect's owned-surface glob explicitly

    What we learned: This room's recurring 96-events-in-14-days problem has a specific, previously-undiagnosed mechanism (the prior three interventions on this room ran 'sensemaking unavailable, facts-only' and the room's offPct trended UP after each — 27→39, 21→31, 0→36): the book's own literary device — Meld dialogues where characters argue in the authentic vocabulary of hardware/DB/ops domains — is structurally guaranteed to score as cross-domain content whenever it is touched, edited, or extended, independent of whether the edit is correct. Vocabulary-keyed placement cannot tell 'a character discussing JOINs' from 'us doing JOIN work.'

    The missing guard (the deliverable): A pre-commit check (non-blocking, WARN-only per WIP-claims precedent) that diffs a book-chapter change for NEW speaker-turn lines (new '**Name:**' blocks not present in the prior version) and compares that count against the commit message's enumerated repair/addition list — if new speaker turns exist but the message enumerates only 'repairs', warn that an addition is undeclared and likely to read as off-lane.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Under-utilized on the reality side: litReality (112) trails litIntent (136) by 24 cells and walkTruncated=true confirms the walk hit its ceiling before finishing, on a diff that spans 6 separate hunks across a long chapter file. Concrete adjustment: raise the hop/fill ceiling (or split the walk per-hunk) specifically when a single commit's diff touches more than ~4 non-contiguous sections of one file, so the reality walk gets budget proportional to hunk count rather than a flat cap. Experiments: Re-run this exact commit's walk with the truncation ceiling raised (disable or 2x the hop cap) and diff the resulting litReality/offPct against the shipped receipt — if litReality rises toward 136 and offPct drops materially, truncation (not genuine drift) was the dominant cause; ablation over the last 20 walkTruncated=true commits confirms or kills this. · Tag all existing Meld-dialogue blocks across books/tesseract/chapters/*.md (regex on repeated '**<Role>:**' speaker markers) as a labeled vocabulary cluster, and for the next 20 commits touching those blocks, track offPct separately from prose-only chapter edits — confirms or refutes the structural-mismatch hypothesis in this report. · Seed the reef with an explicit mapping of Meld-technical vocabulary (fan-out, JOIN, propagation, compensation band, CAS) to the book-voice lane as a known-benign cluster, then measure offPct on the next 10 commits that touch a Meld exchange, pre- vs post-seed.

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

    A chronic 96-events/14-days room with offPct trending upward across all three prior facts-only interventions reads as a rising loss-ratio on the voice lane's premium; it is restored not by tightening the threshold but by teaching the reef to recognize this book's Meld-dialogue vocabulary as a known-benign cluster (probe 10c) so genuine editorial commits stop pricing as cross-domain risk they aren't.

    Open the signed attestation →
  68. 2026-09-10 · 🎩 operator · offPct 29 · mistagged

    fix(pmu): the tolerance readout is listenable — 4.1 min of speech down to 1.3

    Why it left the lane: The diff lands entirely in scripts/pmu/annotate-regions.mjs and tests/pmu-simulator/spoken-readout-is-short.test.mjs. Neither path is in 🎩 operator's declared owned-surface glob (data/trust-debt/, docs/03-product/MVP/ORTHOGONAL_HEATMAP_MVP_SPEC.md, docs/01-business/pipeline/, docs/01-business/accounting/, data/pmu/pipeline/, data/pmu/claudbridge/, public/pmu-demo/, docs/ops/dashboard*, public/dashboard*). The 71% that stayed in-lane is explained by PMU-adjacent vocabulary the reef already recognizes from operator's data/pmu/* and public/pmu-demo/ surfaces ('tolerance panel', 'ShortLex', 'coordinate', 'block count', 'σ'); the 29% that fell off-lane is engine/test vocabulary with no analogue anywhere in operator's glob — new exported functions ('sayRegions', 'sayLegend'), a CLI flag ('--say-top N'), and an entire new test file under tests/pmu-simulator/.

    The semantic pull: Real strings from the diff that anchor the off-lane 29%: `export function sayRegions(regions, { cap = 5 })`, `export function sayLegend(regions, KINDS)`, the new file path `tests/pmu-simulator/spoken-readout-is-short.test.mjs`, and the flag string `--say-top`. None of these terms — nor 'narration', 'legend', 'spoken', 'withheld' — appear anywhere in operator's owned docs/data globs, which are written in trust-debt/pipeline/accounting/dashboard vocabulary. The commit's own Relevant-Rooms trailer already half-admits this by naming 🧪 laboratory and 📐 architect alongside 🎩 operator.

    Intent–reality gap: The commit message claims a self-contained 'operator' fix to how the tolerance panel reads aloud; the receipt shows 29% of the reality mass landed outside operator's declared lane because the touched files (scripts/pmu/annotate-regions.mjs, tests/pmu-simulator/) sit entirely outside operator's owned-surface glob, even though the feature is thematically PMU work operator already partly owns via data/pmu/* and public/pmu-demo/.

    • Extend 🎩 operator's owned-surface declaration (wherever .workflow/rooms/*.html or the equivalent room-surface config lives) to add scripts/pmu/** and tests/pmu-simulator/** — the room already owns every downstream artifact these files produce (data/pmu/pipeline/, data/pmu/claudbridge/, public/pmu-demo/).
    • Add a commit-time check that at least one room named in Relevant-Rooms/Originating-Terminal owns a glob matching ≥1 touched path — currently nothing cross-checks trailer room claims against the diff's actual paths.
    • Cross-link scripts/pmu/annotate-regions.mjs's header comment to the room-surface config so a future reader sees which room the reef expects to claim this file.
    • Audit the other 13 out-of-lane events in this room's last 14 days for the same file-vs-glob mismatch pattern before assuming this is a one-off.
    • Update docs/architecture/claude-rules/doors-and-surfaces.md (owned-surface section) with this incident as the canonical example of glob-lag-behind-feature-growth.

    What we learned: An owned-surface glob drawn around a room's OUTPUT artifacts (data/pmu/pipeline/, public/pmu-demo/) does not automatically cover the SOURCE that generates them (scripts/pmu/, tests/pmu-simulator/) — the glob has to be extended explicitly as the feature grows, or every legitimate engine change to that source reads as off-lane forever. This is a new failure mode relative to the three prior lessons for this room (which were facts-only, no mechanism captured) and explains why the room's offPct trend has been noisy (10→24, 15→12, 21→26) rather than converging: the glob itself, not the work, has been the moving target.

    The missing guard (the deliverable): tests/ops/room-surface-matches-diff.test.mjs — for any commit, assert that the owned-surface glob of at least one room named in its Relevant-Rooms/Originating-Terminal trailer matches at least one file actually touched by the diff; fail (WARN, never block per the hooks-never-block rule) listing the mismatched paths and the rooms whose globs DID match, so mistagging is caught at commit time instead of discovered later as accumulated offPct drift.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Saturated, not shallow. walksIntent==litIntent and walksReality==litReality (100% lit-to-walked ratio on both sides) means the walk marks every cell it visits as significant with no occupancy/relevance cutoff — it isn't discriminating signal from noise, it's reporting everywhere it went. Concrete adjustment: introduce a lit-occupancy threshold (e.g. require ≥N gzip-NCD similarity to seed before a walked cell counts as 'lit') so litIntent/litReality become a proper filtered subset of walksIntent/walksReality, which should reduce noise in offPct across commits of this room. Experiments: Extend 🎩 operator's owned-surface glob to scripts/pmu/** and tests/pmu-simulator/**, then recompute sha 538288bf8's receipt — offPct for this specific mistagging class should drop toward 0% once the glob covers the touched paths. · Seed the reef with the room's own historical scripts/pmu/*.mjs commits (there should be several, given data/pmu/pipeline/ and public/pmu-demo/ already exist as operator artifacts) so prewalkOverlap rises above 6 for future legitimate operator PMU-engine work; measure prewalkOverlap before/after on the next PMU-engine commit from this room. · Add the lit-occupancy threshold described in walk_utilization, then re-run the last 14 days of this room's events through the walk with/without the threshold and compare offPct variance — the hypothesis is variance drops because the walk stops treating every visited cell as equally significant.

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

    A mistagged-room event doesn't reflect bad engineering — the code and its guard are sound — but it inflates this lane's measured breach rate (35.8% of commits already exceed offPct 15) with false positives, which erodes the trust-debt signal's usefulness as an underwriting input until the operator glob is extended and the room-surface-matches-diff guard is shipped to stop the misclassification at the source.

    Open the signed attestation →
  69. 2026-09-10 · 📐 VS Code Architect · offPct 26 · mistagged

    feat(legal): the perimeter — three documents, a hashed register, and the guard that keeps the deletions deleted

    Why it left the lane: The commit message names itself feat(legal) and the diff is ten new files under docs/legal/, public/legal/, scripts/legal/, and tests/legal/ — a self-contained legal-perimeter subsystem with its own generator and its own two guard tests. None of that touches docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, or CLAUDE.md — the room's declared surface. The mass is real, coherent, and load-bearing (it even self-describes as deliberately NOT the T5 hardening register so it doesn't collide with a different declared gate) — it just isn't on this room's lattice at all, which is exactly why offPct reads 26 against a 15 threshold and every encircled cell (B1/B2 × C1/C2/C3 — topology/velocity/throughput/exchange) is red: the walk found 31 off-lane cells because it found ZERO on-lane ones, not because the work smeared across many wrong coordinates.

    The semantic pull: Strings that pulled reality away from the declared architect lane: 'docs/legal/', 'public/legal/', 'scripts/legal/build-legal-register.mjs', 'tests/legal/no-overclaim-in-legal-perimeter.test.mjs', 'tests/pages/legal-register-recomputable.test.mjs' — a full document+build+guard stack with no path prefix matching docs/strategy/, docs/03-product/, docs/01-business/strategy/, or .workflow/rooms/. The commit trailer even names 'Relevant-Rooms: 🔒 WezTerm Vault, 📐 VS Code Architect, 🎩 Kitty Operator' — Architect is claimed as a co-owner in prose, but the room's OWNED FILE SURFACE list has no docs/legal/, public/legal/, scripts/legal/, or tests/legal/ glob to back that claim.

    Intent–reality gap: The commit claims strategic/architectural authorship for a legal-perimeter subsystem ('the perimeter — three documents, a hashed register, and the guard') and self-assigns Architect as a relevant room, but the receipt measured 100% of the lit mass landing outside every coordinate the room's owned-surface glob actually covers — there is no docs/legal/ or scripts/legal/ entry in that list at all.

    • Add a room-ownership entry (in the config the lens reads for 'owned file surface') mapping docs/legal/**, public/legal/**, scripts/legal/**, tests/legal/** to 🔒 WezTerm Vault (or whichever room the operator confirms owns legal/compliance) — not left implicit in a commit trailer.
    • Cross-check scripts/legal/build-legal-register.mjs's own declared inputs/outputs against the new glob so the generator and the ownership map agree.
    • If Architect is meant to retain co-ownership (trailer says so), add docs/legal/ and scripts/legal/ explicitly to Architect's OWNED FILE SURFACE list rather than relying on the Relevant-Rooms trailer to imply it.
    • Audit the other 8 rooms' owned-surface lists for the same gap — any top-level docs/<new-domain>/ directory created without a matching glob update will mistag the same way next time.

    What we learned: A brand-new top-level content domain (docs/legal/, with its own generator and guard tests) can be created and shipped in one commit without ANY room's owned-file-surface glob being updated to claim it — the room-ownership config and the repo's actual directory tree can diverge silently, and the drift receipt is the only thing that notices, after the fact, as a lane violation rather than as a missing-ownership-entry.

    The missing guard (the deliverable): tests/ops/new-top-level-doc-dir-has-owner.test.mjs — walks git diff for any commit introducing a new top-level directory under docs/, public/, or scripts/ that isn't already covered by an existing room's owned-file-surface glob, and fails the commit (or flags it) until an owned-surface entry is added in the same commit that creates the directory.

    Detector probe: signal attribution — gzip reef 75% · ballistic walk 25%. litIntent=litReality=137=walksIntent=walksReality — full saturation, the walk isn't shallow or truncated (walkTruncated=false), so it's right-sized for coverage but is being asked to place a genuinely new vocabulary domain against an old lane; the fix is upstream (reef/ownership), not deepening the walk. Concrete adjustment: none needed on the walk depth itself — leave plies at 2. Experiments: Recompute prewalkOverlap after adding the docs/legal/** owned-surface glob (spec_rewrite above) and confirm it rises materially above 4 on the next legal-domain commit from this room — if it doesn't, the glob update isn't reaching the reef seed and the seeding path itself needs inspection. · Seed the reef's legal-domain vocabulary bucket from docs/legal/disclosures-and-limitations.md and the RS-1 standard now, so the NEXT legal commit (even from a different room) has nonzero prewalkOverlap instead of starting cold at 4 again. · Ablate: recompute this commit's offPct with a reef that has the docs/legal/ owned-surface entry added vs. without, and confirm offPct drops meaningfully below 26 — this is the direct test of whether the ownership-glob gap (not genuine cross-lane work) was the cause.

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

    A fresh top-level legal/compliance domain shipping with zero room-ownership entry reads as a control gap in the room-lane system itself, not a bad commit — premium on this lane is restored by landing the owned-surface glob update (spec_rewrite) plus the new-directory guard in the same pass, which converts 'nobody's glob covers this' from a silent recurring gap into a red test.

    Open the signed attestation →
  70. 2026-09-10 · 📐 VS Code Architect · offPct 36 · mistagged

    feat(benchmark,milestones): surface the legal perimeter on the public board and let the legal track score against it

    Why it left the lane: The diff's actual mass is src/app/benchmark/page.tsx (a new legalRegister import, a #legal-perimeter <div>, a curl-recompute snippet, sha256[0:16] display) plus three data/milestones*.json rewrites — pure Operations.Grid (page-render/build surface) and Operations.Loop/Flow (generated-JSON pipeline) content. None of it touches docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html or CLAUDE.md — the five globs 📐 VS Code Architect actually owns. Pull column confirms it: C1.Operations.Grid×6, C2.Operations.Loop×4, C3.Operations.Flow×4 dominate the reds, i.e. the walk lit build/data-pipeline cells, not the strategy-doc cells the room's trailer claims.

    Intent–reality gap: The commit message frames this as an Architect-room siting decision ('the place a wording team is already reading', 'projects from public/legal/index.json') — a strategy/placement call. The receipt measured the actual work as page.tsx + three generated-data-file rewrites, i.e. Operations.Grid/Loop build-surface work that belongs to 🔨 iTerm Builder's lane, not Architect's docs/strategy lane.

    • Swap Originating-Terminal ↔ first Relevant-Rooms entry on this commit's trailer template going forward so the room that authored the diff, not the room that decided placement, is the claimant.
    • Add src/app/benchmark/** and data/milestones*.json to 🔨 iTerm Builder's owned-surface declaration in .workflow/rooms/*.html if this pairing (Architect decides siting, Builder ships the page/data change) is the intended recurring split.
    • Add a short 'Siting decision by: <room>' sub-line to the commit-trailer convention in CLAUDE.md so a placement call and an implementation claim aren't collapsed into one Originating-Terminal field.
    • Cross-check the other 44 out-of-lane events in this room's 14-day window for the same pattern (Architect tagged as originator on a diff that only touches src/app or data/) before concluding this is a one-off.

    What we learned: The Originating-Terminal trailer is self-declared prose with nothing checking it against the paths the diff actually touches — the room-attribution system has zero enforcement linking a claimed lane to real file ownership, so any room can honestly narrate a siting decision and still mis-tag itself as the originator of code it didn't structurally own.

    The missing guard (the deliverable): A post-commit check that diffs the changed file paths against every room's owned-surface globs (CLAUDE.md + .workflow/rooms/*.html) and fails/warns when the declared Originating-Terminal's own glob set covers none of the touched paths while a different room's glob set covers most of them.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Saturated, not right-sized — 100% of visited cells lit on both intent and reality arms gives no contrast between 'walked' and 'relevant', so offPct is really measuring walk spread, not misplacement strength. Adjustment: reduce ply count (currently 2) or tighten the seed radius for git-discipline-domain commits so the walk stops lighting every visited cell and starts discriminating true hits from mere reachability. Experiments: Re-run this sha's walk at ply=1 vs ply=2 and compare litIntent/litReality saturation — if ply=1 already saturates, the walk depth for this domain is oversized and should be capped. · Bias the reef seed toward the Originating-Terminal room's declared owned-surface globs before the walk runs, then re-measure offPct on this sha — if offPct drops sharply, the fix belongs in seed weighting, not in room-attribution alone. · Ablate 'public/legal/index.json' and 'legal-perimeter' from the corpus and recompute offPct on this sha to isolate how much of the 36% is these two new literal strings pulling toward Operations.Grid vs pre-existing milestones-pipeline mass.

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

    An Architect-tagged commit whose mass lands entirely in Builder's product/data surface raises this lane's loss-ratio by making room-attribution unverifiable, which restores only once Originating-Terminal is checked against touched-path ownership at commit time.

    Open the signed attestation →
  71. 2026-09-10 · 📐 VS Code Architect · offPct 36 · mistagged

    docs(book): the bow story's location, and the version I got wrong

    Why it left the lane: The diff is entirely new prose in src/content/blog/scratchpad/bow-story-where-and-which.txt — 'chapter 7', 'the bow story', 'archer', 'infantry', 'underwriters and risk managers' — book-content and narrative-strategy vocabulary. None of it touches docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, or CLAUDE.md — the architect room's only declared surface. The reef seed has nothing in that owned-surface lexicon to anchor to, so both intent and reality walks drift onto the generic Tactics/Operations Speed-Deal-Grid-Loop-Flow coordinates (B1-B3 × C1-C3) that the governor block shows fully red — the walk is landing on the repo's default 'nothing else matched' basin, not a book/content lane, because no such lane exists in this room's declared reef at all.

    The semantic pull: Terms like 'chapter 7', 'bow story', 'Version B', 'the login is what is broken' pull toward content/product-copy coordinates; none of those tokens appear anywhere in the architect room's owned-surface glob list, so the walk has no attractor to lock onto and spreads across all 31 encircled off-lane cells roughly evenly (offPct 100% of lit reality) rather than concentrating in one wrong-but-adjacent lane.

    Intent–reality gap: The commit message claims architect-room sensemaking about a broken /simple-login redirect and a mis-transcribed book passage — legitimate diagnostic work — but the receipt measures the actual write landing in a blog-content scratchpad file with zero overlap (prewalkOverlap 24 of 131) with anything the architect room's owned-surface declares; the work is real, but the room tag under which it was committed does not match the surface it touched.

    • CLAUDE.md — add the Originating-Terminal/owned-surface matching rule under COMMIT MESSAGE STRUCTURE (spec_rewrite above)
    • Wherever room owned-surface globs are declared (the source of '== THE ROOM'S OWNED FILE SURFACE ==' above) — add an explicit line for 🎤 Terminal Voice covering src/content/blog/** and src/content/blog/scratchpad/**, since no room currently claims it
    • Land the three one-word decisions named in the commit (which version, which chapter, the memoir question) into decisions-ledger.ndjson rather than leaving them open in a scratchpad indefinitely
    • File the /simple-login 307 redirect bug as a tracked item (not just prose) since it's the actual blocker the commit identifies
    • Re-run this room's Relevant-Rooms trailer convention: when Originating-Terminal and the dominant Relevant-Room diverge (as here: Architect vs Terminal Voice), require the Story field to say why

    What we learned: This room's Originating-Terminal tag is set by which terminal the operator physically had open when they typed `git commit`, not by which owned-surface the diff touches — CLAUDE.md's room-surface table already excludes blog/book content from Architect's lane, but nothing enforces that at commit time, so content-diagnosis work silently inherits whichever session happened to be active.

    The missing guard (the deliverable): A commit-msg or post-commit (non-blocking, per NEVER COMMIT HOOKS-OFF) check that computes glob-overlap between Originating-Terminal's declared owned-surface and the commit's changed paths, and flags in the lane report when overlap is 0% — e.g. tests/ops/originating-terminal-matches-surface.test.mjs.

    Detector probe: signal attribution — gzip reef 75% · ballistic walk 25%. Saturated, not shallow — a 1:1 walked-to-lit conversion rate on both sides means the ballistic walk is rubber-stamping every cell the reef seed hands it rather than discriminating in-lane from out-of-lane. Adjustment: require N>1 recursive hits before a cell counts as 'lit' so the walk actually filters instead of passing through 100% of what it's given. Experiments: Re-seed the reef restricted to each room's owned-surface glob text (not the full 190-rule corpus) for docs-only commits, and measure whether prewalkOverlap rises for genuinely in-lane commits vs stays low for cross-room ones like this · Add a lit-threshold (require ≥2 recursive touches per cell) to the ballistic walk and re-run this sha's receipt to check whether litIntent/litReality drop below their walksIntent/walksReality counts (currently identical, i.e. threshold=1 today) · Correlate Originating-Terminal-vs-owned-surface glob overlap (0% here) against offPct across this room's 47 out-of-lane events in the last 14 days — if overlap≈0 predicts high offPct across most of them, mistagging (not code drift) is this room's dominant failure mode and the guard above is the right lever

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

    An out-of-lane content commit tagged to the wrong room inflates this lane's measured loss ratio without any actual git-discipline defect underneath it, so the fix that restores premium is the tagging rule + guard above, not a code change to the commit's real (and legitimate) content work.

    Open the signed attestation →
  72. 2026-09-10 · 🎤 voice · offPct 25 · structural

    build(book): rebuild HTML for the four chapters corrected in this pass

    Why it left the lane: Two compounding causes. (1) The commit touches books/tesseract/chapters-html/*.html and public/book/chapters/*.html — neither path is in 🎤 voice's declared owned glob (data/room-surfaces.json → rooms['🎤 voice'].owned lists only books/tesseract/chapters/*.md), so the reef never indexed these derived paths as book-domain and the walk fell to keyword-fallback. (2) The new prose in 00-the-ship.html literally quotes this repo's own PMU apparatus in numeric detail: '4,722 runs, ten threads, width 12, depth 5, median 4.22 million walks a second', 'the spread runs from 51 thousand to 12.4 million', '.thetacog/pmu/throughput/history.ndjson' — plus 00-the-razors-edge.html's 'High-frequency trading systems: 0.3% acceptable slippage'. Those exact nouns (runs, threads, walks a second, spread, trading desk) are keyword-identical to the C-B3 reef's own definers.

    The semantic pull: data/pmu/reef-l1/C-B3.json defines B1 'Tactics.Speed refers to optimizing the walk's performance on the silicon... convergence rates', C2 'Operations.Loop involves the recursive walk on silicon, where the chip reads and processes each cell to determine the competence heat-cloud', C1 'Operations.Grid... validate-grid-layout... cell placement'. The book chapter's new paragraph ('ten threads, width 12, depth 5... walks a second... A walk at depth 5 puts the mind through five plies') is describing the SAME PMU walk these definers were mined from, in near-identical vocabulary. gzip-NCD/keyword matching cannot tell 'book prose about the walk' from 'code changing the walk', so mass gets pulled to B1/C1/C2/C3 (topology/velocity/throughput) and, via the HFT-slippage passage, to B2 (Tactics.Deal/exchange) instead of staying at the claimed B3.Signal.

    Intent–reality gap: The commit message claims a mechanical, content-neutral republish ('Vercel serves pre-built HTML from public/book/, not markdown... ship nothing until this runs') and fences scope to 'the four chapters this pass touched'. The receipt measured 25% of the lit reality mass sitting in Operations.Grid/Loop/Flow × Tactics.Speed/Deal — coordinates about this repo's own PMU walk and trading-desk tactics — because those four chapters now contain a paragraph that quotes the PMU's real ledger path and throughput numbers, which the message never surfaces or fences.

    • data/room-surfaces.json — add books/tesseract/chapters-html/*.html and public/book/chapters/*.html to 🎤 voice's owned list
    • CLAUDE.md COMMIT MESSAGE STRUCTURE — add a 'Build-Source: <md path(s)>' trailer convention for build(book) commits so drift tooling can attribute derived-HTML mass back to its markdown source instead of keyword-guessing
    • data/pmu/reef-l1/C-B3.json — add a disambiguation clause to definers B1/C1/C2/C3 excluding book prose that quotes the PMU's own telemetry (walks/sec, threads, depth, .thetacog/pmu/throughput/history.ndjson) from ops-grid scoring
    • Run bash scripts/pmu/post-drift-history.sh on 00-the-ship.html and 01-unity-principle.html per this lane's TOOLS block — every commit touching a post needs its tolerance panel, this one hasn't gotten one yet
    • Resolve the flagged 08-from-meat-to-metal.html regeneration this commit deliberately left staged-out, so the next build(book) commit in this room doesn't inherit an unrelated dirty diff

    What we learned: The reef's own domain definers are mined FROM this repo's PMU/ops corpus, so any prose anywhere in the repo — including the book chapter about the tool that generates this very receipt — becomes lexically indistinguishable from literal Operations/Tactics work the moment it quotes real numbers (thread counts, walks/sec, ledger paths). Self-reference is a drift-generator this detector has never had to fence against, and it will recur every time the book or blog describes its own measuring apparatus in numeric detail.

    The missing guard (the deliverable): tests/ops/room-surfaces-covers-book-build.test.mjs — for every build(book) commit in git log, assert `git show --stat <sha>` touches only paths covered by the originating room's owned glob (extended per spec_rewrite); fail loudly if a mandatory generated-artifact path (chapters-html/, public/book/chapters/) is missing from any room's declared surface.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Under-utilized for this commit's density: 932-line diff across 8 files, dense book prose, only 2 plies and 0.85% fill (well under the 70% ceiling). A shallow walk gives keyword-fallback little chance to recover once the reef seed is weak. Adjustment: when telemetry flags keyword-fallback, escalate walk depth from 2 to 4-5 plies specifically for that commit before finalizing placement, so the walk gets more chances to resolve B3.Signal-consistent cells before generic ops/tactics keywords dominate. Experiments: Seed data/pmu/reef-l1/C-B3.json's B1/C1/C2/C3 definers with an explicit exclusion list ('walks a second', 'ten threads', 'depth 5', 'width 12', '.thetacog/pmu/throughput/history.ndjson') marking this vocabulary as book-content-about-the-PMU rather than PMU-code; recompute this commit's receipt and measure whether offPct drops below 15. · Audit prewalkOverlap across the last 20 build(book) commits specifically on chapters-html/public-book paths (vs the markdown originals) to test whether prewalkOverlap=2 is a repeat pattern unique to derived-HTML paths — if so, seed a book-HTML-specific reef bank. · A/B test walk depth 2 vs depth 4-5 on the last 10 keyword-fallback events for room 🎤 voice, measuring whether offPct converges toward or below the 15% threshold at the higher depth.

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

    This event is a false-positive-shaped miss — a real path-coverage gap plus a lexical collision, not bad work — so it should push this lane's loss-ratio down once fixed rather than justify a premium hike; closing the owned-surface glob and seeding the reef disambiguation removes a systematic false-off-lane source specific to book-build commits and is what restores the rate.

    Open the signed attestation →
  73. 2026-09-10 · 🎤 voice · offPct 24 · structural

    fix(book): ch6 — the named-company anecdote goes, and a broken forward-reference gets its target

    Why it left the lane: The commit message's APPLIED/REFUSED bullets itemize only the three hostile-review findings (Casimir identity, de-named company, restored cross-ref), but the diff also lands two substantive unlisted additions: the synaptic-fidelity/'calyx of Held' caveat paragraph and the new Regulators/Physicists exchange arguing 'that is a register read, not an opinion.' Those two hunks carry AXIOM-0/AXIOM-1 grounding vocabulary ('cache eviction correlates to intent', 'the cache-miss counter reads what the holding costs', 'Rice... forecloses both doors') that has no anchor anywhere in the declared intent text, so the walk has to go find coordinates for it on its own — which is exactly where walksReality=138 outruns walksIntent=118 while both sides stay fully lit (no truncation).

    The semantic pull: 'cache eviction correlates to intent rather than ordinary memory churn', 'that is a register read, not an opinion', and 'the cache-miss counter reads what the holding costs' are all present verbatim in the diff's added Regulators/Physicists hunk but absent from the commit message's APPLIED list — they pull placement toward architecture/grounding coordinates the intent text never named.

    Intent–reality gap: The message claims a bounded three-item hostile-review fix plus two explicit refusals; the diff independently ships two more substantive prose additions never itemized anywhere in the message, so reality's lit mass (138) exceeds intent's (118) by the same margin the receipt flags as 24% off-lane.

    • Update CLAUDE.md COMMIT MESSAGE STRUCTURE (line 160) per spec_rewrite above
    • Add scripts/voice-hunk-coverage-check.sh: counts `git diff --unified=0 <path> | grep -c '^@@'` per changed chapter file and warns if it exceeds the commit message's APPLIED-bullet count
    • Wire that script into the pre-commit hook (advisory, never blocking per NEVER COMMIT HOOKS-OFF) alongside the existing MDX/book-html checks
    • Audit the room's other 100 out-of-lane events in the last 14 days for the same unitemized-addition signature to confirm this is the dominant pattern rather than a one-off
    • Decide whether book-content commits should score against a book-specific lane instead of the generic git-discipline (C,B3) pixel — this fix doesn't touch that question

    What we learned: In this room, a hostile-review pass routinely bundles the reviewer's flagged fixes with additional unlisted prose changes inside the SAME commit and the SAME file — the APPLIED/REFUSED format audits against the reviewer's findings, not against the full diff, so in-file scope creep is invisible to the message that is supposed to be the intent record.

    The missing guard (the deliverable): A pre-commit (or CI) check that counts diff hunks per changed books/tesseract/chapters/*.md file and fails/warns when that count exceeds the commit message's itemized APPLIED-bullet count — catches under-declared scope before the receipt has to.

    Detector probe: signal attribution — gzip reef 15% · ballistic walk 85%. Both sides saturate their own walk budget exactly (100% lit on each), so the walk isn't obviously under-provisioned, but full saturation on both sides also means we can't tell if 138 is a true ceiling or just where the budget ran out. Adjustment: rerun this sha with walksReality budget raised ~50% above 138 — if litReality keeps growing near-linearly, the walk is under-sized for this commit's actual spread; if it plateaus near 138, current sizing is correct. Experiments: Seed the reef with the two unitemized hunks' key phrases ('register read, not an opinion', 'Casimir's shape') and re-measure prewalkOverlap on this same sha — a jump above 2 would confirm the reef, not the walk, was the weak link · Re-run this sha with walksReality capped at 118 (matching walksIntent) to test whether the raw budget asymmetry alone is inflating offPct independent of content · If hunk-level slicing is available, compare litReality's cell spread for the 3 itemized hunks vs the 2 unitemized hunks separately — this would directly confirm or kill the diagnosis that the extra hunks are what's driving the excess off-lane mass

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

    101 out-of-lane events in 14 days in this room means commit messages here are an unreliable intent record for the git-discipline lane, which is exactly the loss the premium prices; restoring it means the hunk-coverage guard actually shipping and the room's offPct trend turning down over the next several commits, not just this one fix.

    Open the signed attestation →
  74. 2026-09-10 · 🎭 performer · offPct 31 · structural

    feat(map): AH · Incentive — the apex risk-holder leg, in the reinsurers' own language

    Why it left the lane: The AH leg's literal payload is written in performer's own normal vocabulary — 'cedent', 'attachment point', 'probable maximum loss', 'ISO form CG 40 47/40 48/35 08', 'accumulation', 'treaty wording' — the same register as the files performer's owned-surface glob actually claims (docs/decks/insure-rounds/*). But those literals were committed inside src/app/map/page.tsx (legs array ~L108-140, execBlocks AH1-3 at line 709, recognize AH1-3, macroVectors squares:['AH1','AH2','AH3'] at line 769) and a brand-new tests/map/incentive-alignment-vector.test.mjs — neither path matches any glob in performer's owned surface (docs/decks/, docs/decks/insure-rounds/, docs/strategy/deck/, .claude/commands/deck.md, docs/strategy/event-*, decentralizedtalk/, docs/01-business/fundraising/, docs/strategy/munich-re-*, docs/strategy/over-exposure-*, docs/ops/demo-*). The reef recognized the vocabulary as performer's (prewalkOverlap=4) but the ballistic walk placed the lit cells (litReality=125) at src/app/map/** and tests/map/** coordinates, which sit entirely outside the declared lane — hence offPct=31.

    The semantic pull: Reinsurer-register terms in the diff — 'cedent', 'attachment point', 'probable maximum loss', 'accumulation', 'treaty wording', 'CG 40 47 / CG 40 48 / CG 35 08', 'Chief underwriting officers' — are verbatim performer's insure-rounds dialect, but they land as TSX object-literal values (why:, done:, who:, objective:, action:, tell:, strike:) inside src/app/map/page.tsx rather than as markdown/HTML prose inside docs/decks/insure-rounds/. The walk followed the content's semantic weight toward performer's reef, then discovered the actual file coordinates belong to the app's map component tree — no cached region narrative for this sha, but the diff-stat alone (src/app/map/page.tsx + tests/map/*.mjs, zero touches under docs/decks/) is sufficient to place the leak.

    Intent–reality gap: The commit claims Originating-Terminal 🎭 performer with Relevant-Rooms performer,vault,operator, presenting this as in-lane pitch/product work; the receipt measured 31% of the landed mass sitting on src/app/map/page.tsx and tests/map/incentive-alignment-vector.test.mjs — paths that match zero entries in performer's declared owned-surface glob, which is exclusively docs/decks/** and adjacent strategy paths.

    • Extend extraVectors/extraRecognize/extraExec in src/app/map/extra.ts to include an 'AH' key, and delete the inline AH block + AH entries from src/app/map/page.tsx, keeping the merge (`{...recognize, ...extraRecognize}` etc.) as the single seam
    • Update tests/map/incentive-alignment-vector.test.mjs's legSlice()/proseOf() helpers to also search extra.ts if the leg moves there, so the guard doesn't silently stop finding AH
    • Implement scripts/room-drift-performer-check.sh (alacritty-performer.html:632 already specs it as 'spec'd, not yet implemented') so a staged file outside the owned surface is flagged before commit, not after the receipt fires
    • Add the extra.ts glob to alacritty-performer.html's (and vault's, since the Story credits vault as the source room) owned-surface list in the same commit as the extraction
    • Cross-check whether the K–AF legs already in extra.ts were committed by performer/vault and whether THEY also drifted 31%-style at the time they landed — if so this is a recurring unfixed class, not a first occurrence

    What we learned: The /map page's architecture bundles two orthogonal concerns — interactive app code AND deck-grade persuasion copy — inside one monolithic src/app/map/page.tsx, while every content room's owned-surface glob was written assuming persuasion copy only ever lives under docs/decks/**. extra.ts already exists as an escape valve for exactly this (K–AF), but nobody extended the glob model to cover it, so a room doing its normal, correct, well-guarded job (writing reinsurer-register pitch copy) drifts out-of-lane every time that copy ships through the map page rather than a deck file — a structural gap the prior lessons (new-pipeline-dir, wrong-trailer-read, no-owner-shared-state) didn't surface because none of them involved a legitimate escape-valve file that the glob model simply never learned about.

    The missing guard (the deliverable): tests/map/leg-content-lives-in-extra.test.mjs: any leg added to the inline `legs` array in src/app/map/page.tsx whose recognize/execBlocks/why/tell prose scores above a gzip-NCD similarity threshold against docs/decks/insure-rounds/* (i.e. reads as deck-grade persuasion copy rather than app-glue) must fail unless it lives in extra.ts instead — forcing new content-heavy legs onto the one path a room's glob can be pointed at, rather than growing page.tsx's inline block further.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Right-sized on count (litIntent≈litReality, no runaway fan-out) but flagged walkTruncated=true on a diff this content-dense (173 insertions, two multi-hundred-word prose blocks) — the walk likely hit its step cap before fully exploring the reality side's cell spread. Adjustment: raise the walk's step/truncation ceiling specifically for commits whose diff carries long string-literal payloads (detect via avg line length or total prose-character count in the diff), and re-run this sha's receipt to see if offPct moves once truncation is relaxed. Experiments: Re-run this sha's receipt with the walk truncation ceiling raised 2x; if offPct drops materially, truncation (not the glob gap) was the dominant driver and the fix priority flips · Seed the reef dictionary with performer's insure-rounds vocabulary (ISO form codes, 'cedent', 'attachment point', 'PML', 'treaty wording', 'accumulation') pulled from docs/decks/insure-rounds/*, then recompute prewalkOverlap on this same sha — if it rises well above 4, the reef itself was under-seeded independent of any path issue · Add src/app/map/extra.ts to performer's and vault's owned-surface globs and recompute offPct on this exact sha to isolate how much of the 31% the glob gap alone explains, before deciding whether the code_rewrite (extraction) is even necessary

    An out-of-lane commit this size (31% vs a 15% threshold, the room's 19th in 14 days) reads as a room whose owned-surface declaration no longer matches its real output, which is exactly the kind of uncounted deviation this repo's own reinsurer pitch argues against — premium on this lane stays priced up until the extra.ts extraction plus the glob update land and the next several commits measure back under threshold.

    Open the signed attestation →
  75. 2026-09-10 · 🎩 operator · offPct 17 · mistagged

    feat(bookclub): the book text comes early — 24.0% -> 16.2%, and the book's own voice at 11.9%

    Why it left the lane: The commit's own trailer says `Originating-Terminal: 🎩 operator`, and scripts/interventions/intervention-fire.sh:73-74 takes that string as ROOM verbatim (`sed -n 's/^Originating-Terminal: *//p'`) with zero check against any owned-surface glob. But every file in the diff — docs/comms/newsletter/SEQUENCE.txt, docs/comms/newsletter/drafts/layout-A8-locked.html, scripts/bookclub/render-email.mjs, tests/comms/newsletter-litmus.test.mjs — sits outside 🎩 operator's declared surface (data/trust-debt/, docs/03-product/MVP/ORTHOGONAL_HEATMAP_MVP_SPEC.md, docs/01-business/pipeline/, docs/01-business/accounting/, data/pmu/pipeline/, data/pmu/claudbridge/, public/pmu-demo/, docs/ops/dashboard*, public/dashboard*). The commit even lists `Relevant-Rooms: 🎤 voice, 🎩 operator, 📐 architect` with voice named first — the correct room was right there in the trailer and the pipeline didn't read it.

    The semantic pull: The diff's own embedded ledger-quote sidecar names the exact bug: '...This room's Originating-Terminal tag is set by which terminal the operator physically had open when they typed `git commit`, not by which owned-surface the diff touches — CLAUDE.md's room-surface table already excludes blog/book content fro[m it]...' That sentence, sitting inside the very diff being measured, is a verbatim description of intervention-fire.sh:74's logic. The pull toward B3.Tactics.Signal/C1.Operations.Grid/C2.Operations.Loop etc. (31 reds, 100% off-lane) is the walk searching the operator reef (pipeline/dashboard vocabulary) for a match to newsletter/comms terms ('pull-quote', 'porch', 'kicker', 'UTM', 'sticker') and finding almost none — prewalkOverlap=4 of litIntent=130, ~3%.

    Intent–reality gap: The commit claims 🎩 operator ownership (git-discipline / pipeline lane) via its Originating-Terminal trailer, but 100% of the touched files are comms/newsletter template and render-script work with zero overlap with 🎩 operator's declared owned-surface globs.

    • Extract `ownedSurface()` out of scripts/interventions/build-intervention-prompt.mjs into scripts/rooms/owned-surface.mjs so both the prompt-builder and the resolver share one source of truth
    • Add scripts/rooms/room-for-paths.mjs — takes `git diff --name-only $SHA^ $SHA`, returns the room whose owned-surface glob has the most matches
    • Wire scripts/interventions/intervention-fire.sh to call room-for-paths.mjs and override/flag ROOM before offPct/lane binding (line ~74)
    • Add tests/interventions/room-resolution-matches-diff.test.mjs: fixture commit with Originating-Terminal=A but diff paths glob-matching room B's surface → resolver must return B and emit MISTAGGED, RED before this fix / GREEN after
    • Update CLAUDE.md COMMIT MESSAGE STRUCTURE per spec_rewrite above
    • Add docs/comms/newsletter/**, scripts/bookclub/**, tests/comms/** to whichever room's .workflow/rooms/*.html currently claims comms/voice work (recommend 🎤 voice) — right now no room's owned-surface table appears to claim these paths, so even a fixed resolver has nothing to reassign to

    What we learned: The three prior 'facts-only' interventions for this room never improved outcomes (10→24, 21→26 both got worse) because they were diagnosing a routing bug as a code-drift bug — the pipeline trusts a self-reported field (Originating-Terminal, 'which terminal was physically open') as if it were the construct it actually needs (which room's owned file surface the diff touches). This is the CLASS-2 token-standing-in-for-construct failure from CLAUDE.md's 'PROXY IS NOT THE THING' rule, but instantiated inside the drift-detector's own room-resolution step rather than in a content guard — the detector itself needs the same discipline it demands of the code it measures.

    The missing guard (the deliverable): tests/interventions/room-resolution-matches-diff.test.mjs — assert that scripts/interventions/intervention-fire.sh's ROOM resolution, given a fixture commit whose diff paths glob-match room B's owned-surface while Originating-Terminal says room A, resolves to B (or at minimum emits a MISTAGGED flag) rather than silently trusting the trailer.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Right-sized, not the fault here — litIntent/litReality are close (130 vs 141) and fill is nowhere near saturation. No depth/ply adjustment indicated; re-running this same sha against 🎤 voice's reef (once one exists) is the test that isolates reef vs walk. Experiments: Re-run the receipt for sha 7f55dde7eb with ROOM forced to 🎤 voice instead of 🎩 operator (once voice's owned-surface includes comms/newsletter) and diff the resulting offPct — if it drops under 15, that's direct ablation evidence the room/reef choice, not the walk, was the drift source · Add a cheap pre-walk tripwire: flag LOW-CONFIDENCE whenever prewalkOverlap/litIntent < 5% (here 4/130 = 3.1%) BEFORE the full walk runs, and backtest that ratio against the historical corpus's confirmed mistagged/structural/intentional verdicts to see how well it predicts 'mistagged' on its own · Once room-for-paths.mjs exists, backtest it against the last 30 days of out-of-lane events (data/pmu/... history) and measure what fraction of past 'mistagged'-shaped events it would have caught pre-LLM, for free

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

    Misrouting comms/newsletter work into 🎩 operator's git-discipline lane inflates that lane's apparent loss-ratio with noise unrelated to its real risk (pipeline/dashboard correctness) while hiding comms/voice's true out-of-lane rate entirely — the premium on either lane is only meaningful once room binding is glob-verified against the diff rather than self-reported by trailer.

    Open the signed attestation →
  76. 2026-09-10 · 🧭 navigator · offPct 46 · structural

    feat(elicit): date a perishable ask and read the thread that already served it

    Why it left the lane: The diff's entire mass is two new files, scripts/elicit/ask-is-stale.mjs and tests/elicit/ask-is-stale.test.mjs, anchored to corpus vocabulary: TRANSCRIPTS_DB = resolve(REPO, '.thetacog/transcripts.db'), 'gemini-web:4c469f554a7399ee', sessions/turns queried by session_id and seq. None of that shares a word with navigator's owned-surface files (open-room-session.sh, thematic-scheduler.ts, focus-gravity.ts, cognitive-dashboard.html). A grep of every .workflow/rooms/*.html confirms zero room registers a scripts/elicit or tests/elicit glob at all. Worse: git log on scripts/elicit/*.mjs shows this exact directory was authored under Originating-Terminal voice (4b9fa6bcef), architect (c108aaa30b, 8bb427cf24, a298c9b0b1), and laboratory (8bc424ce42) in the prior 20+ commits — four different rooms, never navigator, never a consistent owner. The pull isn't navigator's diction dragging into someone else's lane; it's that the destination coordinate has no lane assigned to anyone.

    The semantic pull: 'date', 'perishable', 'thread', 'read' in the commit subject read like dispatch/session vocabulary, plausibly why this got filed under navigator's trailer — but the actual lit-cell mass (114 vs 141, prewalkOverlap only 5) is dominated by transcript-corpus terms (sqlite3, transcripts.db, session_id, gemini-web, chatgpt-web) that navigator's real owned files never use.

    Intent–reality gap: The commit trailers claim Originating-Terminal: navigator / Relevant-Rooms: navigator, vault, operator, but the diff lands entirely inside a directory (scripts/elicit/, tests/elicit/) that no room's owned-surface registry names — the same directory four other commits from four different rooms have already built into. The 46% offPct isn't a misplacement, it's the receipt correctly reporting a lane that structurally does not exist yet.

    • Register scripts/elicit/**, tests/elicit/**, .thetacog/elicit/** as an owned-surface glob in .workflow/rooms/*.html (assign a steward or mark shared) — currently absent from all 9 room files.
    • Retroactively audit the ~20 prior feat(elicit)/fix(elicit) commits (voice, architect, laboratory trailers) for the same 0%-overlap pattern to size how much of each room's offPct trend this one orphan directory explains.
    • Ship sp-748 (already queued, due 2026-09-11 per the vault room board): guard checking changed-paths vs Originating-Terminal's owned-surface glob, hard-flag MISTAGGED at 0% overlap before scoring offPct.
    • Ship sp-758 (already queued, due 2026-09-11): guard warning on mixed-lane commits with multiple non-trivial buckets and no exp-out-of-lane receipt.
    • Extend sp-748's design to cover the case found here explicitly: zero overlap against EVERY room's glob (an orphan path), not just zero overlap against the declaring room's glob — those are different failure modes needing different verdicts.
    • Re-run this sha's walk after the registry update lands, to confirm offPct moves toward baseline once the lane exists.

    What we learned: scripts/elicit/ has been built by four different rooms' trailers (voice, architect, laboratory, now navigator) across 20+ commits and appears in zero room owned-surface registries — a whole subsystem has been growing at a coordinate the room-ownership model has no concept of, so every future commit that touches it, regardless of who authors it, will keep scoring out-of-lane until the REGISTRY is fixed, not the commit.

    The missing guard (the deliverable): Exactly the guard already queued on the vault room board as sp-748 ("check if files touched intersect the Originating-Terminal room's owned-surface glob, hard-flag MISTAGGED if no overlap before scoring offPct"), due 2026-09-11 and unshipped as of this sha. Name it tests/rooms/trailer-matches-owned-surface.test.mjs, and extend its stated design to also emit a distinct ORPHAN verdict when a path matches NO room's glob at all — the case actually observed here — rather than only the simpler case of matching some other room's glob.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. litIntent==walksIntent and litReality==walksReality means every walked cell lit on both lanes — fully saturated, not under-used or shallow. The walk itself is right-sized here; the actionable signal lives upstream in the reef seed and the missing registry entry, not in walk depth. Concrete adjustment: add a pre-walk short-circuit that flags prewalkOverlap<10 as 'probable orphan/mistag' before spending the full walk budget on cases shaped like this one. Experiments: Register scripts/elicit/**, tests/elicit/**, .thetacog/elicit/** in the reef lexicon as their own lane with anchor terms (transcripts.db, gemini-web, chatgpt-web, session_id, deictic, corpus) distinct from navigator's (thematic, focus-gravity, dispatch, room-session); re-walk 80c195d37 and measure whether litReality clusters inside the new lane instead of spreading at offPct=46 against navigator. · Add an early-stop rule: prewalkOverlap<10 emits a 'probable orphan path' flag before the full walk runs; back-test against the last 30 days of commits and measure the false-positive rate. · Retroactively re-walk the 4 prior elicit/ commits authored under voice/architect/laboratory trailers and compare offPct across all five — if all score similarly high, that confirms the defect is the missing lane, not any one room's diction.

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

    This event isn't a defect in navigator's own work quality — it exposes an unpriced lane that four different rooms have been quietly self-insuring for months; navigator's own premium is undamaged, but underwriting needs a new line item for scripts/elicit/** or every room that touches it next will keep filing losses against a peril its policy never named.

    Open the signed attestation →
  77. 2026-09-10 · 🔒 WezTerm Vault · offPct 28 · structural

    fix(book): kill the cooler-than-idle claim — four places, one fabrication

    Why it left the lane: The touched paths — books/tesseract/chapters/*, books/tesseract/appendices/*, public/book/*, and the new tests/book/no-thermodynamic-inversion.test.mjs — do not appear anywhere in Vault's declared owned-file surface (docs/01-business/patents/, docs/01-business/patents/v20/, docs/01-business/patents/prov-*/, docs/legal/, data-room*/, docs/incidents/). What pulled the commit into Vault at all is the patent-fidelity motive stated in the message itself — 'The patent has had this right the whole time,' 'Section 22,' 'Esmaeilzadeh et al. (ISCA 2011)' — and the guard test's own canonical-wording pointer, '.workflow/patent-v20-zero-entropy-control.md Section 22', which is a Vault-flavored reference living OUTSIDE Vault's declared glob (docs/01-business/patents/v20/, not .workflow/). The commit is genuinely doing patent-consistency work, but 100% of the bytes it changed sit in book/test territory.

    Intent–reality gap: The message frames this as fixing the BOOK to match the PATENT (an act of patent fidelity, Vault's domain); the receipt measured where the diff actually lives — four .md book files, four generated .html mirrors, and one new test file, none of which fall under any glob Vault owns. Vault correctly claimed the motive and incorrectly inherited the lane.

    • Verify the test's canonical-wording pointer '.workflow/patent-v20-zero-entropy-control.md Section 22' actually resolves — Vault's declared glob is docs/01-business/patents/v20/, a different path; if .workflow/patent-v20-zero-entropy-control.md is a stray duplicate, repoint the test comment to the canonical docs/01-business/patents/v20/ file instead.
    • Add a room-ownership entry (or confirm the existing one) mapping books/tesseract/** and tests/book/** to whichever room actually runs book-edit / book-kernel-loop (Relevant-Rooms names 🧪 laboratory) so future patent-consistency book fixes tag correctly.
    • Ship scripts/ops/verify-originating-terminal.mjs (proposed in the prior ccc40f5cd lesson but never landed — offPct is still 28 two events later) so this stops being diagnosed and starts being caught.
    • Add tests/ops/originating-terminal-matches-owned-surface.test.mjs asserting the script fires on a synthetic cross-room commit.

    What we learned: The prior lesson for this room (ccc40f5cd) already named this exact mechanism — trailer vs owned-glob, uncross-checked — and produced no artifact. This is the room's 2nd out-of-lane event in 14 days with the SAME root cause restated, which is new evidence in itself: diagnosis without a shipped mechanical check does not reduce recurrence, only the config/script does. A second thing this event reveals that ccc40f5cd didn't: the trigger for cross-room drift isn't random unrelated work, it's WORK THAT GENUINELY SPANS TWO ROOMS (patent fidelity check + book edit) — the room model currently has no way to express 'primary room != motive room' other than Relevant-Rooms, and nothing enforces that Originating-Terminal picks the byte-majority room rather than the motive room.

    The missing guard (the deliverable): A post-commit (never pre-commit-blocking, per NEVER COMMIT HOOKS-OFF) script that diffs the commit's changed-file list against each room's owned-surface glob, computes byte/path-count majority, and WARNs (appends to .thetacog/room-mismatch.ndjson, does not block) when the declared Originating-Terminal owns less than half the touched paths. This is the exact artifact ccc40f5cd's diagnosis called for and that never shipped — shipping it is this pass's actual deliverable.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. litIntent/walksIntent = 124/124 = 100% and litReality/walksReality = 141/141 = 100% — every issued walk step lights a cell, i.e. the walk is SATURATED and currently cannot register a miss, so it measures spread/coverage only, not discrimination. Adjustment: raise the ply depth or tighten the lit-threshold so some walks can legitimately fail to light, giving the walk a real signal instead of a constant 100% hit rate. Experiments: Recompute this sha's prewalkOverlap with a reef seed that weights book-content terms ('dark silicon', 'ISCA 2011', 'thermal load') against a room-ownership-aware corpus instead of a flat one, and measure whether prewalkOverlap rises above 35. · Re-run offPct for the last 8 commits in this room with Originating-Terminal remapped to byte-majority room (per spec_rewrite) instead of self-declared, and measure whether room mean offPct drops below the 15 threshold. · Track litIntent/walksIntent and litReality/walksReality ratios across the next 20 commits repo-wide; if they stay pinned at 100% generally (not just here), that's evidence the walk's lit-threshold needs repo-wide retuning, not a one-off fix.

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

    A repeated, previously-diagnosed-but-unremediated tagging drift raises this lane's loss-ratio on the trailer-integrity signal specifically (not on book-content quality, which this commit improved); premium is restored by landing verify-originating-terminal.mjs so the diagnosis converts into an enforced check rather than a third repeat of the same lesson.

    Open the signed attestation →
  78. 2026-09-10 · 🎤 voice · offPct 19

    fix(book): ch3 — cortex stops migrating, and the cache hit stops proving the fraud call

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

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

    Open the signed attestation →
  79. 2026-09-10 · 📐 VS Code Architect · offPct 38 · mistagged

    docs(book): the bow-and-sword story as one revisable text — both versions plus the open question

    Why it left the lane: The commit adds two new files whose full path is src/content/blog/scratchpad/*.txt — a path that lives inside src/content/blog/, the tree the reef reads as the publish/distribution lane (pulling B3.Tactics.Signal, C1.Operations.Grid), regardless of the 'scratchpad' qualifier. The room's owned surface is docs/strategy/, docs/03-product/, .workflow/rooms/*.html, CLAUDE.md — none of which overlap src/content/blog/** at all, so prewalkOverlap sits at only 33 of 134 intent cells (~25%) and the walk saturates fully outside the declared lane (litReality=139 of walksReality=139).

    The semantic pull: The parent directory token 'blog' in src/content/blog/scratchpad/bow-and-arrow-story.txt and src/content/blog/scratchpad/bow-and-the-sword-full.txt is the pull — gzip-NCD seeding reads the path prefix before it reads intent, so 'scratchpad' (meant to signal draft/non-publish) is overridden by 'blog' (meant to signal publish-lane), landing the mass on B3.Tactics.Signal/C1.Operations.Grid coordinates the commit message never claims.

    Intent–reality gap: The commit message claims book-manuscript revision work — 'the passage now has a single artifact,' 'the book has its cut version' — scoped to the VS Code Architect room (Originating-Terminal), but the receipt measured the files landing in a blog-content directory outside every glob that room owns, at 38% off-lane against a 15% threshold.

    • git mv both scratchpad files from src/content/blog/scratchpad/ to books/tesseract/scratchpad/
    • Add the book-scratch-location rule to CLAUDE.md BOOK EDITING section (verbatim text above)
    • Confirm which room actually owns books/tesseract/** (per Relevant-Rooms this looks like 🎤 Terminal Voice, not 📐 VS Code Architect) and add that glob to its owned-surface manifest
    • Correct future Originating-Terminal on manuscript-scratch commits to the room that owns books/tesseract/**, not VS Code Architect
    • Add a pre-commit check flagging new paths under src/content/blog/** when the committing room's owned-surface list has no overlapping glob
    • Grep the repo for any existing link to the old src/content/blog/scratchpad/ path before deleting the old location

    What we learned: The reef's path-prefix read treats a subfolder qualifier ('scratchpad') as decoration, not a lane override — content inherits its parent directory's lane regardless of what the leaf folder name promises. This is new versus the three prior facts-only interventions for this room, which never isolated a mechanism; this one names 'directory-prefix inheritance overrides subfolder semantics' as the structural cause.

    The missing guard (the deliverable): A pre-commit/CI check: for any new or modified path matching src/content/blog/**, verify the committing room's owned-surface globs (from the rooms manifest) include that path or a parent of it; if not, block or require an explicit Content-Home trailer naming the correct owning room before the commit lands.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Fully saturated (litIntent/walksIntent = 134/134, litReality/walksReality = 139/139) — the walk is lighting every cell it touches, which for a docsOnly asset-add means it's adding no discriminating information beyond the reef seed. Concrete adjustment: for docsOnly=true commits, add one extra ply before terminating so the walk has room to diverge from the seed's initial read instead of rubber-stamping it at 100% fill. Experiments: Give src/content/blog/scratchpad/ and books/tesseract/scratchpad/ distinct gzip-NCD seed profiles (rather than one shared 'scratchpad' bucket) and re-run this commit's receipt — measure whether offPct drops once the two scratch trees stop sharing a seed. · Reseed a synthetic 'book-manuscript' corpus profile from books/tesseract/ content and gzip-NCD-compare these two files against it vs against the blog corpus — measurable as which profile produces lower NCD distance. · For docsOnly=true commits specifically, add one extra walk ply and rerun a sample of recent docsOnly commits to check whether litIntent/litReality saturation drops below 100%, confirming the walk is discriminating rather than confirming.

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

    A mistagged room/path claim at 38% off-lane on a docs-only commit is a low-severity, easily-repriced event — it costs this lane's loss-ratio a data point toward its 46 recent out-of-lane events, and is restored by the file move plus the owned-surface glob update landing in the same pass rather than by argument.

    Open the signed attestation →
  80. 2026-09-10 · 🎤 voice · offPct 58 · mistagged

    feat(events): seal tonight's card — Thursday roadshow dinner, Topic 2 fallback

    Why it left the lane: The commit's only touched file is a data artifact ('.../events/roadshow-precision-medicine-2026-09-10.json'), and the commit body is pure operations/dispatch vocabulary — 'GCal C2 fired', 'ledger row closed via poll-execute.sh --mark blocked', 'RSVP to Elvis never sent', 'decisions-ledger', 'delegation-fires', 'self-prompts'. None of that intersects voice's owned globs (books/tesseract/chapters/*.md, src/content/blog/*.mdx, decentralizedtalk/slideData.ts, src/app/6needs/). That vocabulary is exactly what pulled the walk into the Operations.Grid/Loop/Flow × Tactics.Speed/Deal/Signal block the receipt encircles.

    The semantic pull: 'ledger row closed via poll-execute.sh --mark blocked' pulls toward C1/C2/C3.Operations (Grid/Loop/Flow — dispatch, sequencing, scheduling machinery); 'GCal C2 fired', 'card follows the roadshow-coagulation pattern', 'RSVP' pull toward B1/B2/B3.Tactics (Speed/Deal/Signal — time-boxed external commitments). The file path itself ('events/roadshow-...json') carries none of voice's chapter/blog/slide vocabulary, so there was nothing in the diff to anchor the walk back to voice's lane.

    Intent–reality gap: The commit's Originating-Terminal trailer claims 🎤 voice, but its own Relevant-Rooms trailer already names network, operator, navigator — not voice — and the Story paragraph describes ground-truthing a GCal event and sealing an event card, work with zero surface overlap with voice's owned glob. The commit disagrees with itself about which room this is.

    • Add the events artifact glob (e.g. '.thetacog/events/**/*.json') to the owned-surface list of whichever room legitimately handles event-sealing (operator or network, per this commit's own Relevant-Rooms) in .workflow/rooms/<room>.html
    • Add an explicit exclusion note to voice's owned-surface doc: event/roadshow-card JSON is NOT voice's, so future authors don't default to the voice terminal for LAW-1 card-sealing
    • Update poll-execute.sh (or whatever emits the event JSON) to auto-set the Originating-Terminal trailer from the touched-path→room-glob match instead of the ambient terminal
    • Add a WARN-only pre-commit/post-commit check: touched-paths ∩ declared-room-owned-globs == ∅ → print the mismatch (hooks never block, per CLAUDE.md)
    • Pull the last 108 out-of-lane 🎤 voice events (14-day window) and bucket by 'event/ledger vocabulary present in diff' vs other causes — if this mistagging pattern dominates, prioritize the glob fix over any voice-specific content fix

    What we learned: This room's prior three interventions were facts-only (no sensemaking) and offPct trended WORSE after each one (27→39, 21→31, 0→36) — plain regeneration without a mechanical fix does not reduce recurrence here. The new structural fact: 🎤 voice is being used as a default/whichever-terminal-is-open room rather than a content-scoped one, and the Originating-Terminal trailer is self-declared and never checked against touched paths, so it silently absorbs commits that belong elsewhere.

    The missing guard (the deliverable): A pre-commit/post-commit check computing touched-file-paths ∩ each room's declared owned-surface globs (from .workflow/rooms/*.html) that WARNs (never blocks, per the hook-never-blocks rule) when the commit's Originating-Terminal room owns zero of the touched paths — this exact commit would have tripped it.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Saturated, not right-sized: litIntent==walksIntent and litReality==walksReality (both 100% lit) with walkTruncated=true on an 18-line, docs-only, data-asset commit — the walk lit everything it touched on both lanes with no discriminating headroom. Adjustment: for docsOnly/data-only commits under a content-mass floor (e.g. <25 diff lines), either raise the ply budget so it stops truncating, or downgrade the verdict to LOW-CONFIDENCE instead of a full offPct=58. Experiments: Content-mass floor experiment: flag docsOnly commits under N diff lines as LOW-CONFIDENCE instead of full offPct, then measure whether offPct variance on small commits drops over the next 20 such commits · Seed the reef with '.thetacog/events/**' path examples under operator/network ownership so event-sealing commits pre-walk-overlap with the correct room instead of prewalkOverlap=3 · Ablation: recompute offPct for the last 20 docsOnly/data-only commits with walkTruncated=true vs walkTruncated=false and compare mean offPct to test whether truncation itself inflates the verdict

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

    A room running 108 out-of-lane events in 14 days, now confirmed to include self-contradicting trailers (Relevant-Rooms naming other rooms while Originating-Terminal claims voice), degrades confidence that 🎤 voice's receipts mean what they claim — restored by landing the ownership glob + WARN guard and watching the room's offPct trend actually reverse over the next several commits, unlike the prior three passes.

    Open the signed attestation →
  81. 2026-09-10 · 📐 VS Code Architect · offPct 33 · structural

    feat(book): ch7 — the boyhood bow, and the published perimeter as the move it argues for

    Why it left the lane: The commit's file surface is entirely books/tesseract/**, public/book/**, and exports/** — none of which appear in 📐 VS Code Architect's declared owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md). Section 2 of the diff ('The perimeter') then explicitly imports strategy-lane content — 'the legal perimeter shipped this morning', 'a general counsel who hears... blocks the tool', 'publish your own miss rate', 'false-negative rate', 'hash every document' — verbatim from an earlier same-day strategy commit (541c7fd976) into book prose. So the reality mass is 100% outside the room's file lane, and the content itself is conceptually strategy-flavored (legal/insurability/attestation) even though it physically lives in a book chapter file — a double mismatch, not a single one.

    The semantic pull: Terms pulling reality toward the book/narrative coordinates and away from the room's strategy-file lane: 'Chapter 7', 'the boyhood bow', 'lath swords', 'a circle of nine boys', 'I could have made it if I went at the wall', plus the HTML scaffolding itself (data-line=, class="line-anchor", <!-- metavector:the-architecture-of-courage -->). Simultaneously, 'the legal perimeter', 'general counsel', 'false-negative rate', 'specimen wording', 'hash every document' are strategy-domain terms re-used inside that book file — the encircled mass is real (files entirely off the declared globs) but the CONTENT driving section 2 is native to this room's actual expertise, just filed in the wrong path.

    Intent–reality gap: The commit message claims book-authorship work ('feat(book): ch7...') filed under 📐 VS Code Architect with build-script compliance and voice-guard verification — a complete, in-lane book edit. The receipt measured 100% of the reality mass landing outside this room's owned-file globs, because books/tesseract/** is not declared anywhere in this room's surface — the claim was internally coherent but the lane it was filed against never included book paths.

    • Add a books/tesseract/** + public/book/** ownership line to the room-surface declaration (wherever 'THE ROOM'S OWNED FILE SURFACE' is sourced from) naming the actual authoring room
    • When a commit deliberately quotes strategy content into book prose (as section 2 does from 541c7fd976), split it: one commit for the book-side insertion (Terminal Voice), a separate cross-reference commit/note attributing the strategy source, per ITERATION DISCIPLINE
    • Amend the commit-trailer convention so Relevant-Rooms' FIRST-listed room must match the room whose owned-surface glob covers the majority of touched paths, not just 'relevant'
    • Backfill-audit the room's other 44 out-of-lane events in the last 14 days to quantify what fraction are book-path commits — confirms structural vs one-off before spending more guard effort here
    • Log this event's lesson (book work routed through a room with no book-path ownership) into the PRIOR LESSONS store so it isn't re-diagnosed as a fresh mystery next time

    What we learned: This room's 45 out-of-lane events in 14 days are not 45 independent mistakes — the owned-surface table simply never enumerates books/tesseract/** for ANY room in the 9-room roster context available here, so every book edit from any room scores as maximally off-lane by construction, regardless of how carefully-bounded the actual work is (build script run, voice guards checked, unresolved-memoir flag surfaced explicitly).

    The missing guard (the deliverable): A cheap pre-commit/post-commit check (in the style of wip.mjs's warn-only pattern) that reads the touched-file globs of a commit and the room named in Originating-Terminal, and WARNS (not blocks) when no owned-surface glob for that room covers any touched path — surfacing exactly this class before the drift receipt has to discover it after the fact.

    Detector probe: signal attribution — gzip reef 40% · ballistic walk 60%. Saturated, not right-sized: a 100% lit-rate on both intent and reality walks means the walk never registers a miss, so it can't distinguish 'walked but didn't land' from 'walked and landed' — all discrimination is coming from WHICH cell lit, not whether one lit at all. Concrete adjustment: either extend ply depth beyond 2 or tighten the reef fill threshold below the current 0.85% so some fraction of walked steps genuinely miss, restoring a lit/unlit contrast signal alongside the positional one. Experiments: Re-run this exact sha's receipt after adding books/tesseract/** to a room's owned-surface glob and confirm offPct drops from 33 toward the room's ~15 threshold — deterministic, re-runnable per AXIOM 1 · Reseed the reef with the 45-event window's book-path commits isolated, and measure whether prewalkOverlap for book-authored commits is systematically lower than the room's non-book commits — tests whether the reef itself has a book-corpus gap · Track the litIntent/walksIntent and litReality/walksReality ratio across the next 20 commits in this room; if it stays pinned at 100/100 chronically (not just this event), that's evidence the walk depth/fill tuning is globally too shallow, not a one-off

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

    An off-lane event this large (33% vs a 15% threshold, in a room already averaging 45 breaches/14 days) reads as a persistent, uncorrected class rather than a one-off, which is the loss-ratio driver for this lane's premium; the ownership-declaration fix plus the warn-only surface guard is what restores it, since the underlying book work was otherwise clean (build run, voice guards checked, an open memoir-veracity flag surfaced honestly rather than hidden).

    Open the signed attestation →
  82. 2026-09-10 · 🔒 WezTerm Vault · offPct 36 · mistagged

    fix(book): a declared Message-ID root splits the chain — anchor every send instead

    Why it left the lane: The diff's vocabulary is entirely message-threading/pipeline mechanics: '--message-id', '--in-reply-to', '--references', the 'Message-ID root' argument, ANCHOR, the send() call site, and the loop over MANIFEST that emits 22 sends culminating in 'thread 1a08b74e23974652'. None of those strings intersect the Vault's owned lexicon (docs/legal, docs/01-business/patents, data-room*, docs/incidents). The walk instead pulled mass into B3.Tactics.Signal (×11 — message/thread signal), C1.Operations.Grid (×6), C2.Operations.Loop (×4), C3.Operations.Flow (×4) — a near-exact semantic mirror of 'anchor every send to one References value, loop across a manifest, verify one thread' — which is why off-lane share on those 31 red cells reads 100%.

    The semantic pull: '--references', '--in-reply-to', 'ANCHOR', 'send(', 'thread 1a08b74e23974652', and the MANIFEST.map send loop are pipeline/threading terms; they have zero lexical overlap with the Vault's patent/legal/data-room/incident corpus, so the reef seed found almost nothing in-lane (prewalkOverlap=5) and the walk correctly reported the mass where it actually is: comms-pipeline mechanics, not legal filing.

    Intent–reality gap: The commit message claims a correct, narrowly-scoped email-threading bugfix in scripts/book/email-book-chapters.mjs — and the diff, tests, and 'thread ... holds all 22' verification back that claim up completely. The gap isn't in the work; it's that the commit's Originating-Terminal trailer says 🔒 WezTerm Vault, a room whose entire declared surface is patents/legal/data-room/incidents, so the receipt's intent lane (derived from that room's owned globs) has zero legitimate overlap with a reality that is 100% book-comms code.

    • Add scripts/book/**, tests/book/** to the operator room's owned-surface glob (wherever WezTerm Vault's patents/legal/data-room/incidents list is itself declared) so the path stops reading UNOWNED against Vault.
    • Build scripts/ops/room-for.mjs <paths> mirroring the existing scripts/ops/rules-for.mjs pattern, resolving touched files to their owning room.
    • Add a pre-commit WARN (never block, per the WIP-claims precedent) that diffs the Originating-Terminal trailer's room against room-for.mjs's answer for the staged paths.
    • Run /recontext after the glob fix to confirm scripts/book/** moves from UNOWNED/CONTESTED to OWNED.
    • Do not amend ccc40f5cd0 to fix the trailer (NEVER git commit --amend on main) — if the mislabel matters historically, annotate via git notes.

    What we learned: The Originating-Terminal trailer is presently self-reported prose with nothing cross-checking it against the room's own owned-file glob, so any terminal session can stamp any room on a commit regardless of what it touched — this room's own owned-surface list (patents/legal/data-room/incidents) was sitting right there in this event's context and was never consulted at commit time. Prior lessons for this room only carried offPct trend numbers with no sensemaking; this is the first pass that traces the drift to a specific, closeable mechanism (trailer vs glob) rather than reporting only the after-number.

    The missing guard (the deliverable): A pre-commit/commit-msg hook that resolves Originating-Terminal to that room's declared owned-surface glob(s), diffs it against `git diff --cached --name-only`, and warns when zero staged paths fall inside the declared room's glob — surfacing the mismatch before the drift receipt has to catch it downstream.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Right-sized: fill 0.98% is well under the 70% ceiling and litIntent≈litReality (118 vs 117) shows the walk isn't saturating or truncating (walkTruncated=false). No depth/ply adjustment needed. The concrete adjustment is upstream of the walk: verify the seed corpus is drawn from the glob-resolved room, not the self-reported Originating-Terminal, before the walk runs. Experiments: Re-run this receipt with Originating-Terminal forced to 🎩 operator and measure whether offPct drops toward ≤15 — confirms the mistag hypothesis deterministically. · Run scripts/ops/room-for.mjs (once built) against the last 90 days of commits and measure what fraction show Originating-Terminal ≠ resolved room, to size how common this drift class actually is. · After adding scripts/book/**, tests/book/** to the correct room's glob, re-run /recontext and confirm the path moves from UNOWNED/CONTESTED to OWNED.

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

    An out-of-lane event this clean-cut — correct, tested, guarded code mislabeled to the wrong room — is a labeling-hygiene loss, not a code-quality one, so it should discount the premium lightly and self-heal once the Originating-Terminal↔glob check ships; it stays a live drag on Vault's loss ratio only if the same terminal keeps absorbing non-legal work without the trailer being corrected.

    Open the signed attestation →
  83. 2026-09-10 · 🎤 voice · offPct 57 · mistagged

    fix(book): ch8 — the cortex stops wrapping the cerebellum, and cooling buys width not speed

    Why it left the lane: The commit message fences itself entirely in biology/thermal fact-correction vocabulary ('cortex is telencephalic', 'cerebellum metencephalic', 'CAS-equals-NMDA', 'cooling buys width'). But the diff also carries two other mass concentrations the message never lends its own words to: (1) the Sovereign Outreach Engine rewrite ('Every outbound reach is a probe', 'the pattern of misses is a heatmap', 're-rank against') and the CRM-RLS rewrite ('Rep A's coaching AI', 'battle cards', 'Row-level security and access-control lists') — pure Tactics.Signal/Tactics.Deal/Operations.Loop vocabulary; (2) the inserted <!-- metavector:the-shape-you-cannot-see --> block ('Compounding Verities', 'ShortRank Addressing', 'Trust Debt', 'Compression Witness') — pure Operations.Grid graph-metadata. Both are real strings in the diff; neither's vocabulary appears in the commit message's own account of itself, so the intent-walk (built from the message) never lights those coordinates while the reality-walk (built from the diff) does.

    The semantic pull: 'battle cards' / 'Rep A's deals' / 'row-level security' / 'access-control lists' pull toward B2.Tactics.Deal; 'outbound reach' / 'heatmap' / 're-rank' pull toward B3.Tactics.Signal and C2.Operations.Loop; 'the bench produces the spec, the spec produces the chip' and the metavector's 'ShortRank Addressing — coordinates are the fixed anchors' pull toward C1.Operations.Grid and C3.Operations.Flow.

    Intent–reality gap: The message claims a narrow, bounded pass — six anatomy sites, one thermal reframe, one CRM sentence, one lattice-arithmetic fix, one meld identity-claim softening — and separately disclaims the metavector block as 'not this pass's work, riding along.' The receipt doesn't recognize disclaimers: it measured the whole diff, and 57% of what actually lit up (CRM/outreach/deal vocabulary plus the axiom-glossary block) sits outside the lane the message's own words declared.

    • Land the metavector block (already 'preserved, not this pass's work') in its own follow-up commit crediting the originating session, per ITERATION DISCIPLINE
    • Add a 'Vocabulary-Scope:' trailer convention to the commit-message template so intent-lane extraction can see CRM/outreach terms the prose body doesn't literally restate
    • Run `node scripts/ops/wip.mjs check books/tesseract/chapters/chapter-08-from-meat-to-metal.md` retroactively to confirm the metavector session's claim wasn't stepped on
    • Extract the metavector HTML-comment block per code_rewrite above and wire it through build-book-html.sh
    • Update chapter-8 frontmatter rpmMechanics to name the CRM/outreach passages explicitly as intentional cross-domain metaphor content, not incidental drift
    • Prototype the pre-commit projected-offPct advisory named in missing_guard, scoped first to books/tesseract/chapters/*.md before any wider rollout

    What we learned: An uncommitted block left by another session inside a shared file gets silently absorbed into whichever commit next touches that file — the drift receipt measures the diff, not the commit message's disclaimers, so 'preserved, not my work, named for the record' does not exempt that content from being counted as this commit's reality. Naming it in prose is provenance; it is not lane-fencing.

    The missing guard (the deliverable): A non-blocking pre-commit check (extending hooks/pre-commit) that, for staged changes to books/tesseract/chapters/*.md, (a) diffs the staged hunks against `git stash`-equivalent working-tree state to flag any hunk the current session didn't touch (cross-checked against scripts/ops/wip.mjs claims), and (b) runs the same PMU walk locally to print a projected offPct before the commit lands — so a 57%-off commit is visible and splittable pre-commit instead of discovered post-commit as an already-shipped receipt.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. litIntent=137 and litReality=136 both sit near the ~144-node ceiling of the lattice — the walk is saturated, not shallow. A near-total lighting on both sides reduces discriminative power (everything lights up, so offPct becomes a function of where the small unlit remainder falls rather than a real concentration signal). Adjustment: cap ply depth at 1 for docsOnly=true commits on long prose files, or add an early-stop once fill exceeds ~90% of nodes, so the walk stops before it saturates past the point of being informative. Experiments: Log prewalkOverlap alongside final offPct for the last 30 events in this room and compute the correlation — if r>0.6, prioritize reef-seed fixes over walk-depth fixes for this room specifically · Ablation: cap ballistic walk to 1 ply for docsOnly=true commits and re-run against this room's last 14 days of history, measuring whether offPct concentration sharpens (less saturation) without losing detection on known-bad commits · Cluster this diff's hunks by gzip-NCD before walking (biology hunks vs CRM/outreach hunks vs metavector hunk as three clusters) and compare per-cluster offPct against whole-file offPct as a better-targeted recurrence predictor

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

    102 out-of-lane events in 14 days plus this 57%-off commit reads as an elevated loss-ratio for the voice lane; premium is restored by shipping the pre-commit projected-offPct advisory and the metavector sidecar extraction, then showing over the next N commits that residual off-lane mass in this room is bounded to declared cross-domain metaphor content rather than continuing to grow baseline drift.

    Open the signed attestation →
  84. 2026-09-10 · 🎤 voice · offPct 16 · structural

    fix(book): interlude — the cache leg comes off this list too

    Why it left the lane: The chapter edit trims/repairs prose that is saturated with infra vocabulary used as ANALOGY rather than as work: 'CPU caches at 100ns' (struck), 'Cache coherence is a protocol, correct by construction', 'MESI', 'boundary crossed', 'a JOIN, an inference', 'Casimir surface... force... between two plates'. Those exact tokens are also the tokens the reef's gzip-NCD seed and the ballistic walk use to recognize real infra/Operations work, so a purely editorial book-craft commit gets pulled toward B3.Tactics.Signal / C1.Operations.Grid even though it never touches a Grid/Loop/Flow file. prewalkOverlap=11 against litIntent=142 (≈8%) shows the seed already found weak intent correspondence before the walk even started — the lexical collision, not the room's actual work, is doing the pulling.

    The semantic pull: Struck+kept infra-analogy strings in the diff: 'Cache coherence is a protocol, correct by construction', 'MESI', 'a JOIN, an inference, a boundary crossed', 'The Scrim needs a synthesis step to form in', 'the same force Casimir found between two plates in vacuum'. These map toward the encircled B3.Tactics.Signal / C1.Operations.Grid / C2.Operations.Loop cells (protocol, exchange, topology, throughput are literally the labels on those 28 red cells) — a coincidence of vocabulary, not of work.

    Intent–reality gap: The commit claims (and its trailers/Story confirm) pure book-craft: tightening one interlude's rhetoric, correcting an orders-of-magnitude claim, moving a Casimir line to its established analogical form — entirely inside books/tesseract/chapters/*.md, the room's owned surface. The receipt instead measured offPct=16 into the infra/Operations pixel because the walk cannot tell 'writing about cache coherence as a metaphor' from 'doing cache-coherence work'.

    • Add `analogyLexicon:` frontmatter field to books/tesseract/chapters/interlude-straylight-warning.md listing its hardware-analogy terms
    • Audit the other book interludes/chapters that lean on hardware analogies (cache, protocol, MESI, JOIN, Casimir) and add the same frontmatter field to each — this is the one instance so far, the room's other ~103 out-of-lane events likely need the same audit
    • Extend the reef-seed builder to read `analogyLexicon` and exclude those terms from the infra-domain gzip corpus for docsOnly commits under books/tesseract/chapters/*.md
    • Add a book-analogy reef bank (separate from the general infra reef) that docsOnly + chapter-path commits route through by default
    • Ship the guard (see missing_guard) in the same commit as the reef-seed change
    • Re-run the last 104 voice-room out-of-lane events through the updated pipeline offline to confirm the discount actually moves offPct, before trusting it live

    What we learned: This room's chronic 104-events/14-days condition is not (only) a book-craft discipline problem — it is a lexical-collision problem: a book whose entire thesis is 'grounding = hardware' will always textually resemble infra work, and no amount of tightening the PROSE fixes a detector that cannot distinguish an analogy from an operation. The prior three interventions on this room all measured offPct going UP afterward, which is consistent with fixes aimed at the writing rather than at the reef's inability to parse writing-about-infra vs infra.

    The missing guard (the deliverable): A test (e.g. tests/pmu-simulator/docsonly-analogy-lane.test.mjs) that: for any commit where docsOnly=true and the sole changed path matches books/tesseract/chapters/*.md, asserts the receipt was computed against the book-analogy reef bank (or with the chapter's declared analogyLexicon terms discounted) rather than the raw infra corpus — fails loudly if a future receipt-generator refactor silently routes book prose back through the general reef.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Too shallow for what it's being asked to resolve: a 6-line, single-file, docsOnly diff hitting walkTruncated=true at 2 plies suggests the truncation ceiling is calibrated for code-sized diffs and is closing before book prose (which fans out across many lattice cells purely from vocabulary richness) can converge. Adjustment: raise the ply/depth ceiling specifically for docsOnly single-file commits and re-check whether litReality (104) converges toward litIntent (142) without truncating. Experiments: Build a book-analogy lexicon bank from all books/tesseract/chapters/*.md frontmatter + known analogy terms (cache, protocol, coherence, MESI, JOIN, Casimir), re-run offPct on the room's last 104 out-of-lane events, and measure the delta · Raise walk truncation ceiling 2x for docsOnly=true single-file commits only, re-run the same 104-event backtest, compare offPct distributions before/after · A/B test excluding {cache, protocol, MESI, coherence} from the general infra-domain gzip dictionary and confirm voice-room breach% (currently 35.8%) drops without moving builder/architect room accuracy on the same window

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

    A chronic 35.8% breach rate in a room whose actual work is correctly-scoped book prose raises this lane's loss ratio on false signal alone, not on real cross-lane work — restored by tagging analogy-heavy chapters and routing docsOnly book commits through a dedicated reef bank so the premium reflects real drift, not lexical coincidence.

    Open the signed attestation →
  85. 2026-09-10 · 🎤 voice · offPct 20 · intentional

    book(errata): 33 nuances in danger of being normalized back in, sorted by confidence

    Why it left the lane: The diff carries three distinct payloads: (1) books/tesseract/meta/ERRATA-ANTI-NORMALIZATION.md — 346 lines, but 'meta/' not 'chapters/', so it sits outside voice's chapters/*.md glob; (2) tests/voice/errata-not-normalized.test.mjs — a guard file, which by construction lives in tests/, a path no content room's glob covers; (3) a 13-line edit to scripts/controller/tick.sh removing DECISION_IGNORE_PAUSE=1, explicitly flagged in the message as an unrelated 'ALSO' — 'token audit Tier 0.4, operator-directed fix it'. tick.sh/DECISION_IGNORE_PAUSE is Operations-Grid vocabulary (pipeline pause/bypass, the tick loop), which is exactly what pulled placement into C.Operations × B3.Tactics.Signal instead of the declared book-content lane.

    The semantic pull: Strings 'DECISION_IGNORE_PAUSE=1', 'tick.sh', 'pause bypass', 'budget flag a stage may override' are controller/pipeline terms mapping to C1.Operations.Grid/C2.Operations.Loop; 'guard', 'SEEN TO FAIL', '.thetacog/guard-seen-to-fail.ndjson', 'fence checks', 'construct not token' are CI/telemetry terms mapping to B3.Tactics.Signal — both clusters are real substrings in the diff, both are structurally absent from voice's chapters/*.md-flavored vocabulary, and together they account for the 25 additional B3/C1/C2/C3 reds beyond the small B1/B2 spread.

    Intent–reality gap: The commit message self-identifies as 'book(errata)' — a manuscript-nuance list plus its guard — but by its own admission also ships an unrelated operations fix ('ALSO: removes DECISION_IGNORE_PAUSE=1 from tick.sh'); the receipt measured exactly that second, undeclared-as-primary payload landing in Operations coordinates the errata lane never claimed.

    • Split any future bundled 'ALSO:' paragraph into its own commit before committing (pre-commit self-check: grep staged commit message draft for 'ALSO:' and pause)
    • Add books/tesseract/meta/**/*.md to 🎤 voice's owned-surface glob — errata/meta commentary about the manuscript is voice's content, just not in chapters/
    • Add tests/voice/**/*.test.mjs to 🎤 voice's owned-surface glob — CODE DEFINITION-OF-DONE requires the guard ship in the same commit as the fix, so voice's guards structurally belong to voice, not to an unclaimed tests/ no-man's-land
    • Route scripts/controller/*.sh changes to 🎩 operator's or 🔨 builder's owned surface explicitly, never let them ride inside a voice-scoped commit
    • Add a Relevant-Rooms cross-check: when staged paths span two disjoint room globs, require the commit message to name both rooms with a reason, or split

    What we learned: The prior three interventions on this room were facts-only and offPct rose after every one of them (27→39, 21→31, 0→36) — the failure isn't unawareness of drift, it's that a meaningful share of 🎤 voice's 'out-of-lane' events are its OWN correctly-scoped deliverables (a guard test, a meta/ doc) landing outside a glob that was drawn around chapters/*.md before CODE DEFINITION-OF-DONE required every fix to ship its guard in the same commit. The detector is measuring a glob/reality mismatch, not runaway scope, for at least the meta/ and tests/ portions of this event — narrowing the glob further would make this worse, not better.

    The missing guard (the deliverable): tests/ops/mixed-lane-commit.test.mjs: bucket a commit's staged paths by declared room-glob (from the rooms config), and WARN (never block, per hook-never-blocks) when more than one non-trivial bucket is populated AND the commit message contains no explicit multi-room disclosure (no second Relevant-Rooms entry, no 'ALSO:' cross-reference) — this would have caught the tick.sh bundle at commit time as advisory, without blocking the errata work.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. litReality/walksReality = 124/124 = 100% and litIntent/walksIntent = 121/121 = 100% — every cell the walk visits, it lights. That's saturation, not discrimination: at 2 plies the walk isn't shallow in depth but it also isn't filtering, so it can't distinguish 'touched in passing' from 'core to the claim'. Adjustment: add a lit-threshold (require ≥2 independent term hits per cell before counting it lit) so a single stray term like 'tick.sh' can't light a whole Operations cell on its own. Experiments: Re-run offPct for the last 20 🎤 voice commits with books/tesseract/meta/**/*.md and tests/voice/**/*.test.mjs added to the glob, and diff room-mean offPct before/after to measure how much of the 94-event/14-day count was glob-mismatch · For commits containing an 'ALSO:' paragraph, split the receipt computation into two intent lanes (primary message vs the ALSO clause) and measure whether the primary lane's offPct drops below threshold on its own · Seed prewalkOverlap with the commit's own Relevant-Rooms trailer as a weighted prior and measure whether overlap-at-seed rises for commits that already self-disclose a secondary room

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

    This event nudges 🎤 voice's loss-ratio up on paper (offPct 20 vs threshold 15, 94 prior out-of-lane events/14d), but the underlying risk is low — a bundled-but-disclosed infra fix plus two correctly-scoped deliverables sitting outside a stale glob — so premium is restored by widening the glob for meta/ and tests/voice/ and by splitting future 'ALSO:' work into its own commit, not by tightening scope on the errata work itself.

    Open the signed attestation →
  86. 2026-09-10 · 🎤 voice · offPct 17

    comms(self): the hostile review, and the number that was mine

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

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

    Open the signed attestation →
  87. 2026-09-10 · 📐 VS Code Architect · offPct 23 · structural

    docs(vna): what made the steer readable, and the three gaps no receipt derives

    Why it left the lane: The diff is 146 insertion-only lines of pure technical/instrument-architecture vocabulary — 'ballistic walk', 'gzip-NCD', 'ShortLex', 'lattice', 'aperture', 'cockpit.mjs', 'scripts/vna/*.mjs', 'envelope.mjs', 'mesh.mjs', 'splatter.mjs', 'AXIOM 1 W6' — and it lands the new file at docs/architecture/vna-steer-usability-consolidation-2026-09-10.md. None of that vocabulary is 'Strategy' vocabulary even though the string 'Strategy' appears inside three literal internal coordinate names quoted from the VNA tool itself ('A3.Strategy.Fund × A1.Strategy.Law', 'A2.Strategy.Goal × A1.Strategy.Law') — those are the VNA instrument's OWN labels for ITS drift, not this repo's classification of this commit, and they're swamped by the surrounding build-architecture mass. The reef placed the seed where the words actually are (architecture/build), the walk (133 vs 131 lit cells, nearly matched) faithfully expanded from that seed, and ~23% of the resulting reality mass sits outside the intent lane this room is configured to own.

    Intent–reality gap: The commit message and trailers self-declare as work of 📐 VS Code Architect (Relevant-Rooms: architect, builder, laboratory) documenting a consolidation pass — a claim the content fully earns. The receipt measures 23% off-lane anyway, because the room's registered lane is docs/strategy/ + docs/01-business/strategy/, and the file legitimately belongs under docs/architecture/ — a path the room's owned-surface declaration has never included despite the room's own name.

    • Add docs/architecture/** to the 📐 VS Code Architect room's owned-surface glob in its source config (find via grep, not CLAUDE.md directly)
    • Audit the other ~41 out-of-lane events for this room in the last 14 days — if most are also docs/architecture/*.md, this is one config gap, not 41 separate drifts, and the fix is a single glob edit not 41 re-tags
    • Add a guard asserting every room whose declared name implies a doc category (Architect → architecture, Builder → build, …) has that category's path present in its owned-surface glob
    • Scope the new glob narrowly if docs/architecture/ turns out to also hold non-Architect-room content (check for existing files there authored by other rooms before widening to **)
    • Note in the room registry that docs/architecture/ vs docs/strategy/ is now an explicit split: build/instrument architecture → architecture/, business/product strategy → strategy/

    What we learned: A room's 42-events/14-days out-of-lane rate can be ONE structural glob gap repeating, not 42 independent semantic drifts — the room named 'Architect' has never had docs/architecture/ in its own owned-surface declaration, so every legitimate architecture doc it writes scores as drift by construction, regardless of content quality.

    The missing guard (the deliverable): tests/ops/room-glob-self-coverage.test.mjs — for each room, assert that if N%+ of that room's recent docs-only commits (over a rolling window) land under a path prefix not covered by its own owned-surface glob, the test fails naming the prefix and the room, rather than letting it silently repeat as per-commit drift.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized, not shallow or saturated — litIntent/litReality and walksIntent/walksReality are within ~1.5% of each other, showing the walk covered a matched, proportionate area on both sides rather than under-filling one side or hitting a cap. No depth adjustment needed; the fix belongs upstream at the reef seed, not in walk parameters. Experiments: Re-run reef placement on this same sha with 'A3.Strategy.Fund'/'A1.Strategy.Law'/'A2.Strategy.Goal' down-weighted or stripped (they're a quoted foreign taxonomy, not this repo's lane signal) and measure whether offPct drops below 15 · Seed the architecture anchor cluster with a small dictionary of this room's actual recurring vocabulary (ballistic walk, gzip-NCD, ShortLex, lattice, cockpit.mjs) and re-measure prewalkOverlap on the next docs/architecture/*.md commit from this room · A/B the reef's per-room anchor set: current single strategy-anchor vs a split strategy+architecture anchor pair for 📐 VS Code Architect, then compare offPct on the next 10 commits from this room

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

    A 23%-off, docs-only event in a room with 42 prior out-of-lane events in 14 days reads as elevated loss-frequency for this lane's premium until the owned-surface glob is corrected — the underlying work is sound, so the fix is a one-line config change that should collapse most of that 42-count rather than a signal of unsound authorship.

    Open the signed attestation →
  88. 2026-09-09 · ☕ network · offPct 18 · mistagged

    comms(network): own the AIG position — stop making Sean the door

    Why it left the lane: The diff's actual sentences are dense with deal-and-routing vocabulary rather than message-drafting vocabulary: 'ISO/Verisk CG 40 47, CG 40 48 and CG 35 08', 'whether Legal Ops is even the right desk in 2026, or whether this has moved to a CRO or model-risk seat', 'stop making him the door and keep making him the reader of the market', 'downgraded from door to cartographer'. That is negotiating a relationship's terms and re-routing an org-chart, which the walk correctly reads as Tactics.Deal (B2) crossed with Operations.Grid/Loop/Flow (C1/C2/C3) — exactly the 25 of 31 encircled reds sitting on B1/B2 × C1/C2/C3 — rather than the Tactics.Signal (B3) lane a 'one-paragraph swap to a comms draft' claims.

    Intent–reality gap: The commit message claims a narrow, single-paragraph correction to a comms draft ('A CORRECTION, NOT A SECOND BODY... a scoped swap') — pure Signal-lane work. The receipt measured 144/144 reality cells lit against 131/144 intent cells with only 23 pre-walk overlapping, i.e. the actual prose spread across deal-structuring and operational-routing territory the message never claimed to touch.

    • Add docs/comms/{external,self,newsletter,telegram}/** to ☕ network's owned-surface glob wherever data/rooms.json or .workflow/rooms/*.html declares it
    • Split this correction doc: keep only the STATUS/WHAT IS OPEN/THE SWAP sections (Signal-lane patch text) in docs/comms/external/drafts/, move WHY THIS IS A CORRECTION and WHAT THE SWAP BUYS (deal-and-rules rationale) to docs/strategy/battle-cards/sean-curtin-aig-position-2026-09-09.md, which the room already owns
    • Add a test asserting every docs/comms/<channel>/{drafts,approved,sent} path used by comms-dispatch.sh is covered by at least one room's owned-surface glob
    • Cross-reference this finding against f748e0b17 (implementation-mass-vs-consumer) in the room's lesson log — this is the same 'built and unnamed' failure at the glob-list layer instead of the script layer

    What we learned: The room's owned-surface glob was written against the older docs/outreach/ state machine and never updated when the newer CANONICAL COMMUNICATION PROTOCOL (docs/comms/<channel>/{drafts,approved,sent}) shipped — so legitimate network-room comms work filed under the newer convention is invisible to the room's own ownership declaration, and the lane math has nothing local to anchor it to, letting genuinely off-topic-sounding deal vocabulary dominate the placement.

    The missing guard (the deliverable): A guard asserting that every folder comms-dispatch.sh routes from (docs/comms/self, newsletter, telegram, external) is claimed by at least one room's owned-surface glob — so a channel folder can never exist in the dispatch pipeline without a room accountable for it.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Saturated and likely mis-sized: litReality=144/144 is the maximum possible lit-cell count and walkTruncated=true fired in the same run, meaning the walk exhausted its ply/time budget before it could discriminate in-lane from out-of-lane cells on this long (89-line), cross-domain doc. Concrete adjustment: raise --max-depth (or the time budget) specifically for docs-only commits above a diff-size threshold, and re-run this exact sha to see whether litReality drops below 144 once the walk is allowed to converge instead of being cut off mid-saturation. Experiments: Re-run pmu-onchip --ballistic on sha 04a358cee1 with --max-depth raised one increment; measure whether litReality falls below 144 and walkTruncated flips false — if so, truncation (not genuine breadth) was inflating offPct · Inject a path-based prior into the reef seed for docs/comms/external/** files pointing at B3.Tactics.Signal before the walk runs; re-measure prewalkOverlap on a matched fixture to see if it rises above the 23/131 baseline · Split this file per the checklist (patch-only vs rationale) and run the receipt on each half separately as an ablation, to see how much of the 18% offPct the rationale half alone accounts for

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

    An out-of-lane correction memo that is legitimately in-room but structurally unclaimed reads as unpriced strategic drift rather than routine comms work, and the premium is restored the moment the glob names the surface and the rationale half moves to a coordinate the room already owns.

    Open the signed attestation →
  89. 2026-09-09 · 🛰️ unattributed · offPct 19

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

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

    Open the signed attestation →
  90. 2026-09-09 · 📐 architect · offPct 18 · structural

    feat(blog): 1.2 seconds is not oversight, it is the exhibit — the Cigna PXDX post, cooked

    Why it left the lane: The diff's entire mass (410 insertions across 4 files) sits in docs/05-content/blog/cook-rounds/2026-09-06-1-2-seconds-is-not-oversight.{claims,predictions}.md, docs/05-content/blog/scratchpad/cignaCrisis.txt, and src/content/blog/2026-09-06-1-2-seconds-is-not-oversight.mdx — none of which match architect's declared owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md). The commit message's own vocabulary — 'Eight courses, market-meal format, predictions and claim DAG committed before composing', 'Course E carries the parametric endorsement language', 'Course F links /milestones' — is mdx-cook skill vocabulary (a content-authoring pipeline with claims.md/predictions.md sidecars), textually and structurally orthogonal to architect's strategy/product-doc lexicon. The Story trailer supplies a post-hoc justification ('it lands in architect because the deliverable is a guarded artifact') that never touches glob ownership at all.

    Intent–reality gap: The commit claims Originating-Terminal 📐architect (with Relevant-Rooms architect/voice/operator, justified by 'the deliverable is a guarded artifact'), but the receipt measured 100% of the changed-file mass landing in blog-content paths that match zero globs in architect's owned-surface declaration.

    • Add `src/content/blog/**` and `docs/05-content/blog/**` to the owned-surface glob of whichever room is designated content-owner (voice is the closest fit — content/voice-register work, already listed as Relevant-Rooms) in that room's `.workflow/rooms/*.html`.
    • Finally ship `scripts/pmu/room-drift-<room>-check.sh` — spec'd independently by architect, navigator, and laboratory per lesson ff09774e5, shipped by none of them.
    • Extend the shipped guard to check owned-surface match against the UNION of Originating-Terminal + all Relevant-Rooms, not Originating-Terminal alone.
    • Add an UNOWNED-SURFACE classification distinct from off-lane, so a future audit can separate 'wrong room claimed' from 'no room owns this path at all'.
    • Re-run this sha's diff paths against the corrected glob set and confirm offPct drops for content commits specifically.

    What we learned: 182 out-of-lane events in 14 days for one room is not sporadic mistagging — it is what happens when an entire class of legitimate, correctly-guarded work (content authoring via mdx-cook) has no home in the 9-room owned-surface model at all, because the rooms were built as activity-mode/terminal buckets (strategy, ops, deals) and none of their globs cover src/content/blog/ or docs/05-content/blog/. Every content commit is definitionally off-lane regardless of which terminal authored it, which is a stronger and more actionable claim than the prior lesson's 'Originating-Terminal alone is the wrong signal' — the signal is wrong AND the target it points at (any of the 9 rooms) has nothing to point to.

    The missing guard (the deliverable): scripts/pmu/room-drift-<room>-check.sh, extended to (a) compute owned-surface glob overlap against the union of Originating-Terminal + Relevant-Rooms rather than Originating-Terminal alone, and (b) emit a distinct UNOWNED-SURFACE verdict when the diff paths match zero glob across every room in the 9-room manifest — this is the guard three rooms already spec'd and none shipped; shipping it, not respec'ing it, is the actual deliverable.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized: 100% lit coverage on both sides (litIntent/walksIntent and litReality/walksReality both 1.0) with no truncation. No depth adjustment needed; the fix is upstream at the seed/dictionary layer, not the walk's ply budget. Experiments: Seed the reef dictionary with content-authoring terms ('claims DAG', 'market-meal format', 'cook-rounds', 'predictions sidecar') tagged to the content-owning room, then re-run this sha through the lens and confirm prewalkOverlap rises materially above 6. · Ship room-drift-<room>-check.sh (finally) and measure architect's room-mean offPct over the next 8 commits against this event's 18, using the same before/after methodology lesson ff09774e5 already validated (20→14). · Add UNOWNED-SURFACE as a first-class receipt field and backfill it against the room's 182 recent off-lane events to measure what fraction are true mistagging versus structurally homeless content paths — this number decides whether the fix is 'reassign one room' or 'add a content room'.

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

    An architect-tagged room running 182 off-lane events in 14 days, with this commit's mass landing 100% outside its owned surface, prices the lane's loss ratio up until ownership is corrected — restored by moving content-authoring globs to their true owning room and shipping the already-thrice-spec'd union-of-rooms guard so the classification itself stops manufacturing false claims.

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

    test(tape): the chain of thought is sealed, not absent — guard the two ways that becomes a false green

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

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

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

    feat(comms): THE LIVE LANE — the chain of thought is sealed, so place the acts instead

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

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

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

    bookclub(sweep): automate the unsubscribe catch — Thursday 04:00, and it reports its own blindness

    Why it left the lane: The diff is a book-club infrastructure build (unsub-sweep.mjs, launchd plist, its test) — every load-bearing string is operational-cadence vocabulary: 'sent-after-suppression', 'send ledger', 'audience-snapshot', 'ingest-unsubscribes', 'StartCalendarInterval', 'exit codes ARE the contract'. None of that is architect's owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, CLAUDE.md). The encircled pull names B3.Tactics.Signal ×11 and C1/C2/C3.Operations.Grid/Loop/Flow ×14 combined — the mass landed on scheduling+dispatch-cadence (B3.Signal = the mailto List-Unsubscribe RFC 8058 signal path) and on Operations execution-loop coordinates (C1 Grid = the launchd StartCalendarInterval schedule, C2 Loop = the ledger-scan loop, C3 Flow = the exit-code contract as pipeline flow-control). The commit's own Originating-Terminal trailer claims 📐 architect but its Story line self-diagnoses 'C,C (Operations × Operations)' — the operator already tagged this as an Operations coordinate, not an architect one, before the receipt even ran.

    Intent–reality gap: The commit message claims architect authorship (a strategy/architecture room) but the work itself — a cron-scheduled inbox-sweep script with exit-code contracts and a launchd plist — is operational tooling the commit's own Story trailer already names as an Operations×Operations coordinate; the room tag on the trailer never caught up to that self-diagnosis.

    • Fix Originating-Terminal trailer to 🔨 builder on this commit's lineage going forward (can't rewrite b2c9684460 itself per NEVER git commit --amend — leave it, note in a follow-up commit or git notes if it matters)
    • Add scripts/bookclub/ to a builder-owned or network-owned glob in .workflow/rooms/*.html if book-club automation is going to keep landing here — right now no room's owned-surface list claims scripts/bookclub/*, which is why the lane-classifier had nothing correct to fall back on
    • Cross-check config/launchd/*.plist ownership — 8+ launchd jobs already exist per the launchd-clock-alignment memory; these belong under an Operations-owned glob, not unclaimed
    • Add a CLAUDE.md note (in the SOVEREIGN OUTREACH ENGINE or a new 'book-club automation' section) naming scripts/bookclub/unsub-sweep.mjs + its plist as the canonical unsubscribe-catch path, so the next similar commit has a spec to be measured against instead of an ad-hoc room guess

    What we learned: CLAUDE.md's commit-trailer note ('a commit's originating terminal and its file-relevance to rooms can diverge — that's fine') is being used as a blanket excuse for terminal mistagging rather than as license for genuine cross-room work — when a commit's own Story trailer independently derives the correct coordinate (here, 'C,C Operations × Operations') but the Originating-Terminal trailer contradicts it, that self-contradiction is itself detectable and should have been caught before the receipt ran, not after.

    The missing guard (the deliverable): A pre-commit lint (warn-only, matching the existing non-blocking posture) that greps the commit message for a Story-line self-declared coordinate (e.g. 'C,C (Operations × Operations)') and diffs it against the Originating-Terminal emoji's room-to-coordinate mapping in data/rooms.json — flagging when the two disagree, so a self-diagnosed mismatch is surfaced at commit time rather than discovered three commits later in an intervention pass.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Right-sized but lopsided: litReality (142) exceeding litIntent (125) by 17 cells while offPct sits at 28% suggests the walk is properly exploring reality's actual footprint rather than saturating, but the intent side is under-walked relative to what the commit message actually specifies (it's a long, detailed message with explicit exit-code contracts, two named legs, and a schedule — that specificity should produce MORE intent-side lit cells, not fewer). Concrete adjustment: re-run with --max-depth+1 on the intent side specifically, since a message this detailed (contract-heavy language: 'EXIT CODES ARE THE CONTRACT', 'TWO LEGS', 'THE GAP WAS NEVER') should saturate more of the declared-intent lattice before the walk terminates. Experiments: Add a scripts/bookclub/ → Operations-coordinate mapping to the reef's keyword table and re-run this exact commit's classification to see if offPct drops below 15 purely from better intent-side vocabulary coverage (no code change, just reef vocabulary) · Ablation-test whether raising --max-depth on the intent-side walk alone (holding reality-side fixed) closes the 125-vs-142 lit gap, measuring whether the gap is a genuine drift signal or an artifact of asymmetric walk depth · Backfill data/rooms.json's vector_keywords for the 🔨 builder and 🎩 operator rooms with 'unsubscribe', 'launchd', 'exit code', 'inbox sweep' — terms that appear nowhere in the current 5/190-reef sample used for this commit's classification

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

    This lane's loss-ratio ticks up marginally — a mistagged-not-malicious commit still costs a false out-of-lane flag that the room-mean-offPct trend will read as architect degrading (28% joining a room already at 181 events/14 days) — restored by the trailer-coordinate consistency guard landing and by scripts/bookclub/ getting a real owned-surface glob so the next such commit classifies correctly at commit time rather than needing a post-hoc intervention.

    Open the signed attestation →
  94. 2026-09-09 · 🔨 builder · offPct 19 · structural

    feat(rooms): prep/next/room work in every shell, and the install proves itself

    Why it left the lane: The diff is 100% terminal/room-infrastructure vocabulary — scripts/bin/{prep,next,room}, scripts/orthogonal/rooms-doctor.sh, zsh -ic 'type prep', TERM_PROGRAM, launchd, 'interactive shells only' — none of which appears anywhere in builder's declared surface (src/app/, src/components/, src/lib/, public/, build-book-html.sh, convert-chapters-to-html.mjs, hooks/pre-commit, decentralizedtalk/, thetacoach-crm-mcp/, vercel.json). No region narrative is cached for this sha, so I can't cite lattice coords, but the file-surface mismatch alone is sufficient: every byte the commit actually touched sits outside the lane the receipt is grading it against, so the walk had nowhere in-lane to land.

    The semantic pull: Terms like 'scripts/bin', 'rooms-doctor.sh', 'daemon', 'zsh -ic', and 'launchd' cluster around room/terminal orchestration — the operator's own room-management tooling — not the app/CRM/book-build surface builder owns. The commit's own trailers already name the pull correctly: Relevant-Rooms lists 🎩 operator and 📐 architect ahead of 🔨 builder, meaning the commit itself flagged this divergence before the receipt did.

    Intent–reality gap: The commit message and trailers are honest and precise about scope — it explicitly names operator/architect as more relevant than builder — but the receipt still grades lane fit against Originating-Terminal alone (🔨 builder, the terminal the operator happened to be typing in), so a commit that correctly disclosed its own multi-room nature still reads as 19% out-of-lane.

    • Add scripts/orthogonal/**, scripts/bin/**, tests/orthogonal/** to 🎩 operator's (or whichever room governs room/terminal infra) owned-surface glob in .workflow/rooms/*.html
    • Patch the receipt/lane-grading step to union the owned-surface globs of every room named in Relevant-Rooms with Originating-Terminal's surface before computing offPct — this is the exact gap fb93ed948 diagnosed and it is still open
    • Add a guard test asserting a commit whose Relevant-Rooms names a room owning the changed files is NOT graded out-of-lane purely because Originating-Terminal differs
    • Note in CLAUDE.md's rooms/orthogonal entry that scripts/orthogonal/ and scripts/bin/ are room-infra territory, not builder's default catch-all
    • Consider deriving Originating-Terminal's counterpart lane check from primary owned-surface match at commit time rather than only from $TERM_PROGRAM, since detection reflects physical location, not content ownership

    What we learned: fb93ed948 diagnosed this exact gap (Relevant-Rooms is recorded but never consulted by the lane grader) and its measured outcome got WORSE (offPct 30→40) — prose diagnosis alone doesn't move the needle. The escalation this event demands is mechanical: the owned-surface glob for room/terminal-infrastructure files (scripts/orthogonal/, scripts/bin/) doesn't exist anywhere, for any room, so even a perfectly-tagged multi-room commit in this territory has no lane to land in. The fix is a config addition, not another note.

    The missing guard (the deliverable): tests/ops/lane-grading-unions-relevant-rooms.test.mjs — feed the grader a synthetic commit whose Originating-Terminal owns none of the changed files but whose Relevant-Rooms trailer names a room that does, and assert offPct is computed against the union of both rooms' owned surfaces rather than Originating-Terminal alone.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. walkTruncated=true with litIntent/litReality close but non-trivial (122 vs 132) suggests the walk hit its depth/time budget before fully saturating either side — right-sized in spread but cut off before convergence. Concrete adjustment: bump --max-depth for this ingest and re-run the same sha to see whether offPct moves with more budget or holds steady (holding steady would confirm the divergence is real, not a truncation artifact). Experiments: Re-run this exact sha's ingest with a seed-overlap diff report to name which specific terms caused prewalkOverlap to be only 2, and record the count before/after any dictionary change · Add the scripts/orthogonal/ and scripts/bin/ path vocabulary to the reef's seed dictionary and re-run this sha, measuring whether offPct crosses back under the 15 threshold · Re-run this sha with --max-depth increased by one tier and record whether litIntent/litReality converge or diverge further, to separate truncation artifact from real drift

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

    A structural gap in the room's owned-surface table — not the code — is what priced this commit as a loss event; premium is restored the moment scripts/orthogonal/**, scripts/bin/**, and tests/orthogonal/** are fenced to a room, since the underlying code was already correctly placed.

    Open the signed attestation →
  95. 2026-09-09 · ☕ network · offPct 23 · mistagged

    test(chat): namespace-import the door so the guard can be SEEN to fail

    Why it left the lane: The event's own region narrative is uncached, but the diff's entire vocabulary — 'namespace import', 'door', 'unloadable test file', 'guard-seen-to-fail', 'assert.equal(typeof door.matches...)' — comes from the test-infrastructure/guard-plumbing lexicon of scripts/chat/thread.mjs (THE MESSAGE SPINE) and its test harness, not from any term in ☕ network's owned-surface glossary (outreach, bookclub, CRM, battle-cards, linkedin-posts). The 142 lit reality cells vs 131 lit intent cells, with only prewalkOverlap=3 before the walk even ran, shows the seed itself found almost no shared vocabulary between the network lane and this commit's actual subject matter.

    The semantic pull: 'namespace import', 'door', 'the guard is absent', 'the guard caught something', 'unloadable' — these are all guard-observability terms belonging to the guard-seen-to-fail ledger, not to any outreach/bookclub/CRM term the network room's owned globs contain.

    Intent–reality gap: The commit is tagged Originating-Terminal ☕ network (physical Messages.app terminal), but its content — making a chat-spine test file loadable so a guard can be observed failing — has zero surface overlap with anything ☕ network actually owns; the receipt correctly measured 23% off-lane because the lane claim, not the work, is wrong.

    • Add scripts/chat/** and tests/chat/** to 🔨 builder's (or 🧪 laboratory's) owned-surface glob in .workflow/rooms/*.html
    • Update CLAUDE.md's THE MESSAGE SPINE section to name an owning room explicitly (see spec_rewrite)
    • Write scripts/ops/orphan-surface-check.mjs: diff every top-level dir under scripts/ and tests/ against all rooms' owned-surface globs, list what's unclaimed
    • Change the drift receipt's lane input to prefer Relevant-Rooms (content-glob match) over Originating-Terminal (terminal detection) whenever the two diverge, and log the divergence

    What we learned: Room mistagging isn't only scope-creep-within-a-tool (prior f748e0b17) or a sensemaking blank (priors fdd4db2dc/f3a2a628d) — it can also come from Originating-Terminal silently substituting for owned-surface matching when a whole subsystem (here: THE MESSAGE SPINE, scripts/chat/+tests/chat/) has never been assigned to ANY room's glob. Unclaimed surface guarantees terminal-coincidence tagging every time it's touched, regardless of who is at the keyboard.

    The missing guard (the deliverable): tests/ops/orphan-surface-check.test.mjs — asserts every directory under scripts/ and tests/ that has committed files is claimed by at least one room's owned-surface glob in .workflow/rooms/*.html; would have caught scripts/chat/ and tests/chat/ as unclaimed before this commit tagged them under network by terminal coincidence.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. walkTruncated=true with a tight 131-vs-142 lit spread suggests the walk is right-sized in breadth but was cut off before fully resolving whether the extra 11 reality cells are genuine off-lane mass or unexplored continuation. Adjustment: when prewalkOverlap<5 (a near-zero-overlap seed, as here), automatically double --max-depth for that run — low-overlap seeds are exactly the case where truncation is likeliest to overstate offPct. Experiments: Build scripts/ops/orphan-surface-check.mjs, run it once against the full repo, and publish the count of unclaimed scripts/tests directories · For commits with prewalkOverlap<5, re-run the walk at 2x --max-depth and diff offPct before/after truncation removal — measure whether truncation systematically inflates offPct on low-overlap seeds · After adding scripts/chat/**+tests/chat/** to builder's glob, re-render this exact commit's receipt against the updated glob and confirm offPct actually drops — direct before/after ablation of the fix

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

    An unclaimed-surface mistag inflates ☕ network's measured loss ratio with drift that was never its risk to begin with, understating builder's actual surface load; premium on network's lane is restored the moment scripts/chat/**+tests/chat/** carry a real owner and this commit class stops landing there at all.

    Open the signed attestation →
  96. 2026-09-08 · 📐 architect · offPct 34 · mistagged

    feat(vscode): VNA: Steer — the whole loop as one IDE command, with the chip walk named while it runs

    Why it left the lane: The diff's mass sits in packages/intentguard-vscode/src/vna-steer.ts (new, 151 lines) and its two test files, plus the extension.ts wiring and README/package.json edits. The commit's claimed lane is architect-territory ('the whole loop as one IDE command' — a spec/story-shaped, documentation-adjacent claim about unifying a skill), but the actual mass is a TypeScript IDE-extension module: execFile spawning, vscode.WebviewPanel construction, a CSP string builder, a clipboard postMessage bridge, and two new tests exercising extension.ts activation. Terms like 'execFile', 'WebviewPanel', 'ProgressLocation.Notification', 'onDidReceiveMessage', 'acquireVsCodeApi' are builder/operations vocabulary — process orchestration, UI wiring, IPC — which is exactly the B3.Tactics.Signal (signal/wiring) and C1/C2/C3 Operations.Grid/Loop/Flow (execution pipeline, sequencing, throughput) coordinates the encircled panel lights up on. The room's OWNED SURFACE (docs/strategy, docs/03-product, .workflow/rooms/*.html, CLAUDE.md) touches none of that — only one line was added to .claude/skills/steer/SKILL.md, everything else is packages/intentguard-vscode/src/*.ts and tests/vna/*.test.mjs.

    The semantic pull: 151 new lines of vna-steer.ts introduce a SENSOR-ORCHESTRATION vocabulary (SENSORS array of {script,label}, execFile('node', [...]), withProgress, panel.reveal, bridge(html, cspSource)) that is structurally identical to the operational pipeline code already living in scripts/vna/*.mjs — the diff is a re-implementation of the wiring-and-sequencing lane in a second language (TypeScript, VS Code API) rather than documentation or strategy prose. That vocabulary is what the reef's gzip-NCD placement keys on, and it drags the commit toward B3.Tactics.Signal (wiring/signal-passing — the shim/bridge/postMessage code) and the C.Operations triad (Grid/Loop/Flow — the sequencing of six scripts in the skill's declared order, the progress-step loop, the render step).

    Intent–reality gap: The commit message and trailers claim room 📐 architect (Originating-Terminal + Relevant-Rooms: architect, laboratory, builder) for what reads as a strategic/product narrative ('the loop as one IDE command'), but 97% of the diff by line count is IDE-extension implementation code (vna-steer.ts, two test files, extension.ts wiring) — the kind of work CLAUDE.md's own room-surface table assigns to 🔨 builder, not 📐 architect.

    • Add packages/intentguard-vscode/ and tests/vna/ to 🔨 builder's owned-surface glob list in .workflow/rooms/builder.html (it is currently unclaimed by any room's owned-surface table, which is why every commit here reads as off-lane no matter which room is named)
    • Update .claude/skills/steer/SKILL.md's own room attribution note (if any) to point IDE-extension changes at builder, not architect
    • Add a pre-commit advisory (warn-only, per the no-fault-commit-naming convention) that greps staged paths against `packages/intentguard-vscode/src/` and `tests/vna/` and suggests Originating-Terminal: builder when neither architect glob is touched
    • Cross-reference this fix with the room's own prior lesson ff09774e5 (Originating-Terminal/Relevant-Rooms divergence is house-sanctioned) — the fix here is not to ban divergence, it's to make the ROOM-SURFACE TABLE cover packages/intentguard-vscode at all, since right now no room's owned-surface glob lists it

    What we learned: packages/intentguard-vscode/ — a real, growing, multi-file TypeScript package with its own tests — appears in NO room's owned-surface glob table anywhere in .workflow/rooms/*.html. Every commit that touches it is structurally guaranteed to read as off-lane for whichever room gets named in the trailer, because the detector has nothing to match it against; the prior fix (ff09774e5) addressed trailer-vs-lane divergence being sanctioned, but never asked whether the touched surface is claimed by ANY room at all — this is the same class one level up: an unclaimed surface, not just a mismatched claim.

    The missing guard (the deliverable): tests/ops/owned-surface-coverage.test.mjs — walks every tracked top-level package/directory under packages/ and scripts/vna/ and asserts each appears in at least one room's owned-surface glob in .workflow/rooms/*.html; fails loudly (naming the orphaned path) rather than silently producing off-lane receipts commit after commit.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Right-sized, not shallow or saturated: fill 0.98% against a 70% ceiling with walksIntent/walksReality both in the 130-142 range and litIntent/litReality nearly matched (142 vs 136) shows the walk is exploring proportionally on both intent and reality sides rather than one side stalling early. No adjustment needed to depth; the signal is real, not a walk-depth artifact — walkTruncated=true is worth checking (does truncation cut reality exploration short right where the vna-steer.ts vocabulary lives?) as a follow-up experiment. Experiments: Experiment: re-run this exact commit through the walk with --max-depth raised one ply (since walkTruncated=true) and measure whether offPct changes — if it drops materially, truncation is masking additional legitimate reality-side spread and the depth default should rise for this room's commit sizes. · Experiment: seed the reef with a synthetic 'vscode-extension' vocabulary cluster (execFile, WebviewPanel, postMessage, activate, registerCommand) mapped explicitly to whichever room ends up owning packages/intentguard-vscode, then re-run this commit and measure whether prewalkOverlap rises and offPct falls — tests whether the gap is vocabulary-coverage rather than walk-depth. · Experiment: after adding packages/intentguard-vscode to builder's owned-surface glob (per the checklist), replay the last 10 commits touching that package through the room-lane detector and measure the room's offPct trend — this is the direct test of whether 'mistagged room' vs 'missing surface coverage' was the real mechanism.

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

    An off-lane rate this high (34% against a 15% threshold, room mean already 205 events/14 days) on a genuinely unclaimed surface inflates this lane's apparent loss ratio with false-positive drift that isn't drift at all — it's a coverage gap in the room-ownership table; premium restores once packages/intentguard-vscode is added to an owned-surface glob and the room trailer is retagged to match the touched surface rather than the terminal the operator happened to be sitting in.

    Open the signed attestation →
  97. 2026-09-08 · ☕ network · offPct 33 · mistagged

    comms(cbiz): v11 — concede Rice as extensional, cut the sha-agnostic receipt link, source the 58s

    Why it left the lane: The commit is entirely two new .md files under docs/comms/channels/cambridge-bizai/ — v11.txt (the send draft) and v11.reception.md (a 126-line self-audit walking through attest-demo timing, the thetadriven.com/commit/<sha> template-collision finding, and a Rice-theorem correction). The room's claimed lane is git-discipline (C.Operations x B3.Tactics.Signal — commit/push/iteration hygiene). None of the diff's actual mass is about commit discipline: it is outreach-message QA (timing verification, URL-collision forensics, theorem-framing correction, reader-simulation reasoning). That content's real gravity sits in Tactics.Deal/exchange and Operations.Loop/Flow terms — 'attest-demo actually takes 58.75s', 'thetadriven.com/commit/<sha> renders a byte-identical receipt-shaped page', 'Rice's theorem closed that door' — which the walk correctly scatters across B1/B2/C1/C2/C3 rather than concentrating in B3.Tactics.Signal, because there is no commit-discipline vocabulary in the diff to anchor it.

    The semantic pull: Strings like 'thetadriven.com/commit/<sha>', 'byte-identical', 'receipt-shaped page', '404', and 'panel PNG' are literally about the PMU receipt/panel system itself (self-referential — a comms artifact reasoning about our own commit-receipt mechanism), which drags gzip-NCD toward Operations.Grid/topology and Tactics.Signal coordinates that exist to describe THIS pipeline, not the outreach content the commit is actually shipping. Meanwhile 'ISO forms CG 40 47', 'underwriters', 'exclusions effective 1 Jan 2026' pull toward Tactics.Deal/exchange. The diff is genuinely two-lane content wearing one room's file path.

    Intent–reality gap: The commit message frames this as a v11 revision pass on comms voice/positioning discipline (concede a theorem, cut a weak link, source a number) — reading as a voice/craft edit. The receipt measured the actual text mass as outreach-strategy reasoning (timing verification, form-number sourcing, reader psychology, reply-latency prediction) that has no vocabulary overlap with the git-discipline lane the room and file path claim.

    • Add a per-directory lane hint to docs/comms/channels/README.md (or create one) declaring this tree's canonical coordinate as Tactics.Deal/Operations.Loop, not git-discipline, so future receipts seed correctly
    • Update .workflow/rooms/network.html owned-surface notes to clarify docs/comms/channels/** content is judged by prose content, not by room ownership of the path
    • Cross-link this reception.md's Rice-correction finding into docs/architecture/anti-rules-ledger.md or CLAUDE.md's amnesia-ledger register if it recurs as a pattern (a node correcting the same overclaim twice in one room is exactly what that ledger tracks)
    • Consider whether v11.reception.md (self-audit prose) belongs in a dedicated docs/comms/channels/<room>/reception/ subpath, separating 'what we sent' (v11.txt, outreach lane) from 'how we reasoned about sending it' (audit/meta lane) so future gzip-NCD seeding has a cleaner split

    What we learned: A commit can be 100% correct, well-reasoned, self-critical prose (this one explicitly refuses to ship a guard because it would freeze a 90-second-old judgment — exactly per A DELETION IS NOT A FIX) and still register as maximally out-of-lane (offPct=33, 28 red regions, 100% off-lane pull) simply because the ROOM's claimed lane (git-discipline) has no relationship to the CONTENT's actual subject matter (outreach QA). This is the mistagged case at its purest: the receipt is measuring a real signal (this doc doesn't belong in git-discipline vocabulary), not a defect in the work itself — prior lessons in this room escalated facts-only interventions with mixed/negative outcomes (16→33 offPct), suggesting the room's *owned surface* itself (docs/outreach/, scripts/outreach/, battle-cards, bookclub) may be too narrow to include docs/comms/channels/, so content keeps landing 'correctly' outside what the room declares as its lane.

    The missing guard (the deliverable): A lightweight lane-declaration check: any new file under docs/comms/channels/**/*.md must carry a one-line YAML/frontmatter or header comment declaring its intended lattice coordinate (e.g. 'Lane: Tactics.Deal x Operations.Loop'), and the receipt pipeline should read that declared lane instead of defaulting to the committing room's git-discipline default — closing the gap between 'which room's terminal committed this' and 'what coordinate this content actually occupies'.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. litIntent(141) and litReality(138) are nearly equal in raw count but land in disjoint coordinate sets (offPct=33, 100% of the 28 red regions off-lane) — this is not a shallow/saturated walk problem, it's a genuinely low prewalkOverlap (17) driving a well-spread, correctly-functioning walk into orthogonal territory. Adjustment: no depth change needed; the walk is right-sized — the fix is upstream, at the reef-seeding stage (docs/comms/channels/ needs an explicit seed hint per lane_rewrite above), not in walk parameters. Experiments: Re-run this exact commit's receipt after adding a 'Lane:' header comment to v11.txt and v11.reception.md, and measure whether prewalkOverlap rises and offPct falls — a concrete before/after on the seed hint's effect · Sample 5 more historical docs/comms/channels/ commits in this room's history and compute their offPct distribution to confirm this is a systematic mistag (predict: consistently high offPct) rather than a one-off, before investing in the lane-declaration mechanism · Test whether adding docs/comms/channels/** to the network room's owned-surface glob in .workflow/rooms/network.html changes the QC-routing (not the offPct itself, but whether the delegation receipt stops flagging this as cross-room)

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

    This event is a false-positive-shaped loss for the git-discipline lane's loss ratio — the underlying work is sound and self-correcting (it refused to ship a judgment-freezing guard, per repo doctrine), so premium here is best restored not by penalizing the room but by re-seeding docs/comms/channels/ under its correct coordinate so future correct work in that path stops manufacturing phantom breaches.

    Open the signed attestation →
  98. 2026-09-08 · 📐 architect · offPct 18 · mistagged

    feat(book): own the compile step — the specification is the control object, not the flaw

    Why it left the lane: The diff is 100% prose inserted into books/tesseract/chapters/chapter-12-the-budget-is-the-proof.md. The new section's own vocabulary — 'the lane', 'coordinates', 'the compile step', 'project it onto the anchors', 'the grid', 'the crossing is an arithmetic', 'budget can be assigned', 'renewal can be priced' — is drawn directly from the reef's own ShortLex lexicon (Grid, Loop, Flow, Signal, Speed, Deal). Because the book is ABOUT the lattice the reef uses to classify code, prose describing the lattice self-classifies into Operations.Grid/Loop/Flow and Tactics.Signal/Speed/Deal rather than into anything resembling architect's declared surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html). No term in the diff maps to architect's owned vocabulary at all.

    The semantic pull: Terms like 'lane', 'coordinate', 'the grid', 'budget', 'compile', 'renewal price' are polysemous across this repo: in architect's world they'd describe strategy docs, but in this diff they are literal lattice nouns from the book's own thesis. The walk lights up C1/C2/C3 Operations + B1/B2/B3 Tactics because that IS the semantic content of the paragraph — the drift isn't noise, it's the walk correctly reading a chapter about coordinates as being about coordinates.

    Intent–reality gap: The commit message claims architect-lane structural work ('own the compile step... the specification is the control object') filed under Originating-Terminal: architect, but the receipt measured the actual diff landing entirely in book-manuscript prose that touches zero files anywhere in architect's owned-surface glob list.

    • Add `books/tesseract/chapters/**/*.md` (and appendices) to one room's owned-surface glob in `.workflow/rooms/*.html` — currently claimed by no room
    • Ship `scripts/pmu/room-drift-<room>-check.sh` (spec'd 3x already per ff09774e5, never shipped) so the lane classifier checks the Relevant-Rooms trailer's owned surfaces before Originating-Terminal's, and reports UNOWNED-SURFACE distinctly from off-lane when neither claims the changed paths
    • Add a `docsOnly=true` exemption or separate lane baseline for pure-prose commits so book chapters aren't scored against a code-oriented offPct threshold that was never calibrated for manuscript prose
    • Backfill: grep the 213 out-of-lane events in this room over the last 14 days for `books/tesseract/chapters/` paths to measure what fraction of architect's 'drift' is actually this exact unowned-surface mistag

    What we learned: ff09774e5 diagnosed that the detector uses Originating-Terminal alone despite CLAUDE.md sanctioning Originating-Terminal/Relevant-Rooms divergence — and that lesson measurably helped (offPct 20→14) but the fix was never shipped, only re-spec'd. This event is the recurrence proving that gap: it additionally reveals the fix alone wouldn't have caught THIS case, because even the commit's own Relevant-Rooms trailer (vault, operator, voice) doesn't own book chapters either — `books/tesseract/chapters/**` is unowned by ALL nine rooms' globs, not just misattributed to the wrong one. A trailer-aware classifier needs an actual owned-surface entry to fall back to, or it will keep flagging every book commit as maximally off-lane no matter which room authored it.

    The missing guard (the deliverable): A test (`tests/pmu-simulator/room-surface-coverage.test.mjs`) asserting every top-level content directory that regularly receives commits (books/tesseract/chapters/ included) is claimed by at least one room's owned-surface glob in `.workflow/rooms/*.html` — failing loudly on an unowned path instead of silently letting the lane-attribution fall back to Originating-Terminal.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Under-utilized for this content type: litReality trails litIntent by 11%, and walkTruncated=true on only 2 plies for a dense, vocabulary-rich book-prose insertion suggests the walk was cut off before reality-side coverage converged. Concrete adjustment: raise --max-depth (or the time budget) specifically for docsOnly=true commits, since prose corpora carry more distinct terms per line than code and need more plies to fully light the reality side. Experiments: Rerun this commit's classification with `books/tesseract/chapters/**` added to a room's owned surface and measure whether offPct for book commits drops toward the room's non-book baseline · Increase walk depth/budget conditionally on docsOnly=true and re-measure litReality/litIntent ratio across the last 10 docsOnly commits to see if the 0.89 ratio converges closer to 1.0 · Exclude docsOnly=true commits from the room's rolling offPct trend line and separately track a 'book-lane' trend, then compare whether the room's non-book mean offPct is meaningfully lower than the blended 213-event figure

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

    A pure book-manuscript commit reading as 100% off-lane against architect's surface is a false-positive loss event for this lane's loss ratio — it inflates the room's breach rate (currently 56.7% of all commits) with drift that isn't code risk at all, and restoring accuracy means excluding or re-homing docsOnly book commits so the lane's premium reflects actual architect-surface risk rather than manuscript noise.

    Open the signed attestation →
  99. 2026-09-08 · 📐 architect · offPct 24 · mistagged

    fix(vna): two defects in my own commits — a guard I claimed but never wrote, and derived renders entering git

    Why it left the lane: The region narrative cache is empty for this sha, so I'm not citing lattice coords from it — the mechanism is legible from the owned-surface mismatch and the diff vocabulary alone. The commit's only substantive content is tests/vna/spec-render.test.mjs (node:test/node:assert boilerplate, 'STATE EXTRACTION', 'FORECLOSES:', 'SMOKE:', '@guard tests/vna/spec-render.test.mjs') plus a .gitignore hygiene fix. None of that vocabulary or those paths appear anywhere in architect's declared surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md) — the pull is toward a testing/ops coordinate because the work IS testing/ops work, correctly labelled as such in the commit's own Relevant-Rooms trailer (🔨 builder, 🎩 operator), which the lane detector evidently does not consult.

    The semantic pull: '@guard', 'test(', 'assert.match', 'node:test', 'SMOKE:' and '.gitignore' are the terms actually present in the diff, and every one of them names test-authorship/repo-hygiene work — none names strategy, product framing, or governance prose, which is what architect's owned globs are built to hold. The pull toward the wrong lane is not a stray reference, it's the whole file.

    Intent–reality gap: The commit message narrates a self-audit ('two defects in my own commits') and carries Originating-Terminal: architect, but the receipt measured reality against architect's owned-surface lane and found none of the touched paths live there — because the actual work (a guard test + a .gitignore fix) belongs to builder/ops, a fact the commit's own Relevant-Rooms trailer already disclosed.

    • Ship the classifier fix (scripts/pmu/room-lane-classify.mjs or equivalent) that keys lane-assignment off Relevant-Rooms glob-match, not Originating-Terminal — three rooms (architect, navigator, laboratory) independently spec'd this per ff09774e5 and none shipped it
    • Add tests/vna/** and scripts/vna/** to 🔨 builder's `.workflow/rooms/builder.html` owned-surface glob list if not already present, so the classifier has something correct to match against
    • Add tests/pmu-simulator/room-lane-classification.test.mjs asserting: a commit with divergent Originating-Terminal/Relevant-Rooms classifies by owned-surface match, and the fixture is this exact commit's trailer pair (architect / architect,builder,operator)
    • Consolidate the three independently-authored specs for this fix into one PR rather than producing a fourth re-diagnosis
    • Add a `fix_shipped` boolean to the intervention ledger schema so a repeated diagnosis with no landed commit is visible to the next pass instead of silently recurring

    What we learned: A correct root-cause diagnosis (lane classification keys off Originating-Terminal alone, contradicting CLAUDE.md's own sanctioned trailer divergence) has now been independently rediscovered by this same intervention pipeline at least twice more (ff09774e5, then this event) with zero code shipped in between — and the room's measured offPct oscillated 20→14→28→26→24 across that span, which is the detector rediscovering its own known bug on legitimate commits, not new drift entering the room. A sensemaking pass that stops at naming the missing fix, rather than tracking whether it landed, does not reduce recurrence at all.

    The missing guard (the deliverable): tests/pmu-simulator/room-lane-classification.test.mjs — asserts the lane/offPct computation for a commit with divergent Originating-Terminal/Relevant-Rooms trailers resolves via owned-surface glob match against Relevant-Rooms, never via Originating-Terminal alone; seeded with this commit's exact trailer pair as the fixture.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Oversized for the diff size: a 59-line, 2-file, mostly-boilerplate commit produced 142 lit reality cells with zero truncation — the walk is spreading generously from a thin corpus (repeated node:test/assert idioms) rather than staying contained. Adjustment: scale --max-depth (or an equivalent walk-budget) down for diffs under ~100 changed lines so boilerplate-heavy small commits don't propagate as far as substantial ones. Experiments: Re-run the last 20 out-of-lane events through a Relevant-Rooms-glob-match classifier offline and measure how many flip from 'out-of-lane' to 'in-lane' — this sizes the mistagged-class blast radius before shipping the fix · Add a diff-size-scaled walk budget (cap max-depth for diffs <100 lines changed) and re-render this exact commit; measure whether litReality/litIntent ratio moves closer to 1:1 · Seed the gzip dictionary with the node:test/node:assert guard-authoring boilerplate strings below and re-run the standard dictionary ablation over the last 2 weeks of guard-adding commits to see if prewalkOverlap rises specifically for that commit class

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

    A mistagged classification inflates architect's measured loss-ratio with drift that isn't architect's risk to carry, diluting the room's premium signal until the detector is fixed to price by Relevant-Rooms/owned-surface match rather than physical terminal, at which point this class of false positive stops landing on this room's book entirely.

    Open the signed attestation →
  100. 2026-09-08 · 🔨 builder · offPct 50

    feat(nominate): thank them, stop asking for their own address, and open the forward door

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

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

    Open the signed attestation →
  101. 2026-09-08 · 📐 architect · offPct 32 · mistagged

    fix(vscode): the cockpit's copy buttons were dead — the shim was injected ahead of the page it replaces

    Why it left the lane: The diff's own vocabulary pulls hard into signal/topology terms: 'injection order is not resolution order', 'resolve to whichever ran LAST', 'append AFTER the page's own script', 'route through the extension host' (acquireVsCodeApi), and the new test's title 'the copy shim is appended after the page, not prepended'. Those are ordering/sequencing/routing words — exactly the vocabulary that seeds B1.Tactics.Speed (topology/velocity/throughput) and C1/C2/C3.Operations.Grid/Loop/Flow (execution-order, control-flow) coordinates, not the docs/strategy surface architect actually owns. The commit is a pure bugfix inside packages/intentguard-vscode/src/vna-cockpit.ts — legitimately Relevant-Rooms 🔨 builder territory — but Originating-Terminal is pinned to 📐 architect, so the receipt scores the reality (execution-order bugfix prose) against an intent lane (architect's docs/strategy surface) it was never going to land in.

    The semantic pull: Strings 'whichever ran LAST', 'append AFTER', 'injection order is not resolution order', 'route through the extension host', and the test name 'appended after the page, not prepended' — all sequencing/control-flow language dragging mass into B1.Tactics.Speed×C-Operations coords (topology, velocity, throughput) rather than any architect-owned coordinate.

    Intent–reality gap: The commit message frames this as a plain bugfix in a bridge function ('the shim was injected ahead of the page it replaces'), and the diff and test match that exactly — but the room-lane claim (Originating-Terminal 📐 architect) puts a builder-surface file/fix under architect's docs/strategy lane, so the receipt's positional gap is a labeling mismatch, not a work mismatch.

    • Ship the room-drift-<room>-check.sh unification that ff09774e5 already specified three times independently (architect, navigator, laboratory) — this event is a fourth recurrence of the exact same missing fix going unshipped.
    • In the lane-classifier (wherever offPct/lane is computed against Originating-Terminal), add a path-ownership override: diff paths ∩ Originating-Terminal owned-surface == ∅ AND diff paths ⊆ some Relevant-Rooms room's owned-surface ⇒ reclassify intent lane to that room before scoring offPct.
    • Add a `.workflow/rooms/builder.html` owned-surface glob entry for `packages/intentguard-vscode/**` if not already present, so builder's surface unambiguously claims this file.
    • Log a lightweight receipt line per lane-reclassification event so 'this was mistagged, not off-lane' becomes queryable rather than re-diagnosed by hand each time.

    What we learned: This room now has THREE consecutive facts-only/degraded-sensemaking interventions plus one full one (ff09774e5) all converging on the same root cause — the lane classifier trusts Originating-Terminal alone even though CLAUDE.md's own commit-trailer protocol says that trailer can legitimately diverge from where the work lands — and the fix (room-drift-<room>-check.sh) has been independently spec'd by three different rooms without ever shipping. The NEW fact this event adds: the semantic pull toward the wrong lane is driven by ordinary bugfix vocabulary (sequencing/ordering words), meaning almost ANY vscode-extension bugfix commit filed under architect's terminal will keep tripping this same false-positive, not just this one.

    The missing guard (the deliverable): tests/pmu-simulator/room-lane-classifier-respects-diff-ownership.test.mjs — asserts that when a commit's changed-file set is disjoint from Originating-Terminal's owned-surface globs but is a subset of a Relevant-Rooms room's owned-surface globs, the lane-scoring pipeline computes offPct against the Relevant-Rooms room, not Originating-Terminal. Seeded with this exact commit (116c526e4) as the SMOKE fixture.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. walkTruncated=true with walksIntent=137/walksReality=132 (nearly balanced spread) but only 2 plies and fill 0.98% suggests the walk is shallow-but-wide rather than saturated — it's finding many first/second-order neighbors of the seed terms but not resolving whether those neighbors compound into a real semantic cluster or are noise from common bugfix vocabulary. Concrete adjustment: bump --max-depth by one ply for commits where offPct sits near the ambiguous mistagged/structural boundary (20-40%) before scoring, to see if the extra ply resolves the cluster into a single tight coordinate (supporting 'mistagged, one wrong room') vs. spreading further (supporting 'structural, genuinely multi-lane work'). Experiments: Re-run this exact commit's receipt with the lane classifier substituting Relevant-Rooms=🔨builder for Originating-Terminal=📐architect and measure whether offPct drops below the 15 threshold — if yes, this confirms mistagged-not-structural for this drift class and the override is safe to ship as-is. · Ablation: strip 'injection order is not resolution order' and 'whichever ran LAST' from the corpus dictionary and re-render this commit's panel; if offPct barely moves, the sequencing-vocabulary theory in why_out_of_lane is wrong and the pull is coming from elsewhere (e.g. acquireVsCodeApi / extension-host routing terms). · Sample the last 20 commits from 📐architect with Relevant-Rooms naming 🔨builder or 🧪laboratory and check what fraction score offPct>15 — if it's a large majority, this isn't a one-off but a systematic mismatch for every cross-room-authored commit in this room, strengthening the case to prioritize the classifier fix over further per-event sensemaking.

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

    A mistagged-lane false-positive inflates this room's apparent loss ratio without any real drift having occurred, which is worse for premium than a real breach because it hides the true signal under noise — restoring accuracy requires shipping the already-four-times-specified room-drift-<room>-check.sh classifier fix, not another sensemaking pass.

    Open the signed attestation →
  102. 2026-09-08 · 📐 architect · offPct 22 · structural

    spec(vna): the NCD aperture measured with a control — full mass places 4.34x over chance, a wrong bulk places worse than chance

    Why it left the lane: The diff creates an entirely new subsystem — docs/specs/vna/**, scripts/vna/**, tests/vna/**, data/vna/** — none of which appear anywhere in 📐 architect's owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, docs/01-business/strategy/, CLAUDE.md). The mass of the commit is measurement-instrument prose: 'gzip-NCD', 'META-BULK two-stage', 'Chebyshev fence distance', 'chip dual-witness', 'ballistic walk' — vocabulary that, by the diff's own reef-name example quoted in §5 of the spec itself ('C1.Operations.Grid × B1.Tactics.Speed → ~market-posture'), pulls toward Operations/Tactics coordinates, not the Strategy coordinates architect's docs/strategy/ owns. The commit trailers already concede this: Relevant-Rooms names 🧪 laboratory and 🔨 builder alongside architect, but neither laboratory's nor builder's owned-surface globs (nor architect's) list the new vna/ paths, so the receipt has nowhere in-lane to place 22% of the lit reality mass.

    Intent–reality gap: The message claims a 📐architect deliverable ('the VNA semantic cockpit's spec... plus the first measurement that decides whether its central bet is real'), but the receipt measured litReality=136 cells spread almost entirely through measurement/instrumentation vocabulary that the room's own owned-surface glob has never claimed — the claim is a strategy document, the mass is a calibrated lab instrument.

    • Add docs/specs/vna/**, scripts/vna/**, tests/vna/**, data/vna/** to laboratory's (and/or builder's) owned-surface glob list in .workflow/rooms/*.html
    • Ship tests/ops/new-subsystem-has-owner.test.mjs: fails a commit that introduces a brand-new top-level docs/specs/<x>/ or scripts/<x>/ prefix with no room glob claiming it in the same commit
    • Extend the room-lane drift receipt (per prior lesson ff09774e5) to check coverage against the Relevant-Rooms trailer, not just Originating-Terminal — the still-open half of that fix
    • Add the HOME ROOM ownership line to SPEC-VNA-COCKPIT.md §4 per spec_rewrite above
    • Grep docs/specs/ for other subdirectories with no matching room glob (this is likely not the only unclaimed subsystem) and file them as a follow-up audit

    What we learned: A brand-new subsystem (a first-time docs/specs/<x>/ + scripts/<x>/ pairing) is born with ZERO owned-surface glob anywhere — not even under the rooms named in its own Relevant-Rooms trailer — so the room-lane detector has no correct lane to place it in regardless of whether it reads Originating-Terminal or Relevant-Rooms. Prior lesson ff09774e5 diagnosed the trailer-attribution bug on EXISTING owned paths; this event shows the same detector is additionally blind to paths that no room has claimed yet at all, which is a distinct and unaddressed gap.

    The missing guard (the deliverable): tests/ops/new-subsystem-has-owner.test.mjs — asserts that any commit introducing files under a path prefix not previously matched by any room's owned-surface glob (in .workflow/rooms/*.html) also adds a glob claiming that prefix, in the same commit.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Saturated, not right-sized: litIntent/walksIntent and litReality/walksReality are both ~100%, meaning the recursive walk lights nearly every node it visits rather than discriminating signal from noise. Concrete adjustment: lower --max-depth or introduce a lit-threshold below full saturation on this corpus size, then re-measure whether litIntent/walksIntent drops meaningfully below 100% — if it does not, saturation is structural to this corpus and not a walk-depth artifact. Experiments: Re-run the reef seed on this exact commit's intent/reality text with docs/specs/vna/** and scripts/vna/** content masked out of the intent corpus, and measure whether prewalkOverlap rises above 6 — isolates whether the new vna/ vocabulary alone is what starves the seed overlap. · After adding the laboratory/builder owned-surface globs for vna/ paths (per configuration_updates), re-render this same commit's receipt and measure the offPct delta directly — a same-commit before/after ablation. · Reduce --max-depth on the ballistic walk for this corpus and re-measure litIntent/walksIntent and litReality/walksReality to test whether 100% saturation is a depth artifact or a genuine property of this commit's size.

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

    An out-of-lane event this large (22% vs 15% threshold) on a brand-new, structurally unclaimed subsystem reads as unbounded scope risk to the lane's loss ratio; premium is restored by the glob additions plus the new-subsystem guard, which together make the NEXT such birth attributable at commit time instead of discovered after the fact.

    Open the signed attestation →
  103. 2026-09-08 · 🧭 navigator · offPct 24 · structural

    research(navigator): the Elizabeth Park concerts ended four weeks ago — the itinerary is what recurs

    Why it left the lane: The diff is a schedule/commerce vocabulary saturation: 'THE WEEKLY ANCHOR', 'THE MONTHLY ANCHOR', 'the shape of the week, stated as a schedule rather than a menu', 'Second Saturday', 'Sunday 10am–1pm' pull toward the Grid/Loop/Flow trio (B1,C1 topology · B1,C2 velocity · B1,C3 throughput), while 'ticketed, not free', 'farm-to-table dinner', 'ballroom hosts', 'reservations recommended' pull toward the Deal×Operations exchange coords (B2,C1/C2/C3). None of this vocabulary touches navigator's actual owned surface (thematic-scheduler.ts, room-runners, cognitive-dashboard.html) — it is market/calendar prose, not scheduler-engine code, so the walk correctly finds mass in Tactics.Deal/Speed × Operations.Grid/Loop/Flow and none in navigator's real lane.

    The semantic pull: Repeated scheduling nouns ('weekly anchor','monthly anchor','dated one-offs','the shape of the week') plus repeated transaction nouns ('ticketed','reservations','demo','dinner') co-occur densely enough in one 87-line doc that gzip-NCD seeds land it on the business-operations grid rather than on any navigator-owned file.

    Intent–reality gap: The commit claims 🧭 navigator (Originating-Terminal trailer, Relevant-Rooms: navigator/network/operator) for a bf-5141 research task delegated from vault; the receipt measures the actual lit mass sitting almost entirely in Tactics.Deal/Speed × Operations.Grid/Loop/Flow — coordinates none of navigator's owned globs (thematic-scheduler.ts, room-runners, cognitive-dashboard.html) touch at all.

    • Add `excluded_globs: ["docs/ops/**"]` (or a dedicated personal-ops allowlist) to navigator's entry in data/rooms.json
    • Introduce a `docs/ops/personal/` subdirectory convention for life-admin research notes so a future glob can target them cleanly instead of defaulting to Originating-Terminal
    • Document in CLAUDE.md's ROOMS section that Originating-Terminal and content-coordinate are independent facts, and a docsOnly commit with no owned-glob match should not be graded against any single room's lane
    • Add a `docsOnly + no-owned-glob-match` exemption flag to the drift receipt pipeline so such commits are excluded from a room's breach-rate denominator until ownership is resolved
    • Backfill: audit other docs/ops/*.md commits tagged to a room via Originating-Terminal alone and flag any with the same structural mismatch

    What we learned: docs/ops/ is a catch-all directory with zero room-ownership globs in .workflow/rooms/*.html — any commit landing there inherits whichever terminal happened to be open (Originating-Terminal) rather than a coordinate derived from content, so the drift receipt is not measuring bad navigator work here, it is measuring an unclaimed-surface gap that will fire again on the next personal-admin note committed from any of the 9 rooms.

    The missing guard (the deliverable): tests/ops/room-surface-coverage.test.mjs: for every path touched by a commit, assert it matches at least one room's owned-surface glob in .workflow/rooms/*.html OR is listed in an explicit exemption/unclaimed pool — a path matching neither should fail loudly at commit time rather than silently inheriting Originating-Terminal.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Near-saturated for an 87-line single-file docs commit (litReality 142/144 ≈ 99%) — this reads as over-broad rather than right-sized; a small docs-only diff should not light nearly the entire lattice. Adjustment: cap ply to 1 (instead of 2) specifically when docsOnly=true, and re-measure fill on the last 10 docsOnly commits to confirm it drops toward a targeted band without losing the offPct signal. Experiments: Re-run this exact commit's walk at --max-depth=1 vs --max-depth=2 and record litIntent/litReality fill% for both — expect a docsOnly-aware ply cap to meaningfully reduce saturation. · Add a docsOnly-conditional ply cap to the pipeline and compare the offPct distribution across the last 20 docsOnly commits before/after — measurable outcome: mean fill% drops, breach rate for genuinely mistagged docs-only commits stays detectable. · Seed an 'unclaimed-surface' weight for paths matching no room's owned glob (docs/ops/**) and measure whether prewalkOverlap shifts enough to pre-flag structural mismatches like this one before the full walk runs.

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

    This event inflates navigator's apparent breach rate with a false-positive-looking loss (a well-caveated, correctly-scoped research note, not risky code), so restoring accurate premium requires excluding docsOnly + no-owned-glob-match commits like this from the room's loss ratio until the ownership-glob gap above is closed.

    Open the signed attestation →
  104. 2026-09-08 · 📐 architect · offPct 33 · mistagged

    feat(vna): /steer — the map and the spec as one page, and the loop behind one door

    Why it left the lane: The commit was authored from the 📐 architect terminal and trailer-tagged architect/operator/navigator, but 326 of the diff's 377 lines (86%) are scripts/vna/steer-ui.mjs and tests/vna/steer-ui.test.mjs — a rendering engine (readFileSync/writeFileSync/execFileSync, an HTML/CSS table builder, a copy-to-clipboard handler) plus its 117-line test suite. That vocabulary is Operations/Tactics lexicon (build a tool, wire a loader, assert a behaviour), not Strategy lexicon (docs/strategy, position papers, canonical numbers). The reef seed for this corpus is dominated by implementation tokens, so the recursive walk saturates outward from those tokens into Operations/Tactics blocks regardless of which room's terminal the operator happened to be sitting in.

    The semantic pull: Literal strings pulling the placement off-lane: `execFileSync`, `mkdirSync(resolve(REPO, 'docs/specs/vna/steer')`, `table.lat`, `function renderMap(...)`, `function specBlocks(md)`, and the test-file header `@guard tests/vna/steer-ui.test.mjs`. None of these terms, nor the changed paths (`scripts/vna/steer-ui.mjs`, `tests/vna/steer-ui.test.mjs`, `.claude/skills/steer/SKILL.md`), match architect's declared owned surface (`docs/strategy/`, `docs/03-product/`, `.workflow/rooms/*.html`, `.workflow/cognitive-dashboard.html`, `docs/01-business/strategy/`, `CLAUDE.md`) — zero overlap, which is exactly the kind of mass the walk reads as 'reality landed elsewhere.'

    Intent–reality gap: The commit message frames this as architecture: 'the map and the spec as one page.' The receipt measured 33% of lit reality mass sitting outside the declared architect lane, because the actual deliverable is a working renderer + test suite + skill doc — build output, not a strategy document — and none of it lives under any path architect legitimately owns.

    • Unify the three independently-spec'd `room-drift-<room>-check.sh` variants (architect/navigator/laboratory, per the ff09774e5 lesson) into one shipped script instead of a fourth unshipped spec.
    • Add scripts/vna/**, tests/vna/**, .claude/skills/*/SKILL.md to whichever room's owned-surface glob (builder or laboratory) actually covers implementation/build work — none currently claims it.
    • Add a `Relevant-Rooms` entry for the room that owns scripts/vna/ before future VNA commits ship (this one is already committed and immutable).
    • Wire the trailer-vs-glob consistency check into the same pipeline that emits offPct, so a mismatch is visible on the receipt itself rather than only in this intervention's prose.
    • Verify offPct trend for this room over the next 5+ commits after the guard ships — if it does not fall, the classifier fix did not actually land in the hot path.

    What we learned: The prior fix this room already diagnosed (ff09774e5: read Relevant-Rooms instead of Originating-Terminal) is necessary but insufficient — this commit's own Relevant-Rooms trailer (architect, operator, navigator) is ALSO wrong, naming none of the rooms that would own scripts/vna/ or tests/vna/. Both trailer fields are self-declared by the same committer at the same moment and share the same blind spot; only an independent glob-ownership check against `.workflow/rooms/*.html` can catch a case where neither trailer field names the correct room.

    The missing guard (the deliverable): A test asserting trailer-glob self-consistency: for every commit, at least one room named in Originating-Terminal or Relevant-Rooms must have an owned-surface glob (from `.workflow/rooms/*.html`) matching at least one changed file. This commit would have failed it outright — none of architect/operator/navigator's owned globs touch scripts/vna/, tests/vna/, or .claude/skills/.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Saturated, not right-sized — 100% lit-to-walked ratio on both sides plus walkTruncated=true is the unguided-flood pattern the anti-rules ledger warns against (AR-3). Concrete adjustment: re-run with a lower --max-depth on this same sha and check whether litReality/walksReality drops below 100%; if it stays at 100% even at a shallower depth, the corpus is small enough that saturation is real and not a budget artifact. Experiments: Re-run sha 176136247 with --max-depth halved and compare litReality/walksReality — if it stays 135/135, offPct=33 is structural; if it drops, this run's offPct is partly a truncation artifact. · Compute offPct separately for the SKILL.md slice of this diff versus the scripts+tests slice, to confirm the 33% concentrates in the implementation files rather than the design doc — direct commit-internal evidence for the mistagged hypothesis. · Run the trailer-glob consistency check (proposed above) against the last 203 out-of-lane events for this room and report what fraction have zero glob overlap with ANY named trailer room versus a genuine cross-lane overlap — this separates 'always mistagged' from 'sometimes genuinely drifted.'

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

    An architect-lane commit whose reality is 86% unclaimed implementation code reads as unpriced scope creep on this lane's book unless the glob-ownership guard ships — at which point the same work re-prices correctly under whichever room's surface it actually occupies, restoring the loss ratio without touching a line of the VNA feature itself.

    Open the signed attestation →
  105. 2026-09-08 · 📐 architect · offPct 33 · mistagged

    feat(book): name the aliasing test — the failure mode worth fearing, and the experiment that finds it

    Why it left the lane: The diff is a book-manuscript addition (books/tesseract/chapters/chapter-12-the-budget-is-the-proof.md) — pure prose about aliasing, addresses, refunds, and specification distinguishability. The commit message and Persona-Intent both frame this as book-craft work, but the room claim is 📐 architect with Relevant-Rooms 🔒 vault, 🧪 laboratory, 🎩 operator — none of which is the room whose owned surface is books/tesseract/ (that room isn't even in the encircled 5 owned globs listed for architect: docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md). The prose vocabulary — 'aliasing', 'compiled lane', 'addresses', 'declared control object', 'falsifier ships with the claim' — is architecture/spec-adjacent language, which is exactly the semantic pull that drags the walk's lit cells into B1-B3 (Tactics.Speed/Deal/Signal) × C1-C3 (Operations.Grid/Loop/Flow) — tactical/operational execution coordinates — rather than landing in whatever coordinate actually owns book-manuscript philosophy content. The room itself owns none of the touched path, so the walk has nowhere in-lane to land.

    The semantic pull: Terms doing the dragging: 'compile step', 'declared control object', 'compiled lane', 'gives them different addresses', 'the crossing shows up', 'testable aliasing condition' — these are systems/architecture nouns (compile, address, lane, control object) embedded in book prose, which is why the walk's reality lit cells scatter into Operations.Grid/Loop/Flow and Tactics.Speed/Deal/Signal: the vocabulary reads as infrastructure work even though the file is a markdown chapter.

    Intent–reality gap: The commit message claims this is book work ('name the aliasing test... in the book') attributed to 📐 architect with Relevant-Rooms vault/laboratory/operator — but architect's owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md) contains no book path, and none of the three Relevant-Rooms owns books/tesseract/ either, so the receipt correctly measures 100% off-lane mass with nowhere declared to land it.

    • Audit every .workflow/rooms/*.html owned-surface glob list and confirm at least one room explicitly owns books/tesseract/chapters/** — currently no room in the CLAUDE.md room-surface tables appears to claim it.
    • Add books/tesseract/** to that room's owned-surface glob in its .workflow/rooms/<room>.html so future book commits land in-lane by construction.
    • Update the commit-trailer convention (CLAUDE.md COMMIT MESSAGE STRUCTURE) with a worked example for book commits showing which Relevant-Rooms trio is correct.
    • Cross-check the prior architect lessons (ffaf8d2ac, ff5110f85, ff09774e5) — all show rising or oscillating offPct despite 'sensemaking unavailable' facts-only passes; a room-surface fix (this lesson) is a different lever than the trailer-divergence lever ff09774e5 already tried and partially fixed (20→14), so this checklist item is the next untried lever, not a repeat.

    What we learned: This is the first out-of-lane event in this room's lesson history where the touched file's path is not owned by ANY declared room surface (not just misattributed among existing owners) — the prior lesson (ff09774e5) fixed trailer-vs-detector disagreement about which of several LEGITIMATE rooms a commit relates to; this event shows the deeper case where the commit's actual content (book prose) has no owning room at all, so any Originating-Terminal/Relevant-Rooms combination the author picks will read as off-lane by construction.

    The missing guard (the deliverable): A pre-commit check (extending scripts/comms/canonical-template-check.mjs-style trailer validation) that resolves the staged files' paths against every .workflow/rooms/*.html owned-surface glob and WARNS if zero rooms claim any staged path — surfacing 'this commit touches an unowned surface' before the drift receipt has to discover it after the fact.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. litIntent=132 and litReality=141 are close in magnitude (fill 0.85%, well under the 70% ceiling) so the walk is not saturated, but walkTruncated=true flags it stopped before full convergence — for a docsOnly=true book commit with no owning room, deepening the walk won't fix mistagging (there's no in-lane target to converge on); the correct adjustment is upstream (fix room ownership), not walk depth. Experiments: Run the walk with --max-depth increased by 1 on a sample of 10 recent docsOnly=true book commits and measure whether litReality spread narrows once books/tesseract/** is added to a room's owned-surface glob (tests whether the off-lane scatter is an ownership gap vs a genuine walk-depth issue). · Ablate prewalkOverlap on book-prose commits specifically: seed the reef with 20 book-chapter paragraphs and re-run this same commit's walk to see if prewalkOverlap rises above 4, which would indicate the reef vocabulary itself under-represents book content. · Compare offPct across all docsOnly=true commits in the last 30 days grouped by whether the touched path matches a declared room owned-surface glob — this directly tests the 'unowned surface' hypothesis against the existing breach-rate series (58.3%, n120).

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

    An off-lane event caused by an unowned file surface (rather than a bad-faith or careless trailer) is a low-severity, structural finding — it doesn't raise this lane's loss-ratio on its own, but leaving books/tesseract/** permanently unowned means every future book commit re-triggers the same false-positive breach, inflating the room's measured breach rate (58.3%) with noise that isn't real drift; restoring the premium requires the glob fix above, after which genuine architect-room drift becomes visible again instead of being drowned by this artifact.

    Open the signed attestation →
  106. 2026-09-08 · 📐 architect · offPct 18 · structural

    fix(book): the law claim survived twelve lines under its own retraction — three sites

    Why it left the lane: The diff is pure prose surgery inside books/tesseract/{chapters,appendices}/*.md — three single-line replacements retracting an overclaim ('universal constant', 'falls out of the physics the way gravity falls out of mass', 'proves this is a fundamental physical limit') into bounded, unit-disclosure language ('a unit, not a law', 'arithmetic on the unit: ln(2) divided by 0.003', 'a ceiling case... not a bound proven to hold everywhere'). None of that vocabulary — kE, half-life, ceiling case, unit-vs-law, retraction, three-reader audit — has any positional affinity to B1 Tactics.Speed/C1-C3 Operations.Grid/Loop/Flow (topology, velocity, throughput, exchange). The commit's own trailer claims 📐 architect / git-discipline lane, but the receipt's reef walk found no content anchoring the reality mass anywhere near that lane either — the reds are scattered across all of B×C with the strongest single pull only 11 hits on B3.Tactics.Signal, meaning the walk found weak signal everywhere rather than strong signal in one wrong place. That is the signature of a commit whose actual content (book-craft/physics-claim correction) sits OUTSIDE the entire B×C Tactics×Operations quadrant the lane machinery scores against — there was never a strong intent anchor to miss.

    The semantic pull: No single diff string drags toward B1/C1-C3 specifically — the pull is diffuse (25+ scattered reds, max weight 11/144 on B3.Tactics.Signal) which is what you get when the reef's keyword-fallback walk (📡 'telemetry: keyword-fallback') tokenizes physics/book prose ('signal', 'stick', 'crossing', 'unit', 'ceiling') and those tokens coincidentally overlap B3.Tactics.Signal and C1.Operations.Grid's vocabulary ('measured floor', 'crossing tax', 'grid') without any semantic relationship to git/tactics/ops content.

    Intent–reality gap: The commit message claims a git-discipline-lane fix in 📐 architect room (per its own Originating-Terminal/Relevant-Rooms trailers: 🎤 voice, 🔒 vault, 🧪 laboratory — none of which is B×C Tactics/Operations either); the receipt measured reality landing broadly across the entire B(Tactics)×C(Operations) quadrant with no lane concentrated above ~8% of total mass. The gap isn't 'wrong lane claimed', it's 'no lane in this scoring space was ever the right one' — a pure-prose book-physics retraction has no natural home in a Tactics×Operations coordinate frame built for git/ops/deal-signal work.

    • Add a books/tesseract/**/*.md path check to whatever assigns the B×C git-discipline lane, so book-craft commits route to a book/voice lane instead
    • Audit the 212 out-of-lane events for 📐 architect in the last 14 days — if a meaningful fraction are book-craft commits mis-scored the same way, this single fix collapses most of the backlog at once
    • Document in CLAUDE.md's PMU section which file globs are IN-SCOPE for the B(Tactics)×C(Operations) grid vs which need a separate scoring shelf
    • Add a guard test asserting a synthetic 100%-books/tesseract commit does NOT land in the git-discipline B×C lane (or lands with offPct suppressed/reclassified)

    What we learned: The room-lane detector has only one scoring grid (B Tactics × C Operations) and applies it to every commit regardless of content class — a pure-prose book manuscript edit with zero code/ops vocabulary still gets forced through it and reports diffuse, near-uniform off-lane (25+ reds, no coord above 8% of mass) because the reef's keyword-fallback walk finds coincidental token overlaps (e.g. 'signal', 'grid', 'crossing') rather than true semantic placement. This differs from the prior lessons (mistagged Originating-Terminal vs Relevant-Rooms, which CLAUDE.md explicitly sanctions) — this is a missing SCOPE FENCE: certain file globs should never be scored against this particular lane grid at all.

    The missing guard (the deliverable): tests/pmu-simulator/book-craft-not-scored-as-git-discipline.test.mjs — feed the pipeline a synthetic commit touching only books/tesseract/**/*.md with book-craft prose (no git/ops/deal vocabulary) and assert it does NOT produce a diffuse >15% offPct verdict against the B×C git-discipline grid; either it routes to a separate book-voice lane or the offPct alarm is suppressed for 100%-book-path commits.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Saturated-but-diffuse: litReality=109 out of 144 cells (76%) is a very high fill for a 3-line prose diff, which suggests the walk is over-firing on generic tokens rather than converging — for a commit this narrow (3 single-sentence replacements), a well-targeted walk should light far fewer cells. Adjustment: tighten the keyword-fallback trigger so book/prose-vocabulary commits either use a smaller max-depth or route through the book-voice reef shelf where the same walk would concentrate rather than scatter. Experiments: Run the pipeline on this exact commit sha 1de900da3 with a synthetic 'book-craft lane' reef shelf substituted for the default git-discipline shelf and measure whether litReality fill drops from 76% to under 30% · Add path-glob detection to scripts/pmu/pipeline.mjs's shelf-selection step and re-run the last 20 architect-room book commits, measuring the offPct delta before/after routing · Ablate the keyword-fallback trigger threshold (currently firing on this commit per 'telemetry: keyword-fallback') against a small corpus of 10 known-good git-discipline commits + 10 known book-craft commits, measuring false-positive rate on each side

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

    A structural false-positive on a physics-retraction commit that itself makes the book more insurable (removing an overclaim a hostile diligence read would have killed) is exactly the kind of noise that erodes trust in the lane premium signal — fixing the scope fence restores the loss-ratio's credibility for real git-discipline breaches by removing this class from the denominator.

    Open the signed attestation →
  107. 2026-09-08 · 📐 architect · offPct 16

    feat(pmu): the aperture moves onto the chip — `pmu-onchip --aperture`, proven byte-for-byte

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

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

    Open the signed attestation →
  108. 2026-09-08 · 📐 architect · offPct 38 · mistagged

    measure(vna): the shipped receipt issuer promises abstention and never abstains — 15/30 wrong, 0 refused

    Why it left the lane: The diff's entire semantic mass sits in scripts/vna/measure-receipt-abstention.mjs against scripts/pmu/issue-receipt.mjs — terms like 'decideVerdict', 'UNPLACEABLE', 'σ threshold', 'agreement === DISAGREE', 'data/pmu/study/2026-07-14-abstention.json'. None of that vocabulary lives anywhere in architect's declared surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, docs/01-business/strategy/, CLAUDE.md); it is measurement/instrumentation vocabulary that the reef seeds toward laboratory's own charter — cursor-laboratory.html literally describes its owned work as 'the audit-script logic that exposes drift before it propagates', which is a near-exact description of what this file does. prewalkOverlap=2 shows the reef barely anchored intent and reality to the same seed before the walk even ran; with litIntent=litReality=129/144 the walk then saturated almost the whole lattice on both sides, so the 38% off-lane mass is the seed-side divergence propagating outward, not a walk-side asymmetry.

    The semantic pull: 'decideVerdict', 'UNPLACEABLE', 'σ threshold', 'DISAGREE', 'issue-receipt.mjs', 'marketplace-match.mjs / onchain-anchor.mjs / onchain-settle.mjs' — every one of these is laboratory/vault-shaped attestation-instrument vocabulary with zero overlap against architect's docs/strategy or CLAUDE.md lexicon, which is exactly why the gzip-NCD reef seeded it elsewhere before the walk even started.

    Intent–reality gap: The commit message and its own Relevant-Rooms trailer already correctly name 🧪 laboratory first (highest-scoring match) alongside architect and vault — the AUTHOR tagged this right. The receipt still measured 38% off-lane because the drift-lane classifier evaluates against Originating-Terminal alone, which is where the divergence actually lives: not in what was claimed, but in what the detector chooses to read.

    • Ship the ALREADY-SPEC'D `scripts/pmu/room-drift-check.mjs` named in this room's own self-prompt sp-597 ('unify room drift checks, resolve blog ownership, ensuring all commits are claimed', due 2026-09-08) instead of leaving three duplicate stubs (`room-drift-architect-check.sh`, `room-drift-navigator-check.sh`, `room-drift-cursor-check.sh` / `-vault-check.sh`) unimplemented across four room HTMLs
    • Add `scripts/vna/**` and `scripts/pmu/issue-receipt.mjs`-adjacent audit scripts to cursor-laboratory.html's 'Owned file/dir surface' list — its own charter text ('audit-script logic that exposes drift before it propagates') already covers this work, the glob just doesn't yet
    • Update the lane classifier to OR across Originating-Terminal ∪ Relevant-Rooms per commit, per this checklist's code_rewrite
    • Add a guard asserting the classifier's offPct changes when Relevant-Rooms is populated vs when it is empty, so a silent revert to Originating-Terminal-only is caught
    • Retire the four duplicate 'spec'd, not yet implemented' stub descriptions once the unified script ships, so the next drift event doesn't re-diagnose the same gap a fifth time

    What we learned: Diagnosing a repeat-offender mechanism in prose (ff09774e5, three independent room specs) does not reduce recurrence by itself — it sat as identical unshipped text in four separate `.workflow/rooms/*.html` files and one due self-prompt (sp-597) for weeks while this exact class fired again at a WORSE offPct (38 vs the room's prior 14-28 range). The structural fact: this repo's delegation/bifurcate mechanism can produce the same correct diagnosis three times over without any one of the three ever landing code, because 'graduate into CLAUDE.md/spec' is being used as a terminal state rather than a handoff — the self-improving-fires contract's ESCALATE step has no forcing function that turns a queued self-prompt into a shipped commit.

    The missing guard (the deliverable): tests/pmu-simulator/room-lane-honors-relevant-rooms.test.mjs — feed the classifier a synthetic commit with Originating-Terminal=architect and Relevant-Rooms='laboratory, architect, vault', assert offPct computed against Originating-Terminal∪Relevant-Rooms is lower than offPct computed against Originating-Terminal alone; fail if the two numbers are identical (proves the classifier currently ignores Relevant-Rooms).

    Detector probe: signal attribution — gzip reef 75% · ballistic walk 25%. 129/144 lit cells on both sides is near-total lattice saturation — the walk is over-saturating rather than under-using its budget, which means it has stopped being discriminative between intent and reality by the time it terminates (everything lights up, so the walk itself can't separate lanes). Adjustment: lower --max-depth for this commit class so the walk stops before full saturation and the reef-seed signal (which IS discriminative here) isn't drowned by a walk that lights the whole lattice regardless of input. Experiments: Re-render sha 215256db3c at --max-depth 1 through 5 and log prewalkOverlap + offPct at each depth to find the ply where saturation begins and offPct stops tracking the seed signal · Add the identifier tokens 'issue-receipt.mjs', 'decideVerdict', 'UNPLACEABLE' to the laboratory/vault reef dictionaries if absent, re-render this commit's panel, and measure whether prewalkOverlap rises and offPct falls — confirms reef-seed placement is the dominant lever before code-side fixes ship · Re-run the classifier's offPct for the room's last 194 out-of-lane events under a simulated Originating-Terminal∪Relevant-Rooms rule to quantify what fraction would have resolved under the fix this pass proposes, before it ships

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

    A settlement-adjacent measurement instrument's own audit script just got misclassified as a coverage exception by the classifier that is supposed to price this lane, which is the kind of false-positive that erodes confidence in the receipt itself faster than any true positive would — restored the moment the Relevant-Rooms union ships and this specific commit re-renders in-lane.

    Open the signed attestation →
  109. 2026-09-08 · 📐 architect · offPct 20

    feat(vscode): the IDE panel translates the splatter — the net verdict, the horizons, the holes

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

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

    Open the signed attestation →
  110. 2026-09-08 · 🧪 laboratory · offPct 22

    feat(vna): OUTSTANDING.txt — what is left, derived from the spec and the receipts, never typed

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

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

    Open the signed attestation →
  111. 2026-09-08 · 🎭 performer · offPct 26

    comms(self): Vignette II — the one-month place, steelmanned Hartford and New York

    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 →
  112. 2026-09-08 · 📐 architect · offPct 18

    feat(vna): the net, the subdivision, and the splatter translated into a sentence you can act on

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

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

    Open the signed attestation →
  113. 2026-09-08 · ☕ network · offPct 46

    ops(dinner): undecidability is the theme — an unpriceable risk is the reason the coverage answer is true

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

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

    Open the signed attestation →
  114. 2026-09-08 · 📐 architect · offPct 26 · mistagged

    feat(book): what is distinct is the boundary, not the substance — de-caricature the consciousness argument

    Why it left the lane: The commit is pure prose in books/tesseract/chapters/chapter-04-you-are-the-proof.md — no code, no test, no infra file. The reef's B/C lattice (Tactics.Speed/Deal/Signal × Operations.Grid/Loop/Flow) is built from infra vocabulary — 'topology', 'velocity', 'throughput', 'exchange' — and the diff's actual terms ('whirlpool', 'substrate', 'boundary', 'organisation of the states', 'draining the river') share zero lexical mass with that lattice. gzip-NCD has to place the commit SOMEWHERE, and with no matching infra tokens it smears evenly across all 31 B×C off-lane cells rather than concentrating — that's the 'off-lane 100%' + flat/funnel magnet reading in the telemetry line ('magnet — (flat/funnet)'). The room's Originating-Terminal trailer (📐 architect) claims a C.Operations×B3.Signal lane the content never touches.

    The semantic pull: No single term dragged it toward a specific out-of-lane coord — the opposite happened: the diff's philosophical/book vocabulary has near-zero overlap with the infra-coded B/C reef, so the walk spread thin and even across all 31 red cells (litReality=116 close to litIntent=123, prewalkOverlap=1 meaning the reef seed itself already found nothing better to grip). This is a coverage failure, not a pull toward one wrong place.

    Intent–reality gap: The commit message claims book-content work (a philosophy/argument rewrite in chapter 4) and the trailers assign it to 📐 architect / C.Operations × B3.Tactics.Signal — an infra-and-signal lane. The receipt then measured the actual diff (14 lines of markdown prose) against that infra lane and found it fits nowhere in it, so almost the entire lit-reality mass reads as off-lane by construction.

    • CLAUDE.md — add the book-manuscript trailer convention (content lane, not Originating-Terminal room) to COMMIT MESSAGE STRUCTURE
    • scripts/pmu/(lane classifier) — add a file-set guard: if 100% of changed files match books/tesseract/chapters/**, skip B×C infra lattice scoring and classify against a content-only lane (or report N/A rather than off-lane)
    • .workflow/rooms/architect.html — scope the owned-surface glob to exclude books/tesseract/chapters/** so 📐 architect isn't implicitly claiming book-prose commits
    • add a CONTENT lane definition to the reef (parallel to the existing B×C infra dims) so book/blog/voice commits have somewhere real to land instead of smearing across 31 infra cells

    What we learned: The reef's B×C lattice (Tactics×Operations) is infra-vocabulary-shaped by construction, so ANY pure-prose book commit will read as maximally off-lane regardless of content quality — this is the third room-drift finding (after ff09774e5's trailer-divergence finding) showing the detector conflates 'which terminal committed this' with 'what semantic domain does this content belong to,' and book/manuscript work has no lane in the lattice at all, unlike infra work which has three axes built for it.

    The missing guard (the deliverable): A guard (tests/pmu-simulator/content-lane-classification.test.mjs) asserting: a commit whose changed-file set is 100% under books/tesseract/**, src/content/blog/**, or docs/ prose paths is classified into a CONTENT lane (or explicitly marked lane-N/A) rather than scored against the B×C infra lattice — firing red today against this exact commit's file list.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Right-sized on its own terms (2 plies, fill 0.98% well under the 70% ceiling, no saturation) but wasted: it's walking a lattice with no valid destination for this content, so litReality=116 spreads across all 31 red cells instead of concentrating anywhere — the fix is upstream at the reef seed / lane-eligibility check, not at walk depth or budget. Experiments: Run the walk with a CONTENT-lane reef variant seeded from books/tesseract/ + src/content/blog/ vocabulary (whirlpool/substrate/boundary/organisation-of-states style terms) against this same commit and measure whether litReality concentrates into <10 cells instead of spreading across 31 · Add a pre-walk file-set check: if changed files are 100% under a known content path, skip the B×C infra lattice walk entirely and report lane=N/A-content, then measure whether the room's offPct trend (currently 217 events/14d) drops once book commits stop contributing false off-lane events · Backtest the last 20 architect-room commits against a file-set filter to measure what fraction of the 217 recent off-lane events are pure-prose/book commits misrouted through the infra lattice — this determines whether the fix here addresses most of the backlog or a small slice

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

    A room showing 217 off-lane events in 14 days looks like a high-loss-ratio lane and would price badly — but if most of that mass is prose commits misclassified against an infra lattice rather than real scope creep, the correct fix is a lane-eligibility guard at the classifier, not a premium hike on 📐 architect; shipping the content-lane guard is what restores the room's true loss ratio.

    Open the signed attestation →
  115. 2026-09-08 · 📐 architect · offPct 28 · structural

    feat(book): the measurement does not need the insurer — commercial thesis before the insurance thesis

    Why it left the lane: The diff touches only books/tesseract/chapters/chapter-12-the-budget-is-the-proof.md, and its inserted prose is deal/ops vocabulary — 'buyer', 'trusts', 'authorised', 'stay inside the conditions', 'reading logs', 'four hundred dollars an hour', 'the delta is the product' — which reads to the reef as a transaction-and-process narrative, not a strategy document. That pulled the lit mass into B3.Tactics.Signal (×11), C1/C2/C3.Operations.Grid/Loop/Flow (×6/4/4), and B1/B2.Tactics.Speed/Deal (×3/3) — the deal-cadence and operations-cadence quadrant — while the claimed lane (📐architect, whose real owned surface is docs/strategy/ and docs/01-business/strategy/) has no glob that reaches books/tesseract/ at all, so there was never a real target for the mass to land in.

    The semantic pull: 'authorised', 'conditions', 'stay inside' pulled toward C1/C2/C3.Operations.Grid/Loop/Flow (control-and-process language); 'buyer', 'trusts', 'delta is the product', 'underwriter... prices a book' pulled toward B2.Tactics.Deal and B3.Tactics.Signal (transaction/reporting language). None of these terms overlap the vocabulary architect's actual glob paths (docs/strategy/, docs/01-business/strategy/) are seeded with.

    Intent–reality gap: The commit message and trailers claim this is architect-lane strategy work (reordering a book argument), but the receipt measured 28% of lit reality mass sitting in Tactics/Operations coordinates outside any lane architect's owned-surface glob can claim — because books/tesseract/chapters/ appears in NO room's declared owned-surface glob, architect's included.

    • Add books/tesseract/** + docs/book/** to architect's owned-surface glob in .workflow/rooms/architect.html
    • Ship scripts/pmu/room-drift-architect-check.sh — independently spec'd 3x (architect, navigator, laboratory) per lesson ff09774e5, never shipped
    • Update CLAUDE.md § BOOK EDITING to name the owning room per spec_rewrite above
    • Backfill-audit the room's 217 out-of-lane events (14d) for the same missing-glob root cause — confirm what fraction are books/tesseract/** commits
    • Add a lint/warn on commit: a Relevant-Rooms trailer on a books/tesseract/** commit that omits the book-owning room
    • Cap the intent walk's breadth for docs-only commits (see pipeline_probe.walk_utilization) so a single-file book edit doesn't saturate litIntent to 144/144

    What we learned: books/tesseract/chapters/** is not covered by ANY room's owned-surface glob (verified against architect's declared surface — no book path appears), so a book-editing commit is structurally guaranteed to register out-of-lane no matter which room authors it or how the trailers are filled in; worse, the fix for this class (room-drift-<room>-check.sh) was independently spec'd three times and shipped zero times, and in the interim this room's mean offPct regressed from the one success (20→14) back up past it (14→28, 17→26, now 28) — the spec debt is compounding, not closing.

    The missing guard (the deliverable): tests/ops/every-surface-has-an-owner.test.mjs — walks every tracked top-level content directory (docs/**, books/**, src/content/**) and asserts each is claimed by at least one room's owned-surface glob in .workflow/rooms/*.html; fails loudly on an unclaimed directory instead of letting every commit against it silently drift out-of-lane forever.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Saturated, not shallow. litIntent=144/144 means the intent side lit the ENTIRE lattice for a single-file, docs-only commit — that is not a selective fence, it's the walk hitting its time/ply budget (walkTruncated=true) while still fully lit, so 'in-lane' has no discriminating boundary left to violate. Concrete adjustment: for docsOnly=true commits, cap intent walk breadth (e.g. max-depth 1 or a hard lit-cell ceiling well below 144) so the intent lane stays a real fence instead of covering the whole lattice by default. Experiments: Re-run this commit's ballistic walk with --max-depth 1 and confirm litIntent drops materially below 144 (tests the saturation hypothesis directly) · After adding books/tesseract/** to architect's glob, recompute offPct on the room's last 20 book-editing commits and confirm the mean falls under the 15 threshold · Segment the room's 217 recent out-of-lane events by docsOnly=true vs false and compare mean litIntent — confirms whether docs-only commits systematically saturate to 144/144 as a distinct bug class from lane-ownership

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

    This event, and the 217 like it in 14 days, keep the git-discipline lane's breach rate inflated by charging real, correct content work against a lane that structurally has no glove to catch it in; premium on this lane only comes down once books/tesseract/** has a real owning room and the every-surface-has-an-owner guard exists to prevent the next unowned directory from repeating it.

    Open the signed attestation →
  116. 2026-09-08 · 🔨 builder · offPct 26

    club(metavector): seat the 2026-09-08 dated metavector above The Slip Between Substrate and Class

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

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

    Open the signed attestation →
  117. 2026-09-08 · 📐 architect · offPct 22 · mistagged

    feat(vna): Vector 2 — the attractor network, and five of six drifting rooms land on one coordinate

    Why it left the lane: The diff's actual mass is git-log parsing and telemetry, not strategy prose: `execSync(\`git log -${window}...\`)`, the `Originating-Terminal` trailer scanner, `pull`/`trend`/`trendWord: converging|diverging` time-series fields, and `status: 'RE-ROLL'`/`band`/`variance` control-loop vocabulary. These terms code straight into Operations.Grid (raw commit-log ingestion), Operations.Loop (the variance-band control flag) and Tactics.Signal (attribution/trend detection) — while the commit claims A2.Strategy.Goal territory ('the spec's organizational layer'). The `AXL`/`LANE` maps also enumerate all 12 axes by name in comments and console output, which spreads the walk's lit cells across every Tactics×Operations block rather than confining it near Strategy.

    The semantic pull: Concrete pulls: `normalizeRoom`, `poleOf`, `blockOf`, `cheb` (Chebyshev distance) and the `pull`/`centre`/`trend` fields are measurement-of-drift vocabulary (Tactics.Signal); `execSync('git log ...')`, `byRoom`, `unattributed++`, `unplaced` are raw ingestion (Operations.Grid); `VARIANCE_BAND`, `status: 'RE-ROLL'`, `withinBand` are a control-loop threshold (Operations.Loop); the trend/converging-diverging language plus the six-row printed table of room pulls read as a live operations dashboard, which is exactly what encircled fired red across B1-B3 × C1-C3.

    Intent–reality gap: The commit message frames this as architect's strategic-layer deliverable ('the spec's organizational layer,' declared A2.Strategy.Goal), but the 140 lit reality cells are a git-log-reading CLI with a JSON receipt and a control-band flag — Operations/Signal work. The commit is itself an instance of the exact phenomenon its own tool measures: a declared pole (A2.Strategy.Goal, via the architect terminal) that the work's actual landing does not match.

    • Add scripts/vna/**, data/vna/**, tests/vna/** to the owned-surface glob of the room that structurally covers Operations tooling (likely 🎩 operator) in data/rooms.json / CLAUDE.md's room-ownership section.
    • Cross-check this alignment-map.mjs against the prior ff09774e5 finding — three rooms already spec'd an identical unshipped `room-drift-<room>-check.sh`; confirm this tool supersedes that spec or explicitly link them so the earlier finding is marked resolved.
    • Add a self-check to alignment-map.mjs's own output: does THIS commit's Originating-Terminal (architect) match a room whose surface covers the files it touched? Print it as a first-class row, since the tool already has every input needed.
    • Re-run alignment-map.mjs after this commit lands and confirm 📐 architect's own pull number reflects this event (dogfooding the instrument on itself).
    • Update the commit-trailer doc in CLAUDE.md (COMMIT MESSAGE STRUCTURE section) to note that Originating-Terminal should reflect the STRUCTURAL lane of the changed paths, not only the terminal the operator happened to be typing from.

    What we learned: The room-ownership registry (owned-surface globs) has no coverage requirement for NEW top-level directories a commit introduces — a room can create scripts/data/tests infrastructure that lands inside nobody's declared surface, which means 'mistagged vs. correctly attributed' is undecidable from the registry alone and falls back entirely to the self-reported Originating-Terminal trailer. This is a distinct gap from ff09774e5 (which was about the detector using only the trailer to classify intent) — this is about the registry itself having blind spots for brand-new paths, independent of how the trailer is read.

    The missing guard (the deliverable): scripts/ops/surface-registry-check.mjs, run warn-only in pre-commit (matching this repo's no-fault-commit convention): for every staged file, verify it matches at least one room's owned-surface glob; if none match, print 'UNOWNED PATH: <path> — no room's surface covers this' plus the nearest lane-proximity candidate room. Guarded by tests/ops/surface-registry-check.test.mjs (SMOKE: a path outside every glob must fire; NO-SMOKE: a path already covered must stay quiet).

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Right-sized in breadth (131 vs 140 lit cells, near-symmetric) but walkTruncated=true at only 2 plies and 0.85% fill — for a commit whose own message enumerates 6+ distinct AXL-style coordinates by name, that may be cutting the walk off before it fully resolves. Adjustment: extend --max-depth by 1 specifically for commits whose message matches ≥4 distinct coordinate-shaped tokens (e.g. /\b[A-C][1-3]?\.[A-Za-z.]+\b/) and re-measure whether offPct changes on this exact commit. Experiments: Ablation: re-run this commit's walk with --max-depth+1, confirm walkTruncated flips false, and record whether offPct moves off 22 — isolates whether truncation itself is inflating the reading. · Seed the reef dictionary with the room-registry vocabulary this commit is built from (room emoji+key pairs, 'Originating-Terminal', 'Relevant-Rooms') so prewalkOverlap rises for future meta/organizational commits, then measure whether offPct for that commit class converges under 15 without changing where genuinely off-lane work lands. · Build the surface-registry-check.mjs proposed above, run it against the last 200 commits offline, and count how many historically-flagged out-of-lane commits were actually unowned-path commits rather than true drift — a quick sanity bound on how much of the room's 200-event/14-day count this class explains.

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

    This event raises the git-discipline lane's loss-ratio for architect-attributed commits by adding an unowned-surface instance to an already-high 200-event/14-day count in this room; premium is restored by shipping the surface-registry check plus assigning scripts/vna/** to its structural owner, so the next commit of this shape is caught before it lands rather than counted after.

    Open the signed attestation →
  118. 2026-09-08 · 📐 architect · offPct 36 · mistagged

    fix(vna): the payload guard confused use with mention — it went red on prose quoting its own name

    Why it left the lane: The diff's own vocabulary is test/guard-construct language, not git-discipline language: 'the check scanned the WHOLE payload', 'a zone line that failed to expand', 'the `- [band] coord — name` rows', 'reef object interpolated raw instead of reading .name', 'SMOKE'. These are grid/row-matching terms (Operations.Grid), expand/interpolate data-flow terms (Operations.Flow), and 'matching a string where the thing itself was cheap to compute' is Speed-shaped (B1) while 'interpolated raw instead of .name' is an Exchange/Deal-shaped substitution (B2) — exactly the six red cells the receipt names (topology/velocity/throughput/exchange across B1,B2 × C1,C2,C3). Compounding this: the touched file, tests/vna/cockpit.test.mjs, matches NONE of architect's owned-surface globs (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md) — so there is no in-lane territory for the reality mass to land in at all, and it spreads into the adjacent Tactics×Operations cells instead.

    The semantic pull: zoneLines/[band]/coord/row matching pulls to C1.Operations.Grid; 'failed to expand'/interpolation pulls to C2/C3.Operations.Loop+Flow; 'cheap to compute' pulls to B1.Tactics.Speed; 'interpolated raw instead of .name' (a value-for-value substitution defect) pulls to B2.Tactics.Deal.

    Intent–reality gap: The commit message claims a precise, narrow guard-correctness fix (use-vs-mention in a payload assertion) filed under architect's git-discipline lane (C.Operations × B3.Tactics.Signal). The receipt measured 36% of the reality mass landing entirely outside that lane, in six Tactics.Speed/Deal × Operations.Grid/Loop/Flow cells, and the edited file sits wholly outside architect's declared owned-surface to begin with.

    • Ship the unified `scripts/pmu/room-drift-<room>-check.sh` (or a single `scripts/pmu/lane-from-relevant-rooms.mjs`) that three rooms independently spec'd per ff09774e5 and nobody landed — this pass ships it rather than re-diagnosing it a fifth time
    • Update `.workflow/rooms/laboratory.html` (or equivalent) to explicitly claim `tests/vna/**` and `scripts/vna/**` in its owned-surface glob list, so the reclassifier has a concrete target to match Relevant-Rooms against
    • Add a firing test using commit 3fb1189461 itself as fixture: architect Originating-Terminal + tests/vna/ changed file + laboratory in Relevant-Rooms → asserts the reclassified lane resolves to laboratory's pixel, not C,B3
    • Cross-reference ff09774e5 by name in the new guard's commit message so this is legible as the fourth (and last) independent discovery of the same mechanism
    • Annotate `.workflow/cognitive-dashboard.html`'s offPct trend view so a commit reclassified by the new guard renders differently from a genuine boundary violation, preventing future sessions from re-diagnosing sanctioned divergence as drift

    What we learned: Architect's owned-surface glob list (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md) contains ZERO code or test globs — meaning ANY architect-Originating-Terminal commit that touches actual code or tests is off-lane by construction, regardless of content quality, purely because the lane classifier keys on Originating-Terminal rather than Relevant-Rooms. This is the fourth independent hit on the exact mechanism ff09774e5 diagnosed (8 commits since, offPct only 20→14, guard never shipped) — naming the fix in a lesson has proven insufficient three times running; only a shipped, tested reclassifier closes it.

    The missing guard (the deliverable): A receipt-pipeline check that computes the file-ownership-derived lane (Relevant-Rooms × owned-surface glob intersection with changed files) and reclassifies the claimed lane to it whenever it diverges from Originating-Terminal AND the true owner is already named in Relevant-Rooms — guarded by a firing test using this commit (architect + tests/vna/ + laboratory-in-Relevant-Rooms) as the fixture.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Too shallow for this event class: walkTruncated=true at ply 2 cuts the recursion before the reality walk (136 lit) can converge back toward intent's 122 lit cells — on an 8-insertion/1-deletion diff this small, a 2-ply budget stops mid-spread rather than mid-convergence. Concrete adjustment: rerun this commit's walk with `--max-depth 4` and compare whether litReality re-converges into B3/C1 or genuinely stabilizes across the six red cells. Experiments: Seed the reef with laboratory/testing vocabulary ('zone line', 'SMOKE', 'construct-not-token', 'use vs mention') under Operations.Grid, then measure prewalkOverlap before/after on the next 10 tests/vna/ or tests/ops/ commits · Ship the Relevant-Rooms-vs-file-glob reclassifier (per missing_guard) and re-measure architect's room-mean offPct over the next 20 commits against this event's 36% baseline · Re-run this exact commit with `--max-depth 4` instead of 2 and record whether litReality/litIntent converge or the six red cells persist, settling whether shallow-ply-on-small-diffs is a general mistuning

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

    An uncorrected 36% off-lane reading on a sanctioned-divergence commit inflates this lane's measured loss ratio with false signal, which restores the moment the reclassifier ships and this commit's receipt re-scores against laboratory's pixel instead of architect's.

    Open the signed attestation →
  119. 2026-09-08 · 🧪 laboratory · offPct 58

    refactor(pmu): C18 — the palette, the refusal floor and the block rule each get ONE home

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

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

    Open the signed attestation →
  120. 2026-09-08 · ☕ network · offPct 28 · structural

    outreach(network): the first sentence is settled — and "liability" was the wrong noun in six sheets that already shipped

    Why it left the lane: The diff is 155 lines of docs/outreach/ memo (network's owned surface) plus 284 lines of tests/voice/call-opener-is-two-beats.test.mjs — a guard test, not outreach prose. The guard file is dense with infra vocabulary (readFileSync, readdirSync, assert.ok, function definitions, 'FORECLOSES:', 'SPLIT'/'NOUNS'/'LICENCE' check names, cross-references to other tests/*.test.mjs files) that gzip-NCD naturally places near testing/verification coordinates (Operations.Grid/Loop/Flow, Tactics.Speed/Deal) rather than the network room's comms coordinate. Structurally, 65% of the diff's line count (284/439) sits in a directory — tests/voice/ — that appears nowhere in ☕ network's owned-surface glob list.

    The semantic pull: tests/voice/call-opener-is-two-beats.test.mjs's own scaffolding — readFileSync/readdirSync/statSync, assert.ok/assert.equal, per-file iteration loops, 'FORECLOSES:', 'THE CONSTRUCT, NOT THE TOKEN', 'SPLIT/NOUNS/LICENCE' check names — is generic test/verification-pipeline vocabulary that the reef recognizes as Operations.Grid/Loop/Flow + Tactics.Speed/Deal territory, not as network's outreach-comms vocabulary (call sheets, dinner invites, node names).

    Intent–reality gap: The commit message frames this entirely as network's sensemaking work ('outreach(network): the first sentence is settled') and the memo half genuinely is. But CLAUDE.md's own hard rule — EVERY GUARD SHIPS WITH A FIRING TEST, in the SAME commit as the fix — forces a 284-line test file into tests/voice/, a directory owned by no glob on network's list, so nearly two-thirds of the shipped diff sits outside the lane the message claims.

    • Read the lane-scoring config that computes offPct from Originating-Terminal's owned globs and add: score against the UNION of owned-surface globs across Originating-Terminal + every room named in the Relevant-Rooms trailer (this commit already names 🎤 voice there).
    • Add tests/**, scripts/ops/**, and other cross-cutting guard/infra directories as a recognized 'shared infra' pseudo-lane in the room-owned-surface config so a guard test never counts against ANY single content room's offPct.
    • Audit the other 12 out-of-lane events for ☕ network in the last 14 days for the same memo+tests/voice pattern — confirm or reject this as the dominant driver before treating network as a chronically drifting room.
    • Extend CLAUDE.md's ITERATION DISCIPLINE section with the memo+guard split rule above, in the same section that already governs bundling.
    • Add a 'Guard-Room:' commit-trailer convention for bf-style delegations so a dispatch that ships docs + guard can declare which room's surface the guard belongs to, independent of Originating-Terminal.

    What we learned: This room's chronic out-of-lane rate (13 events/14 days) is not obviously room misbehavior — it may be a structural artifact of CLAUDE.md's own guard-shipping rule: any room whose delegated work triggers a new tests/voice/*.test.mjs guard will show cross-lane mass every time, because tests/ is in no content room's owned-surface glob. The detector currently scores single-room attribution (Originating-Terminal) even when the commit's own Relevant-Rooms trailer already discloses the multi-room split.

    The missing guard (the deliverable): A pre-commit advisory (warn-only, mirroring the WIP-claims and rules-for.mjs pattern) that computes, per staged commit, which rooms' owned-surface globs the changed files span, and prints a notice when a commit touches two or more rooms' globs with no corresponding multi-room split — surfacing exactly this pattern (docs/outreach/ + tests/voice/) before it ships rather than after the receipt fires.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Saturated, not under- or over-shallow: both intent and reality walks light up ~100% of what they touch (142/142, 143/143), which means the walk is confirming a pre-existing seed split rather than discovering new structure. Adjustment: lower --max-depth or raise the lighting threshold for this commit class so intent and reality don't both trivially saturate — right now saturation is masking whatever real discriminative signal the walk could add on top of the reef seed. Experiments: Re-score commit 485bbc5e5's lane against the UNION of owned-surface globs for ☕ network ∪ 🎤 voice ∪ 🔒 vault (its own Relevant-Rooms trailer) and measure whether offPct drops below the 15 threshold — tests whether this is a detector-attribution gap rather than real drift. · Re-run the same commit's receipt with the reef seed window widened (force higher prewalkOverlap before the walk runs) and check whether offPct converges — isolates how much of the 28 comes from seed placement vs walk spread. · Recognize tests/** (and similarly scripts/ops/**, tests/pmu-simulator/**) as a shared-infra pseudo-room in the lane detector, scored separately and never counted against a content room's offPct, then re-run the last 14 days of ☕ network history to see if its 13-event rate drops.

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

    An offPct=28 receipt on a commit whose 'out-of-lane' mass is a CLAUDE.md-mandated guard test reads as elevated loss risk in ☕ network's book when it is actually a detector-attribution gap; premium is restored by scoring against the commit's own disclosed Relevant-Rooms union rather than penalizing compliant guard-shipping as drift.

    Open the signed attestation →
  121. 2026-09-08 · 📐 architect · offPct 59 · mistagged

    fix(book): the HFT policy threshold was still sitting in the ship's convergence list

    Why it left the lane: The diff touches only books/tesseract/chapters{,-html}/*.md|.html and public/book/chapters/*.html — zero files under docs/strategy/, docs/03-product/, .workflow/rooms/*.html, or CLAUDE.md, which is architect's entire declared vocabulary. prewalkOverlap=3 (out of walksIntent=136) shows the gzip-NCD reef seed found almost no anchor between architect's lane vocabulary and strings like 'books/tesseract/chapters-html/00-the-ship.html', '0.3% acceptable slippage', 'HFT', 'double-entry bookkeeping'. Starved of a legitimate seed, the walk (litReality=130, closely matching litIntent=136 — not shallow, just misdirected) scattered into the room's generic Operations.Grid/Loop/Flow × Tactics.Speed/Deal buckets instead of any book-specific coordinate.

    The semantic pull: Path strings 'books/tesseract/chapters-html/*.html' and 'public/book/chapters/*.html' repeat 8x each in the diff stat with zero co-occurrence against architect's owned globs; content strings ('policy threshold', 'HFT slippage', 'double-entry', 'Hebbian') are pure book-narrative vocabulary that has no home in architect's reef.

    Intent–reality gap: The commit message and Relevant-Rooms trailer correctly name 🎤 voice (and 🔒 vault, 🧪 laboratory) as relevant — the operator never claimed this was architect's work in substance. But Originating-Terminal reads 📐 architect (because VS Code was the open terminal app), and the drift receipt classifies the intent lane by Originating-Terminal alone, so 100% book-manuscript work gets scored as an architect-lane violation the commit itself never asserted.

    • Wire scripts/room-drift-architect-check.sh into hooks/pre-commit as a warn-only stanza (non-blocking, per the house 2026-06-25 pre-commit decree)
    • Add tests/ops/room-drift-architect-check.test.mjs as the FIRING TEST: SMOKE = stage this commit's real files (books/tesseract/chapters/00-the-ship.md etc.) and assert exit 1; NO-SMOKE = stage CLAUDE.md and assert exit 0
    • Generalize scripts/room-drift-architect-check.sh into scripts/room-drift-check.mjs keyed off data/rooms.json + each room's parsed Owned/Forbidden surface from .workflow/rooms/*.html, so the other 8 rooms get the same guard instead of 9 hand-maintained near-duplicate bash scripts
    • Add CLAUDE.md's lane-classification clarification (spec_rewrite text above) to the COMMIT MESSAGE STRUCTURE section
    • Add books/tesseract/chapters-html/*.html and public/book/chapters/*.html to 🎤 voice's Owned file/dir surface in .workflow/rooms/terminal-voice.html — currently only the *.md source is listed, not the built HTML mirrors this commit also touched
    • Feed the intervention/offPct series itself: when a room's own Forbidden-surface list matches 100% of a commit's touched files, auto-tag boundary_failure=mistagged and attribute the event to the Relevant-Rooms room instead of penalizing the room-mean offPct trend of the Originating-Terminal room

    What we learned: Prior lesson ff09774e5 diagnosed the Originating-Terminal-alone classification defect and reported '3 rooms independently spec'd room-drift-<room>-check.sh without anyone shipping or unifying it.' This event proves the diagnosis understated the gap: the architect variant was NOT merely unspec'd — it was WRITTEN, complete, and already correctly excludes books/tesseract/* (May 12, four months before this commit) — but never wired into any hook, so it fired zero times. Written-and-dormant code is functionally identical to code that was never written, and this repo's existing guard-checks (claimed-guards-exist, no-dark-guards) verify a guard EXISTS and LOADS but neither checks that anything actually CALLS it — a third, previously unnamed gap between 'the guard is real' and 'the guard runs.'

    The missing guard (the deliverable): hooks/pre-commit warn-only invocation of scripts/room-drift-architect-check.sh --check, plus tests/ops/room-drift-architect-check.test.mjs as its firing test (smoke = this commit's real files, no-smoke = CLAUDE.md) — both ship in the same commit as this intervention's fix.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Right-sized, not shallow or saturated (136 vs 130 lit cells, matched walk counts) — the walk is not the problem. No depth/ply adjustment indicated; the fix is upstream at the seed (reef vocabulary), not the walk parameters. Experiments: Re-run this sha's pipeline with intent lane forced to Relevant-Rooms(🎤voice) instead of Originating-Terminal(architect) and measure whether offPct drops below the 15% threshold — directly tests the mistagged hypothesis · Add books/tesseract/*.md and public/book/chapters/*.html to voice's reef vocabulary (already declared owned in terminal-voice.html) and measure whether prewalkOverlap for voice-tagged book commits rises materially above 3 · Split the room's 222 out-of-lane events (last 14 days) by whether Originating-Terminal's own Forbidden-surface list matches 100% of the touched files — if that subset is large, it reprioritizes the fix from 'architect room is undisciplined' to 'the classifier is structurally wrong for terminal-app-detected rooms'

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

    A book-editing commit correctly attributed by its own Relevant-Rooms trailer still reads as a 59%-off-lane architect-room breach, inflating this room's loss-ratio with false-positive severity; wiring the already-written, already-correct room-drift-architect-check.sh into hooks/pre-commit (warn-only, guard-tested) restores the premium by converting a silent misclassification into a visible, correctly-attributed one.

    Open the signed attestation →
  122. 2026-09-08 · ☕ network · offPct 18 · structural

    ops(network): the copper-room email was opened — his 'maybe I didn't send it right' is falsified by the arbiter

    Why it left the lane: The diff's own vocabulary splits into two unrelated semantic clusters that the reef reads as different coordinates. Cluster 1 is genuinely B3.Tactics.Signal — 'Resend', 'the arbiter', 'last_event=OPENED', 'bounced', 'suppressed the next 14 sends' — the declared lane. Cluster 2, which makes up most of the file, is routing/topology and deal language: '(860) 937-2500' vs '(860) 937-2525', 'routes to a desk the concierge inbox never reaches', 'front desk', 'duty manager', 'sales and catering' (topology strings pulling B1/B2×C1/C2/C3, named explicitly in the encircled reds), plus '$1,500 minimum', 'Copper Room hold', 'Thursday July 16', '~12 guests' (Tactics.Deal/exchange strings). The document is a diagnosis wrapped around a call-sheet-plus-venue-deal artifact, and the second half is what the walk actually measured as reality mass.

    The semantic pull: '(860) 937-2500 is the hotel front desk, (860) 937-2525 is Artisan' and 'a phone call routes to a desk the concierge inbox never reaches' are literal topology/routing content — they map straight onto Operations.Grid (B1,C1/B2,C1) and Operations.Loop (B1,C2/B2,C2). '$1,500 minimum', 'Copper Room hold', 'book the flight' pull toward Tactics.Deal (B2,C1/B2,C2/B2,C3 — exchange). 'attempt 2 of 3', 'TTL', 'this call is attempt 2' pull toward Tactics.Speed (B1,C*). None of that is B3.Tactics.Signal, which is where the commit's own headline ('the copper-room email was opened') actually sits.

    Intent–reality gap: The commit message frames itself as a signal-diagnosis correction ('his maybe-I-didn't-send-it-right is falsified by the arbiter'), but the artifact it produces is 80%+ a phone-routing directory and a venue call/deal sheet — content whose natural coordinates are Operations.Grid/Loop/Flow and Tactics.Deal/Speed, not the Tactics.Signal lane the message claims.

    • Move docs/ops/delamar-copper-room-followup-2026-09-08.md to a path matching network's owned globs (docs/outreach/research/ or docs/ops/*-iterations/)
    • Audit the sibling docs/ops/artisan-lunch-negotiation-2026-09-08.md (same shape: signal + deal + call sheet) for the identical off-lane risk before it also lands a receipt
    • Add a Story-trailer convention for hybrid ops+outreach docs: name both lanes explicitly when a file mixes signal-diagnosis with routing/deal content
    • Extend the network room's declared owned-surface glob (wherever .workflow/rooms/*.html or the room-surface source lives) to include docs/ops/*-followup-*.md and docs/ops/*-negotiation-*.md
    • Add a pre-commit advisory (warn-only, per this repo's no-fault-commit convention) that flags a docs/ops/*.md file authored with Originating-Terminal ☕ network that matches none of network's owned globs

    What we learned: This room's out-of-lane events are not random noise accumulating toward a single fix — they share a shape: outreach follow-up docs that double as call-routing directories or venue-deal sheets are structurally bimodal (Tactics.Signal diagnosis + Tactics.Deal/Operations.Grid logistics in one file), and none of network's owned globs (docs/outreach/, docs/crm/, docs/ops/*-iterations/) have a lane for that hybrid shape — so a flat docs/ops/<slug>-<date>.md file will keep drifting regardless of how correct its content is.

    The missing guard (the deliverable): A warn-only check (mirroring the existing WIP-claims / rules-for advisories) that flags any new docs/ops/*.md file whose Originating-Terminal trailer names a room whose owned-surface globs (as declared for that room) do not match the file's own path — surfacing the mismatch at commit time instead of only at drift-receipt time.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized, not shallow or saturated — the near-1:1 walksIntent/walksReality and litIntent/litReality pairs show the walk completing symmetrically on both lanes at 2 plies. No depth increase is indicated by this event; the concrete adjustment is upstream of the walk, in the reef seed step (see reef_tightening). Experiments: Split this file into a signal-only doc and a logistics/deal-only doc, re-run the receipt on each independently, and check whether the signal-only doc scores offPct<15 while the logistics doc scores high in Deal/Grid — this would confirm the hybrid-content hypothesis directly rather than by inference · Add docs/ops/*-followup-*.md and *-negotiation-*.md to network's owned-surface glob, then re-run the room-surface matcher against this commit and the Artisan sibling to see whether the mistagged/structural classification flips to in-lane · Recompute driftPct for the last 20 ☕ network commits with the proposed compression-dictionary additions applied vs not, to see whether seeding call-sheet boilerplate reduces false off-lane triggering on legitimately-scoped outreach-diagnosis docs

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

    A hybrid signal-diagnosis-plus-call-sheet document reading as broad, undifferentiated Tactics/Operations spread looks like scope creep to an underwriter even when the underlying reasoning is sound, so the lane's loss-ratio is restored by the path fix + glob extension making the room's true (wider) surface legible rather than by narrowing what the room is allowed to write.

    Open the signed attestation →
  123. 2026-09-08 · 📐 architect · offPct 47 · structural

    feat(book): four states, and the third is why anybody pays — conduct, not outcome

    Why it left the lane: The commit is a pure book-manuscript prose insertion (18 lines added to chapter-08-from-meat-to-metal.md, zero code, zero docs/strategy or docs/03-product files) filed under Originating-Terminal 📐architect with Relevant-Rooms 🎩operator/🔒vault/☕network. None of those four rooms' owned surfaces include books/tesseract/chapters/ — the room-lane detector has no lane declared for book content at all, so the commit's mass (a dense insurance/legal/conduct argument — 'insurance does not price outcomes, it prices conduct', 'common law', 'CGL', 'surgeon', 'dongle') gets read against operator/architecture-shaped reef vocabulary and lands scattered across B1/B2×C1/C2/C3 — tactics-speed/deal against operations-grid/loop/flow — which is the detector's catch-all for 'business/operational prose that isn't strategy docs and isn't code'.

    The semantic pull: Strings actually in the diff pulling toward those coords: 'insurance does not price outcomes, it prices conduct' and 'four combinations' pull toward B2(Tactics.Deal)-shaped commercial-exchange language; 'the dongle prices them' and 'exposure that has not fired yet' pull toward B1(Tactics.Speed)/velocity-and-exposure framing; 'filing', 'twelfth month', 'agent can make money for eleven months' pull toward C2/C3(Operations.Loop/Flow) — cadence and throughput nouns — none of which is what the commit is actually doing (editing a book chapter), it's just the vocabulary a conduct-vs-outcome insurance argument is built from.

    Intent–reality gap: The commit message claims a purely editorial/epistemic act inside the book (closing an argument gap in chapter 8, 'sits inside the Progressive Dongle section') filed to architect/operator/vault/network; the receipt measured the prose landing diffusely across six operations×tactics business-vocabulary cells because no lane exists for 'book chapter' content at all — the gap isn't that the work drifted, it's that book commits have no declared coordinate to be measured against.

    • Add books/tesseract/ to the room-lane detector's coordinate table (whichever script maps Originating-Terminal/Relevant-Rooms → lattice coords) as its own recognized content-type lane, distinct from code/docs.
    • Add a 'book' or 'content' lane class to whatever script emits the encircled-region pull list, so a chapter-prose diff is graded against a book-vocabulary reef slice rather than the full B×C operations grid.
    • Audit the other 12 book-club/book-edit commits from this session for the same unlaned pattern before assuming this is a one-off.
    • Cross-reference with prior lesson ff09774e5 (Originating-Terminal alone drives lane classification even though CLAUDE.md sanctions Terminal/Rooms divergence) — this event is a second, unfixed instance of the same root: the detector still has no per-content-type lane table.

    What we learned: Book-manuscript commits (books/tesseract/chapters/*.md) have NO declared lane anywhere in the room-ownership surface — every prior lesson here was about MISCLASSIFIED lanes (wrong terminal, wrong room), but this is the first evidence of an UNDECLARED lane: a whole content class (the book) is invisible to the owned-surface table, so every book commit will offPct-fail by construction until books/tesseract/ is added to some room's globs.

    The missing guard (the deliverable): A guard asserting every file glob touched by a commit resolves to at least one room's owned-surface entry in CLAUDE.md (or an explicit 'content/no-lane' exemption list) — run against git history, it would have caught books/tesseract/ as unowned before this commit ever landed, rather than after 217 architect out-of-lane events accumulated.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. litIntent (135) and litReality (121) are both large relative to a single 18-line diff — walkTruncated=true and 2-ply depth on a genuinely small, single-file change suggests the walk is over-firing relative to the actual edit size; concrete adjustment: scale max-depth/fill-budget down for docsOnly=true commits under some line-count threshold (e.g. <30 changed lines) so a small prose insertion doesn't get the same walk budget as a multi-file code change. Experiments: Re-run this exact commit's walk with --max-depth 1 instead of 2 and compare offPct — if it drops materially, docsOnly commits under N lines should get a shallower default depth. · Add a 'book-manuscript' vocabulary slice to the reef (canonical terms: conduct, outcome, dongle, CGL, common law, specification, Confidence Pixel) and re-measure prewalkOverlap on this same commit — expect prewalkOverlap to rise materially if the reef currently has no book-content vocabulary at all. · Ablation-test adding books/tesseract/ as a declared owned-surface glob for one room, then replay the last 20 book commits through the detector and measure the room's mean offPct before/after — this directly tests the spec_rewrite's effect.

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

    This event and its 217-in-14-days sibling out-of-lane events inflate 📐architect's measured loss ratio with a false-positive class (legitimate book-content commits with no lane to land in), which will overprice the room's premium until books/tesseract/ gets a declared coordinate — restoring it means the lane fix plus the pre-commit owned-surface guard, not a change to how the book itself is written.

    Open the signed attestation →
  124. 2026-09-08 · 📐 architect · offPct 18 · structural

    feat(vna): it is a VS Code extension — cockpit webview, five commands, clipboard to the chat on the right

    Why it left the lane: Originating-Terminal is 📐architect, whose owned surface is pure prose/governance (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, CLAUDE.md). The reef seeds the intent lane from that room's vocabulary. The diff's actual reality mass is saturated with engineering strings that never appear in architect's lexicon: 'VS Code extension', 'cockpit webview', 'execFile', 'postMessage', 'vscode.env.clipboard', 'single-flight, not a queue', 'debounced 1.5s', 'CSP', 'webview'. None of that is strategy/product prose — it's build-room vocabulary — so the walk's reality placement is pulled straight out of architect's docs lane and into engineering semantic space, which the receipt reads as offPct=18 against architect's own lane.

    The semantic pull: 'VS Code extension', 'webview', 'execFile(...cockpit.mjs)', 'vscode.env.clipboard', 'postMessage', 'single-flight', 'debounced 1.5s' — every one of these is an engineering-implementation term with zero overlap in architect's docs/strategy vocabulary; the commit's own Relevant-Rooms trailer (🔨builder, 🎩operator) independently confirms the work is not architect's semantic territory.

    Intent–reality gap: The commit correctly self-declares multi-room relevance (Relevant-Rooms: architect, builder, operator) exactly as CLAUDE.md's commit-trailer protocol sanctions, but the receipt's lane classifier still seeds the intent lane from Originating-Terminal alone — so a commit that followed house convention perfectly still reads as boundary drift.

    • Merge the three independently-spec'd room-drift-check drafts (architect/navigator/laboratory) into one owned script — assign it to a single room so the fix doesn't get re-spec'd a fourth time
    • Add the CLAUDE.md commit-trailer addendum above (architect's own owned surface — this is squarely in-lane work for this room)
    • Wire the merged script into the offPct computation path so Relevant-Rooms is actually consulted, not just recorded as prose
    • Add a regression test asserting a commit whose Relevant-Rooms already covers its diff surface does not get flagged over the 15% threshold purely on Originating-Terminal mismatch
    • Retroactively re-score a sample of this room's 192 recent out-of-lane events against the union rule to estimate how many were false positives of this exact class
    • Name a single accountable owner for the merged script in CLAUDE.md's SELF-IMPROVING FIRES register, since the prior failure was three rooms diagnosing correctly and nobody shipping

    What we learned: This is the same mechanism ff09774e5 diagnosed (offPct 20→14 over 8 commits) — but the fix never shipped, and the reason isn't technical: three rooms independently arrived at the identical correct spec and each left it for someone else, because the payoff (fewer false-drift flags) accrues to every room equally, so no single room had exclusive incentive to build it. A fix whose benefit is diffuse across all 9 rooms is a tragedy-of-the-commons inside the reef itself, and diagnosing it a second/third/fourth time without naming an owner just re-produces the same unshipped spec.

    The missing guard (the deliverable): A test asserting the offPct/room-lane classifier reads the Relevant-Rooms trailer (not just Originating-Terminal) when computing whether a commit's reality lands in-lane — feeding it a synthetic commit whose Originating-Terminal room owns no code surface but whose Relevant-Rooms names the room the diff actually touches, and asserting the classifier does NOT flag it as boundary drift.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. walkTruncated=true with both sides at 100% fill against their own walk counts means the walk hit its time/depth budget before any natural saturation could be observed — it's budget-capped, not naturally converged. Concrete adjustment: re-run this sha with 2x --max-depth and compare litIntent/litReality/offPct; if the numbers move, the current budget is too shallow to trust as a stable read. Experiments: Re-run the ballistic walk on 57c7ab50a at 2x max-depth and diff offPct against this run to check whether walkTruncated is masking true convergence · Implement the Relevant-Rooms union fix and recompute offPct retroactively for this sha plus the last 20 architect out-of-lane events, measuring how many drop under the 15% threshold · Add an engineering-vocabulary stoplist/reweighting per docs-only room (architect, navigator) so implementation-detail terms in a commit body don't seed reef placement outside that room's actual lane when Relevant-Rooms already accounts for it

    Measured outcome (deterministic, not self-graded): room mean offPct 19→17 over 10 commits since · dictionary ablation saved 1061B

    A structurally mistagged engineering commit inflates architect's apparent loss ratio with zero real strategy-lane risk; premium is restored the moment the classifier consumes Relevant-Rooms so the lane assignment reflects the commit's own declared multi-room reality instead of a single stale axis.

    Open the signed attestation →
  125. 2026-09-08 · 📐 architect · offPct 17 · structural

    feat(book): OODA is about maintaining the boundary, not winning a race

    Why it left the lane: The diff is a two-sentence insertion into books/tesseract/chapters/chapter-04-you-are-the-proof.md — book/consciousness-thesis prose. The room is 📐 architect, whose owned surface is docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md — none of which is books/tesseract/. The inserted text itself ('boundary conditions', 'the agent's own boundary', 'observation, orientation, decision and action are all changing the state of') reads as systems/control-theory vocabulary, which the reef's B/C axes (Tactics.Speed/Deal/Signal × Operations.Grid/Loop/Flow — topology, velocity, throughput, exchange) are primed to grip hard, since those coordinates are literally about signal, grid, loop, flow. A 2-line, 1-file book-chapter commit has almost no lit mass anywhere in its own true lane (book/content), so the walk's spread lands entirely on the loudest keyword-adjacent coordinates instead — 31 reds, 0 greens, off-lane 100%.

    The semantic pull: 'boundary conditions', 'preserves the agent's own boundary', 'changing the state of the thing being observed', 'remain the kind of system that can still act' — these are systems/control/signal-processing terms with no book/content lane of their own in this reef's ShortLex space, so gzip-NCD drags them onto B3.Tactics.Signal (×11 pull) and the C.Operations grid/loop/flow triad (×14 combined) — the only coordinates in the 144-cell lattice that speak that vocabulary.

    Intent–reality gap: The commit message claims a purely editorial book repair — sharpening one paragraph's philosophical claim about OODA and selection — attributed to 📐 architect. The receipt measures the actual lit mass landing almost entirely in Tactics/Operations signal-and-flow coordinates, because the reef has no dedicated book/manuscript lane for 📐 architect to place content work into; the claim and the measured placement are talking about two different coordinate systems.

    • Add `books/tesseract/**` to 📐 architect's owned-surface glob in the room-ownership source (wherever `.workflow/rooms/architect.html` or its JSON twin enumerates globs)
    • Add a `book-content` sub-lane keyword seed (boundary, selection, OODA, consciousness, thesis) to the reef so book-chapter commits have their own gravity well instead of falling into Tactics/Operations
    • Cross-check the other three 'consciousness-chapter repair' commits in this same eleven-of-thirteen pass for the same off-lane signature (they will very likely share it)
    • File a `room-drift-architect-check.sh` addendum specifically excluding book-chapter commits from the Tactics/Operations funnel once the book lane exists

    What we learned: The reef has zero coordinate reserved for book/manuscript content itself — every book-chapter commit, regardless of which room authored it or how small the diff, is structurally homeless in the 144-cell lattice and will always get walked into whichever Tactics/Operations coordinates happen to share vocabulary with the paragraph's subject matter. This is a different failure than ff09774e5's Originating-Terminal/Relevant-Rooms mismatch — that was a labeling dispute; this is an absent lane.

    The missing guard (the deliverable): A `tests/pmu-simulator/book-content-has-a-lane.test.mjs` that asserts every coordinate in the 144-cell reef the lens can walk into for a `books/tesseract/**`-only diff includes at least one book/content-designated cell — i.e. book commits stop being off-lane by construction because there is somewhere correct for them to land.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. litReality (111) vastly exceeds litIntent (130 in raw count but concentrated) with walksReality only 81 vs walksIntent 130 — the reality walk is running fewer walks but lighting more cells per walk, i.e. it's saturating fast in the Tactics/Operations neighborhood rather than spreading broadly. Concrete adjustment: cap `--max-depth` tighter for docsOnly=true commits (this one is docsOnly) so a 2-line prose diff doesn't get the same walk budget as a multi-file code change — walkTruncated=true already flags it ran out of budget mid-walk, which for a 2-line diff is itself a signal the walk is mis-sized for the input. Experiments: Run this exact commit (58d3fc35a9) through the pipeline with a hand-added `books/tesseract` reef seed cell and diff offPct before/after — expect a measurable drop if the missing-lane hypothesis is right · For all docsOnly=true commits in the last 14 days, compute mean walksReality vs walksIntent ratio and check whether docsOnly commits systematically under-spread on intent (130) vs reality (81) — if so, docsOnly commits need a distinct walk budget profile · Ablate the four 'consciousness-chapter repair' commits in this pass as a batch and check whether they cluster on the identical 31-coordinate signature — if yes, one reef fix closes all four at once, which is a cheap high-leverage experiment before shipping four separate interventions

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

    A book-chapter commit that reads as 100% off-lane on every pass erodes this room's loss-ratio with noise rather than signal, since the true defect (no book lane exists) is invisible in the per-commit premium math and will keep firing on every remaining chapter edit until the reef seed ships — restored the moment books/tesseract/** has a coordinate to land in.

    Open the signed attestation →
  126. 2026-09-08 · 🎤 voice · offPct 21

    feat(ops): the two pages the Terri lunch DM promised — a licence one-pager and the dated prediction register

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

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

    Open the signed attestation →
  127. 2026-09-08 · 🎤 Terminal Voice · offPct 32

    feat(llm-prompt): PASSAGE ONLY — the honest fourth line for a reader that holds the passage but cannot fetch

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

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

    Open the signed attestation →
  128. 2026-09-08 · 🎤 Terminal Voice · offPct 25

    fix(bookclub): send-now goes red when the pinned section cannot be re-extracted

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

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

    Open the signed attestation →
  129. 2026-09-08 · 🔨 builder · offPct 38 · mistagged

    docs(lens): correct the guard's own header — length does not explain most orphans

    Why it left the lane: The diff is pure test-header prose (comments only, no executable change), and its dense vocabulary is measurement-methodology language — '68.4% of orphans hit the log's 80-char prompt cap', '42 of the 133 are demonstrably SHORTER', 'scattered across fourteen days', 'A SECOND, low-rate cause... remains open'. None of that is git-workflow vocabulary (commit/push/iteration/hook), so the walk finds no anchor in B3.Tactics.Signal/C1.Operations.Grid and instead lands broadly across B1/B2×C1/C2/C3 — the 'Speed/Deal × Grid/Loop/Flow' quadrant that reads as generic operational-throughput prose. The commit is a correction to a guard's own header (self-referential documentation about measurement claims), not an operational git-discipline act, so the reality mass has nowhere in-lane to land.

    Intent–reality gap: The commit message frames this as routine git/testing hygiene (one file, a header correction, guarded by an existing test), but the actual content is a statistical retraction — walking back an unmeasured claim about blast radius with percentages, counts, and an explicitly named open question. The lane classifier sees 'tests/cog/*.test.mjs' and 'docs(lens)' and tags it git-discipline/B3.Tactics.Signal, but the prose payload is closer to a research-finding retraction than a signal/discipline act.

    • Add the retracted claim + the open second-cause question to a standing findings ledger (e.g. `docs/architecture/anti-rules-ledger.md` or a new `docs/incidents/` note) so 'second cause unidentified' survives past this one test-file comment block.
    • Cross-link this commit's git note on 5512f69796 from the test file itself (a one-line pointer comment) so the correction trail is discoverable from either side.
    • File a follow-up self-prompt/task to actually chase the second low-rate cause (currently just flagged as open, not owned).
    • Consider a lightweight commit-type convention for 'retraction/correction of a prior measured claim' distinct from routine 'docs:' commits, so the lane pipeline has a vocabulary hook for this class.

    What we learned: A commit whose diff is 100% prose inside a test file's header comment carries none of the room's operational vocabulary (commit/push/hook/iteration) — the lane walk has nothing domain-specific to grip, so dense analytical/statistical prose (percentages, counts, 'remains open') gets read as generic cross-quadrant operational content. Self-correcting commits (retracting a prior measured claim) are a recurring shape in this room's history but have no lexical fingerprint the lens recognizes as in-lane.

    The missing guard (the deliverable): A lightweight lexical check that commits touching only test-file HEADER COMMENTS (no assertion/code lines changed) get classified against a 'documentation-correction' sub-lane rather than the room's default operational lane — e.g. a regex-free check that if a diff's added/removed lines are ALL `//` comment lines inside a `.test.mjs`, tag the commit as 'test-doc' and route lane-fit scoring through vocabulary drawn from the surrounding rule prose (Rice/undecidable/measured/retraction) rather than git-discipline defaults.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. litReality (140) exceeds litIntent (133) by only 7 cells but offPct is 38% — the walk is not shallow (it reached comparable lit counts on both sides) and not saturated (fill 0.98%, well under any ceiling), so it's right-sized in depth but WRONGLY SEEDED: concrete adjustment is to widen the intent-side seed vocabulary to include retraction/measurement-finding terms ('measured properly it is false', 'blast radius', 'scattered') pulled from the commit message body, not just the diff, since the message itself already names the correction accurately. Experiments: Re-run this exact commit's lane walk seeded from the COMMIT MESSAGE BODY instead of the diff alone, and compare offPct — if it drops meaningfully, message-seeding should be the default for comment-only diffs. · Ablate prewalkOverlap by adding 'retraction','measured properly','blast radius','remains open' as reef dictionary terms and re-render this sha's panel to see if greens/ambers appear where reds currently sit. · Track offPct specifically for commits whose diff is 100% comment-line changes across the last 90 days, to see if this is a distinct measurable subclass worth its own lane-fit formula.

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

    A comment-only retraction commit reading as 38% off-lane inflates this room's apparent breach rate without any code risk behind it, diluting the signal underwriters would actually price on git-discipline; restoring it means either the message-seeding fix above or an explicit 'test-doc-correction' sub-lane so honest self-corrections stop reading as drift.

    Open the signed attestation →
  130. 2026-09-08 · 📐 architect · offPct 42 · structural

    feat(vna): C9 + C19 — the tail watcher gets a JSON door and an amendment ledger that counts its holes

    Why it left the lane: The commit's Originating-Terminal trailer names 📐 architect, but all four changed files (scripts/vna/amend-ledger.mjs, scripts/vna/txt-tail-watch.mjs, tests/vna/amend-ledger.test.mjs, tests/vna/txt-tail-watch.test.mjs) sit entirely inside scripts/vna/ and tests/vna/ — paths absent from architect's OWNED FILE SURFACE (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md). Operational vocabulary in the diff — 'watcher', 'cursor', 'offset', 'gap', 'fold', 'ledger' — is Operations.Grid/Loop/Flow language, not architect's docs/strategy register, so the walk had nowhere in-lane to land.

    The semantic pull: Strings 'offsetFrom/offsetTo', 'gaps(all)', 'foldedIntoVersion', 'cursor', 'ONE WRITER, AND IT IS THIS FILE' pull toward Operations.Grid (state/sequence) and Operations.Loop (the gap-scan over consecutive rows); 'THE RETAINED RECORD', 'JSON door', '--json' pull toward Tactics.Signal — none of that vocabulary appears anywhere in architect's declared surface, so 100% of lit reality cells fall outside the claimed lane.

    Intent–reality gap: The commit claims to be architect-room work (Originating-Terminal 📐 architect) continuing a VNA cockpit feature (C9+C19), but the receipt measures zero overlap with any file architect is declared to own — the gap isn't that the work drifted from a correct lane, it's that scripts/vna/ has no correct lane assigned to any room at all.

    • Add scripts/vna/**, tests/vna/**, docs/specs/vna/** to 🔨 builder's owned-surface glob in CLAUDE.md and data/rooms.json
    • Ship the unified scripts/ops/room-drift-check.mjs that three rooms (architect, navigator, laboratory) independently spec'd per lesson ff09774e5 but none shipped
    • Change the room-lane detector to classify intent lane by changed-file glob ownership first, falling back to Originating-Terminal only when no glob matches
    • Add a CLAUDE.md line under the ROOM ownership section naming scripts/vna/ explicitly, since it is currently orphaned across all 9 rooms
    • Audit scripts/* and tests/* generally for other orphaned directories (vna is unlikely to be the only one) and file the count
    • Add a regression test asserting every scripts/ and tests/ subdirectory that has received a commit resolves to at least one room's owned-surface glob

    What we learned: Lesson ff09774e5 diagnosed Originating-Terminal-only classification as wrong but framed it as ROOM DIVERGENCE (architect vs navigator vs laboratory disagreeing) — this event shows the sharper failure underneath: entire directories like scripts/vna/ have ZERO owning room in CLAUDE.md or data/rooms.json, so the detector has nothing to classify against and any commit there registers 100% off-lane regardless of which terminal commits it or how well-guarded the code is.

    The missing guard (the deliverable): tests/ops/no-orphaned-surface.test.mjs — walks scripts/** and tests/** top-level subdirectories with commit history and asserts each resolves to at least one room's owned-surface glob in CLAUDE.md/data/rooms.json; fails loudly on an orphan like scripts/vna/ before the next commit lands there rather than after the receipt fires.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Right-sized on efficiency (litIntent/walksIntent = 1.0, litReality/walksReality = 1.0 — no wasted walks) but not diagnostic on position: matched counts with mismatched cells means depth isn't the lever here. Concrete adjustment: re-run with --max-depth+1 on this sha and check whether litIntent∩litReality (cell overlap, not just count) rises — if it doesn't, the mismatch is ownership-graph-driven (per spec_rewrite) rather than walk-depth-driven, and deepening the walk further would be wasted budget. Experiments: Seed the reef dictionary with VNA-specific vocabulary (watcher, ledger, cursor, offset, fold, amendment, gap) and re-run prewalkOverlap on this sha plus 5 other vna/ commits; measure whether prewalkOverlap rises above 3. · After the spec_rewrite ships (scripts/vna/** assigned to builder), re-render this commit's panel and measure whether offPct drops now that an owned-surface match exists for the intent lane. · Run the proposed orphan-detection guard against the full scripts/ and tests/ tree, count total orphaned directories, and correlate that count against this room's 208-event/14-day rate to quantify how much of total drift is orphaned-surface noise vs genuine cross-lane work.

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

    Repeated positional off-lane events against an orphaned directory (scripts/vna/, owned by no room) inflate this lane's apparent loss-ratio with false positives rather than measuring real cross-lane risk, understating true premium accuracy; restoring it requires closing the ownership gap in CLAUDE.md/data/rooms.json so offPct reflects genuine drift rather than unclaimed surface.

    Open the signed attestation →
  131. 2026-09-08 · 📐 architect · offPct 22 · structural

    feat(vna): price the trigger and attach the physical attestation — frequency is measured, severity is not

    Why it left the lane: Every changed path in this commit — scripts/vna/underwriting.mjs, data/vna/underwriting.json, tests/vna/underwriting.test.mjs — falls entirely outside the architect room's five owned globs (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, docs/01-business/strategy/, CLAUDE.md). The diff's load-bearing terms — `boundaryAttestation()` invoking the pmu-onchip binary, the `expectedLossPerUnit`/`premiumPerUnit` fields, the `data/vna/underwriting.json` receipt write — are measurement/pricing-engine content, which is exactly what pulls the walk toward C1.Operations.Grid (data structuring) and B3.Tactics.Signal (attestation/trigger signal), the two heaviest pull coordinates in the encircled set (×5 and ×11).

    The semantic pull: `boundaryAttestation` (function name, called from main(), written to the receipt) and `pmu-onchip --boundary-probe --runs --json` (a literal CLI invocation) are Operations.Grid-shaped: they measure and structure data. `expectedLossPerUnit`, `premiumPerUnit`, and the printed 'attach/events/rate/E[loss]/premium' table are Tactics.Signal-shaped: they price a trigger. Neither string family has any analog in docs/strategy/ prose, so the walk finds zero intent-lane anchors and 100% of lit reality mass lands off-lane.

    Intent–reality gap: The commit message never claims to touch strategy documents — it is an honest, self-critical engineering note about a pricing engine. The gap isn't in what the message says; it's that the Originating-Terminal trailer names 📐 architect while the architecture (the nine rooms' owned-surface globs) has no room claiming scripts/vna/**, data/vna/**, or tests/vna/** at all, so the receipt has nowhere legitimate to place this work.

    • Add scripts/vna/**, data/vna/**, tests/vna/** to the owned-surface glob of the room that actually does this work (receipt's own QC line names 🔨 builder — confirm and add there, in .workflow/rooms/builder.html)
    • Ship the room-drift-<room>-check.sh fix that three rooms (architect, navigator, laboratory) already independently spec'd per lesson ff09774e5, extended to detect UNOWNED surfaces (no room's glob matches) not just Originating-Terminal/Relevant-Rooms divergence
    • Run the /recontext skill against all nine rooms' current globs and record every UNOWNED top-level scripts/ and data/ directory as a punch-list item, not just vna/
    • Add a one-line note to CLAUDE.md's Sovereign Outreach / room table (or a new VNA section) naming which room owns scripts/vna/data/vna/tests/vna going forward

    What we learned: scripts/vna/, data/vna/, and tests/vna/ are a fast-growing subsystem (16 scripts, 12 data files as of this commit) that has never been assigned to any of the nine rooms' owned-surface globs — every commit touching it will register 100% off-lane against whichever terminal happened to be open, independent of trailer accuracy, because the detector has no coordinate to place it correctly in the first place. This is a genuinely unowned surface, not a mistagged trailer.

    The missing guard (the deliverable): A pre-commit or periodic check (extending what the /recontext skill already computes interactively) that fails when a commit's changed paths include a top-level scripts/<dir>/ or data/<dir>/ not matched by ANY room's owned-surface glob in .workflow/rooms/*.html — surfacing new unowned subsystems the moment they appear, rather than after 201 out-of-lane events accumulate in one room.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized on spread (127 vs 143 lit is a reasonable ~13% asymmetry, not saturated), but walkTruncated=true flags it hit the depth/time budget before fully resolving — for a brand-new subsystem with no existing reef anchors, a slightly larger --max-depth on first contact would let the walk find whatever thin connective tissue exists (e.g. shared 'measurement'/'receipt' vocabulary with existing PMU docs) before truncating. Experiments: Seed scripts/vna/**, data/vna/**, tests/vna/** into the reef bank of whichever room gets ownership, re-run this commit's placement, and measure whether offPct drops below the 15 threshold · Run /recontext against the current 9 rooms' glob lists, record the full UNOWNED set (not just vna), and measure what fraction of the last 14 days' 201 architect-room out-of-lane events fall in UNOWNED paths vs genuinely mistagged ones · Ablation-test adding 'boundaryAttestation' and 'expectedLossPerUnit' as dictionary terms tied to a Grid/Signal lane and re-score the last 5 vna commits to see if the pull direction sharpens toward a correctly-owned lane instead of just registering as off-lane noise

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

    A structurally-unowned surface generating 201 out-of-lane events in 14 days inflates this lane's measured breach rate without reflecting any actual defect in the work, so the fix that restores the premium is assigning ownership (the glob edit) rather than anything about the commit itself.

    Open the signed attestation →
  132. 2026-09-08 · 📐 architect · offPct 25 · mistagged

    feat(vna): the cycle runs in the IDE — both arms, pick, re-run, and a pull series that shows the net working

    Why it left the lane: No region narrative is cached for 73cedfb9f6, so the WHERE is inferred from the diff-vs-owned-surface mismatch rather than encircled coordinates. Every changed file — packages/intentguard-vscode/package.json, src/vna-cockpit.ts, the new src/vna-envelope-render.ts, scripts/vna/envelope.mjs, tests/vna/envelope.test.mjs, tests/vna/extension-envelope.test.mjs — sits outside 📐 architect's owned globs (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md). The reality corpus is dense with implementation vocabulary — 'vscode.commands.registerCommand', 'execFile', 'webview.onDidReceiveMessage', 'renderEnvelopeHtml', 'EnvelopeCycle' — none of which shares a lexical neighborhood with docs/strategy prose. The intent lane, seeded only from the Originating-Terminal trailer (📐 architect), has nothing in that vocabulary to grip, so the walk's mass lands entirely in the builder/tooling region of the lattice — a 25% offPct is the receipt correctly reporting a real vocabulary gap, not a false read of the code.

    The semantic pull: Strings pulling the reality lane away from architect's docs/strategy space: `"command": "vna.cycle"` and `"vna.copyCycleCard"` in package.json (extension-contribution vocabulary), `execFile('node', [ENVELOPE, ...args, '--json']` and `envPanel.webview.onDidReceiveMessage` in vna-cockpit.ts (VS Code API surface), and the entire new file vna-envelope-render.ts whose own header states 'PURE. This file imports nothing from vscode' — a tooling/rendering-layer self-description with zero strategy-doc terms. None of these have a sibling anchor in docs/strategy/ or docs/01-business/strategy/, so the reef seed for the claimed lane starts thin and the walk saturates in the builder coordinate instead (consistent with litIntent=139 vs litReality=141 being nearly matched in COUNT but not in NEIGHBORHOOD).

    Intent–reality gap: The commit message and its Originating-Terminal trailer claim this is an 📐 architect commit, but the commit's own Relevant-Rooms trailer (📐 architect, 🔨 builder, 🎩 operator) already discloses that the bulk of the work — a VS Code extension feature — belongs to builder's surface; the receipt measured exactly that builder-shaped reality and, reading only Originating-Terminal for the intent lane, reported it as 25% out-of-lane.

    • Ship ONE canonical `scripts/ops/room-lane-check.mjs` that unions Originating-Terminal + Relevant-Rooms owned-surface globs before comparing against changed files — replacing the three independently-spec'd, never-shipped `room-drift-<room>-check.sh` drafts (architect/navigator/laboratory) with a single implementation
    • Locate and patch the receipt pipeline's room-lane classifier call site to consume the new union logic instead of Originating-Terminal alone
    • Update CLAUDE.md's COMMIT MESSAGE STRUCTURE section per spec_rewrite above, in the same commit as the classifier patch
    • Delete or supersede the three dormant per-room drift-check specs once the canonical script ships, so a fourth duplicate spec cannot appear next sprint
    • Add a fixture test using this commit's own trailers + files, asserting Originating-Terminal-only classification flags it and union classification does not
    • Backfill offPct for the room's last 8-commit window under the union classifier to confirm the recurrence this event represents actually resolves

    What we learned: ff09774e5 (8 commits ago) diagnosed this exact mechanism and reported room mean offPct improving 20→14 — but no code shipped, only the diagnosis. This event is the counterfactual: the moment a large, correctly cross-lane-trailer-tagged commit landed again, offPct jumped back to 25, proving the earlier 20→14 improvement was never caused by fixing the classifier — it was incidental (fewer big cross-lane commits in that window), because the classifier itself is unchanged. A diagnosed-but-unshipped fix decays to zero the instant the triggering pattern recurs; the room's own repeated 198-event/14-day count is the receipt of that decay, not of new misbehavior.

    The missing guard (the deliverable): A firing test (`tests/pmu-simulator/room-lane-union-classification.test.mjs`) that: SMOKE — replays 73cedfb9f6's trailers/files through an Originating-Terminal-only classifier and asserts it reports ~25% out-of-lane; NO-SMOKE — replays the same commit through a union-of-trailers classifier and asserts it reports within the 15% threshold. Ships in the same commit as the room-lane-check.mjs implementation per GUARD-SEEN-TO-FAIL discipline.

    Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. litIntent==walksIntent and litReality==walksReality (139/139, 141/141) — full saturation on both sides with walkTruncated=true, suggesting the walk hit its ply/time budget rather than running out of live edges. Right-sized in the sense that it isn't under-walking, but the truncation flag means we can't rule out further convergence or divergence past the current budget. Adjustment: re-run this sha with --max-depth increased by 2 plies and compare whether litReality shrinks toward litIntent's neighborhood (supporting the mistagged/seed-only theory) or stays equally divergent (suggesting genuine structural spread, which would argue against the mistagged verdict). Experiments: Re-seed the intent corpus for 73cedfb9f6 using the union of architect's + builder's + operator's owned-surface globs (per Relevant-Rooms) and re-render the panel; measure whether offPct drops below 15 · Log prewalkOverlap against offPct for the last 20 architect-room commits; if low prewalkOverlap consistently predicts high offPct independent of walk depth, that confirms the reef-seed stage (not the walk) is the dominant lever for this room's false-positive rate · For every commit carrying 2+ Relevant-Rooms entries in the last 14 days, compute offPct twice (Originating-Terminal-only vs union-of-trailers) and diff the two distributions to quantify how much of the room's 198 out-of-lane events collapse under the union method

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

    This event alone is a false-positive loss signal, not a real one — the room's apparent 198-event/14-day out-of-lane rate overstates architect's actual drift risk and would misprice the lane's premium upward until the classifier consumes Relevant-Rooms, at which point this and similar sanctioned cross-lane commits stop registering as loss events.

    Open the signed attestation →
  133. 2026-09-08 · 🎤 voice · offPct 23 · structural

    content(blog): round 1 — close the inversion the ghost-read actually found

    Why it left the lane: The three revised paragraphs are saturated with actuarial/legal-instrument vocabulary that is present verbatim across the whole post, not just this diff: 'CG 40 47', 'CG 40 48', 'CG 35 08', 'repricing a book', 'rating plan', 'Rice's theorem (1953)', 'record conservation', 'a policy with an arguable trigger'. These are ISO-form-number and underwriting-mechanics terms — the exact vocabulary this repo's own CLAUDE.md files under insurance/legal doctrine (ISO GenAI exclusions, authority-then-lockout, spec-is-the-policy-wording) rather than under blog/book voice-craft. The ballistic walk lights reality cells on that legal/actuarial vocabulary and they land outside the intent lane the commit trailer declared (🎤 voice, book-craft prose editing), which is exactly the 23% offPct measured.

    The semantic pull: Strings 'CG 40 47'/'CG 40 48'/'CG 35 08' (repeated three times each across the file, including in the diff's rewritten opener and the two-walls paragraph), 'repricing a book', 'rating plan', and 'Rice's theorem (1953)' — dense legal-financial nouns that pull reality's lit mass toward the lattice region this repo already treats as architect/legal-domain territory (per the ISO-exclusion and authority-then-lockout HARD RULES), away from the narrative/voice-craft anchors the commit's intent lane claims.

    Intent–reality gap: The commit claims a bounded 'round 1, scope-fenced to the worst three paragraphs' prose-polish inside the voice room's book-craft lane; the receipt measured that a quarter of the reality mass in those same three paragraphs is legal/actuarial argument-strengthening (form numbers, rating-plan consequence, undecidability proof) rather than narrative craft — the edit was correct but the genre it operates in is not single-lane.

    • Add 'Lane-Split:' to the COMMIT MESSAGE STRUCTURE trailer list in CLAUDE.md, with the worked example from this commit
    • Extend scripts/pmu/pipeline.mjs's lane-threshold comparison to accept and honor a parsed Lane-Split trailer
    • Add a lint in hooks/pre-commit that flags a content commit to src/content/blog/*.mdx as 'insurance-thesis dense' when it matches 2+ of {CG 4\d \d\d, CG 35 08, rating plan, Rice's theorem} and has no Lane-Split trailer, warn-only
    • Update .workflow/rooms/architect.html's owned-surface note to name insurance-thesis blog posts as a co-owned surface with voice, not an anomaly
    • Re-render this commit's receipt after the pipeline change and confirm offPct is computed against the split lane rather than the single one

    What we learned: This post's genre — the insurance-thesis blog argument — is not an occasional cross-lane accident inside 🎤 voice; the same six ISO-form-number citations recur across the entire file (opener, two-walls paragraph, evidence section, falsifier), meaning EVERY edit to this post's core argument will re-walk into legal/actuarial territory regardless of how tightly the diff is scoped. The prior three facts-only interventions all measured the room's mean offPct getting WORSE afterward (27→39, 21→31, 0→36) — consistent with a genre-level structural mismatch that a generic patch cannot touch, because the fix has to be in the receipt's lane declaration, not in the prose.

    The missing guard (the deliverable): A guard asserting that any commit touching src/content/blog/*.mdx whose diff matches 2+ of the form-number/actuarial-term patterns above carries either a Lane-Split trailer or an explicit single-lane justification — firing on this exact commit's bytes (0 Lane-Split trailers present, 6 pattern matches) and staying quiet on a pure-narrative blog edit with none of those terms.

    Detector probe: signal attribution — gzip reef 55% · ballistic walk 45%. Too shallow: walkTruncated=true with litReality (106) well below litIntent (143) means the walk hit its time/depth budget before reality's coverage could converge toward the intent lane's spread. Concrete adjustment: raise --max-depth (or the time budget) specifically for docsOnly=true content commits, since prose-only diffs are cheap to walk further and the truncation is costing exactly the convergence this class needs. Experiments: Re-run this commit's receipt with --max-depth doubled and compare offPct/prewalkOverlap against this run's 23%/14 baseline · Seed the reef for content commits with a small domain dictionary of the repo's own insurance-thesis vocabulary (CG 40 47/40 48/35 08, rating plan, exposure base) and measure whether prewalkOverlap rises for future edits to this same post · Run the same three-paragraph diff through the pipeline with a synthetic Lane-Split-aware intent grid (architect+voice) and confirm offPct drops toward threshold, validating the code_rewrite before shipping it

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

    A room chronically scored against a single-lane threshold it structurally cannot meet is a false-positive loss event inflating this lane's measured loss-ratio; restoring it means fixing the lane declaration (Lane-Split), not suppressing or ignoring the receipt.

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

    fix(vna): /steer opens the page as a FILE — the split panel is opt-in, never the default

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

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

    Open the signed attestation →
  135. 2026-09-08 · 📐 architect · offPct 21 · mistagged

    feat(vna): tell the story — the shape in one frame, how it moves, what it means for the work

    Why it left the lane: The commit's own message names the mechanism: 'the shape vocabulary is not invented here... it already existed in triptych-render.mjs's region classifier.' The diff imports decodeDeltaThreeColourEdges from ../pmu/triptych-render.mjs and definerWalk144 from ../pmu/definer-walk-144.mjs into a brand-new scripts/vna/ directory, and story.mjs additionally imports computeCycle/fullName from ./envelope.mjs (a file not shown in this diff, implying an already-existing vna module this commit extends). The commit claims Originating-Terminal 📐 architect (whose owned surface is docs/strategy, docs/03-product, .workflow/rooms, CLAUDE.md), but 100% of the actual diff is executable code under scripts/vna/ and tests/vna/ — zero bytes touch any architect-owned path. The encircled reds cluster hard at B3.Tactics.Signal (×11) and C1.Operations.Grid (×5) with B1/B2/C2/C3 spread across — a VERTICAL motif (per the commit's own vocabulary): many actors (frame.mjs, story.mjs, the PMU walk, the envelope) all converging on one kind of target — the signal/telemetry-emission lane — which is exactly what a new narrative-generation instrument over an existing measurement pipeline looks like structurally.

    Intent–reality gap: The commit message is entirely correct about what it built (a deterministic prose narrator over the triptych classifier) and even anticipates scrutiny by pre-justifying the LLM-free design and the shape vocabulary reuse — but it never claims a lane at all beyond the Originating-Terminal trailer, which asserts 📐 architect. The receipt measures 100% of the lit reality mass landing in Tactics/Operations pixel-generation code, none of it in architect's declared strategy/docs/CLAUDE.md surface — the trailer, not the work, is wrong.

    • Run `scripts/open-room-session.sh --print-label` retroactively (or ask the operator) to confirm which terminal actually authored 7b92f4cfc5, and correct the trailer if it was misdetected.
    • Ship `room-drift-architect-check.sh` (the fix independently spec'd by architect, navigator, and laboratory per prior lesson ff09774e5, never unified) — a pre-commit advisory that computes the file-glob-to-room match and WARNS when Originating-Terminal disagrees with the owned-surface match by more than N standard deviations, without blocking (CLAUDE.md sanctions the divergence as normal, so this stays advisory).
    • Add `scripts/vna/` and `tests/vna/` to `.workflow/rooms/builder.html`'s owned-surface glob list (they are new PMU-adjacent script surfaces with no current room claim) so future vna commits classify correctly regardless of trailer.
    • Cross-reference this event against ff09774e5's unified fix — if `room-drift-<room>-check.sh` still doesn't exist anywhere in the repo, this is the second room-lane mistag since that lesson shipped and the unification is now overdue, not merely pending.

    What we learned: The room-lane detector conflates 'which terminal the operator was seated in' (the trailer's actual defined meaning per CLAUDE.md) with 'which room's reef the code content matches' (what the offPct receipt measures) — and this is now the SECOND independent occurrence of that exact conflation after ff09774e5 diagnosed it eight commits ago with a room-mean improvement (20→14) but no shipped unifying guard; the fix keeps getting re-diagnosed instead of unified because it was speced three times in three different rooms and never merged.

    The missing guard (the deliverable): A single `scripts/pmu/room-drift-check.sh` (the fix ff09774e5 already named but that never shipped) that runs at pre-commit time, computes the file-glob match between changed paths and `.workflow/rooms/*.html` owned-surface declarations, and prints an advisory when the computed room disagrees with Originating-Terminal by more than one room-hop on the lattice — closing the loop CLAUDE.md's own trailer-divergence exception otherwise leaves permanently open.

    Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. walkTruncated=true with walksIntent==litIntent (134==134) and walksReality==litReality (118==118) suggests the walk hit its budget/depth ceiling exactly at full coverage of the lit set on both sides — right-sized for this corpus size but with zero headroom; if litIntent/litReality grow on a future vna-adjacent commit the walk will truncate before covering the full lit set. Adjustment: raise --max-depth or --budgetMs by ~20% specifically for commits touching scripts/pmu/ or scripts/vna/ (PMU-self-referential commits historically run larger corpora). Experiments: Experiment: re-run this commit's receipt with prewalkOverlap forced to use the full intent+reality corpus (not truncated to 20 files as frame.mjs does at `files.slice(0, 20)`) and measure whether offPct changes — frame.mjs's own 20-file cap may be under-sampling reality for multi-file commits like this one (3 files, under the cap, but the cap is a latent risk for the next larger vna commit). · Experiment: add a room-lane-specific reef seed (a small corpus of architect-owned file paths/terms) and re-measure offPct on this exact commit — if the architect lane's reef seed is thin relative to builder/PMU vocabulary, that thinness itself would explain why any PMU-adjacent commit trailer-tagged architect scores high offPct regardless of true authorship. · Experiment: track walkTruncated=true frequency across the last 50 commits touching scripts/pmu/ or scripts/vna/ specifically — if truncation correlates with high offPct, the walk budget (not the room-tag) is a confound worth isolating before trusting offPct as a room-mistag signal.

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

    Three room-mistag events in this lane with no shipped unifying fix reads as a repeated, known, uncorrected control gap — the kind of finding that widens this lane's loss-ratio band until room-drift-check.sh actually ships (not merely re-specced), at which point the premium reverts to reflecting genuine cross-lane work rather than an unfixed classifier ambiguity.

    Open the signed attestation →
  136. 2026-09-08 · ☕ network · offPct 65 · mistagged

    comms(channels): open the room message with an attackable statement of belief — Cato's line, except it leads

    Why it left the lane: The commit's mass sits almost entirely in scripts/channels/opener-check.mjs and tests/channels/opener-is-an-attackable-belief.test.mjs — two brand-new files that are pure code-analysis/regex-construct engineering (ASSERTIVE/HEDGE/CLAUSE_BREAK regexes, stripEnvelope, firstSentence, checkOpener, a CLI with --text/--file/--json). That vocabulary (construct-not-token, guard-seen-to-fail smoke/no-smoke pairs, FORECLOSES declarations, applies_from_version scoping) is dense, generic rule-engineering prose that pulls toward B3.Tactics.Signal (detector/rule mechanics) and C1.Operations.Grid (topology/pipeline plumbing) rather than staying inside ☕ network's declared surface, which is outreach/CRM/bookclub send content — not guard-authoring infrastructure. The diff never touches docs/outreach/, scripts/outreach/, or docs/comms/bookclub-*; it touches data/channels/cambridge-bizai.json only incidentally (19 lines) while the 386 lines of actual work are a general-purpose linter for chat-room openers.

    The semantic pull: Strings like 'the construct, not the token', 'smoke and no smoke', 'applies_from_version', 'FORECLOSES', and the CLI flag surface (--text/--file/--json, exit 0/1/2) are the exact idiom this repo uses for its rule/guard-engineering layer (CLAUDE.md's EVERY GUARD SHIPS WITH A FIRING TEST, THE PROXY IS NOT THE THING) — vocabulary that gravitates to B3.Tactics.Signal (rule/detector mechanics) and C1.Operations.Grid (pipeline topology), which is exactly where the 28 encircled reds cluster (B1/B2/C1/C2/C3 × Tactics.Speed/Deal, all reading 'topology'/'velocity'/'throughput'/'exchange').

    Intent–reality gap: The message claims this is a ☕ network deliverable ('the surface that owns it is the channel stack') and even names Relevant-Rooms as network/voice/architect — but the actual content is a generic guard-authoring artifact (regex construct + CLI + firing-test suite) that structurally belongs to whatever room owns rule/guard infrastructure, not to outreach-room content ownership.

    • Add scripts/channels/ to 📐 architect's owned-surface glob in .workflow/rooms/*.html (or wherever room ownership globs live) so future opener-check-class work places in-lane by default.
    • Split future commits: land data/channels/*.json rule edits as a ☕ network commit, and scripts/channels/*.mjs + tests/channels/* as a 📐 architect commit — even same-day, even same-feature.
    • Add a CLAUDE.md line under DELEGATE-TO-SUBTASKS naming 'channel guard code' as an architect-owned artifact class, so a bf-XXXX ticket routed through network for a rule finding auto-splits its code half to architect.
    • Verify scripts/channels/channel.sh (the referenced entry point) is itself already correctly attributed — if it also lives uncredited under network, it's the same drift repeating.

    What we learned: A ticket delegated INTO a room (bf-5163, 'delegated from vault out of a Gemini dictation') inherits that room's attribution for its entire deliverable even when the deliverable spans two different ownership classes (a content rule + a general guard engine) — the delegation receipt names one room but the diff produces two kinds of artifact, and nothing in the delegation path forces a split.

    The missing guard (the deliverable): A pre-commit check that, for any commit touching scripts/**/*.mjs + tests/**/*.test.mjs pairs (a guard-authoring shape), requires Relevant-Rooms to include the room whose owned-surface glob matches the script path — flagging when a commit's ONLY Relevant-Room is a content room (like ☕ network) but its diff is >80% new code under scripts/+tests/.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. litIntent==litReality==127 with offPct=65 means the walk is saturated symmetrically on both sides but disagrees on WHERE — this is a placement problem, not a walk-depth problem; walkTruncated=true suggests deepening won't help since both sides already hit equal lit counts. Adjustment: no depth increase — instead tighten the reef seed (see reef_tightening) since the walk is already right-sized. Experiments: Re-seed the reef corpus for ☕ network commits with a stronger weight on docs/outreach/ + docs/comms/bookclub-* vocabulary so genuine content-rule commits from this room don't get pulled by generic guard-engineering terms when they happen to touch a scripts/ file. · Ablation: recompress the last 20 network-room commits with 'the construct, not the token' / 'smoke and no smoke' / 'FORECLOSES' phrases removed from the reef dictionary and measure whether offPct on this commit and its siblings drops — isolates whether guard-authoring idiom alone is driving the pull. · Run prewalkOverlap on a synthetic split of this commit (data/channels/*.json alone vs scripts+tests alone) to confirm the JSON-only half places in-lane and the code-only half is what drags to B3/C1 — validates the mistagged verdict directly.

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

    This event is a mistagged-lane false-positive, not a genuine boundary violation — it doesn't raise ☕ network's loss ratio on its own, but repeated mistagging erodes the room-attribution signal the premium model relies on, so the fix is the ownership-glob split above rather than any content or code change.

    Open the signed attestation →
  137. 2026-09-08 · 📐 architect · offPct 50 · mistagged

    feat(channels): the chat as a dish — every ingredient, with its substitutes, keyed to the job it does

    Why it left the lane: The diff's actual mass is scripts/channels/pantry.mjs, scripts/channels/channel.sh, tests/channels/pantry.test.mjs and data/channels/cambridge-bizai.pantry.json — 955 insertions of executable code, a CLI dispatch case, and a JSON data file. Architect's registered owned-surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md) contains none of those paths — every one of the four changed files sits outside every glob the room is credited with. The commit's own Story trailer asserts the fix in prose ('the architect room owns docs/comms/channels and scripts/channels — the running code the pantry had to attach to') but that assertion never reached the machine-readable glob list the detector actually reads, so the walk correctly measured a genuine mismatch between the declared lane and the landed files.

    The semantic pull: Terms like 'pantry.mjs', 'channel.sh', 'PANTRY_SPEC_DIR', 'better-sqlite3', 'checkShape', 'checkProvenance' are code/runtime vocabulary that gzip-NCD seeds toward an Operations/tooling coordinate, while architect's declared lane is Strategy-document vocabulary (docs/strategy/, docs/01-business/strategy/). prewalkOverlap=4 — very low relative to litIntent=139 — shows the reef seed itself found almost no shared vocabulary between the declared docs corpus and the shipped code corpus before the walk even started; the walk (litReality=132) then spread across a code-shaped region the intent lane never touched.

    Intent–reality gap: The commit claims (via Originating-Terminal + Story) that this is architect-lane work and explicitly asserts architect owns scripts/channels; the receipt measured half the landed mass (offPct=50) sitting outside every glob architect is actually registered as owning. The work itself is not disputed as correct — the room's OWNERSHIP CLAIM over that surface was never written into the config the detector consults.

    • Add scripts/channels/**, data/channels/**, tests/channels/**, docs/comms/channels/** to .workflow/rooms/architect.html's Owned file/dir surface
    • Grep other rooms' .workflow/rooms/*.html for overlapping claims on scripts/channels/** before landing the addition, to avoid creating a CONTESTED surface (recontext-style check)
    • Ship a guard that fails when a room's last N Originating-Terminal commits touch paths not covered by that room's own .workflow/rooms/<room>.html globs — the general room-drift-check three rooms already spec'd (per ff09774e5) but nobody shipped
    • Recompute this same commit's offPct using Relevant-Rooms glob-match scoring (already defined in CLAUDE.md's COMMIT MESSAGE STRUCTURE) instead of Originating-Terminal alone, to see whether the mismatch is a lane-detector input problem rather than a real cross-room commit
    • Cross-check whether scripts/channels/ + docs/comms/channels/ should instead be assigned to a different room's owned-surface (e.g. builder/laboratory) before locking architect's claim — Story asserts ownership but nobody outside this commit verified it

    What we learned: ff09774e5 already found that room lanes can legitimately diverge from Originating-Terminal and that a per-room drift-checker script was spec'd three times and never shipped (mean offPct only moved 20→14, and this room still logged 196 out-of-lane events in 14 days — the general fix did not land). This event reveals the more specific mechanism underneath that gap: room ownership is declared in TWO places that can silently diverge — prose (a commit's own Story trailer, which can assert ownership of a new surface) and machine config (.workflow/rooms/*.html glob lists, which only a human or a dedicated pass updates). A delegating agent can correctly reason 'architect owns this now' and write that reasoning into the commit message, and the lane detector will still flag it out-of-lane forever, because the detector never reads Story prose — only the glob file. Ownership claims made in a commit message do not propagate to the config that adjudicates future commits.

    The missing guard (the deliverable): tests/rooms/owned-surface-covers-claimed-story.test.mjs — parses a commit's Story trailer for an explicit ownership assertion ('<room> owns <path>'), and asserts that path (or its parent glob) actually appears in that room's .workflow/rooms/<room>.html Owned file/dir surface within N commits of the assertion; fails loudly (not silently) when a room claims ownership in prose that its own registered glob list still doesn't cover.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. walkTruncated=true with litIntent/litReality both in the 130s on a 955-line, 4-file diff suggests the walk hit its depth/time budget before fully resolving whether deeper plies would have found more genuine overlap between the strategy-doc lane and the channel-tooling lane. Concrete adjustment: re-run this sha with --max-depth raised one increment and compare offPct — if it drops meaningfully, the truncation (not just the lane mismatch) is inflating this reading. Experiments: Re-run this exact sha's walk with --max-depth+1 and diff the resulting offPct against 50, to separate truncation artifact from real lane mismatch · Recompute room-lane classification using Relevant-Rooms glob-match scoring (per COMMIT MESSAGE STRUCTURE) instead of Originating-Terminal-only, on this sha, and record whether offPct changes · After the .workflow/rooms/architect.html glob addition lands, replay this sha's receipt against the updated glob list and confirm offPct drops toward the 15 threshold — the direct ablation for this fix

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

    A room chronically scoring 50%+ off-lane on legitimate, correctly-placed work looks like unbounded scope creep to any downstream premium/loss-ratio read on architect's lane, when the actual defect is a stale ownership manifest — restoring the glob list to match what the room's own commits already claim converts an apparent behavioral risk back into a one-time config correction.

    Open the signed attestation →
  138. 2026-09-08 · 🧪 laboratory · offPct 16

    fix(vna): code reaches the reality corpus as its PROSE — the instrument could not measure its own construction

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

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

    Open the signed attestation →
  139. 2026-09-08 · 🧪 laboratory · offPct 40

    fix(vna): VNA stops running its own rust — the walk, the stages and the ingest sources all come from the one door

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

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

    Open the signed attestation →
  140. 2026-09-08 · ☕ network · offPct 28 · structural

    feat(outreach): the undecidability-first connect note — theorem opens, no patent claim

    Why it left the lane: The diff's byte mass is dominated by generic guard/test-engineering vocabulary rather than outreach content: 'SEEN TO FAIL', 'FORECLOSES:', 'bootstrap case', 'blast radius', the PROMISE_VERB/MEASURE_VERB regex rewrite, and 231 lines of test-doctrine prose explaining why the guard is real. That vocabulary is architecturally identical to guard commits shipped from any room (architect, laboratory) — it compresses toward Operations.Grid (structural regex construction), Operations.Loop (verification/firing-test loop), Operations.Flow (pipeline/blast-radius measurement) and Tactics.Signal (detection-verb engineering). The actual network-specific content — the 285-character connect note, the four dictated beats, the Rice-1953/1654 date pair — is ~144 of the ~395 changed lines; the guard-methodology scaffolding is the majority and it carries none of the domain-specific relationship/persuasion vocabulary that would anchor it to the outreach lane.

    The semantic pull: 'PROMISE_VERB = /\b(solv(es?|ed|ing)|prevent(s|ed|ing)?|.../i', 'MEASURE_VERB = /\b(measur(es?|ed|ing)|record(s|ed|ing)?.../i', and the test file's 'SEEN TO FAIL: yes, in both halves', 'FORECLOSES: re-adding the hardware-patent sentence', 'blast radius of this widening is nil' pull toward B3.Tactics.Signal ×11 (detection-verb/regex engineering reads as signal processing), C1.Operations.Grid ×6 (the regex's structural alternation groups), C2.Operations.Loop ×4 (the firing-test's run-twice-and-diff verification loop) and C3.Operations.Flow ×4 (the 'measured before/after' blast-radius pipeline). These are the same coordinates any guard-shipping commit lands on regardless of authoring room.

    Intent–reality gap: The commit claims to be one thing — 'the undecidability-first connect note' — but its own body narrates a second, unrelated deliverable found mid-check ('Found while checking it, and closed: PROMISE_VERB matched solve and solves and not solving') and ships it in the same commit; the receipt measured the reality of BOTH deliverables against a lane claim sized for one.

    • Split the commit before pushing next time a mid-check fix is found: content commit and rule-set-fix commit, each with its own message and lane claim (ITERATION DISCIPLINE already requires this; this event is the case where 'found while checking' didn't count as a new iteration)
    • Extract the repeated guard-doctrine boilerplate (WHY THIS EXISTS / THE FIXTURES ARE REAL VOCABULARY / SEEN TO FAIL / FORECLOSES) into one shared reference doc that guard tests link to with a one-line pointer instead of restating in full each time
    • Add a commit-trailer convention, e.g. 'Cross-Cutting: <other-lane>', so a commit that legitimately bundles a content deliverable with a shared-infra fix declares the second lane explicitly rather than the lens inferring it from mass alone
    • Update the ITERATION DISCIPLINE section of CLAUDE.md to name 'a hole found while checking X' as a separate iteration even within the same session, with this commit as the worked counter-example
    • Re-check tier1-linkedin-messages.md:137 (named in this diff as now scoring behaviour-promise) and either fix the sentence or file it as a tracked known-violation, since the guard now fires on it and it currently ships unmodified

    What we learned: A commit can be perfectly path-scoped to its room's owned surface (scripts/outreach/, docs/outreach/) and still drift out of lane, because ITERATION DISCIPLINE's exception case — 'found a hole while checking, fixed it in the same breath' — has no rule forcing the fix into its own commit. The prior lesson (f748e0b17) found this for cross-store data-plumbing mass; this event shows the identical shape for guard/test-doctrine mass, which means the failure is not about *what kind* of generic content leaks in, it's that any commit narrating 'found X while checking Y' is structurally a second iteration wearing the first one's lane claim.

    The missing guard (the deliverable): An advisory pre-commit check (in the style of rules-for.mjs / token-vs-construct.mjs) that flags when a single commit touches a content file (docs/outreach/*.md), a shared rule-set file (scripts/*rules.mjs or similar detector), AND a new test file in the same commit — the 'content + detector + test' triad — and prints a one-line reminder to consider ITERATION DISCIPLINE's split-commit rule before proceeding. Warn-only, matching this repo's no-fault-commit convention.

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. litIntent/walksIntent = 142/142 = 100% and litReality/walksReality = 138/138 = 100% — every cell the walk touched lit up on both sides, a saturation signature rather than a discriminating spread. At full saturation the walk can't distinguish 'strongly in-lane' from 'weakly in-lane' — everything it reaches counts the same. Concrete adjustment: increase --max-depth by one ply on this reef pixel class (guard/test-doctrine-heavy commits) so the walk has room to differentiate before saturating, and re-measure whether offPct drops when the extra ply is available. Experiments: Re-run this exact commit's walk at --max-depth+1 and diff offPct against the shipped 28% — if it drops meaningfully, saturation-at-ply-2 is confirmed as a contributing cause and the depth bump generalizes to other guard-heavy commits · Seed the reef dictionary with the four SEEN-TO-FAIL/FORECLOSES phrases from compression_dictionary_adds below, then re-walk this commit and measure whether prewalkOverlap rises above 4 — a rise confirms the reef currently under-recognizes guard-doctrine boilerplate as its own recurring class rather than diffuse noise · Ablation-test extracting the connect-note-rules.mjs rationale comment into docs/outreach/ (per code_rewrite) on a scratch copy of this commit, re-walk, and measure whether offPct falls below 15 once the doctrine-narrative mass is out of the scripts/ file — this tests whether the code_rewrite alone (without splitting commits) is sufficient

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

    A commit that reads as one deliverable but ships two (content + shared-infra fix) is exactly the ambiguity an underwriter prices as unbounded scope-creep risk in this lane; restoring premium means the split-commit practice becomes visible in the log, not just argued for in a memo.

    Open the signed attestation →
  141. 2026-09-08 · 📐 architect · offPct 40 · structural

    feat(vna): C16 — the six percentages computed, and UNMEASURED is a first-class answer

    Why it left the lane: The diff's actual mass is executable instrumentation — `scripts/vna/six-pct.mjs`, `tests/vna/six-pct.test.mjs`, `docs/specs/vna/cycles.ndjson` — built from functions like `runGuard()`, `guardSet()`, `axisAntiRegressor()`, `git rev-list`, `execFileSync`, and vocabulary lifted straight from CLAUDE.md's operations-register HARD RULEs ("guard-seen-to-fail", "prospective-only", "AXIOM 1 W4", "@guard tests/vna/six-pct.test.mjs"). None of that is Strategy-axis prose; it is Operations-axis tooling and test-harness vocabulary. The reef placed the reality mass there because that is where the words actually live, while the intent lane (docs/strategy/, docs/01-business/strategy/) has no equivalent density of guard/test/ledger terms to pull it back.

    The semantic pull: Identifiers and comments like `UNMEASURED`, `runGuard`, `guardSet`, `git rev-list <startHead>..HEAD`, `guard-seen-to-fail.ndjson`, and the `@guard tests/vna/six-pct.test.mjs` header are dense, repeated, code-shaped tokens — exactly the corpus the reef's gzip-NCD matches against Operations-lane material (C-axis: Operations.Grid/Operations.Loop), not against the architect room's Strategy-axis (A-axis) owned surface.

    Intent–reality gap: The commit message frames this as the architect room finally computing its own grading axes — a strategic/self-review act. The receipt shows 40% of the lit reality mass landed outside the claimed lane, because the actual artifact is a script + test + ndjson state file, and none of `scripts/vna/**`, `tests/vna/**`, `docs/specs/vna/**` appears in architect's owned-surface glob at all.

    • Edit `.workflow/rooms/architect.html`: add `scripts/vna/**`, `tests/vna/**`, `docs/specs/vna/**` to the room's Owned file/dir surface block.
    • Audit the other 8 room HTML files for the same class of gap — any active `scripts/<x>/` or `tests/<x>/` directory with recent commits and no claiming glob.
    • Ship the unified `room-drift-<room>-check.sh` that ff09774e5 found independently spec'd by three rooms (architect, navigator, laboratory) and never unified — this event is the same root cause recurring a fourth time.
    • Add `tests/ops/vna-surface-is-claimed.test.mjs` asserting `scripts/vna/**`, `tests/vna/**`, `docs/specs/vna/**` resolve to at least one room's owned-surface glob.
    • Re-run the room's offPct trend after the glob lands to confirm this specific 210-events/14-days pattern actually drops.

    What we learned: The prior lessons for this room were about Originating-Terminal/Relevant-Rooms *divergence* being sanctioned-but-unhandled. This event is a different failure underneath the same symptom: an entire active subsystem (`scripts/vna`, `tests/vna`, `docs/specs/vna`) has NO owning room glob at all — not a divergence between two claimed lanes, but zero claimed lane. The room-owned-surface globs were drawn before the VNA cockpit existed as its own directory tree and were never updated as it grew, so every commit that ships VNA instrumentation from architect reads as out-of-lane by construction, at whatever volume architect ships it — which is why this single room alone carries 210 out-of-lane events in 14 days.

    The missing guard (the deliverable): tests/ops/vna-surface-is-claimed.test.mjs — asserts `scripts/vna/**`, `tests/vna/**`, `docs/specs/vna/**` (and, generalized, any `scripts/<x>/`+`tests/<x>/` pair with commits in the last 30 days) appear in at least one room's Owned file/dir surface list in `.workflow/rooms/*.html`; fails loudly on an unclaimed active directory instead of letting the drift receipt silently re-flag it commit after commit.

    Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. walkTruncated=true with litIntent/litReality close (108/123) suggests the walk hit its depth/time budget before fully resolving a mixed doc+code+test commit. Adjustment: raise --max-depth (or the time budget) specifically when a commit's changed-file set spans docs/specs + scripts + tests, so truncation doesn't cut the walk off mid-resolution and inflate offPct. Experiments: After the glob fix lands, re-run the pipeline against sha 91837488f4's own diff and measure whether offPct drops toward the 15% threshold with no other change — isolates the config fix's effect. · Seed the intent-lane reef corpus with `docs/specs/vna/SPEC-VNA-COCKPIT.md`'s own text (the §20 six-percentages spec this commit implements) and measure whether prewalkOverlap rises above 4 for VNA-tagged commits. · Ablation-test raising --max-depth by one ply specifically on commits whose changed-file set spans 3+ distinct top-level directories (docs/ + scripts/ + tests/), and measure walkTruncated rate before/after.

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

    This is a mis-set boundary, not genuine cross-lane behavior, so repeatedly pricing it as high-severity drift (210 events/14 days) would overcharge a benign, structurally-repeated pattern; premium is restored the moment the owned-surface glob claims scripts/vna+tests/vna+docs/specs/vna and the coverage guard ships, so future receipts measure real drift rather than an unclaimed directory.

    Open the signed attestation →
  142. 2026-09-08 · 📐 architect · offPct 21 · structural

    measure(vna): the perturbation ladder — the truth goes at 100% corruption, and the margin sees it coming

    Why it left the lane: The diff's entire mass is scripts/vna/measure-perturb.mjs and data/vna/perturbation-ladder.json — a gzip-NCD statistics experiment (corrupt(), randomBaseline(), placeWithMargin(), the 2σ chance-band math) that never touches architect's owned globs (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, CLAUDE.md). The receipt's lane classifier keys off Originating-Terminal alone (per lesson ff09774e5), so a laboratory-shaped commit (correctly listing 🧪 laboratory first in Relevant-Rooms) got measured against architect's docs-lane and 21% of the lit reality mass landed outside it — because it was never going to be inside it.

    The semantic pull: Terms like 'randomBaseline', 'gz(q + \'\n\' + full[j])', 'meanCheb', 'chanceCeiling', '2-sigma band on the baseline proportion' are dense empirical-measurement vocabulary that gravitates toward a laboratory/operations coordinate, not architect's strategy-doc vocabulary — there is no string in this diff (no docs/strategy/, no CLAUDE.md prose, no .workflow/rooms/*.html) that could have anchored the walk inside architect's lane in the first place.

    Intent–reality gap: The commit message claims a calibration result ('ABSTENTION IS BUILDABLE', 'SUGGESTED MARGIN FLOOR') under Originating-Terminal: 📐 architect, but the receipt measured reality landing entirely in scripts/vna/ + data/vna/ — laboratory-owned experimental surface the architect lane was never fenced to cover.

    • Ship one unified `room-drift-check.mjs`/`.sh` (replacing the three independently-spec'd, unshipped versions named in ff09774e5) keyed on Relevant-Rooms/glob-match
    • Add `scripts/vna/**` and `data/vna/**` to 🧪 laboratory's owned-surface glob in its `.workflow/rooms/*.html` entry
    • Update CLAUDE.md COMMIT MESSAGE STRUCTURE with the detector-classification rule above
    • Add a guard test asserting a synthetic commit with Originating-Terminal=X, Relevant-Rooms=[Y], diff matching Y's glob classifies as Y not X
    • Audit all 9 rooms' owned-surface globs for coverage of `scripts/<room-topic>/**` and `data/<room-topic>/**` experiment subdirectories generally, not just laboratory

    What we learned: A diagnosis recorded in the lesson ledger with a measured improvement (ff09774e5: 20→14) is not the same as a shipped fix — the same Originating-Terminal-only classifier bug is still live 193 out-of-lane events later for this room alone, and three separate rooms independently rediscovered and specified the identical unifying script without any of them completing it, because the fix touches shared pipeline infrastructure that sits outside every individual room's owned-surface — nobody's lane includes 'fix the detector', so nobody's commit ever closes it.

    The missing guard (the deliverable): tests/pmu-simulator/room-lane-uses-relevant-rooms.test.mjs — feed the classifier a synthetic commit with Originating-Terminal='architect', Relevant-Rooms=['laboratory'], and a diff whose files match only laboratory's owned glob; assert the computed lane/offPct is measured against laboratory, not architect. Currently absent, which is why the same root cause has been rediscovered three times with zero guard ever added.

    Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. 131/144 cells lit (91%) off a 262-line, 2-file diff is high saturation for a commit this small — the walk is spreading nearly lattice-wide rather than staying localized, which flattens its power to discriminate in-lane from out-of-lane. Adjustment: cap `--max-depth` for diffs under ~300 changed lines so litReality stays proportional to diff size instead of saturating toward the full 144. Experiments: Re-seed this exact commit's reef placement using Relevant-Rooms (laboratory, architect, operator) instead of Originating-Terminal-only, and measure whether offPct drops below 15 — a direct falsifiable test of the mistagging hypothesis · Cap walk max-depth for commits with diff size <300 changed lines across the next 20 commits and measure whether mean litIntent/litReality drops proportionally while offPct becomes more discriminating (variance increases) rather than saturating near 130-131 every time · Track prewalkOverlap across the last N architect-tagged commits whose Relevant-Rooms lists a different first room; if prewalkOverlap is systematically ≤5 in that subset, use it as a cheap pre-filter that flags likely-mistagged commits before the walk runs

    Measured outcome (deterministic, not self-graded): room mean offPct 19→17 over 10 commits since · dictionary ablation saved 1307B

    A structurally mistagged lane inflates this room's apparent loss ratio without any real behavioral fault — architect now shows 193 out-of-lane events it didn't cause — so premium on this lane stays artificially high until the detector is repointed at Relevant-Rooms/glob-match, at which point the true (likely much lower) architect drift rate becomes visible and insurable.

    Open the signed attestation →
  143. 2026-09-08 · 📐 architect · offPct 29 · mistagged

    refactor(vscode): it is thetacog-mcp by ThetaDriven Inc, not the placeholder it replaced

    Why it left the lane: The diff is dominated by build/packaging/tooling vocabulary — 'tsc', 'npm install', 'npx @vscode/vsce package', '--install-extension', 'webview', 'single-flight + one queued re-run', '1500 ms trailing debounce', the 13-command manifest table, and thirteen 'guard: tests/vna/*.test.mjs' citations — none of which is Strategy prose. That vocabulary pulls hard into C1.Operations.Grid (build/infra), C2.Operations.Loop (the test-guard loop), C3.Operations.Flow (the cockpit.mjs pipeline), B1.Tactics.Speed (compile/velocity), and B2.Tactics.Deal (the .vsix packaging exchange) — exactly the 31 red cells the receipt encircled, none inside architect's actual owned surface (docs/strategy/, docs/03-product/, docs/01-business/strategy/, CLAUDE.md, .workflow/rooms/*.html).

    The semantic pull: Every changed file — packages/thetacog-mcp-vscode/{README.md,package.json,src/extension.ts,icon.png,LICENSE}, scripts/vna/howto-ide.mjs, docs/specs/vna/{HOWTO-IDE.html,SPEC-VNA-COCKPIT.md}, tests/vna/*.test.mjs, .claude/skills/steer/SKILL.md — sits outside architect's owned-surface glob list entirely; it is builder/operations terrain (extension code, test guards, IDE spec pages), correctly named in the commit's own Relevant-Rooms trailer as 🔨 builder, but the receipt's offPct classified the whole event against Originating-Terminal (📐 architect) instead.

    Intent–reality gap: The commit message and its Relevant-Rooms trailer correctly declare this as builder/operator terrain (extension packaging, VNA cockpit wiring, guard tests); the receipt nonetheless measured 100% off-lane against architect because it classifies the intent lane from Originating-Terminal alone, ignoring the trailer that already names the correct room.

    • Add packages/thetacog-mcp-vscode/**, scripts/vna/**, tests/vna/**, docs/specs/vna/** explicitly to 🔨 builder's owned-surface glob in .workflow/rooms/builder.html if not already covered, so glob-ownership attribution resolves this class automatically.
    • Ship the glob-ownership room-lane classifier (see code_rewrite) as its own testable function, not inline in the receipt emitter.
    • Add the CLAUDE.md sentence from spec_rewrite in the same commit as the code fix (COMMIT MESSAGE STRUCTURE section).
    • Re-run this exact commit (96ab70462) through the new classifier and confirm offPct drops when lane=builder instead of lane=architect.
    • Check .workflow/rooms/navigator.html and .workflow/rooms/laboratory.html for the two other independently-spec'd `room-drift-<room>-check.sh` drafts named in lesson ff09774e5 — reconcile into the one shipped classifier rather than a fourth parallel spec.
    • Add a guard asserting the receipt reads Relevant-Rooms when Originating-Terminal has zero glob overlap (see missing_guard).

    What we learned: This is the same gap ff09774e5 diagnosed (detector uses Originating-Terminal alone; three rooms independently spec'd the identical fix and none shipped it) recurring six commits later with offPct back up to 29 from the 20→14 trend that lesson reported — proving a diagnosis captured only as a spec, never wired into the running receipt code, doesn't survive; the fix has to land as the code_rewrite above, in this pass, not a fourth proposal.

    The missing guard (the deliverable): tests/pmu-simulator/room-lane-uses-glob-ownership.test.mjs — feed the classifier a synthetic commit whose Originating-Terminal owns none of the changed files but whose Relevant-Rooms trailer names a room that owns all of them, and assert the emitted lane/offPct is computed against the Relevant-Room, never Originating-Terminal; a second subtest asserts Originating-Terminal still wins when its own glob overlap is nonzero (so the fix doesn't overcorrect).

    Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Oversaturated at shallow depth — 94-98% of the lattice lit at only 2 plies (walkTruncated=true) means the ballistic cascade hit its depth/time budget while still broadening rather than narrowing. Concrete adjustment: lower the per-ply branching/lit-mass floor so early plies discriminate before the budget is spent, or raise --max-depth so the walk has room to converge instead of truncating mid-spread; re-run this commit's walk at --max-depth+2 and compare fill% — if it drops toward the intent lane, saturation was a budget artifact, not a genuine broad-ownership signal. Experiments: Reclassify this commit's lane input from Originating-Terminal (architect) to the Relevant-Rooms-derived room (builder) and re-run the receipt; measure whether offPct falls below the 15 threshold — directly tests the mistagged hypothesis end to end. · Re-run node scripts/vna/measure-aperture.mjs style seed-overlap test with the diff's own repeated vocabulary ('thetacog-mcp-vscode', 'vsix', 'tsc', 'compile') added to the reef dictionary vs without, and measure whether prewalkOverlap rises above 6. · Re-run the same commit's ballistic walk at --max-depth values above and below the current truncation point and compare litIntent/litReality fill% — if fill% stays near 94-98% regardless of depth, the broad spread is a genuine wide-touching refactor signal; if it drops at higher depth, walkTruncated=true was suppressing convergence.

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

    A room repeatedly billed for another room's correctly-declared work inflates that lane's measured loss ratio with false claims, which the underwriting math cannot distinguish from real drift until the classifier is fixed to read Relevant-Rooms by glob ownership rather than Originating-Terminal alone.

    Open the signed attestation →
  144. 2026-09-08 · 📐 architect · offPct 41

    feat(vna): all three panels encircle through the one door — and an intent ring is not a drift ring

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

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

    Open the signed attestation →
  145. 2026-09-08 · 🧭 navigator · offPct 48 · structural

    ops(navigator): the venue is settled — and three shipped invites said "locked" about a window the ledger called pending

    Why it left the lane: The diff is 100% prose: a 206-line ops decision memo (venue settlement, pricing legs, phone-call talking points, personnel routing for Adam/Reagan/Loveland) plus a 370-line test file. The commit claims the 🧭 navigator lane (route-finding/decision-settling), but the reef's ballistic walk lit heavily on B3.Tactics.Signal (×11), C1.Operations.Grid (×6), C2.Operations.Loop (×4) and C3.Operations.Flow (×4) — coordinates that read 'topology/velocity/throughput/exchange'. The pull is the operational vocabulary itself: 'the 7:00-7:30 no-interruption block', 'elastic 5-to-20', 'run of show', 'the movable wall', 'contract' — these are OPERATIONS.GRID/LOOP/FLOW terms (venue logistics, headcount elasticity, sequencing) not TACTICS.SIGNAL-as-intended (routing/decision-comparison). The doc also names concrete outbound comms mechanics — CRO routing, Marsh don't-list collision, node/key/vector protocol — which is squarely B3.Tactics.Signal territory (send/dispatch discipline), so the mass legitimately spans both the room's claimed decision-lane AND the operational logistics + comms-signal lanes the content actually describes.

    The semantic pull: Strings like 'the 7:00-7:30 block gets HARDER in a restaurant private room (no movable wall, no AC he controls, a house bar)', 'the elastic 5-to-20 disappears at contract', 'run of show the staff needs to protect the block', and 'seating plan' are Operations.Grid/Loop/Flow terms (physical layout, sequencing, throughput of a live event) — they anchor the 25 unlisted reds beyond the +6 shown. Meanwhile 'three shipped invites said locked', 'node/key/vector protocol', 'Tom Reagan... unapproached until Paul concedes', and the guard name itself (locked-window-is-a-booked-window) are B3.Tactics.Signal (send/claim discipline) — the strongest single coordinate (×11) — which the commit message correctly foregrounds but the ops-memo body dilutes across three other lanes.

    Intent–reality gap: The commit claims a route-finding/decision-settling act ('settle the venue decision, price sophistication') scoped to 🧭 navigator, but the content it produced is inseparably an event-logistics spec (Operations.Grid/Loop/Flow: room layout, headcount elasticity, run-of-show) bundled with a comms-signal guard (B3.Tactics.Signal: locked-claim discipline) — the receipt correctly measures that the reality mass is NOT concentrated in the navigator's own coordinate, it is spread across the operational and signal lanes the memo's substance actually belongs to.

    • Split docs/ops/2026-09-08-venue-settled-rockledge.md at the 'What sophistication buys' section boundary — the decision half (Rockledge settled, falsifier, 3-legs-computed) stays in navigator's docs/ops/; extract the run-of-show/seating/high-table operational spec into a new docs/ops/event-runbooks/ path owned by 🎩 operator.
    • Move tests/comms/locked-window-is-a-booked-window.test.mjs's DECLARATION (not the test file itself) into a cross-reference note in docs/ops/event-script-2026-08-26.md so the ☕ network comms-guard lineage is discoverable from the protocol doc, not only from this one navigator memo.
    • Add an explicit 'Owned by' header line to docs/ops/2026-09-08-venue-settled-rockledge.md naming which sections are navigator-decision vs operator-logistics vs network-guard, so a future grep can partition it without re-reading 206 lines.
    • Update .workflow/rooms/*.html for 🧭 navigator to note that ops(navigator) commits producing event-logistics content should file the operational half under 🎩 operator's owned surface going forward.
    • Cross-link this file from docs/ops/2026-09-07-dinner-anchored-on-marsh.md's companion note so the two-file decision trail stays navigable without needing the lens to reconstruct it.

    What we learned: A 'settle the decision' ops-memo commit is structurally NOT single-lane even when its title names one room: the act of settling a venue decision naturally drags in the operational spec (what the room needs to run well) and the comms-guard (how the decision gets truthfully claimed downstream) as necessary appendices, so a decision memo's reality mass will always spread across Operations.* and B3.Tactics.Signal regardless of which room authored it — this is the first navigator event whose content is a full runbook+guard bundle rather than a pure comparison/decision doc.

    The missing guard (the deliverable): A pre-commit advisory (WARN-only, per the hooks-never-block rule) that flags an 'ops(<room>)' commit whose diff contains BOTH a docs/ops/*.md decision memo AND a tests/**/*.test.mjs guard file, suggesting the Story trailer explicitly name the guard's owning room (inferred from the test file's own header/pathname) rather than defaulting to the memo's room — this would have caught that the guard's natural home (☕ network, per the guard's own witness citing sent/ campaign bodies) was never named as a Relevant-Room despite being the single largest content block after the decision itself.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. litIntent (141) and litReality (140) are within 1 of each other and both near the 144-cell ceiling — this reads as SATURATED, not shallow: the walk lit almost the entire lattice on both sides, which for a 576-line two-file diff (one long prose doc + one long test file) is plausible fan-out but leaves little discriminating power between intent and reality lanes since both sides are nearly fully lit. Concrete adjustment: cap the walk's max-depth lower for docs-heavy commits (docsOnly=false here despite being 97% prose) so a long single-topic memo doesn't saturate 140+/144 cells and instead concentrates in fewer, more diagnostic coordinates. Experiments: Run this same commit through the walk with --max-depth reduced by one ply and compare litIntent/litReality — if it drops from ~140 to something like 60-80 while preserving the same top-pulled coordinates (B3,C1,C2,C3), that confirms saturation was a depth artifact and lower depth gives sharper diagnosis for prose-heavy commits. · Ablate prewalkOverlap by re-seeding the reef with only the 5 domain rules (excluding the 190-reef corpus) and re-measure offPct — if offPct stays near 48%, the drift signal is genuinely walk-driven (confirming the 70/30 split above); if it drops sharply, the reef seed was doing more work than estimated. · Add a docsOnly heuristic override: when diff is >95% .md/.mdx by line count (as here: 206 md lines vs 0 non-test code lines), tag ingestSuspect=true or flag docsOnly=true explicitly rather than false, since this commit's reality corpus is pure prose+test-declarations with zero implementation code, which may be mis-scored as false under the current classifier.

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

    This event does not raise loss-ratio risk on its own — the underlying content (a real decision + a real guard) is sound and well-evidenced — but repeated single-lane Story-trailer claims on structurally multi-lane ops memos erode the receipt's diagnostic value for this room; restoring premium means the navigator room's future decision-memos either stay scoped to the decision alone or explicitly declare their multi-lane spread in the trailer.

    Open the signed attestation →
  146. 2026-09-08 · 🎤 voice · offPct 61

    feat(event-plan): detect two sealed cards claiming the same clock

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

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

    Open the signed attestation →
  147. 2026-09-08 · 📐 architect · offPct 25

    comms(external): rewrite the infra ask around what forwards, not what flatters

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

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

    Open the signed attestation →
  148. 2026-09-08 · ☕ network · offPct 25 · mistagged

    strategy(network): 35 for the reinsurers — self-guided, self-attested, badge-published, and the credential string counsel deleted still shipping on 13 surfaces

    Why it left the lane: The commit message names ☕ network's owned surface (docs/outreach/, scripts/outreach/, battle-cards) but the actual diff is a single strategy memo under docs/01-business/ plus a legal-perimeter guard test under tests/legal/ — neither path is in network's glob. The prose itself pulls toward B3.Tactics.Signal and C1.Operations.Grid: 'CATO certification', 'RL-5', 'RL-7', 'securities guard', 'FORBIDDEN regex', 'founding seat' are legal/compliance-signal vocabulary and guard-topology vocabulary, not outreach-campaign vocabulary. The walk lit reality mass at C1 (Operations.Grid — the guard/test lattice) and B3 (Tactics.Signal — the compliance/legal-perimeter detection work), 28 red regions, zero green, because the diff literally IS a new guard file plus a legal-strategy doc, not a send/campaign/battle-card artifact.

    The semantic pull: Strings like 'securities guard', 'FORBIDDEN regex', 'tests/legal/no-investment-contract-language.test.js', 'stripComments()', 'GUARDED', and 'a new carrier surface is red' are pure Operations.Grid (guard/topology construction) vocabulary; 'RL-5', 'RL-7', 'counsel', 'liability shift', 'reinsurer', 'underwriter' are Tactics.Signal (compliance-signal) vocabulary. Nothing in the diff touches docs/outreach/, scripts/outreach/, or any battle-card — the surface network actually owns.

    Intent–reality gap: The commit message and Story trailer both claim ☕ network as the originating/relevant room for what is explicitly a legal-perimeter/compliance finding ('it landed as a legal-perimeter finding, which is the right place for it') — the commit's own prose concedes the content isn't outreach work while the room tag still says network.

    • Add docs/01-business/**/*.md and tests/legal/**/*.test.mjs to 🔒 vault's owned-surface glob in .workflow/rooms/vault.html (or wherever owned surfaces are declared) if not already present
    • Confirm tests/legal/no-investment-contract-language.test.js's own file header lists its lesson-of-recurrence explicitly (it already does per the diff, per the commit's own note — verify it's the SAME string this event references, not a stale copy)
    • When the point-2 counsel question resolves (credential rename), land the 13-file guard-list extension + rename in one commit tagged 🔒 vault, not ☕ network
    • Add a commit-trailer lint that flags Relevant-Rooms not matching any touched path's owning glob (warn-only, per this repo's no-fault-commit convention)

    What we learned: A commit's Story trailer can correctly diagnose its own mistagging in prose ('it landed as a legal-perimeter finding, which is the right place for it') while the machine-readable Originating-Terminal/Relevant-Rooms trailers still carry the room the WORK WAS DELEGATED FROM rather than the room the WORK ACTUALLY LANDED IN — the trailer format has no field for 'this drifted rooms mid-flight,' so the drift is legible to a human reader and invisible to the receipt pipeline that only reads the trailer.

    The missing guard (the deliverable): A pre-commit (warn-only) check comparing the trailer's Relevant-Rooms room-emoji set against the owned-surface globs actually touched by the diff's file list, printing a mismatch line — same mechanism as `scripts/ops/rules-for.mjs` but keyed on room ownership instead of rule text.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Right-sized on ply count (2) given fill 0.85% (well under the 70% saturation ceiling), but the 28-red/0-green/0-amber split with zero in-lane hits suggests the walk terminated before finding ANY overlap — worth trying --max-depth+1 once to confirm the zero-overlap result is real exhaustion and not premature truncation (walkTruncated=false says it wasn't, but a probe should confirm this at a deeper ply on a similar mistagged-room case). Experiments: Re-run this exact commit's walk at --max-depth 3 and confirm litReality count is stable (not still climbing) — validates walkTruncated=false isn't hiding an early stop · Build a small labeled corpus of 5-10 known-mistagged commits (trailer room ≠ touched-path owning room) and measure whether offPct alone predicts mistagging vs genuine cross-lane work — this event needs boundary_failure ground truth to calibrate the guard threshold · Test whether adding 'RL-5'/'RL-7'/'FORBIDDEN regex' as reef vocabulary anchored to vault's lane (rather than leaving them unweighted) sharpens the C1/B3 pull earlier in the walk, reducing plies needed to reach the same verdict

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

    A legal-perimeter finding filed under the outreach room's premium pool inflates network's apparent loss-ratio (12 out-of-lane events in 14 days) with work it never generated the risk for; restoring the trailer to 🔒 vault moves the loss back to the room whose actual guard-surface produced it, and network's true breach rate for its OWN lane (campaign sends, battle cards) becomes visible again.

    Open the signed attestation →
  149. 2026-09-08 · ☕ network · offPct 28 · structural

    refactor(outreach): extract the connect-note rule set on its first duplication

    Why it left the lane: The commit's prose (message + code comments) is dominated by generic test-engineering meta-narrative — 'extract...on its first duplication', 'node --test would otherwise execute...a second time...a subtest that runs twice is a subtest whose failures cannot be attributed', 'UNTRACKED, built, passing, and invisible to every other session', '21/21 green before and after' — rather than outreach-domain vocabulary. This same phrasing pattern (extraction rationale, untracked-artifact caution, test-attribution reasoning) recurs verbatim-in-spirit across many rooms' refactor commits, so the ballistic walk correctly places its mass on the process coordinates B1/B2×C1/C2/C3 (Tactics.Speed/Deal × Operations.Grid/Loop/Flow — topology, velocity, throughput, exchange) rather than staying on B3.Tactics.Signal where the actual deliverable (four LinkedIn connect notes) lives.

    The semantic pull: 'extract the connect-note rule set on its first duplication' and 'lived inside its test file; they now live in scripts/outreach/connect-note-rules.mjs' pull toward C1.Operations.Grid (topology/restructuring). 'node --test would otherwise execute the bf-5190 assertions a second time...a subtest that runs twice is a subtest whose failures cannot be attributed' pulls toward C2.Operations.Loop (iteration/execution semantics). 'the bf-5190 suite is 21/21 green before and after' and 'Committing the guard without its subject would have left a red test on any fresh clone' pull toward C3.Operations.Flow (pass/fail throughput). Inside connect-note-rules.mjs, identifiers like MECHANISM, PROMISE_VERB, MEASURE_VERB, NEGATED, SELF_SUPERLATIVE and comments like 'EXTRACTED, not invented' and 'computes the construct, not the token' read as generic rule-engine/exchange vocabulary (B2.Tactics.Deal), not messaging vocabulary — even though every regex they define is about LinkedIn connect notes.

    Intent–reality gap: The commit claims to be an outreach-lane change ('refactor(outreach): extract the connect-note rule set') and its files sit correctly under docs/outreach/ and scripts/outreach/, but the receipt measures where the WORDS landed on the 144-lattice, and most of those words describe test-suite mechanics and extraction discipline rather than the connect-note content itself — so intent (Signal) and reality (Grid/Loop/Flow/Deal) diverge even though the file-path lane claim is correct.

    • Rewrite b2821b0e5's would-be-future-sibling commits: apply the domain-first message convention to any further connect-note-rules.mjs edits
    • Add a 'domain-lead' clause to CLAUDE.md's COMMIT MESSAGE STRUCTURE section for room-owned-surface commits
    • Add the one-line domain banner atop scripts/outreach/connect-note-rules.mjs (see code_rewrite)
    • Re-render this commit's receipt after the message/banner edits are staged (test-only, not a real amend) to confirm offPct drops before relying on the pattern elsewhere
    • Cross-reference f748e0b17 (this room's prior lesson) — both events show implementation/prose mass sitting in generic infra vocabulary while the file-path lane is correct; consider one shared fix rather than two

    What we learned: CLAUDE.md's own repo-wide boilerplate idioms — 'extract on first duplication', 'X is, for everybody else, not built', 'a subtest that runs twice is a subtest whose failures cannot be attributed' — are reused verbatim-in-spirit across rooms specifically BECAUSE this file mandates them, which means any room's refactor commit inherits the same Operations/Tactics-process semantic signature regardless of the domain the refactor serves. The lane-claim problem isn't confined to one tool's implementation mass (f748e0b17) — it's baked into the house style for how extraction commits are WRITTEN, so it will keep recurring across every room that follows the 'extract on first duplication' rule correctly.

    The missing guard (the deliverable): A warn-only pre-commit check (extends hooks/pre-commit) that, for commits touching a room's owned-surface glob, flags when the FIRST 40 words of the commit body contain zero room-magnet keywords (for ☕ network: LinkedIn, connect, outreach, note, spearfish, contract owner, room-key nouns from data/rooms.json) but do contain ≥2 generic-refactor idiom phrases (extract, duplication, untracked, subtest, node --test, attributed) — surfacing exactly the domain-buried-under-process-narrative pattern this event is.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. litReality (140) modestly exceeds litIntent (131) at a shallow 2-ply depth with fill 0.98% — the walk isn't saturated or starved, it's right-sized in depth but its SEED is picking up repo-wide generic engineering tokens (regex, subtest, untracked, clone) that propagate into adjacent Operations/Deal cells regardless of ply count. Adjustment: don't deepen the walk — downweight the seed's generic-idiom tokens (see reef_tightening #1) so the same 2-ply spread lands tighter. Experiments: IDF-downweight repo-wide idiom tokens (regex, subtest, duplication, untracked, attributed, findings) in the reef seed, then re-render this commit's and f748e0b17's receipts and check whether offPct drops on both · Add the CLAUDE.md 'extract on first duplication' phrase family as a recognized boilerplate idiom (see compression_dictionary_adds) so the walk treats it as structural scaffolding rather than content mass, then re-run the ablation · Recompute this commit's receipt with ONLY the commit message rewritten per spec_rewrite (code diff held constant) to isolate how much of the 28 points of offPct is attributable to message-prose seeding vs code-body seeding

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

    An out-of-lane refactor commit inside a correctly-owned file surface reads as noise rather than defect, so it nudges this lane's loss-ratio only if it recurs unaddressed — restoring it is one guard (the domain-lead message check) plus one dictionary ablation, both cheap and already scoped above.

    Open the signed attestation →
  150. 2026-09-08 · 🛰️ unattributed · offPct 19 · structural

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

    Why it left the lane: The diff carries two unrelated data domains under one message. data/bookclub/highscore.json + public/bookclub/editions/*.html + public/bookclub/highscore.html are genuine book-club vocabulary (matches the claimed lane). But src/data/render-ticker.json is fully rewritten with 100 entries like {"d":"marsh.com","r":70,"t":85.3}, {"d":"luxcapital.com","t":101}, {"d":"nsigroup.org","t":110.9}, plus new rows fox.com/dubailand.gov.ae/pacemetals.com — outreach/investor/insurance render-trend telemetry, zero book-club vocabulary. That second block is what dragged litReality to 140 against litIntent's 81: the walk fans out across capital/exchange/render-trend terms the commit message never mentions.

    The semantic pull: Literal strings pulling off-lane: the domain list itself (munichre.com, aig.com, hiscox.com, luxcapital.com, marsh.com — insurance/capital nouns) and the trend-delta shape ("t":98.8, "t":162.1, "t":248.4) read as Deal/Exchange and Fund vocabulary, not book-club engagement vocabulary. Meanwhile the commit message's only nouns are 'board', 'edition pages', 'three-tier instrument', 'heat' — a much narrower, book-club-scoped set, which is why walksIntent stayed at 81 while walksReality doubled toward 140.

    Intent–reality gap: The message claims a single-script, single-domain regeneration ('Board + edition pages regenerate from the three-tier instrument... exact numbers stay in data/bookclub/highscore.json') but the receipt measured a second, undeclared data domain (src/data/render-ticker.json, a global outreach render-trend feed) fully rewritten in the same commit.

    • grep -rl 'highscore-publish.sh' scripts/controller — confirm the wrapper's staging call and whether it's `git add -A`
    • grep -rl 'render-ticker.json' scripts/ — find the script that owns this file and confirm it's unrelated to bookclub
    • split the controller's staging into two `git add <paths>` + `git commit` calls per the code_rewrite above
    • add an Originating-Terminal/Relevant-Rooms trailer generator to the bookclub-daily controller's auto-commits so automated commits stop landing in 🛰️ unattributed by default
    • add owned-surface glob entries for data/bookclub/** + public/bookclub/** (bookclub room) and src/data/render-ticker.json (outreach/leverage room) so ownership stops overlapping
    • add the guard named in missing_guard to CI/pre-commit

    What we learned: This is a FOURTH distinct mechanism accumulating under the '🛰️ unattributed' label (prior three: blank-trailer-on-delegated-commit, full-reef-rewrite-by-harvest, malformed-certainty-1.00-interlink) — here the root cause is co-scheduled auto-commit bundling: two independently-scoped automated regenerations (book-club highscore board, global outreach render-ticker) that happen to fire in the same controller tick get swept into one commit by a blanket `git add -A`, so the commit message (authored for one stage) is silently incomplete about the diff's second stage. The receipt caught what the message-author never knew it needed to disclose.

    The missing guard (the deliverable): A pre-commit check that, when a commit message attributes itself to a single automation script ('Automated by scripts/<x>.sh'), asserts every staged path is inside that script's declared owned-surface glob (registered once per script in a small manifest, e.g. `scripts/bookclub/highscore-publish.sh` → `data/bookclub/**, public/bookclub/**`) — any staged path outside the glob (like src/data/render-ticker.json here) fails the commit with a message naming the offending path, forcing a split commit.

    Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Right-sized on ply budget (both sides fully saturate, no truncation — walkTruncated=false) but the CORPUS is asymmetric: reality's corpus (render-ticker.json's 100 domains) is simply wider than intent's (the bookclub message's vocabulary), so full saturation on both sides still yields a 1.73x lit-cell gap. Adjustment: when litReality/litIntent ratio exceeds ~1.5x at full saturation, re-run intent's walk at --max-depth+1 to check whether the gap is a genuine corpus mismatch (as here) or just an under-budgeted intent side. Experiments: Ablation: recompute this commit's receipt with src/data/render-ticker.json excluded from the reality corpus and confirm offPct drops below 15 — proves the ticker file is the actual driver, not book-club content. · Corpus experiment: suppress high-entropy unique domain-name tokens (marsh.com, luxcapital.com, etc.) as stopwords in the reality corpus for git-discipline/bookclub lanes and measure whether litReality shrinks toward litIntent without losing legitimate book-club signal. · Leading-indicator experiment: track prewalkOverlap across the last 20 '🛰️ unattributed' commits and test whether prewalkOverlap<10 predicts a to-be-mistagged/bundled commit before the full walk runs, as a cheap early warning.

    A recurring co-scheduled bundling defect raises this lane's loss-ratio by making every automated bookclub commit statistically likely to carry an undeclared second data domain; premium is restored once the split-commit fix + owned-surface guard land and offPct on this script pairing returns under 15 for a run of commits.

    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%