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
The interventions — why · fix · checklist
2026-09-15 · 📐 architect · offPct 47
docs(pmu): rust-pipeline spec v19 — §16 THE METER read at the null (0.263 vs 0.189, z 1.6); the two pasted syntheses graded (PMU homonym, 37.3 retracted, "bounce the wheels" forbidden); the anatomy, the floor for self-improvement, the white space (Tasks 30–33); report v19
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 20→30 over 3 commits since
Open the signed attestation →2026-09-15 · 🧪 laboratory · offPct 22
fix(ops): backpack-keepalive reads pmset -g assertions, never its pid file — on/off/status aliases, guard
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 23→7 over 4 commits since
Open the signed attestation →2026-09-15 · 🎩 operator · offPct 42
feat(pmu): THE CONTEXT QUESTION (Task 27) — a threaded row's whole-thread permutation on the row as perm_thread, the replay's arm only; measured 18 of 140 threaded (12.9 %), never pooled with the line's 3.6 %
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 26→32 over 8 commits since
Open the signed attestation →2026-09-15 · 🎤 voice · offPct 41
feat(blog): the falsifier is a door, not a dare — <BreakIt post n> wraps every "Break it" closer and lands the swing in the message spine, per post and per section
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→13 over 4 commits since
Open the signed attestation →2026-09-15 · 🎤 voice · offPct 18
content(blog): the-mud-and-the-math — the veto engine, flipped: avoidance is a line on the tape, not an erasure
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→5 over 4 commits since
Open the signed attestation →2026-09-15 · ☕ network · offPct 17 · structural
docs(comms): the bill-rule mailbox package v1 — intent vs reality for the post, the rule, the sweep and the push; emailed (id 4b4da23a)
Why it left the lane: The commit's own trailer declares Relevant-Rooms: voice, operator, vault — it never names ☕ network, yet the receipt is scored against network's owned surface. The new path docs/comms/self/packages/2026-09-15-the-bill-needs-a-tape-measure-v1.html sits outside every glob network owns (docs/outreach/, docs/crm/, data/bookclub/, docs/comms/bookclub-*) — 'comms/self/packages' is a brand-new genre no room's surface table anticipated. Meanwhile the receipt row itself carries docsOnly=true, and litIntent(132)==walksIntent(132), litReality(127)==walksReality(127) — full saturation on both sides, no truncation, no filtering — which means the lattice walk fully traversed and lit this single 47-line, one-file prose diff as if it were dense code, instead of exempting it. Two structural gaps compound: (1) nothing consumes docsOnly to skip lane scoring, (2) no room glob claims 'docs/comms/self/**'.
The semantic pull: Terms like 'mailbox package', 'intent vs reality', 'pushed to main at', 'emailed (id ...)' are comms-domain vocabulary that gzip-NCD's reef seed (prewalkOverlap=8) partially overlaps with network's comms-adjacent corpus (bookclub sends, outreach reports) even though the literal path glob doesn't match — pulling lensReality to A,A1 against a declared lensIntent of C3,A1 (laneJump=11, laneHamming=38 vs laneHammingNull=32, well above the null baseline).
Intent–reality gap: The commit claims lane voice/operator/vault (a self-reflective sensemaking package about an already-shipped post); the receipt measured it fully against ☕ network's code/outreach-surface lattice and scored 17% off that lane — a lane it was never claimed to occupy in the first place.
- Ship tests/pmu-simulator/docs-only-commit-skips-lattice.test.mjs (ask-005, now 3rd occurrence — escalate)
- Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, asked 5x — Relevant-Rooms trailer omitted the room actually scored)
- Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027 — Originating-Terminal 🎤 voice vs surface scored ☕ network)
- Add docs/comms/self/packages/** to a named room's owned-surface glob in CLAUDE.md / the room-surface config
- Audit prior docs/comms/self/* commits for the same false off-lane scoring and backfill-correct their receipts
- Run /recontext to check whether other novel doc genres (not just comms/self) are similarly unowned
What we learned: docsOnly is already computed and stamped onto every receipt row, but nothing downstream actually consumes it to short-circuit lane scoring — the flag is measured and then ignored, so a pure-prose, single-file, 47-line mailbox package gets the identical full-saturation lattice walk (litIntent==walksIntent, litReality==walksReality, zero truncation) as a dense code commit, and lands wherever its reef-corpus overlap is highest rather than being exempted or reported unmeasured.
The missing guard (the deliverable): tests/pmu-simulator/docs-only-commit-skips-lattice.test.mjs
Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Saturated, not right-sized: 100% fill on both intent and reality sides for a one-file, 47-insertion docs commit indicates the walk isn't budget-scaled to diff size. Adjustment: cap walk depth/breadth proportional to diff line-count (or gate on docsOnly) so small prose diffs get a shallow walk instead of a full lattice traversal. Experiments: Re-run post-drift-history.sh on the last 10 docsOnly=true commits with prewalkOverlap computed against ONLY the claimed room's corpus (not the global corpus) and compare offPct deltas · Add the docsOnly early-exit and measure room mean offPct over the next 20 docs-only commits vs the current 14-events/14-days baseline for ☕ network · Cap walk depth as f(diff line count) — e.g. <100 changed lines → shallow walk — and ablation-test against this event (does litIntent/litReality stop matching walksIntent/walksReality 1:1?)Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since · dictionary ablation saved 827B
A structural false-positive on docs-only, prose-only commits inflates network's loss-ratio with noise it never caused, eroding trust in its offPct signal; restoring it means the docsOnly skip and the surface-glob fix land together so the next self-comms package scores UNMEASURED or correctly-owned, not off-lane against a room that never touched it.
Open the signed attestation →2026-09-15 · 🧭 navigator · offPct 23
feat(pmu): STREAM UNTIL GRIP LATCH + the receipt index — the backward travel continues only while the next stage latches with a better grip; the thread reads one index file instead of listing 17,405 receipts
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 16→30 over 10 commits since
Open the signed attestation →2026-09-15 · 🎩 operator · offPct 28
fix(pmu-lens): the receipt's Fit line names the latch that refused — permutation (K, exceed, z) or family-wise z_required — never "below threshold" for a threshold that was met
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 26→32 over 8 commits since
Open the signed attestation →2026-09-15 · ☕ network · offPct 21
docs(outreach): the bill — four positions made untenable, corrected against the running code (text not bytes; content not hash; prices not underwrites; the demo's LLM foil named; k_E is not the null floor)
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since
Open the signed attestation →2026-09-15 · 🧪 laboratory · offPct 16 · mistagged
fix(blog): the metavector fence is never a bounce paragraph — no section exists to door it
Why it left the lane: The diff's vocabulary — isMetavectorBlock, monologueAsSidecar, friction_paragraphs, CANONICAL-GLOSSARY.md, persona, OffRamp — is blog/voice content-pipeline vocabulary living entirely in scripts/blog/bounce-offramps.mjs and tests/blog/bounce-offramps.test.mjs. The commit's own trailers disagree about who did the work: Originating-Terminal says '📐 architect', the attributed room is '🧪 laboratory', but Relevant-Rooms already names 'voice' first. None of laboratory's owned surface (CRM/swarm-comms/orchestrator/punch-list) touches scripts/blog or tests/blog, so the receipt's lensIntent=A2,C (the claimed architect/lab lane) vs lensReality=B,A1 (where the blog-vocabulary terms actually lit) is a direct read of that three-way trailer disagreement, not of bad code placement.
Intent–reality gap: The commit claims an architect/laboratory lane via its Originating-Terminal trailer, but every changed path is blog/voice content-pipeline surface, and the commit's own Relevant-Rooms list already names 'voice' — the trailers contradict each other, and the receipt measured the contradiction as a lane jump, not a code defect.
- Confirm which room's owned-surface glob currently lists scripts/blog/** + tests/blog/** and add it explicitly if missing
- Reconcile Originating-Terminal against Relevant-Rooms[0] as a documented commit-trailer convention (COMMIT MESSAGE STRUCTURE section of CLAUDE.md)
- Land tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027) rather than leaving it open a 2nd time
- Audit the 📐architect terminal's recent commits for the same terminal/surface mismatch pattern
- Cross-reference tests/ops/room-surface-coverage.test.js (ask-001) to confirm scripts/blog/** has a named owner room at all
What we learned: A commit's own trailers can internally disagree — Originating-Terminal named one room while Relevant-Rooms named a different, more accurate one in the same message — and nothing currently checks that self-consistency; the lane-jump receipt catches the geometric symptom of this contradiction but the trailer contradiction itself is invisible until you read both fields side by side.
The missing guard (the deliverable): tests/pmu-simulator/originating-terminal-matches-surface.test.mjs
Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Saturated, not shallow or truncated (walkTruncated=false, lit==walks on both sides) — the walk isn't discriminating within what it visits, only the reef's seed choice is. Adjustment: add a lit-fraction threshold below 1.0 (e.g. require litReality/walksReality < 0.9) so the walk starts differentiating strong-vs-weak hits inside the visited set instead of treating every visited cell as equally lit. Experiments: Re-seed the reef using Relevant-Rooms[0] ('voice') instead of Originating-Terminal for this commit and re-measure offPct — if it drops materially, that confirms the reef is keying off the wrong trailer field · Run the last 20 out-of-lane 🧪laboratory events through a batch check of Originating-Terminal vs Relevant-Rooms[0] agreement — measure what fraction of laboratory's 20 recent out-of-lane events are trailer-disagreement mistags vs genuine structural drift · Track litReality/walksReality (the saturation ratio) as a standing metric across the next 50 commits and correlate high-saturation events with mistagged-vs-structural boundary_failure verdictsMeasured outcome (deterministic, not self-graded): room mean offPct 20→11 over 3 commits since · dictionary ablation saved 786B
A trailer self-contradiction that the receipt has to discover geometrically is a small loss-ratio hit on the git-discipline lane; premium is restored by shipping ask-027 so the mismatch is caught at commit time instead of by post-hoc drift analysis.
Open the signed attestation →2026-09-15 · 📐 architect · offPct 56
docs(pmu): rust-pipeline spec v17 — THE NULL IS THE LINE'S: the walkers, the nonsense falsifier that failed, the two corrections, the retracted numbers (35.9 / 37.3 / 78.2 / 84.2) and the fair reading (1.4% / 0%); Task 26 the permutation ratchet
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 19→37 over 4 commits since
Open the signed attestation →2026-09-15 · 🧪 laboratory · offPct 25 · mistagged
fix(blog): S11 could never pass on a declared rank — the fence regex had no room for the emitter's own space
Why it left the lane: The diff is a one-character regex fix in scripts/blog/mdx-cook-check.sh plus a companion test in tests/blog/mdx-cook-street-mode.test.mjs — both squarely inside blog/architect territory named by the commit's own 'Relevant-Rooms: architect, voice, builder' trailer. Neither path touches laboratory's owned surface (thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, .thetacog/punch-list*). Yet the event is being tracked against room laboratory. The receipt's own numbers say this isn't a strong signal: laneHamming=22 vs laneHammingNull=20 (a shuffled-null baseline) — only 2 apart, i.e. barely above chance — and epsilon=null with saladStatus=UNMEASURED, meaning the admissibility check never completed for this commit before offPct=25 got reported. The 'pull' toward laboratory isn't a real semantic gravity from strings like 'metavector-for-post.mjs' or '{/* metavector:' — those terms have no laboratory affinity at all — it's routing noise on top of an incomplete walk.
The semantic pull: lensIntent=C,A1 (architect/blog bench) vs lensReality=C,B (laboratory's bucket) with laneJump=2 — but with laneHamming (22) sitting only 2 above the random-shuffle null (20), the jump reads as walk noise, not a real pull from diff content like 'S11', 'metavector:', or 'mdx-cook-check.sh' toward laboratory's CRM/swarm-comms concerns.
Intent–reality gap: The commit claims (and its Relevant-Rooms trailer confirms) a scoped one-line regex fix wholly inside the blog-check pipeline; the receipt instead charges 25% off-lane mass to room laboratory, a room the commit never names and whose owned surface the diff never touches — and it does so off an epsilon=null/saladStatus=UNMEASURED row, i.e. before its own admissibility gate finished.
- Add tests/pmu-simulator/mistagged-commit-does-not-inflate-offpct.test.mjs (ask-033) asserting a commit whose diff+trailers name zero overlap with a room cannot inflate that room's offPct trend
- Extend tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027) to also flag Originating-Terminal=architect being charged against room=laboratory in this same event
- Check tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010) against this sha: does 'architect, voice, builder' actually cover scripts/blog/ and tests/blog/, or is even the trailer under-scoped
- Gate room-trend aggregation on saladStatus != 'UNMEASURED' so a null-epsilon row never contributes a confident offPct to any room
- Backfill-audit laboratory's other 18 out-of-lane events from the last 14 days for the same Relevant-Rooms-vs-charged-room mismatch before treating the room's rising offPct as behavioral drift
- Document laboratory's owned-surface exclusions (no scripts/blog/**, no tests/blog/**) explicitly in the room-surface config, not just by omission
What we learned: A room's offPct trend can be inflated by attribution bugs having nothing to do with that room's actual work — this event is filed under laboratory despite the commit naming architect/voice/builder and touching zero laboratory-owned paths, and it rode on an epsilon=null/UNMEASURED admissibility row. Before any of laboratory's 19-events/14-days is read as real drift, the routing itself needs auditing; the prior three 'facts-only' interventions for this room measured flat-to-worsening offPct (23→23, 22→23) partly because they never questioned whether the events were even correctly routed to laboratory in the first place.
The missing guard (the deliverable): tests/pmu-simulator/mistagged-commit-does-not-inflate-offpct.test.mjs
Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Under-utilized: epsilon=null and saladStatus=UNMEASURED mean the walk never reached its own admissibility threshold for this commit, yet a firm offPct=25 got reported anyway. Concrete adjustment: block offPct reporting (and room-crediting) until saladStatus resolves off UNMEASURED — treat a null-epsilon commit as 'pending', not as a scored event. Experiments: Force-complete the walk budget for sha 7f2b4c514 and recompute epsilon; measurable outcome: does laneHamming move materially away from laneHammingNull=20 (e.g. by >5), or does it stay in the noise band, confirming this was never a real drift signal · Audit laboratory's 19 out-of-lane events from the last 14 days for what fraction have a Relevant-Rooms trailer that excludes 'laboratory' entirely; measurable outcome: the mistagged fraction, reportable as a single percentage · Re-run laboratory's 14-day offPct trend with all saladStatus=UNMEASURED rows excluded; measurable outcome: does the room mean offPct change materially, isolating routing noise from real driftMeasured outcome (deterministic, not self-graded): room mean offPct 20→11 over 3 commits since · dictionary ablation saved 1011B
Charging this event to laboratory's loss ratio misprices that lane on noise — a commit with zero owned-surface overlap and an unresolved admissibility check shouldn't move any room's premium; restoring accuracy means gating room-credit on Relevant-Rooms/owned-surface match and on saladStatus leaving UNMEASURED before the event counts.
Open the signed attestation →2026-09-15 · 🧪 laboratory · offPct 60
fix(milestones): no rung reads the frozen dispositions ledger — five more predicates rewired to the arbiter's mirror, and the guard now covers the whole board
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 23→7 over 4 commits since
Open the signed attestation →2026-09-15 · 🎤 voice · offPct 24
feat(blog): a cold action at every bounce point — every section carries a door that speaks to the stop; a lost door may leave the post for a source the post itself cites
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→20 over 8 commits since
Open the signed attestation →2026-09-15 · 📐 architect · offPct 50
docs(pmu): rust-pipeline spec v18 — §15 the permutation ratchet, the replay in the repo, the series (0 → 2.3 → 3.6 %, nonsense 0); the worm transcript read and answered; Gemini's three steps checked; Tasks 27–29; the Version line bumped (it sat at v9.4 through v17)
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 20→30 over 6 commits since
Open the signed attestation →2026-09-15 · 🔨 builder · offPct 30
chore(book): rebuild HTML (detached pre-push auto-heal)
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 26→45 over 3 commits since
Open the signed attestation →2026-09-15 · 🎩 operator · offPct 30
feat(pmu): THE PERMUTATION RATCHET — the same rungs re-drawn K times with only the line shuffled; the replay lives in the repo on a frozen corpus and decides the knobs (worms 4 · perm 8)
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 26→32 over 8 commits since
Open the signed attestation →2026-09-15 · 🧪 laboratory · offPct 40
feat(ops): /clamon and /clamoff — one sudo door in the keepalive script, refusal is exit 3 and touches nothing
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 23→7 over 4 commits since
Open the signed attestation →2026-09-15 · 🧪 laboratory · offPct 26
fix(iamfim): the axiom is the lightbox masthead, the knife is its stamp — "Whether is yours." in ink, "Where it landed is the tape." in red, !insurable under them with the /cta#ratchet door
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 23→7 over 4 commits since
Open the signed attestation →2026-09-15 · 🎤 voice · offPct 18 · structural
fix(blog): the bill post, round 2 — the English policy is placed, never translated (a distance, not a verdict; a thin line prints UNMEASURED; a line that cannot beat its own shuffle does not latch), and a captured meter is a declaration whose gap against the free recomputation is the row the reinsurer prices
Why it left the lane: The diff's legal-doctrine vocabulary is what drags the walk off the voice lane: 'captured meter,' 'a licensed meter is a declaration,' 'states license broken ledgers,' 'the reinsurer priced exactly that gap in January,' 'a state can license the count, not the arithmetic,' and the Persona-Intent line 'a general counsel who buys the liability argument.' That cluster of terms sits in lensReality A1,C3 (legal/compliance-doctrine cells), not in the claimed lensIntent C,C2 (voice/craft cells) the commit was filed under. Two whole new paragraphs (the captured-meter section and the policy-placed-not-translated section) are built entirely from this vocabulary, which is why 18% of the lit reality mass fell outside the declared lane.
Intent–reality gap: The commit claims a voice/craft round on an existing post ('round 2,' closing two hostile-read positions 'where they occur' in prose) — a C,C2 operation. The receipt measured the actual mass landing in A1,C3: the post had to construct real legal-doctrine argument (captured-meter licensing, reinsurer pricing, nuclear-inspector precedent) to make the rebuttal survive a GC's hostile read, which is a different lens than the one the commit was tagged under.
- Add 'Lane-Scope: <lens-codes>' to the COMMIT MESSAGE STRUCTURE trailer convention in CLAUDE.md for posts that structurally cross lanes
- Update the cook-rounds predictions.md template to require a Lane-Scope line whenever the round description contains 'hostile read' or names a legal/regulatory position
- Extend the lane-intent resolver (lane-jump-sn.mjs / laneJump per the eigen-target pipeline) to parse a Lane-Scope trailer and union it into the accepted intent lane before computing offPct
- Add a regression test asserting offPct is computed against the unioned lane, not the static room-default lane, when Lane-Scope is present
- Backfill-tag the room's 107 out-of-lane events over the last 14 days by presence of legal/regulatory vocabulary vs. genuine craft-only drift, to confirm the genre split before trusting the fix
- Note in the room's owned-surface doc that docs/05-content/blog/cook-rounds/ hostile-read rounds legitimately touch A1/C3, distinct from books/tesseract voice-only work
What we learned: The prior three interventions in this room were facts-only and offPct got WORSE after each (27→39, 21→31, 0→36) — naming the drift without changing the lane model doesn't help, and may correlate with continued drift because the room's problem isn't behavioral, it's that one static lane per room can't represent genre variance inside one room's legitimately owned surface. Hostile-read legal rebuttal posts are a recurring, predictable sub-genre of this room's blog work that structurally needs cross-lane vocabulary every time; the fix has to be a commit-declarable lane widening, not another narrative correction.
The missing guard (the deliverable): tests/pmu-simulator/lane-scope-trailer-widens-intent.test.mjs — asserts that when a commit's message carries a 'Lane-Scope:' trailer, offPct is computed against the union of the room's default lane and the declared trailer lanes, not the static per-room lane alone; also asserts the trailer is rejected (falls back to the narrow lane) if the claims/predictions sidecar doesn't actually contain a corresponding hostile-read/legal-position marker, closing the self-exemption path.
Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. laneHamming=30 vs laneHammingNull=32 is only a 2-unit separation from the shuffled null — this particular jump is barely distinguishable from noise, which suggests the walk's jump-distance metric is under-discriminating for legal-vocab-heavy prose. Adjustment: require laneHamming <= 0.85x laneHammingNull before counting a jump as a real drift signal (more shuffle trials, tighter admissibility bar), so borderline cases like this stop counting as a full lane jump. Experiments: Reseed the reef dictionary with legal/insurance boilerplate ('captured meter', 'licensed', 'reinsurer', 'nuclear regime') pulled from this diff, then re-run prewalkOverlap on bcb23a61b4 and check whether it rises measurably above 9 · Re-run the laneHamming null-shuffle at 10x the current trial count and check whether the 30-vs-32 gap widens (real signal) or stays within 2 units (confirms noise-floor) · Tag the room's last 107 out-of-lane commits by presence/absence of legal-doctrine vocabulary and measure the correlation between that tag and offPct magnitudeMeasured outcome (deterministic, not self-graded): room mean offPct 17→37 over 9 commits since · dictionary ablation saved 875B
An 18%-off, 107-events/14-days room reads as an unpriced tail on the voice lane; restoring it requires showing the excursions are a legible, bounded sub-genre (Lane-Scope-declared hostile-read rounds) rather than undifferentiated drift, which is exactly what a carrier needs to price the lane instead of excluding it.
Open the signed attestation →2026-09-15 · 🎤 voice · offPct 29
fix(book): the canonical title is pinned again — an automated sweep committed its deletion, and a guard now reads HEAD so the next sweep goes red
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→5 over 4 commits since
Open the signed attestation →2026-09-15 · ☕ network · offPct 16
feat(milestones): the next five read this week's learning — the null rides on the attestation, a pin is a guard, a writer is read from the arbiter as a shape, the ladder and the wording sell a tape
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since
Open the signed attestation →2026-09-15 · 🧭 navigator · offPct 53
fix(pmu): THE NULL IS THE LINE'S — shuffle only the line and keep the mass; the winner's z must clear the threshold for the rungs drawn. Nonsense lines no longer latch. This retracts today's headline admissibility numbers.
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 16→30 over 10 commits since
Open the signed attestation →2026-09-15 · 🔒 vault · offPct 27
lab(qwen): qwen3:8b vs qwen2.5:7b on three blog monologues — measured, 9/9 rows, thinking mode is a net loss
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 13→38 over 11 commits since
Open the signed attestation →2026-09-15 · 🎤 voice · offPct 20
fix(blog): the bill post, round 4 — two words a cold reader gap-filled, closed where they occur: "sealed" means committed (a hash and a date, one changed word changes the hash), and the floor under k_E has no joule in it (a count of displacements, never an energy bill, so a bigger machine does not shrink it)
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→5 over 4 commits since
Open the signed attestation →2026-09-15 · 🎤 voice · offPct 47
feat(voice): TAPE, NOT BRAKE, NOT ENGINE — the bill rule graduates into the construct file, its guard, and the moved rules; applied to the two posts that sold grip as thrust and the brake as ours
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 17→18 over 5 commits since
Open the signed attestation →2026-09-15 · 🧪 laboratory · offPct 23
feat(pmu): THE RETROACTIVE APERTURE — the ratchet streams backwards through the session and outwards through the walked cells' rules and hats until it latches; grip is scored on every rung and the admissible rung with the best grip wins; the lateral moves are on the row and evaluated
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 22→23 over 6 commits since
Open the signed attestation →2026-09-15 · 📐 architect · offPct 57 · structural
docs(pmu): rust-pipeline spec v16 — the retroactive aperture (backward stages, hats with leave-one-out, grip-selected winner), 37.3% at relevance 0.225, the lateral-move eval, Task 25
Why it left the lane: The one-line diff appends to an already-running v16 paragraph in docs/architecture/rust-pipeline-flowchart-2026-07-23.md, and the added span is dense with binary-internals/telemetry vocabulary — 'streams to fit: backward through the session (stages roughly doubling the prompt count)', 'the HATS seated there, each hat tagged and left out... hat_tests pins it', 'Grip... is scored on every rung', 'Every move between rungs is on the row (`trajectory`...) and `scripts/pmu/grip-moves.mjs` aggregates them by kind × distance', 'Task 25: continuous search — a resident walker that re-reads the tape's moves per lane'. That vocabulary reads as Ops.Grid/Ops.Loop mechanics, pulling the lit reality mass to B1,C1/B1,C2/C1,B3 while the commit's claimed intent lane sits at A1,C3.
The semantic pull: 'backward through the session', 'grip_selected', 'hat_tests pins it', 'trajectory (stayed / lateral / jump)', 'a resident walker that re-reads the tape' — five strings from the diff, all naming runtime walker mechanics rather than architecture decisions — anchor the encircled B1,C1/B1,C2/C1,B3 cluster; densest cells B2,C2 and C1,C1/C2,C1 sit in the same Ops quadrant.
Intent–reality gap: The commit claims a spec-authorship entry in the architect's A1,C3 lane ('the spec records the dilution number beside the grip-selected number so the next reader sees why the winner is chosen by grip'), but the receipt measured 57% of the lit reality mass landing outside that lane — the paragraph it edited carries as much ops-telemetry prose (replay percentages, walker internals, trajectory aggregation) as architecture framing.
- Split the v16 entry in docs/architecture/rust-pipeline-flowchart-2026-07-23.md into decision (stays) vs telemetry (moves out) per spec_rewrite.
- Create docs/architecture/rust-pipeline-telemetry-log.md and land the extracted span there.
- Confirm which room's owned-surface list should carry docs/architecture/** — it appears in neither this event's shown architect list nor any config visible here — and add the glob explicitly (ties to ask-001 tests/ops/room-surface-coverage.test.js).
- Land tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, asked 5× already — highest-frequency open ask, still unshipped) so Relevant-Rooms=builder/navigator can legitimately cover docs/architecture/ edits even when Originating-Terminal is architect.
- Land tests/pmu-simulator/docs-only-commit-skips-lattice.test.mjs (ask-005) so pure-prose commits get a tempered offPct rather than the full code-drift threshold.
- Backfill the same decision/telemetry split on the v14 and v15 entries in the same doc (lower priority, same file, same mechanism).
What we learned: The rust-pipeline-flowchart doc's accretive-paragraph format — each version's decision and its replay telemetry appended into one ever-growing paragraph — structurally guarantees mixed-tier content that no room-tagging fix can resolve, because the ops-toned vocabulary and the architecture-toned vocabulary share the same sentence run; this is a NEW mechanism beyond the prior Originating-Terminal-classification lessons (ff09774e5) and explains why that fix's gain (20→14) didn't carry through to this event (57).
The missing guard (the deliverable): tests/pmu-simulator/docs-only-commit-skips-lattice.test.mjs
Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. litIntent=134/litReality=98 with walkTruncated=false shows the walk ran to full depth on both sides, not shallow and not capped. But laneHamming (18) exactly equals laneHammingNull (18) — the observed lane-jump distance is statistically indistinguishable from a random shuffle at this depth. Adjustment: score offPct on (laneHamming − laneHammingNull) rather than raw laneHamming, since raw hamming here is pure noise, not signal. Experiments: Recompute offPct as laneHamming − laneHammingNull for the next 50 docsOnly events and measure whether the false-alarm rate on spec-doc commits (offPct>50, zero code touched) drops. · Run the laneHamming vs laneHammingNull diagnostic over the room's 84 out-of-lane events from the last 14 days; measure what fraction show laneHamming==laneHammingNull as evidence most architect-room 'drift' alarms are noise-floor artifacts. · A/B the same commit's paragraph through the lattice once whole and once pre-split into decision/telemetry halves; measure whether the decision half's offPct drops below threshold on its own.Measured outcome (deterministic, not self-graded): room mean offPct 19→23 over 4 commits since · dictionary ablation saved 1006B
A 57%-off-lane, docs-only spec entry from the room with the highest 14-day out-of-lane count (84) reads as elevated loss-ratio on the architect lane even though no code moved; premium is restored once the doc-split lands and the docs-only lattice tempering guard ships, converting this from a repeat structural alarm into a one-time, explained event.
Open the signed attestation →2026-09-15 · 📐 architect · offPct 46
docs(pmu): rust-pipeline spec v18.1 — Task 27 closed (the context question: 12.9 % of threaded rows, beside the line's 3.6 %), the receipt names the latch; report v18.1 appended
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 20→24 over 9 commits since
Open the signed attestation →2026-09-15 · 🧪 laboratory · offPct 23
feat(pmu): APPARATUS JOIN — the walker's search cost per tape row beside the boundary-probe crossing cost, UNMEASURED when the control band fails (bf-5263)
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 23→23 over 4 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 36
docs(pmu): rust-pipeline spec v13 — the two-sided aperture in one Rust run, the arm table (12.6% → 36.3%), the leak that was not shipped, the trajectory as sensor
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→24 over 14 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 22
feat(stickers): batch 2 — the placard disc, tokenised, outlined, and the brief for a new CDMX shop
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→41 over 8 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 57
docs(pmu): rust-pipeline spec v14 — ONLY THE ONE RUST: what was reinvented beside aperture.rs and undone, what moved into the crate, the re-measure (12.6% → 32.8%, relevance 0.225), the remaining JS fallbacks named as the next standardisation
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 19→29 over 5 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 23 · structural
feat(stickers): the seal — the axiom curves up the left arc and down the right; THEY DON'T GET TO SELL IT
Why it left the lane: The claimed lane is docs/03-product/stickers/ — architect's owned surface — but the diff's actual mass is the arcText() function in scripts/stickers-b2.mjs (a new trig-based glyph-placement engine: Math.sin/Math.cos, advance-width iteration, rotate() transforms), a new assertion block in tests/stickers/b2-token-and-register.test.mjs, and a regenerated public/stickers/b2.png. Those three paths sit outside architect's docs/03-product/ glob entirely (scripts/, tests/, public/ are other rooms' surfaces), and none of them is named in Relevant-Rooms (vault, laboratory, operator) either — which is exactly the 23% of lit reality cells the receipt places off-lane.
The semantic pull: 'const arcText = (font, text, size, R, centreDeg, fill, tracking = 0) =>' plus the trig body (mid = a + adv/(2*R), x = CX + R*Math.sin(mid)) is load-bearing geometry code, not design prose — it pulls the walk toward the code/build lattice region the same way 'RING = 545' and 'INNER = 496' redefine the whole layout's math (pyTop now solved against INNER, not SAFE). The commit narrates it as a design decision ('the ranking phrase becomes the ring'), but the bytes that carry that decision are almost entirely inside scripts/stickers-b2.mjs and its test, not docs/03-product/.
Intent–reality gap: The message frames this as a stickers/strategy decision (operator quote, design rationale, Story about 'the hierarchy problem solved by geometry') scoped to architect's docs/03-product/ territory; the receipt measured the real work as a 41-line algorithm change in scripts/ plus a 16-line test change plus a regenerated PNG in public/ — three surfaces architect does not own and none of which is named in Relevant-Rooms.
- CLAUDE.md: narrow architect's docs/03-product/ row to *.txt/*.md rationale files and explicitly disclaim the generated svg/pdf/png/script/test triad (see spec_rewrite).
- Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010, already asked 3×) rather than re-specifying it — it directly checks that every room owning a touched path appears in Relevant-Rooms, which this commit fails (scripts/tests/public owners absent).
- scripts/stickers-b2.mjs: add a one-line header comment pointing back to docs/03-product/stickers/b2-strategy.txt as the design source of truth (satisfies 'never write state into a generated file' — grep -l "writeFileSync.*b2" already finds this file; make the reverse link explicit too).
- docs/03-product/stickers/b2-strategy.txt: add a footer line naming scripts/stickers-b2.mjs as the file that actually implements every rule stated here, so a reader of the rationale doc knows the code is the other half.
- Extend tests/ops/room-surface-coverage.test.js (ask-001) to flag any owned-surface glob (like docs/03-product/) that resolves to files whose generation depends on a script outside that same glob.
What we learned: This room's two prior fixes (Originating-Terminal-alone classification, now retired) didn't touch the actual driver of architect's 72 out-of-lane events: docs/03-product/ contains procedurally-generated design collateral (stickers, likely other assets) whose true edit surface is structurally polyglot — script + test + output span three different rooms' owned globs by construction of the pipeline, so any real sticker change will keep registering off-lane mass under the current glob no matter how well-tagged the commit trailers are.
The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs
Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Saturated, not shallow — both intent and reality walks hit 100% fill of their own budgets, yet walkTruncated=true and laneHamming reads as noise (==null). That combination suggests the walk is being cut off at its step cap before it can resolve a lane distinct from null, not that it's underused. Adjustment: rerun sha=1161c68174 with the step budget raised past the current truncation point and check whether laneHamming departs from laneHammingNull (52) — if it doesn't move, the null-equivalence is a property of this commit's spread, not of a shallow walk. Experiments: Rerun sha=1161c68174 with prewalkOverlap computed against a widened gzip-NCD seed window (include scripts/, tests/, public/ in the seed corpus alongside docs/03-product/) and measure whether prewalkOverlap rises above 5 and offPct drops — tests whether the reef is under-seeded for multi-surface commits. · Force walkTruncated=false (raise max-walk-steps) for this commit and re-measure litReality/laneHamming — tests whether truncation itself, not true drift, is producing the laneHamming==laneHammingNull result. · A/B laneHamming vs laneHammingNull across the last 20 architect-room events; if the two values coincide in most of them (not just this one), down-weight the walk's contribution to offPct for architect specifically and measure the room's mean-offPct delta over the next 10 commits.Measured outcome (deterministic, not self-graded): room mean offPct 18→41 over 8 commits since · dictionary ablation saved 617B
An out-of-lane sticker commit like this one is cheap to mis-price as a design-lane loss when the real exposure is undisclosed engineering change (a new geometry algorithm) shipping under a design trailer; premium is restored by disclosing scripts/tests/public ownership in Relevant-Rooms going forward and by the lane math crediting disclosed multi-room commits as in-lane rather than penalizing correct disclosure.
Open the signed attestation →2026-09-14 · ☕ network · offPct 27
comms(external): Chalmers — cut to the size he answers; one question in his vocabulary, nothing else riding (NOT ARMED)
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since
Open the signed attestation →2026-09-14 · 🔨 builder · offPct 45
feat(iamfim): the lightbox lands the whole argument before it asks — "so we fixed the math" leaves the first screen
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 27→20 over 4 commits since
Open the signed attestation →2026-09-14 · 🔨 builder · offPct 20
feat(site): /announcement carries who it is for (roles, never names) and the one line iamfim's first screen carries — whether is politics and stays yours, where is a tape measure, keep ethics human
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 27→34 over 6 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 42
docs(pmu): rust-pipeline spec v12 — the thread rung in the tape door, measured on 178 prompts (23 → 30 admissible); the null test, not the floor, is the gate; Task 23
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→25 over 14 commits since
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 48
chore(pixel): curate billboard flags on push (detached, LLM pick)
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→0 over 17 commits since
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 18
feat(blog): The Immune Response round 2 — after the split, every section keeps the ledger's density: the stake is the hash, Rice is the CEO's sentence, the botany is cut, the command belongs to the engineer
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 17→39 over 6 commits since
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 16 · mistagged
fix(bookclub): a refusal is not a panel — the picker floors lit at 200, send-now re-checks the pinned file, tonight's pin repinned to a real panel
Why it left the lane: The diff's actual vocabulary — 'pick-panel.mjs', 'LIT_FLOOR', 'annotate-regions', 'lit pixels', 'panel index', 'send-now.sh', 'PANEL_PIN' — is bookclub send-infrastructure/plumbing vocabulary, not the content-authorship vocabulary (books/tesseract chapters, blog mdx, decentralizedtalk slides) that defines room 🎤 voice's owned surface. The commit's own Relevant-Rooms trailer already names 'builder, vault, voice' with voice listed third/last, yet Originating-Terminal was stamped 'voice' — so the reef seed (built from commit prose + owned-surface corpus) pulled toward lensReality C,C1 (infra/pipeline cluster) while the claimed lane sits at lensIntent B,A1 (content cluster). Zero of the four changed files (scripts/bookclub/pick-panel.mjs, scripts/bookclub/send-now.sh, tests/bookclub/*, data/bookclub/rewrite-previews.ndjson) fall inside voice's declared glob (books/tesseract/chapters/*.md, src/content/blog/*.mdx, decentralizedtalk/slideData.ts, src/app/decentralized*, src/app/6needs/, scripts/voice-*-check.sh).
The semantic pull: 'A REFUSAL IS NOT A PANEL', 'LIT_FLOOR', 'lit 16', 'pick-panel.mjs', 'send-now.sh', 'crosshair and one hollow square' — these are pipeline/QA terms that gzip-NCD would compress far better against a builder/vault infra corpus than against voice's book-chapter/blog-prose corpus, dragging the walk from B,A1 toward C,C1.
Intent–reality gap: The commit message accurately describes a bookclub panel-picking infra fix and even names its true home rooms ('Relevant-Rooms: builder, vault, voice'), but the Originating-Terminal trailer claims 🎤 voice as the primary lane — the receipt correctly measured that the touched files and their vocabulary land in the pipeline lane, not the content lane voice is chartered for.
- Add an owned-surface glob check to the commit-msg or pre-commit hook: compute touched-path overlap against Originating-Terminal's declared surface (from the room's .workflow/rooms/<room>.html or equivalent); WARN when overlap is 0%.
- Update docs/architecture/claude-rules/doors-and-surfaces.md (or wherever room ownership lives) with the Originating-Terminal = Relevant-Rooms[0] rule.
- Backfill-tag the last 99 out-of-lane 🎤 voice events to see how many share this exact mistagging pattern (infra work stamped voice) vs genuine content-lane drift — they are two different defect classes currently being averaged together.
- Add scripts/bookclub/** and tests/bookclub/** explicitly to the builder (or vault) room's owned-surface glob if not already present, so the detector has a positive home to route this class of commit toward.
What we learned: This room's 99-events/14-days out-of-lane rate is not (only) content drifting into infra — it includes infra work being falsely labeled as content work because the operator commits from the 🎤 voice terminal regardless of which room's surface the diff actually touches; the commit's own Relevant-Rooms trailer already disagrees with its Originating-Terminal trailer, meaning the ground truth for the correct lane was present in the commit and simply not used to set the tag.
The missing guard (the deliverable): tests/ops/originating-terminal-matches-surface.test.mjs — for a sample of recent commits, assert Originating-Terminal equals Relevant-Rooms[0] and that the touched-path glob overlap with that room's owned surface exceeds a floor (e.g. 30%); fail loudly when a commit's own trailers contradict each other the way 27b0ad3b1 does.
Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized, not shallow or saturated in the pathological sense — walkTruncated=false and litIntent/walksIntent=105/105, litReality/walksReality=139/139 (both 100% fill, no truncation). But 100% fill on BOTH sides masks the actual defect: a narrow-owned-surface room like voice should produce a much SMALLER walksIntent (its glob is 6 narrow content paths), yet it walked 105 — suggesting the intent-lane seed itself was built too broadly. Adjustment: cap walksIntent per-room proportional to the room's owned-glob file count, so a narrow-surface room can't inflate its own intent walk to look comparable to reality. Experiments: Re-seed the intent reef using ONLY files matching the room's owned-surface glob (not the full commit message) for the next 20 events, and measure whether prewalkOverlap rises for correctly-tagged commits vs stays near-zero for mistagged ones like this sha. · Force Originating-Terminal=builder on a re-run of sha 27b0ad3b1's receipt (offline replay) and measure whether offPct drops below the 15 threshold — directly tests the mistagging hypothesis. · Track laneHamming − laneHammingNull as a rolling delta across 🎤 voice's last 99 events; if the delta stays under ~10 for most of them, the room's corpus needs re-seeding rather than more interventions.Measured outcome (deterministic, not self-graded): room mean offPct —→22 over 9 commits since · dictionary ablation saved 536B
A commit whose own trailers contradict each other (Originating-Terminal vs Relevant-Rooms) is an underwriting defect independent of the code's correctness — it raises this lane's loss-ratio by making every future 🎤 voice receipt less trustworthy as a content-drift signal; restoring it requires the trailer-agreement guard above, not another content-side fix.
Open the signed attestation →2026-09-14 · 🎩 operator · offPct 39
fix(pmu-lens): the per-prompt encircled PNG is the one Rust walk through panel-door — the 12×12 block painter is gone
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 26→32 over 8 commits since
Open the signed attestation →2026-09-14 · ☕ network · offPct 25
feat(comms): the dispatcher forwards frontmatter `inline:` images as --inline — a body can show its own picture
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since
Open the signed attestation →2026-09-14 · 🧭 navigator · offPct 17 · mistagged
test(thetacog-mcp): ur-attest runs under a scrubbed environment in 207 ms, makes no network call, reads no key, and its receipt verifies
Why it left the lane: The diff is entirely infra/testing code — execFileSync, mkdtempSync, verifyReceipt/sha256, env-scrubbing against packages/thetacog-mcp/tests/ur-attest-zero-setup.test.mjs. That path matches none of navigator's owned-surface globs (scripts/open-room-session.sh, .thetacog/cache/room-runners/*.sh, openclaw/src/thematic-scheduler.ts, openclaw/data/thematic-schedule.json, openclaw/src/focus-gravity.ts, openclaw/data/ollama-overnight/thematic-heartbeat.json, .workflow/cognitive-dashboard.html), and the commit's own trailers point elsewhere entirely: Originating-Terminal is 📐 architect, Relevant-Rooms is 🔨 builder, 🧪 laboratory, 🎩 operator. Navigator appears in NEITHER trailer, yet the event's lane was checked against navigator's coordinates — the mass leaked because the room the pipeline picked was never the room the commit itself named.
The semantic pull: 'execFileSync', 'mkdtempSync', 'verifyReceipt', 'sig_hex/pubkey_hex/sha256' and 'SCRUBBED environment' all read as builder/laboratory territory (crypto + test-harness + child-process work), matching the commit's own Relevant-Rooms trailer. Nothing in the diff — no 'schedule', 'thematic', 'focus-gravity', 'cognitive-dashboard' string — touches navigator's vocabulary at all, so the pull toward navigator's coordinates did not come from the diff's terms; it came from the room-attribution step defaulting there when no owned-surface glob matched packages/thetacog-mcp/**.
Intent–reality gap: The commit claims Gate-4 test work owned by architect/builder/laboratory/operator; the receipt measured it against navigator's lane and found 17% of the lit mass outside it — but navigator was never named as the room responsible for this content in the first place, so the 'out-of-lane' reading is measuring the wrong denominator.
- Add packages/thetacog-mcp/** to the owned-surface glob for 🔨 builder (or 🧪 laboratory) so it is no longer unclaimed territory
- Ship tests/ops/room-surface-coverage.test.mjs (ask-096) so any commit path matching zero rooms' owned surface fails loud instead of defaulting silently
- Ship tests/pmu-simulator/lane-uses-relevant-rooms-not-terminal.test.mjs (ask-019) so the Relevant-Rooms trailer, not a default, decides the lane
- Re-audit navigator's other 3 out-of-lane events in the last 14 days for the same unclaimed-path mistag before trusting the room's offPct trend
- Cross-check tests/ops/room-lane-trailer-union.test.mjs (ask-081) so the trailer union (not just Originating-Terminal) feeds the lane
What we learned: The room/lane attribution step can hand an event to a room that appears in NEITHER the Originating-Terminal NOR the Relevant-Rooms trailer of the commit that produced it — because owned-surface glob coverage has gaps (packages/thetacog-mcp/** is unclaimed by any room) and an unmatched path silently defaults rather than erroring. This means a room's measured offPct trend (navigator: 4 events/14 days) can be counting other rooms' overflow, not that room's own drift — a fact none of the prior facts-only interventions for this room surfaced.
The missing guard (the deliverable): tests/ops/room-surface-coverage.test.mjs
Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Too shallow on the reality side — walksReality is under half of walksIntent and walkTruncated=true. For a single-new-file, test-only commit this small, the walk should be cheap to run to completion; concrete adjustment: raise (or remove) the truncation budget for commits under a fixed diff-line threshold so offPct on small commits isn't partly an artifact of an incomplete walk. Experiments: Re-run sha 31208193a with walkTruncated disabled and compare offPct — if it drops materially, truncation (not real drift) explains part of the 17% · Add the packages/thetacog-mcp/** → builder owned-surface glob, re-run this sha, and check whether laneJump/offPct/room resolve to builder with offPct back under 15 · Backfill-recompute navigator's other 3 out-of-lane-in-14-days events with the coverage glob in place and count how many share the unclaimed-path mechanism (predict ≥2 of 4)Measured outcome (deterministic, not self-graded): room mean offPct 16→30 over 10 commits since · dictionary ablation saved 998B
This event should not move navigator's loss ratio at all — the exposure belongs to builder/laboratory per the commit's own trailer, and the premium is restored by declaring packages/thetacog-mcp/** into their owned surface rather than letting an unclaimed path keep landing on whichever room the default happens to pick.
Open the signed attestation →2026-09-14 · 🛰️ unattributed · offPct 20 · intentional
feat(blog): Add accumulating breadcrumb emoji trails to 39 posts
Why it left the lane: The commit message describes ONE change class — blog section-nav breadcrumb trails (`+ scripts/fix-breadcrumbs.sh`, 23 .mdx files each with tiny 12-22 line diffs like `🔴 A → B 🧠`). But the diff's actual mass sits in books/tesseract/chapters-html/00-preface.html (+678/-lines) and public/book/chapters/00-preface.html (its mirror), plus 08-conclusion.html and appendix/falsification-framework.html. Those hunks insert three brand-new manifesto sections never mentioned in the message: `<h3 id="the-precision-collision-threshold-t_sync-vs-t_decay">`, `<h3 id="the-anti-heat-manifesto-reasoning-is-evidence-of-failure">`, `<h3 id="substrate-axioms-vs-learned-world-models">`. That vocabulary (Precision Collision, t_sync/t_decay, Anti-Heat Manifesto, Substrate Axioms) is pure book-manuscript/physics-argument content, which is what pulled the reality lane to C1,C2 while the intent lane (derived from the message) sat at A2,C1.
The semantic pull: lensIntent=A2,C1 (blog/script lane) vs lensReality=C1,C2 (book-chapter-content lane); densest cells are B2,C2 / B3,C2 / C1,C2 — all C2-column, and the new h3 headings plus the wholesale data-line renumbering (269→285, 273→289, 279→334, etc., visible across the whole diff) are exactly the content that lands there.
Intent–reality gap: The message claims a narrow, disclosed feature — 'accumulating breadcrumb emoji trails to 39 posts' plus a helper script — but the receipt measured over 800 lines of undisclosed new book-manuscript content (three new preface sections, a conclusion edit, an appendix edit) riding in the same commit, roughly double the line-mass of the breadcrumb work itself.
- Confirm whether books/tesreact/chapters/00-preface.md (or equivalent source) exists and is out of sync with the shipped HTML — if so, back-port the three new sections into it now
- Run ./scripts/build-book-html.sh and diff its output against the currently-shipped chapters-html/00-preface.html to prove no further drift
- Re-verify every blog post's deep link into 00-preface (#line-269, #line-273, #line-279, #preface-54years, etc.) still resolves post-renumbering — CANONICAL PROCESS step 3 requires this before publishing
- Scope scripts/fix-breadcrumbs.sh's glob to src/content/blog/**/*.mdx only, so a future run of it can't touch books/** by accident
- Split this commit's history note: retroactively annotate 39f9e7e85 (git notes, never amend) that it silently carried book-content changes
- Add a Persona-Intent trailer to future book-content commits per COMMIT MESSAGE STRUCTURE (content commits only)
What we learned: This is a SEVENTH distinct mechanism accumulating under the '🛰️ unattributed' label, orthogonal to the prior six (bundling, blank-trailer, malformed-certainty, zero-trailer-on-auto-apply, paragraph-scoped walk, diff-granularity-via-minification): a commit message can be TRUE but SCOPE-INCOMPLETE — it accurately describes the smaller-line-count change (breadcrumbs) while silently carrying the larger-line-count change (book manuscript authorship) with zero disclosure, and the room trailer is blank on top of that. offPct alone can't distinguish 'message lied' from 'message just stopped describing itself halfway through the diff' — that distinction currently needs a human/LLM read of the message against the full diffstat, not just the receipt.
The missing guard (the deliverable): A pre-commit check that WARNS (not blocks, per NEVER-COMMIT-HOOKS-OFF) when staged files span two disjoint 'owned surface' globs whose file-extension/path signatures differ sharply (e.g. src/content/blog/**/*.mdx + scripts/*.sh vs books/tesseract/chapters-html/**/*.html + public/book/chapters/**/*.html) AND the commit message's first line names only one of the two domains — surfacing 'this commit touches book chapters but the subject says feat(blog)' before the commit lands, not three lessons later via the drift receipt.
Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized, not shallow: 100% fill on both intent (129/129) and reality (125/125) with laneHamming=28 well below laneHammingNull=51 means the walk converged cleanly rather than saturating into noise. No adjustment to walk depth needed here; the leverage is upstream at the reef seed (prewalkOverlap), not the walk. Experiments: Ablate the diff: re-run the reef seed against ONLY the 23 .mdx breadcrumb hunks (strip the book HTML) and re-measure offPct — expect it to drop near/under the 15 threshold, confirming book content is the sole driver · Ablate the diff the other way: re-run the reef seed against ONLY the book HTML hunks with the commit message unchanged, and confirm offPct spikes even higher — isolating that the message-vs-book mismatch, not the message-vs-mdx match, is what's failing · Run the epsilon/salad measurement (currently UNMEASURED on this row) specifically on this sha to test whether it flags the domain-mismatch cheaper than the full walk, as a candidate early gate before the ballistic walk runsAn undisclosed manuscript rewrite riding inside a UI-feature commit raises this lane's loss ratio because the receipt (and any downstream deep-link/voice audit) can no longer trust the message to scope the diff; restoring the ITERATION DISCIPLINE split and the source-of-truth pairing check is what re-prices it back down.
Open the signed attestation →2026-09-14 · 🔨 builder · offPct 21
chore(bookclub): high-score board update — recomputed after send
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 26→45 over 4 commits since
Open the signed attestation →2026-09-14 · ☕ network · offPct 50
comms(self): B2 taller mail v4 — crescents rotated up; supersedes v1–v3
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since
Open the signed attestation →2026-09-14 · 🔨 builder · offPct 23 · structural
feat(site): /announcement links The Immune Response — the peer session's post on the whether/where split, live today, joins the record section
Why it left the lane: The diff's two added strings are pure argument-narration — 'Why the first reflex in the room is to close the door, and which half of the question stays yours' and the title 'The Immune Response' — paired with a commit message that narrates the linked post's thesis ('the peer session's post on the whether/where split') rather than the mechanical act performed. walksIntent=89=litIntent and walksReality=127=litReality show BOTH walks fully saturated (no pruning), so that extra vocabulary had nowhere to go but spread: reality's walk is 43% wider than intent's, and 23% of its lit cells sit outside the C,B3 intent lane, landing at A1,A instead.
The semantic pull: 'first reflex...to close the door', 'which half of the question stays yours', and 'whether/where split' are abstract, argument-carrying phrases — the same register as the voice/content lattice (lensIntent C,B3) — spliced directly into a route component file whose file-path identity classifies it structurally (lensReality A1,A). The pull is the prose itself, not the href or the JSX it sits in.
Intent–reality gap: The commit claims a small structural addition to /announcement (3 insertions, 1 file) and frames it as a link add; the receipt measured the added prose as landing 23% outside that structural lane because /announcement/page.tsx is a route file that also carries voice-lane content, and the walk has no way to split those two identities of the same file.
- Extract RECORD_LINKS array from src/app/announcement/page.tsx's inline JSX into a data structure
- Add a hybrid-surface note for /announcement and /pricing to docs/architecture/claude-rules/doors-and-surfaces.md
- Rewrite the Story trailer convention to lead with the mechanical diff, not the linked post's thesis
- File tests/pmu-simulator/prose-in-route-file-does-not-inflate-offpct.test.mjs (see missing_guard)
- Audit src/app/pricing/page.tsx for the same inline-prose-in-route-file pattern before it fires the same drift class
What we learned: Diff size does not predict offPct: a 3-line, single-file, correctly-room-owned commit still hit 23% off-lane because the file is a HYBRID surface — structurally a route component (src/app/, builder's territory) but semantically a voice/content artifact whenever the edit is prose. The walk classifies by file path, not by what kind of content sits in the file, so any prose edit to a content-bearing route file will reproduce this exact gap regardless of how small the diff is.
The missing guard (the deliverable): tests/pmu-simulator/prose-in-route-file-does-not-inflate-offpct.test.mjs — assert that commits touching a declared hybrid surface (src/app/announcement/page.tsx, src/app/pricing/page.tsx, …) get offPct computed against the UNION of their structural lane and the voice lane, not the structural lane alone, so a correctly-placed content edit stops reading as cross-lane drift.
Detector probe: signal attribution — gzip reef 20% · ballistic walk 80%. Oversaturated, not shallow: litReality/walksReality = 1.0 means the walk visited and lit every cell it reached with zero pruning, on a 3-line diff. walkTruncated=true confirms it hit a budget ceiling rather than converging. Adjustment: scale the walk budget to diff size (lines changed) so a 3-line content edit terminates near ~20-30 cells instead of 127, and measure whether offPct on this commit would have cleared 15 under that budget. Experiments: Re-run this sha's walk with a diff-size-scaled budget (budget ∝ lines changed) and measure litReality delta — target: litReality/litIntent ratio near 1.0 for single-file <5-line commits · Raise the prewalkOverlap floor specifically for commits touching declared hybrid surfaces (announcement, pricing) and measure whether offPct drops without losing true cross-lane catches on a held-out set of known-bad commits · Ablation-test seeding 'record section' / 'announcement' path tokens into the reef dictionary and measure prewalkOverlap change on the next 10 commits to this fileMeasured outcome (deterministic, not self-graded): room mean offPct 27→34 over 6 commits since · dictionary ablation saved 701B
A correctly-owned, 3-line commit reading as 23% off-lane inflates this lane's apparent loss ratio on noise rather than signal; restoring it means teaching the offPct calculation that announcement/pricing are hybrid surfaces, not adding operator caution to future edits.
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 34
feat(blog): The Immune Response round 1 — three doors at the three bounce points, sold side iamfim.com; the door tool now reads a post's monologue as its sidecar
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 17→15 over 15 commits since
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 20 · mistagged
feat(bookclub): the whole argument before the amuse — the Grip lands whether vs what; L22 asserts it; L38 re-seeded; the argument banked as the standing grip
Why it left the lane: lensReality=B3,C sits opposite lensIntent=B,A1 because the bulk of the diff's real mass is engineering/pipeline text, not voice content: scripts/lib/six-percentages.mjs (threshold reseed L38 0.4→0.1, new gz-region param), scripts/bookclub/render-email.mjs (new <p> block injected into the HTML template), tests/comms/newsletter-litmus.test.mjs (assertion rewritten from sentence-count to regex+word-count), docs/comms/newsletter/drafts/layout-A8-locked.html (rendered artifact), and data/six-percentages-floors.json / data/bookclub/rewrite-previews.ndjson. Only docs/05-content/blog/mdx-cook-format.md's new '## THE ARGUMENT THE GRIP LANDS' section is genuinely voice content, and even that file sits outside voice's declared docs/05-content/blog/scratchpad/ glob. The walk correctly placed the mass in the C/pipeline region because that's where the code strings actually live.
The semantic pull: Strings like 'gzRegions.length', 'C("L38"', 'r.exhibit', 'r.razor' (six-percentages.mjs) and the raw HTML template edit + JWT-token regeneration loop in layout-A8-locked.html are pipeline/build vocabulary that the reef's lexicon maps to the C-region, not the B/A1 content region the intent lane claimed.
Intent–reality gap: The commit message frames this entirely as a voice/content move ('the Grip lands whether vs what... banked in docs/05-content/blog/mdx-cook-format.md') under Originating-Terminal: 🎤 voice, but the receipt shows the reality mass landing in scripts/lib/six-percentages.mjs, scripts/bookclub/render-email.mjs and tests/comms/newsletter-litmus.test.mjs — files no voice-owned glob covers.
- Ship scripts/room-drift-voice-check.sh exactly as already spec'd at .workflow/rooms/terminal-voice.html:612 (flags any staged file outside the owned surface when commit message includes 'room: voice' or session is Terminal.app), closing sp-834.
- Implement the Relevant-Rooms union fix in the receipt's lane resolver per sp-835 ('union Relevant-Rooms' owned-surface globs') and re-run this sha through it as the first regression case.
- Add tests/ops/room-attribution-matches-paths.test.mjs per sp-847: every commit's Originating-Terminal trailer must name a room with at least one touched path, else Relevant-Rooms must be non-empty and unioned.
- Widen or explicitly deny docs/05-content/blog/mdx-cook-format.md against voice's glob (currently only docs/05-content/blog/scratchpad/ is owned) — the one line of this commit that IS voice content sits just outside the declared surface too.
- Add scripts/bookclub/**, scripts/lib/six-percentages.mjs, docs/comms/**, tests/comms/**, data/bookclub/**, data/six-percentages-floors.json to vault/builder's owned-surface glob in .workflow/rooms/*.html so they stop reading as unowned-by-anyone when a non-voice room commits them.
- Close sp-838/sp-842 (the post-commit path-overlap/trailer-correction hooks) in the same pass so the fix is enforced automatically, not just documented.
What we learned: This room's prior three interventions were all 'facts-only' with offPct trending WORSE each time (27→39, 21→31, 0→36) — strong evidence that treating this as a content-discipline problem doesn't work, because it isn't one. The mechanism is structural and was already self-diagnosed inside this room's own board (five queued sp-83x/84x tasks) and even leaked into this very commit's newsletter copy (the diff replaces one 'ledger, verbatim' quote naming Originating-Terminal-vs-room-surface mismatch with another one naming the same defect at 99 events/14 days). The lesson: don't keep re-diagnosing this room's content voice — the fix is in the receipt pipeline's lane resolver, owned by whichever room ships scripts/, and every future 🎤 voice offPct spike should be checked against 'was this actually a cross-room commit from the voice terminal' before treating it as a voice content problem.
The missing guard (the deliverable): scripts/room-drift-voice-check.sh (spec'd at .workflow/rooms/terminal-voice.html:612, not yet implemented) combined with tests/ops/room-attribution-matches-paths.test.mjs (named in sp-847) — together they refuse a commit whose staged files fall outside the union of Relevant-Rooms' owned globs, rather than silently letting Originating-Terminal stand in for the lane.
Detector probe: signal attribution — gzip reef 20% · ballistic walk 80%. laneHamming=49 vs laneHammingNull=52 is only 3 apart — close to the null floor even though offPct=20 clearly exceeds the 15 threshold. The walk is right-sized in coverage (litIntent≈litReality) but under-resolving significance at the lane-jump statistic; epsilon is null/UNMEASURED here. Adjustment: compute epsilon for this commit before trusting offPct as more than descriptive, and if it doesn't clear a real significance bound, treat the 20 as suggestive-but-noisy rather than a firm violation. Experiments: Re-seed the voice-room reef corpus into two explicit sub-lexicons (book/blog prose vs comms-pipeline code) and re-run this sha's walk; expect the laneHamming-vs-null gap to widen from 3 to >10 if the split is real. · Populate epsilon for newsletter/bookclub-pipeline commits specifically and check whether offPct=20 survives as significant once a real epsilon replaces null. · Ablation: recompute this sha's offPct using the UNION of voice+vault+builder owned globs (per Relevant-Rooms) as the intent lane and confirm it drops below 15 — this is the direct test of the 'mistagged' verdict.Measured outcome (deterministic, not self-graded): room mean offPct —→22 over 9 commits since · dictionary ablation saved 1046B
This mistag inflates 🎤 voice's apparent 101-events/14-days loss ratio with pipeline work it doesn't own while masking the true drift rate of whichever room actually holds render-email.mjs and six-percentages.mjs; premium is restored not by changing voice's content behavior but by shipping the already-spec'd scripts/room-drift-voice-check.sh and the Relevant-Rooms union fix.
Open the signed attestation →2026-09-14 · 📐 architect · offPct 21 · mistagged
docs(pmu): rust-pipeline spec v9.3 — §13.7 the blueprint's four gates: three shipped with guards, one named apparatus scope; the synonym engine closed at the ticket; no distance fold, measured twice
Why it left the lane: The diff's own surviving header line, immediately below the changed version string, reads '**Owner lane:** pmu-walk (B,C2) · injected as a 🏞️ bank via `data/pmu/lens-reef.json`.' — the file self-declares a lane that is neither architect's claimed lensIntent (B3,B1) nor its owned-surface list. The added §13.7 prose is dense pmu/lab vocabulary — 'guard', 'ticket', 'pinned', 'floor', 'census', and four literal `tests/pmu-simulator/*.test.mjs` paths — which is exactly the vocabulary that walks toward lensReality=C3,B2, not toward docs/strategy.
The semantic pull: Repeated path-shaped strings (`tests/pmu-simulator/`, `data/pmu/end-state-history.ndjson`, `data/pmu/sensor-census-floor.json`, `data/pmu/measure-history.ndjson`) and guard-file citations are lab/pmu-walk tokens, not architect/strategy tokens; laneJump=3 with laneHamming=20 (vs null 40) confirms a real but partial jump, not noise.
Intent–reality gap: The commit's Originating-Terminal claims 📐 architect ownership, but the file touched (docs/architecture/rust-pipeline-flowchart-2026-07-23.md) is not on architect's owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md) and the doc itself declares 'Owner lane: pmu-walk (B,C2).'
- Pin tests/pmu-simulator/lane-uses-relevant-rooms-not-terminal.test.mjs (ask-019) as the surviving spelling; fold ask-162/029/004/081/150 into it via the commit's own §13.7 synonym-engine mechanism
- Add an 'Owner lane:' frontmatter parser to the room-lane classifier as an authoritative override
- Add docs/architecture/ to laboratory's (or pmu-walk's) owned-surface glob so this file class has a legitimate home
- Log this sha (5d5ef4b92) into events.ndjson against ask-019's construct so its ΔoffPct credit computation sees the reproduction
- Add a 'duplicate-ticket-family' tripwire to open-asks.mjs itself: 6+ spellings of one construct open >2 months without a pinned guard should self-flag
- Re-run floors-never-soften.test.mjs reasoning once ask-019 pins, to confirm architect's room-mean offPct actually turns (not just this one event)
What we learned: The commit that documents the open-asks ticket-folding/synonym-engine mechanism is itself an unfolded duplicate: the exact 'Originating-Terminal vs Relevant-Rooms/Owner-lane' fix has SIX near-identical open tickets (ask-019/162/029/004/081/150), asked a combined 19 times, none ever pinned — proving that a construct can be correctly diagnosed and repeatedly re-asked without ever shipping, which is a distinct failure from prior lesson ff09774e5 (which only established the divergence is house-sanctioned).
The missing guard (the deliverable): tests/pmu-simulator/lane-uses-relevant-rooms-not-terminal.test.mjs
Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Under-utilized/truncated on the reality side — litReality (107) trails litIntent (131) while walkTruncated=true, suggesting the walk was cut before full convergence rather than saturating. Adjustment: raise the walk budget (disable truncation) specifically for dense docs-only commits like this one and re-measure offPct. Experiments: Re-run this sha with walkTruncated forced false and diff offPct against 21 to isolate how much was truncation artifact vs real drift · Seed the reef with 'Owner lane:' header parsing so docs/architecture/*.md files get a prewalkOverlap boost toward their declared lane before the walk runs; measure whether prewalkOverlap rises above 3 · Compare offPct distribution for docsOnly=true vs docsOnly=false over the last 50 events to test whether docs-heavy commits systematically need a different truncation floorMeasured outcome (deterministic, not self-graded): room mean offPct 18→21 over 18 commits since · dictionary ablation saved 888B
Architect's loss ratio ticks up again (72 out-of-lane events/14d, +1 here) while the already-diagnosed fix sits unshipped across six duplicate tickets; premium is restored only when one ticket is pinned with a guard, which would also retroactively fold the other five and lower the room's structural noise floor.
Open the signed attestation →2026-09-14 · 🧪 laboratory · offPct 56
feat(blog): the cook checker names RATCHET RED apart from FORMAT BROKEN and prints the regressed row with its value; spec §13.6 banks the filling rules and cross-guards, audit numbers corrected
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 22→23 over 6 commits since
Open the signed attestation →2026-09-14 · ☕ network · offPct 18
comms(external): arm the announcement — the disclosure note to every counterparty on the attestation threads, the Propel Earth partner reply, the Medical Liability Monitor note; all three on the canonical spine, graded ≥95
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 33
feat(stickers): NO VENDOR GETS TO SELL IT — a subject with a referent; port to 400px so the headline is what draws the phone
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→41 over 8 commits since
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 51
fix(pmu): the per-post panel door writes the encircled panel or nothing — no fallback to the dark grid, one lit floor in one place
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct —→22 over 9 commits since
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 34
build(book): ch8 HTML mirror for a49ea91a4d — the two refined Scapegoat sentences reach the chapters-html copy
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 17→29 over 3 commits since
Open the signed attestation →2026-09-14 · 🎩 operator · offPct 27
feat(pmu-lens): the aperture ratchet — a short prompt is measured as its session THREAD, never bare and never a grid
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 26→32 over 8 commits since
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 28
feat(blog): loom post round 10 — the exec-summary lift: Rice 1953 and the Caremark question move into the pre-cook
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 22→20 over 10 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 39
docs(pmu): rust-pipeline spec v9.4 — §13.8 the operator's four steps: six-percentages floors enclosed, closure 4 was a reader defect (7,171 rows retained), the tripwire closes 15/49 not 0/14, pinned closure 0.017 → 0.586
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→7 over 16 commits since
Open the signed attestation →2026-09-14 · 🔨 builder · offPct 22
revert(iamfim): the knife keeps the operator's red on every arrival — the disc is black and white now
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 27→20 over 4 commits since
Open the signed attestation →2026-09-14 · 🔨 builder · offPct 43
fix(pmu): the per-turn tape walk is the DEEP walk — the door passes the one home's knobs on every --lens call; lens.rs's depth-2 default no longer decides a row
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 26→51 over 6 commits since
Open the signed attestation →2026-09-14 · 🎩 operator · offPct 25
docs(pmu): correct the public lexical-not-semantic claims to the measured paraphrase boundary
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 25→12 over 6 commits since
Open the signed attestation →2026-09-14 · 🧪 laboratory · offPct 55
chore(tree): the per-prompt encircled panel is a derived file — untracked, ignored, guarded
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 22→23 over 6 commits since
Open the signed attestation →2026-09-14 · 🔨 builder · offPct 22
chore(blog): attach commit tolerance panel as OG image [panel-attached]
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 26→45 over 4 commits since
Open the signed attestation →2026-09-14 · ☕ network · offPct 21
comms(external): Chalmers — the better question, built from the recovery result and his own J-Space talk (NOT ARMED)
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since
Open the signed attestation →2026-09-14 · 🧪 laboratory · offPct 16
feat(pmu): ONLY THE ONE RUST — the thread, the mass ladder, the walk-guided rung, the seed's cut and the panel walk have one implementation each, in the crate; the seed cuts with aperture.rs; the JS beside them is a caller
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 22→23 over 6 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 28
docs(pmu): rust-pipeline spec v9.2 — §13.6 the commits-coverage row reads an evicting ledger; 0.083 is the 200-row cap, the one tape reads 0.56
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 29→14 over 16 commits since
Open the signed attestation →2026-09-14 · 📐 VS Code architect · offPct 36 · mistagged
edit(blog): define productive friction precisely in 'The Drift You Can't See'
Why it left the lane: The diff touches only src/content/blog/2026-06-10-the-drift-you-cant-see.mdx and inserts a definition-plus-citation block anchored on 'productive friction', 'calibrated contact that builds', and the deep link '[Tesseract Physics, "The Guardian and the Builder"](/book/chapters/11-the-chooser#the-guardian-and-the-builder)'. None of that string space overlaps 📐 VS Code architect's owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md) — there is no blog or book path in that list at all. The reality walk split into two off-lane cells (A1, C3) instead of the intent's single tight cell (B3,B3), which tracks with the diff doing two distinct things at once: defining a term inline AND resolving a cross-reference into a different corpus (the book chapter). prewalkOverlap=4 against walksIntent=139 shows the reef already saw almost no shared mass between what 'architect' claims and what this commit actually is, before the walk even ran.
Intent–reality gap: The commit message frames this as a scoped, surgical propagation of a definition into one blog post — legitimate content work, correctly bounded to one file. The receipt doesn't dispute the work; it disputes the ATTRIBUTION: Originating-Terminal/Relevant-Rooms name 📐 VS Code architect, a room whose declared surface is strategy/product docs, and 36% of the lit reality mass (split across two cells, A1/C3) lands nowhere near that surface.
- Add src/content/blog/** and books/tesseract/** to the owned-surface glob of whichever room legitimately covers blog/book content in .workflow/rooms/*.html — right now the grep shows no room claims those paths, including architect.
- Add a CLAUDE.md line under COMMIT MESSAGE STRUCTURE: Originating-Terminal must match a room whose owned-surface glob intersects the majority of the diff's changed paths.
- Run `node scripts/ops/recontext.mjs` (or the /recontext skill) to check whether src/content/blog/** is UNOWNED or CONTESTED across all 9 rooms — this event suggests UNOWNED.
- Sweep the last 14 days of commits tagged 📐 VS Code architect for any other src/content/blog/** or books/tesseract/** touches — same mistagging is likely not a one-off.
- Note in docs/architecture/claude-rules/doors-and-surfaces.md that a book-chapter deep link from a blog post is legitimate cross-lane content work but must be filed under the content room, never whichever terminal happened to be open.
What we learned: Room attribution on a commit trailer is currently just whatever terminal was open, not a check against the room's declared owned-surface glob — so a session named 📐 VS Code architect can freely commit pure blog content with zero code path overlapping its lane, and the drift receipt is the first and only place that mismatch becomes visible, after the fact rather than at commit time.
The missing guard (the deliverable): A commit-time (pre-commit or post-commit-at-receipt) check that diffs the Originating-Terminal trailer's claimed room against the room's owned-surface glob from .workflow/rooms/*.html, and fails/warns when the changed paths don't intersect it — this is a pure path-vs-glob check, no LLM needed, consistent with the receipt already being LLM-free.
Detector probe: signal attribution — gzip reef 40% · ballistic walk 60%. litIntent(139)==walksIntent(139) and litReality(102)==walksReality(102) with walkTruncated=false, so neither side saturated or truncated — but reality only explored 102 positions against intent's 139 (73%), a meaningfully shallower walk for what is, per the diff stat, a one-line edit. That shallow-but-still-substantial reality walk is likely being pulled wide by the deep-link target (the book chapter) rather than the one line actually changed. Adjustment: bias walk depth/radius by diff size — a 1-line docsOnly change should walk a narrower reality radius unless a cross-reference target is explicitly included, and if it is, that inclusion should be visible in the receipt rather than folded into a single litReality count. Experiments: Ablation: rerun the walk on 86431c962 with the deep-link anchor text (/book/chapters/11-the-chooser#the-guardian-and-the-builder) stripped from the reality corpus; measure whether litReality's two-cell split (A1,C3) collapses to one cell — isolates whether the cross-reference alone drives the off-lane spread. · Add a low-reef-confidence flag when prewalkOverlap/walksIntent < 5% (this event: ~3%) and require those receipts to carry an explicit reef-vs-walk attribution note rather than a single blended offPct. · Track laneHamming/laneHammingNull ratio (here 39/37≈1.05, near-random) across this room's off-lane events specifically; if mistagged-room events cluster near 1.0 while genuine semantic drift events sit further from 1.0, that ratio becomes a cheap pre-filter for 'this is probably a room-glob bug, not real drift' before a human reads the diff.This event inflates 📐 VS Code architect's measured offPct with a false-positive — the content work is sound, only the room attribution is wrong — so the lane's apparent loss-ratio reads worse than its actual practice; premium is restored by correcting the owned-surface glob and shipping the trailer-vs-glob guard so future receipts measure architect's real strategy-doc lane instead of misfiled content commits.
Open the signed attestation →2026-09-14 · 📐 architect · offPct 30
feat(stickers): WHAT IS GOOD IS YOURS. THIS IS HOW YOU KEEP IT. — the headline hands the judgement back
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→41 over 8 commits since
Open the signed attestation →2026-09-14 · ☕ network · offPct 16
comms(self): B2 — el correo para el taller (reenviable) + PDF en curvas + la hoja de especificaciones
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 43
rewrite(chapter-08-from-meat-to-metal): L120 via track MANUAL
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 17→36 over 5 commits since
Open the signed attestation →2026-09-14 · 🔨 builder · offPct 28 · structural
feat(iamfim): the first screen says which half stays human — whether is yours, where is the tape measure; "Keep ethics human."
Why it left the lane: The diff is almost entirely prose — the rendered paragraph ('Rice proved it in 1953', '<b>Whether</b> is politics, and it stays yours', '<b>Where</b> the machine landed... is a tape measure', 'Keep ethics human.', 'The good belongs to you. The math belongs to the tape.') plus a 17-line inline JSX doctrine comment restating the same claim-register argument, plus a test file whose three assertions (no 'fraud'/'snake oil', no 'non-deterministic', the exact split phrasing) enforce VOICE REGISTER, not component behavior. That vocabulary is the voice-and-pitch doctrine corpus (filter-first framing, never-guarantee-behavior, no-debunkable-register), which the reef seeds to voice-room coordinates. lensIntent=C,B2 (builder/structural row) vs lensReality=B,A1 (lower voice-register rows) is exactly that pull, and prewalkOverlap=4 against litIntent=121 shows the builder-seed corpus barely touched this text before the walk had to expand to cover it.
The semantic pull: 'Rice proved it in 1953' · 'Keep ethics human.' (repeated verbatim, comment + code) · 'no debunkable register' / 'fraud, snake oil' ban in the test · 'the labs are a tollbooth' framing in the Story trailer — all doctrine-corpus strings, none of them structural/JSX-mechanics vocabulary, pulling litReality toward B,A1 away from the declared C,B2 builder lane.
Intent–reality gap: The commit message frames this as an iamfim landing-page finding (persona-intent: a general counsel reading before the button) — a builder/product UI change. The receipt measured 28% of lit mass landing outside the builder lane because the actual work was voice-doctrine copywriting executed inside a builder-owned file, with laneHamming=44 clearing the laneHammingNull=34 floor — a real signal, not noise.
- src/app/iamfim-landing/page.tsx: shrink the 17-line inline doctrine comment to a one-line pointer, move the rationale to docs/architecture/claude-rules/voice-and-pitch.md
- tests/site/iamfim-keep-ethics-human.test.mjs: relocate under a voice-owned test glob (or dual-list it) so the room-surface map reflects who actually authors register guards
- docs/architecture/claude-rules/doors-and-surfaces.md: add iamfim-landing/page.tsx to the 'surfaces with mixed structural+voice content' list so future edits to it expect a Relevant-Rooms split
- the receipt scorer: implement the Relevant-Rooms union-lane read described in code_rewrite
- commit-trailer schema docs: document the new Lane-Split trailer format
What we learned: fb93ed948 already found that the pipeline ignores Relevant-Rooms; this event is a second, larger (28% vs unspecified) instance of the SAME mechanism three weeks later, on a different file — which shows the gap isn't isolated, it's structural: file-level room ownership (src/app/ → builder) cannot discriminate between a JSX-structure hunk and a voice-copy hunk inside ONE file. Landing pages that carry both markup and doctrine prose need hunk-level or content-classified room attribution, not file-glob attribution — the fb93ed948 fix (read Relevant-Rooms) is necessary but insufficient without this finer grain.
The missing guard (the deliverable): tests/pmu-simulator/mistagged-commit-does-not-inflate-offpct.test.mjs
Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. litIntent/walksIntent = 121/121 = 100% fill and litReality/walksReality = 128/128 = 100% fill on both sides — the walk is fully saturated (every walked cell lights), giving zero contrast to discriminate in-lane from off-lane within the walked set, compounded by walkTruncated=true. Adjustment: raise the walk step-cap so it doesn't truncate at exactly matching lit=walked, and treat fill==100% as a validity flag ('SATURATED — re-run with tighter cap') rather than a clean reading. Experiments: Recompute prewalkOverlap using the UNION of builder+voice+network dictionaries (per Relevant-Rooms) instead of Originating-Terminal-only, re-run on 92b13dbd2, and check whether prewalkOverlap rises materially above 4. · Re-run this sha with 2x walk budget (walkTruncated=false) and compare whether fill ratio drops below 100%, distinguishing genuine full-coverage from saturation. · Ablate the 17-line inline JSX doctrine comment from the reality corpus and re-measure offPct, to test whether unrendered comment-prose (vs the rendered paragraph) is driving the majority of the voice-lattice pull.Measured outcome (deterministic, not self-graded): room mean offPct 27→34 over 6 commits since · dictionary ablation saved 963B
A 28%-off-lane, 67-events-in-14-days room raises this lane's loss ratio on every future voice-driven landing-page edit until the scorer reads Relevant-Rooms and the doctrine prose is relocated out of the builder file — landing both restores the premium.
Open the signed attestation →2026-09-14 · 🎩 operator · offPct 46
feat(pmu): THE FULL WALK IS THE MINIMUM — one knob home floors every walk, lens.rs defaults to it, the binary rebuilt, and the tape walk is proven byte-identical to the panel walk
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 26→32 over 8 commits since
Open the signed attestation →2026-09-14 · 🔨 builder · offPct 40 · mistagged
fix(interventions): the drift outcome reads the RETAINED priced ledger — closure 4's second reader goes through one door, archive + current
Why it left the lane: The commit's own trailers scope this work explicitly — Originating-Terminal: 🎩 operator, Relevant-Rooms: 🎩 operator, 🧪 laboratory, 📐 architect — and the diff itself lands in tests/ops/probe-verify-reads-retained-ledger.test.mjs, docs/pmu/commit-panels/*.png, and public/data/{insurability,receipts-playback,receipts-strip,series-countdown}.json. None of those paths appear on 🔨 builder's owned-surface list except the bare 'public/' entry, which is a blanket glob that also happens to swallow public/data/*.json — pipeline telemetry output, not builder's app surface. So the mass the receipt encircled at B1,C1/B1,C2/C1,B3 (Ops.Grid×Tact.Speed/Signal) is real work correctly claimed by operator/lab/architect in the commit's own words; it only reads as 'builder, 40% off-lane' because whatever assigns the room='🔨 builder' label for this grading pass consulted neither Originating-Terminal nor Relevant-Rooms.
The semantic pull: litReality(106) > litIntent(94) with walkTruncated=true and prewalkOverlap only 7 of 94 — the walk spread wide before truncating, and none of the diffuse landing coordinates (B1-B3 × C1-C2, 'Ops.Grid'/'Tact.Signal/Loop') are anchored by any string in the actual diff to '🔨 builder'; the diff's only room-bearing strings are the trailer lines naming operator/laboratory/architect, which the room-assignment step evidently never read.
Intent–reality gap: The commit claims (and its trailers formally declare) this is operator/laboratory/architect work — a reader-side ledger fix plus its guard and regenerated panels. The receipt graded it against 🔨 builder, a room absent from both Originating-Terminal and Relevant-Rooms, so the 40% offPct measures a room that was never asked to own this commit in the first place.
- Audit the actual room-assignment function that produced room='🔨 builder' for sha 99cf73a8d — confirm it is NOT reading Relevant-Rooms (fb93ed948 flagged the read-gap; this event shows the assignment may not even fall back to Originating-Terminal)
- Land tests/pmu-simulator/lane-uses-relevant-rooms-not-terminal.test.mjs (ask-019, asked 4×) — do not coin a new spelling
- Narrow 🔨 builder's owned-surface 'public/' entry to exclude public/data/*.json (pipeline-generated telemetry) or scope it to public/data/{blog,book}/** so regenerated PMU artifacts stop blanket-matching builder
- Add scripts/interventions/**, scripts/pmu/**, docs/pmu/commit-panels/**, tests/ops/** to an explicit owned-surface entry for 🎩 operator / 🧪 laboratory / 📐 architect — none of the room-surface lists shown claim these paths today
- Re-run this same sha through the corrected room-assignment code and confirm the graded room becomes one of operator/laboratory/architect, not builder
What we learned: fb93ed948 already found 'the receipt pipeline never consults Relevant-Rooms, only Originating-Terminal' (and that fix attempt made things worse, offPct 30→40). This event is a harder version of the same class: the room graded here (🔨 builder) matches NEITHER Originating-Terminal NOR Relevant-Rooms — meaning the room-assignment mechanism has a third, undocumented source (very likely raw file-path matching against public/) that can attribute a commit to a room absent from both of its own trailer fields. Fixing 'read Relevant-Rooms instead of Terminal' is necessary but not sufficient if the assignment step isn't consulting trailers at all.
The missing guard (the deliverable): tests/pmu-simulator/lane-uses-relevant-rooms-not-terminal.test.mjs
Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Saturated, not right-sized: litReality > litIntent plus walkTruncated=true on a genuinely small diff (one new test file + 4 regenerated JSON + 2 PNGs) means the walk hit its cap before converging, which is exactly the kind of diffuse spread that produces a phantom 40% offPct on a small, well-scoped commit. Adjustment: raise (or make diff-size-proportional) the walk step budget so a small diff cannot truncate before resolving to its narrow intent lane. Experiments: Re-run the prewalk reef seed using ONLY the trailer block (Originating-Terminal + Relevant-Rooms lines) vs the full commit message, and measure whether prewalkOverlap rises — tests whether trailers are even present in the reef corpus today · Exclude public/data/*.json (regenerated pipeline output, not authored diff) from the ballistic walk's file corpus for commits where those paths are the only non-test changes, and re-measure offPct on this sha and its siblings — tests whether regenerated-artifact noise is inflating litReality · Construct a fixture commit whose Relevant-Rooms names a room absent from Originating-Terminal, run it through the full room-assignment + grading pipeline, and assert the graded room is a member of Relevant-Rooms — direct regression reproduction of this event's defect classMeasured outcome (deterministic, not self-graded): room mean offPct 26→45 over 4 commits since · dictionary ablation saved 780B
🔨 builder's lane takes a phantom loss-ratio hit for work it never claimed and whose own trailers say so — left unfixed, builder's premium prices against noise, which both overstates builder's real drift risk and hides the actual operator/laboratory/architect commit's true fit; restored only once the grader is sourced from Relevant-Rooms and this event re-grades to one of the rooms the commit actually names.
Open the signed attestation →2026-09-14 · 🎩 operator · offPct 30 · structural
fix(pmu): commit coverage reads the one append-only tape — 88/156 = 0.564; the priced ledger's 200-row rewrite is an eviction and is named as the next closure
Why it left the lane: The diff's substantive work sits in scripts/pmu/tape-coverage.mjs, docs/architecture/rust-pipeline-flowchart-2026-07-23.md, and tests/pmu-simulator/tape-coverage-dedupes-by-sha.test.mjs — none of which fall inside 🎩 operator's declared owned surface (data/pmu/pipeline/, data/pmu/claudbridge/, public/pmu-demo/, docs/01-business/pipeline/, docs/ops/dashboard*). The terms doing the pulling are architectural/infra vocabulary — 'WALK_TAPE', 'appendPricedRow', 'AXIOM 1', 'commit-intent'/'commit-reality' rows, spec §13.4/§13.5 — which live in scripts/pmu/ and docs/architecture/, a shared core-instrumentation lane the room's glob never names. litReality=136 vs litIntent=117 with walkTruncated=true shows the walk expanding into that shared-infra region and running out of budget before it could resolve back toward the claimed pixel.
Intent–reality gap: The commit claims a narrow fix ('commit coverage reads the one append-only tape') scoped to a measurement number, but the receipt measured 30% of the lit mass landing outside the declared lane (lensIntent B2,B2 vs lensReality A1,B1, laneJump=4) — the actual work is a detector self-repair spanning spec docs, the coverage script, and its guard test, none of which the room's fence includes.
- Extend operator's owned-surface glob (config file backing the lane check) to include scripts/pmu/tape-coverage*.mjs, docs/architecture/rust-pipeline-flowchart-*.md, tests/pmu-simulator/tape-coverage*.test.mjs, data/pmu/tape-coverage-floor.json.
- Ship the already-named-but-unshipped 'room-lane-uses-relevant-rooms' guard (sp-833) — classify offPct against the union of every room in the Relevant-Rooms trailer (operator, navigator, builder), not Originating-Terminal alone; the doc diff itself names this as closure 1, still pending.
- Add a CLAUDE.md or claude-rules note: 'a room whose job is fixing the drift detector itself needs its detector/infra paths inside its own fence, not borrowed from another room's Relevant-Rooms union.'
- Re-run offPct on this sha once the glob is extended to confirm the same diff now scores in-lane — the fix should be provable on the historical event, not just future ones.
What we learned: A room that is itself part of the measurement pipeline (operator/PMU) needs its own fence to include the shared instrumentation files it is charged with repairing — otherwise every legitimate self-repair commit reads as lane drift, and 11 out-of-lane events in 14 days for one room is the signature of a fence drawn around the room's product surface but not its maintenance surface.
The missing guard (the deliverable): tests/ops/room-lane-uses-relevant-rooms.test.mjs — offPct classified against the UNION of every room named in the commit's own Relevant-Rooms trailer (not Originating-Terminal alone), which the docs already name as the next-needed closure (item 1, sp-833) and which this exact commit is a fresh reproduction case for.
Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Under-sized for this commit class: litReality (136) already exceeds litIntent (117) and the walk still truncated before resolving — a multi-file commit touching a doc spec, a script, and a test needs more steps than a single-file commit. Adjustment: raise the walk step budget for commits whose diff spans ≥3 file-kinds (doc+code+test) and re-measure whether walkTruncated clears. Experiments: Re-run this sha with 2x walk-step budget and record whether walkTruncated flips to false and offPct drops — measurable via the same receipt row. · Seed the reef with the room's own owned-surface path tokens (e.g. 'tape-coverage', 'walk-tape', 'measure-history') so self-referential detector commits get prewalkOverlap credit before the walk runs; measure prewalkOverlap delta on the next operator detector-fix commit. · Add a fixture commit that touches only files inside an EXTENDED operator glob and confirm offPct reads under threshold (15) with the config change in place, before trusting the glob edit on live commits.Measured outcome (deterministic, not self-graded): room mean offPct 19→26 over 5 commits since · dictionary ablation saved 881B
A self-repair of the detector's own coverage math firing as 30%-off-lane inflates this room's apparent loss ratio with a false positive; restoring it means fencing operator's owned surface to include the detector files it is chartered to fix, then re-scoring this sha to confirm the premium correction is measured, not asserted.
Open the signed attestation →2026-09-14 · 📐 architect · offPct 39 · structural
feat(stickers): the axiom fills the crescents beside the port — headline full size, port maximised, no balloon
Why it left the lane: The lit mass sits almost entirely in scripts/stickers-b2.mjs (the arcText rewrite, the new clears()/RING/SAFE/PLATE constants — 53 changed lines), tests/stickers/b2-token-and-register.test.mjs (the crescent-region assertions), and the binary public/stickers/b2.png. Only docs/03-product/stickers/{b2-master.pdf,b2-print-brief.pdf,b2.svg,b2-strategy.txt} sit under architect's declared docs/03-product/ line. lensReality=B2,B2 shows the walk saturated on the literal token 'B2' — which names every touched path (stickers-b2.mjs, b2.png, b2-token-and-register.test.mjs, b2-master.pdf) — while lensIntent=C,B2 shows intent only found B2 as its SECOND hit; the primary intent slot (C) never matched anything the diff actually touched, so all of reality's weight rode the shared 'b2' token straight into the code+asset files, not the one doc file the room owns.
The semantic pull: Repeated literal path/token 'b2' / 'B2' across scripts/stickers-b2.mjs, public/stickers/b2.png, tests/stickers/b2-token-and-register.test.mjs and docs/03-product/stickers/b2*.{pdf,svg,txt} — one product token spanning four directories with only one of them (docs/03-product/) on architect's owned-surface list at .workflow/rooms/vscode-architect.html:608.
Intent–reality gap: The commit's own trailers name its home as 🔒 vault (Originating-Terminal) with Relevant-Rooms vault, laboratory, operator — architect appears nowhere in the commit's self-declaration — yet the receipt scored this event against architect's lane and found 39% of the lit reality mass (the generator script, the test, the rendered PNG) outside it. The gap is between which room the commit said it belonged to and which room the detector billed for it.
- Edit .workflow/rooms/vscode-architect.html:608 to scope docs/03-product/ away from docs/03-product/stickers/** (architect keeps the rest of the product-spec tree).
- Add to .workflow/rooms/wezterm-vault.html's owned-surface list: docs/03-product/stickers/**, scripts/stickers-*.mjs, public/stickers/**, tests/stickers/** — the full basket, matching this commit's own Originating-Terminal=vault.
- Ship tests/pmu-simulator/mistagged-commit-does-not-inflate-offpct.test.mjs (ask-033, open 1x) using sha 9ec946161f as the fixture: a commit whose Relevant-Rooms excludes the room the receipt attributed it to should not inflate that room's offPct mean.
- Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027, open 1x): flag when Originating-Terminal names a room whose owned-surface glob covers less than half the touched paths.
- Ship tests/pmu-simulator/shared-state-files-have-room-owner.test.mjs (ask-003, open 1x) — this event is a second instance of the same class: a feature basket (script+test+asset) with zero declared owner anywhere in .workflow/rooms/*.html.
- Re-run tests/ops/room-surface-coverage.test.js (ask-001) after the glob edits to confirm scripts/stickers-b2.mjs, public/stickers/, tests/stickers/ move from UNOWNED to vault-owned.
What we learned: A single product token ('b2') can name files across four directories (docs/, scripts/, public/, tests/) with only one of those four ever declared in any room's owned-surface list — the other three are silently UNOWNED, and the room-lane detector's best-partial-glob-match fallback pins that orphaned mass onto whichever room happens to own the one matching fragment, rather than surfacing it as unowned. This is new relative to prior lessons (ffaf8d2ac, ff5110f85, ff09774e5), which addressed Originating-Terminal/Relevant-Rooms divergence as sanctioned; this event shows the deeper case where the touched surface has NO owner at all and the detector still forces an attribution.
The missing guard (the deliverable): tests/pmu-simulator/mistagged-commit-does-not-inflate-offpct.test.mjs
Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Near-saturated, not right-sized: 113 walk steps produced only 127 lit cells on reality (~1.12 cells/step) vs intent's 58 steps for 109 cells (~1.88 cells/step) — the reality walk is thrashing at roughly half the efficiency, and walkTruncated=true confirms it hit a cap before resolving. Adjustment: raise (or make adaptive) the truncation ceiling specifically when the seed token is shared across ≥3 directories (as 'b2' is here), so the walk can finish converging instead of being cut mid-spread. Experiments: Re-run the reef seed for this sha with 'b2'/'B2' down-weighted as a stop-token (it is simultaneously a lane label and a literal product name) and measure whether prewalkOverlap rises above 5. · Recompress recent history with the compression_dictionary_adds below vs without and measure the prewalkOverlap delta on this sha specifically (sha=9ec946161f). · After the glob edits land, re-run the receipt for this sha and confirm offPct drops toward 0 now that the basket has a single declared owner.Measured outcome (deterministic, not self-graded): room mean offPct 18→41 over 8 commits since · dictionary ablation saved 1041B
An orphaned feature basket that the detector still forces onto the nearest partial-match room manufactures false loss events against that room's lane — until the basket has one declared owner, architect's premium keeps absorbing risk that was never its underwriting exposure.
Open the signed attestation →2026-09-14 · ☕ network · offPct 26 · mistagged
feat(comms): the dispatcher forwards frontmatter attachments — a body that names a PDF ships with it
Why it left the lane: The diff's vocabulary is pure dispatcher-plumbing: 'canonical-send.sh', '--attach', the awk frontmatter scanner, 'ATTACHMENT_MISSING'. None of that is bookclub/outreach content — it's generic pipeline mechanics — so the walk lit up B1,C1 Tact.Speed×Ops.Grid and B1,C2 Tact.Speed×Ops.Loop (mass densest at B2,C2/B3,C2/C1,C2) instead of staying in C,B3, network's Tact.Signal home. The pull vector even names it: 'C,B3 ──► C1,B3 Ops.Grid×Tact.Signal' — an Ops-column magnet.
The semantic pull: 'canonical-send.sh --attach', 'awk ... fm&&lst', 'ATTACHMENT_MISSING' read as core send-engine infrastructure (Ops.Grid/Ops.Loop), not as anything under data/bookclub/, scripts/bookclub/, or docs/comms/bookclub-* — the only strings that would have kept the mass at C,B3.
Intent–reality gap: The commit's Relevant-Rooms trailer names 'network' as one of the three rooms this touches, but zero paths in the diff (scripts/comms/comms-dispatch.sh, tests/comms/dispatch-attachments-from-frontmatter.test.mjs) match any glob network owns. The claim says 'this is network's concern'; the receipt says 100% of the lit mass sits outside every glob network is allowed to claim.
- Land ask-010 (tests/rooms/relevant-rooms-covers-diff.test.mjs) — assert every name in a commit's Relevant-Rooms trailer owns at least one touched path per the room-surface globs, else fail.
- Land ask-003 (tests/pmu-simulator/shared-state-files-have-room-owner.test.mjs) — scripts/comms/** and tests/comms/** currently have NO room owner at all; give them one explicitly (a 'shared-core' pseudo-room) so they stop defaulting to whichever room's trailer mentions them last.
- Add a shared-core owned-surface declaration (e.g. .workflow/rooms/shared-core.html) claiming scripts/comms/**, tests/comms/** with owner:none, consumers: bookclub, outreach, vault, operator.
- Re-check prior lesson f748e0b17 (this same room, offPct 27→21, not fully closed) — this is the SECOND occurrence of 'implementation mass is generic infra, consumer is the named room'; escalate to P0 since the partial fix didn't hold.
- Update the commit-trailer doc section in CLAUDE.md's COMMIT MESSAGE STRUCTURE to state the Relevant-Rooms ownership rule verbatim above.
What we learned: This is the second time THIS room's receipt drifted from the identical mechanism prior lesson f748e0b17 named (implementation mass in generic infra vs consumer-room tagging) — the 27→21 partial fix did not generalize because nothing enforces that Relevant-Rooms tracks OWNED GLOBS rather than 'who benefits.' The repo has two open tickets (ask-003, ask-010) that would each independently close this, and neither has shipped; the structural fact this event reveals is that a lesson without a landed guard recurs exactly on schedule.
The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs
Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Right-sized, not shallow or saturated — litIntent(140)≈litReality(136) with walkTruncated=true flagged, worth confirming truncation isn't masking further spread. Adjustment: rerun this sha with the truncation cap raised ~20% and check whether litReality converges toward litIntent or diverges further. Experiments: Seed the reef corpus with 'canonical-send.sh', '--attach', 'ATTACHMENT_MISSING' tagged to a shared-core lane (not network's) and measure whether prewalkOverlap rises on the NEXT scripts/comms/*.sh commit. · Force walkTruncated=false on this sha's fixture and diff litReality against the current 136 — measurable: does it converge toward litIntent's 140 or reveal a wider true spread? · Add a fixture commit that touches ONLY scripts/comms/** with Relevant-Rooms naming no consumer room, and confirm offPct drops toward the room's floor when the trailer doesn't claim ownership it doesn't have.Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since · dictionary ablation saved 649B
A commit that files shared-infra work under a consumer room's lane inflates that room's loss ratio for work it never actually owned, so premium correction is landing ask-010 + ask-003 rather than tightening network's floor further.
Open the signed attestation →2026-09-14 · 🧪 laboratory · offPct 39 · mistagged
test(stickers): the crescent guard allows the end glyph to pass 9/3 o'clock by up to 10° — ea5e5c2e35 landed red
Why it left the lane: The diff is pure sticker-geometry vocabulary — 'crescent', 'equator', '9 / 3 o'clock', 'upper half', angle-band literals 195/280/80/165 — none of which touches anything in laboratory's owned surface (mcp/crm/orchestrator/punch-list). The lattice walk correctly placed the actual work at A1,A3 while the commit's own Relevant-Rooms trailer ('vault, laboratory, operator') declared an intent lane of A2,A2, so the 39% offPct is the walk reporting a true mismatch between a habitual room list and the file the diff actually touched.
The semantic pull: Strings 'crescent glyph', 'centred on the equator', 'upper half', and the raw angle literals (195,270→280 / 90,165→80) are geometry/graphics-domain tokens with no analogue in laboratory's MCP-orchestrator vocabulary — they pull the reality walk toward whatever lattice cells the corpus associates with SVG/geometry test assertions, away from A2,A2.
Intent–reality gap: The commit message correctly and narrowly describes a sticker-geometry test-tolerance fix, but the Relevant-Rooms trailer names laboratory as relevant even though laboratory's declared owned-file-surface contains nothing under tests/stickers/ — the receipt is measuring that trailer's false claim, not a defect in the sticker work itself.
- Run rules-for.mjs against the diff paths BEFORE writing Relevant-Rooms, every commit — not just when a receipt already flagged drift
- Confirm (or create) the room-ownership entry that claims tests/stickers/** — right now no listed room's owned surface covers it
- Land tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010) so a trailer naming a room with zero diff-surface overlap fails CI at commit time
- Land tests/pmu-simulator/mistagged-commit-does-not-inflate-offpct.test.mjs (ask-033) as the downstream safety net for whatever mistagging slips past the trailer check
- Audit vault's last 8 out-of-lane events (stated in this room's 14-day count) for the same habitual-room-list pattern before treating this as isolated
What we learned: Relevant-Rooms trailers are being populated from the originating terminal's habitual room set (the rooms that terminal usually touches in a session) rather than from a path-derived check against the diff — this is a NEW failure mode distinct from the prior facts-only lessons for this room, because it's not the code that drifted, it's the self-reported intent lane that was never checked against the file surface before being written.
The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs
Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Right-sized in fill (both sides lit 100% of their own walk budget) but truncated before reaching parity with intent's 140 — for a lane-jump=1 event like this, raise the walk depth cap specifically when laneHamming (28) sits well below laneHammingNull (44), since that gap signals a real signal worth resolving further rather than a truncation artifact. Experiments: Reseed the gzip baseline dictionary with stickers-domain terms ('crescent', 'equator', 'o'clock') and recompute prewalkOverlap on this sha — measure whether overlap rises materially above 7/140 · For any commit whose Relevant-Rooms names a room with zero glob-matched diff paths, skip the full lattice walk and emit UNMEASURED instead of a misleading offPct — replay the last 8 laboratory out-of-lane events with this rule and measure how many were this same mistag class · Track laneJump=1 events across all rooms for one week and bucket by whether the jumped-to lane matches a file-surface glob with zero listed-room overlap — measure what fraction of laneJump events are mistags vs genuine cross-lane workMeasured outcome (deterministic, not self-graded): room mean offPct 22→23 over 6 commits since · dictionary ablation saved 676B
A mistagged-room event inflates this lane's apparent loss ratio without any real code defect behind it, which erodes trust in the offPct signal itself; premium is restored the moment the trailer-vs-diff check (ask-010) makes mistagging a pre-commit failure instead of a post-hoc receipt surprise.
Open the signed attestation →2026-09-14 · 🧪 laboratory · offPct 37 · structural
feat(rooms): room attribution by owned surface — the drift is filed under the room that OWNS the paths, the trailer is kept as trailer_room; commit-msg warns on a mistag; guard at the most-asked spelling
Why it left the lane: The commit's own trailers contradict each other: Originating-Terminal says '📐 architect' but Relevant-Rooms lists 'Laboratory, Operator, Builder' — and the event this receipt fired under is filed as room '🧪 laboratory', whose declared owned surface (thetacoach-crm-mcp/, swarm-comms/, .thetacog/orchestrator/, .thetacog/punch-list*, .mcp.json) shares zero paths with what the diff actually touches: scripts/rooms/recontext.mjs, scripts/interventions/intervention-fire.sh, hooks/commit-msg, tests/pmu-simulator/room-lane-uses-relevant-rooms.test.mjs. The receipt's own lensIntent=C2,C vs lensReality=C,C shows the same signature numerically: the two-tier intent coordinate (room + sub-scope, 'C2') collapsed to the coarse single-tier reality bucket ('C') — exactly the flattening that happens when 'which room is this filed under' loses precision.
Intent–reality gap: The commit claims to close the room-attribution loop end-to-end ('the story, the event ledger and the /intervene page all filed the drift under [the owner]') via 'one function, three callers,' but the receipt that generated THIS very event still shows room=laboratory — a value none of the three patched callers (intervention-fire.sh's event write, its story write, commit-msg's warn block) would produce from these paths, since attributePaths on scripts/rooms/**, hooks/**, tests/pmu-simulator/** resolves to 'unowned-surface' (falls back to the architect trailer) or to whichever room's globs actually cover scripts/interventions/** — never laboratory.
- grep -rl 'THE EVENT ==' scripts/ to find the /intervene prompt-assembler and confirm which room-resolution path it calls
- add scripts/rooms/**, scripts/interventions/**, hooks/**, tests/pmu-simulator/** to an explicit declared owner in ownedSurfaces() so they stop resolving via topic-map/unowned-surface fallback
- make Relevant-Rooms auto-suggested from attributePaths(paths) at commit-msg time rather than hand-typed, closing the human-guess gap that produced 'Laboratory' here
- add a cross-check: for each row in .thetacog/delegation-fires/fires.ndjson (or wherever events live), assert stored `room` equals attributeCommit(sha).room — the missing_guard below
- note in recontext.mjs's header comment that the fix landed for two callers but the receipt-rendering layer (this event) was not yet verified consistent
What we learned: A two-sided drift fix that patches the writers (event ledger + story JSON) can still leave a THIRD, unaudited reader/renderer on the old resolution path — 'one function, three callers' silently undercounted the callers, and the undercounted one is the exact surface (/intervene's own event display) that would have caught the miss immediately if it had been checked against the new function's output.
The missing guard (the deliverable): A guard that, for any sha with an event in the intervention ledger, asserts the `room` field stored equals `attributeCommit(sha).room` recomputed live — an end-to-end ledger-vs-authority consistency check, not just the unit-level attributePaths tests room-lane-uses-relevant-rooms.test.mjs already has.
Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. walkTruncated=true on a 4-file, 208-line diff spanning four structurally different concerns (shell hook, node module, bash script, test file) suggests the walk hit its step budget before fully separating the four files' lanes — right-sized for a single-concern commit but shallow for this one; raise the step budget specifically when a diff's file-type diversity (sh+mjs+test) exceeds 2 distinct extensions. Experiments: Re-run ad5ff129f's receipt with the walk budget raised until walkTruncated=false and check whether offPct moves toward or away from 37 — isolates whether truncation itself inflated this drift reading. · Diff-ablate recontext.mjs's new prose header comment block (the '41 intervention asks' paragraph) out of the corpus and recompute prewalkOverlap — if overlap rises measurably, comment-prose is diluting the reef seed relative to identifier code. · Run attributeCommit(sha) against the last 40 commits and diff its `room` output against each commit's stored ledger `room` — a direct, deterministic measurement of the exact defect this event instantiates, reportable as a mistag-rate number the way the commit already reports 32/40.Measured outcome (deterministic, not self-graded): room mean offPct 22→23 over 6 commits since · dictionary ablation saved 857B
An intervention engine that mis-files its own room-attribution fix under the wrong room erodes trust in every other room's offPct count on /intervene until the ledger-vs-authority guard lands and the mistag rate on this exact class is re-measured at zero.
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 46
feat(six-percentages): the ratchet turns per shipped post — compounding was not happening; six post floors rise on today's post
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 29→39 over 4 commits since
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 54
book(ch8): L120 grammar — "example are", "it's about" (operator's Pauli/mailbox sentence, wording untouched)
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 17→36 over 5 commits since
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 18 · mistagged
fix(gift): the key pill docks directly above the crew bar, on its measured height — never over page content, never under the bar
Why it left the lane: The diff touches only src/components/GiftLicenseFloater.tsx and tests/components/*.test.mjs — position/zIndex/footClear layout code and DOM-string assertions ('position: .fixed., right: \d+, bottom: footClear + GUTTER', 'maxHeight: `calc(100vh - ${TOP + GUTTER + footClear}px)`'). Per .workflow/rooms/iterm2-builder.html, 'src/app/, src/components/ production code — owned by 🔨 Builder'; 🎤 voice's owned surface is books/tesseract/chapters/*.md, src/content/blog/*.mdx, decentralizedtalk/slideData.ts, src/app/decentralized*, src/app/6needs/, scripts/voice-*-check.sh — none of which appear anywhere in this diff. lensIntent=A2,C carries voice's content cell; lensReality=B,C is where the walk actually lit — B is exactly the component/layout code cell this diff is made of, dragged there by tokens like 'footClear', 'GUTTER', 'zIndex: 60' that have zero textual overlap with voice's content lexicon.
The semantic pull: Structural/layout identifiers ('footClear + GUTTER', 'position: fixed', 'bottom:', 'maxHeight: calc(100vh - ...)') and test-harness code (slice/indexOf/regex assertions in the two .test.mjs files) are pure component-lane vocabulary; there is not one book/blog/content string in the diff to pull the walk back toward A2.
Intent–reality gap: The trailer claims 'Originating-Terminal: 🎤 voice' and lists voice among Relevant-Rooms, but 100% of the changed lines are in src/components/ and tests/components/ — a surface .workflow/rooms/iterm2-builder.html explicitly assigns to 🔨 Builder, not Voice.
- Confirm src/components/*.tsx and tests/components/*.test.mjs are listed under 🔨 Builder's owned-surface glob in .workflow/rooms/iterm2-builder.html (already implied by 'src/app/, src/components/ production code — owned by 🔨 Builder'; make it explicit including tests/components/)
- Ship tests/ops/room-attribution-matches-paths.test.mjs (already queued as sp-847, due 2026-09-14) so every commit's Originating-Terminal trailer is checked against the changed paths' owning room
- Ship the pre-commit owned-surface-glob check (queued sp-837/sp-846) so a voice-tagged commit touching src/components/ fails or warns before landing, not after the receipt fires
- Re-file this event's Relevant-Rooms precedent: when only builder-owned files change, Originating-Terminal must be builder even if the human sat in the voice terminal that session
What we learned: Room tags in this repo are self-reported metadata typed into a commit trailer, with no mechanical binding to the files actually touched in that commit — 'room' as recorded is a claim, not a property of the diff, so offPct for a chatty room like voice can spike purely from someone doing builder work while the session identity string still says 🎤 voice. The three prior facts-only interventions for this room all show offPct rising afterward (27→39, 21→31, 0→36), consistent with a self-tagging error that no prior pass actually touched — none proposed a trailer/room-match guard.
The missing guard (the deliverable): A commit-time check (already spec'd but unshipped: tests/ops/room-attribution-matches-paths.test.mjs, due 2026-09-14 per the Builder room board) that resolves each staged file to its owning room via the .workflow/rooms/*.html owned-surface globs and fails/warns when Originating-Terminal names a room with zero overlap — this exact event is the reproduction case to write the test against.
Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. litReality (104) fell well short of litIntent (143) and walkTruncated=true fired — the reality-side walk was cut off before it could converge on a spread comparable to intent's, which reads as under-budgeted rather than saturated. Adjustment: rerun this sha with the hop/budget ceiling raised (e.g. 1.5x current max-hops) and check whether litReality closes toward 143 and whether offPct drops as a result — if it doesn't move, the truncation wasn't the driver and the low prewalkOverlap is. Experiments: Re-run the gzip-NCD reef seed for b7c318d8f restricted to src/components/GiftLicenseFloater.tsx alone (excluding the two test files) and compare prewalkOverlap — if it rises materially, test-file boilerplate (assert/regex scaffolding) is diluting the reef seed for component commits generally. · Rerun with 1.5x the hop budget to see if walkTruncated clears and litReality converges toward litIntent=143; measure whether offPct moves independent of the reef-seed fix above. · Compute laneJump/laneHamming against all three Relevant-Rooms (builder, voice, vault) rather than solely against Originating-Terminal, and check whether this event reclassifies as in-lane once matched to builder — this directly tests the mistagged hypothesis against the detector's own numbers.Measured outcome (deterministic, not self-graded): room mean offPct 29→39 over 4 commits since · dictionary ablation saved 1022B
An out-of-lane fix that is otherwise correct and well-tested still reads to the room's loss ratio as unverified drift because the trailer's room claim can't be checked against the diff; premium on 🎤 voice's lane is restored not by better prose but by shipping the already-spec'd room-attribution guard (sp-847) so Originating-Terminal becomes a checkable fact instead of a self-report.
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 32 · mistagged
chore(panels): re-grounded 522 post panels through the encircled door — 439 real, 83 refusals removed, 0 sub-floor panels left in the index [panel-attached]
Why it left the lane: Every one of the 5 changed files sits outside voice's owned globs (src/content/blog/*.mdx, books/tesseract/chapters/*.md): docs/pmu/commit-panels/6632124be-encircled.png, docs/pmu/commit-panels/<sha>/manifest.json, public/blog/post-panels/2026-06-13-the-discipline-of-presence/manifest.json, public/blog/post-panels/2026-08-25-the-rewrite-has-no-control-group/manifest.json, and src/data/post-panels-index.json — zero .mdx or chapter prose was touched. The commit's own Story text names the pull directly: "through post-drift-history.sh's fixed door", "482 of the regenerated files were swept into two panel-repair controller commits", "Guards: panel-index-current 1/1, panel-pin-refuses-refusal 4/4" — this is PMU receipt-pipeline maintenance vocabulary, not blog-content vocabulary, and the receipt confirms it: lensReality=null (the walk couldn't classify the reality side into any lens at all) against lensIntent=B3,C1, with prewalkOverlap=0 (the gzip-NCD reef found zero seed overlap before the walk even ran) and litReality collapsing to 41 of litIntent's 120.
The semantic pull: Binary PNG blobs + a single-line minified src/data/post-panels-index.json give the walk almost nothing proseable to traverse — the 'reality' text mass is JSON keys ("panel":"/blog/post-panels/…, "encircled":true, "bytes":…,"lit":…) repeated hundreds of times, structurally alien to the intent lane's blog-authorship vocabulary. That mismatch is what produces lensReality=null rather than a wrong-but-nonzero lens.
Intent–reality gap: The commit message narrates itself as panel maintenance for the blog ('re-grounded 522 post panels', 'panel-attached') and is stamped Originating-Terminal: 🎤 voice — but its own Relevant-Rooms trailer names builder, vault, navigator, not voice, and the receipt shows the work landed 100% in PMU-pipeline paths voice does not own. The commit correctly disclosed its own cross-lane nature in the trailer and was attributed to the wrong room anyway.
- Add docs/pmu/commit-panels/**, src/data/post-panels-index.json, public/blog/post-panels/** to builder's/vault's declared owned-surface (they are conspicuously absent from voice's list already — confirm they're present somewhere else, else they're an ownership gap on their own)
- Update scripts/pmu/post-drift-history.sh to compute Originating-Terminal from the touched-path set rather than inheriting the invoking shell's room label
- Update scripts/blog/build-panels-index.mjs's commit-trailer emission the same way if it independently stamps trailers
- Add a check that Relevant-Rooms and Originating-Terminal are cross-validated at commit time — if they never intersect, warn before the hook completes
- Confirm the two hand-fixed stragglers (2026-08-25-the-rewrite-has-no-control-group, 2026-06-13-the-discipline-of-presence) have no residual .mdx/chapter linkage that would put them back in voice's lane
What we learned: Room/lane attribution here is keyed to WHICH TERMINAL ran a script, not WHICH FILES the script touched — so a purely mechanical, cross-cutting panel-repair job (zero content files touched) inherits whatever room's terminal happened to launch it, even when the commit's own Relevant-Rooms trailer names different rooms outright. The three prior facts-only interventions in this room all show offPct WORSENING (27→39, 21→31, 0→36) — none of them could have caught this because none had sensemaking; this is the first pass that names the actual mechanism (terminal-identity ≠ content-ownership) rather than reacting to the symptom.
The missing guard (the deliverable): tests/ops/room-file-lane-match.test.mjs: for a commit's staged diff, compute room-ownership of every touched path; FAIL/WARN if Originating-Terminal's owned globs match none of the touched paths while another room's globs (or the commit's own Relevant-Rooms list) match all of them.
Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Under-utilized in a way that's structurally forced, not a tuning bug: forcing 120 walk-steps' worth of intent-side spread against a diff that's mostly Binary + single-line JSON produces a null classification rather than a clean signal. Concrete adjustment: pre-detect binary-and-minified-JSON-dominant diffs (>80% of changed bytes) and short-circuit them to an explicit UNMEASURED/structural-lane state instead of forcing the full walk to emit lensReality=null. Experiments: Pre-filter: for diffs where >80% of changed bytes are Binary files or single-line minified JSON, skip the full 120-step walk and return UNMEASURED; measure whether this reduces false offPct alarms on panel-repair-class commits over the next 20 such commits · Extend prewalkOverlap to also score a 'path-lane prior' — touched-path-glob overlap against the claiming room's owned surface, independent of gzip-NCD text content — and measure correlation between path-lane mismatch and eventual offPct across the last 50 receipts · Feed the commit's own Relevant-Rooms trailer as a second candidate lane alongside Originating-Terminal into the lens walk, and measure whether classifying against the UNION of the two lowers offPct on commits where they diverge (this commit is exhibit A)Measured outcome (deterministic, not self-graded): room mean offPct 20→37 over 4 commits since · dictionary ablation saved 1349B
This event is a false debit against voice's loss-ratio — the 32%-off-lane reading is attribution noise, not content risk — and the lane's premium is restored the moment Originating-Terminal is computed from touched paths instead of ambient terminal identity, closing the gap the commit's own Relevant-Rooms trailer had already disclosed.
Open the signed attestation →2026-09-14 · 🔨 builder · offPct 27
build(book): ch8 HTML for 8ff148de76 — the Pauli/mailbox P=1 receipt sentence reaches the served page
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 27→20 over 4 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 33 · mistagged
feat(stickers): the disc is the headline and the port — sub-line off, plate 440px (1.0mm module), done
Why it left the lane: The diff's textual mass is dominated by physical-production vocabulary — 'kiss-cut', 'die-cut', 'vinyl', 'laminate', 'GS1', 'module', '1.0 mm', 'PLATE = 440', 'safe circle', 'plotter' — from docs/03-product/stickers/b2-print-brief.html and scripts/stickers-b2.mjs. That vocabulary reads as shop-floor/production craft, not architect's strategy/spec register, and the walk placed it at lensReality=B,A1 — a 6-hop laneJump from the declared lensIntent=B2,C (laneHamming=51 vs a null of 38, i.e. a real jump, not noise). The commit's own trailers agree with the walk, not with the room label: Originating-Terminal is '🔒 vault', and Relevant-Rooms lists 'vault, laboratory, operator' — architect appears in NEITHER, even though 5 of the 8 changed files (b2-master.pdf, b2-print-brief.html, b2-print-brief.pdf, b2-strategy.txt, b2.svg) sit under docs/03-product/, architect's own owned glob.
The semantic pull: 'kiss-cut... círculo limpio', 'GS1's 0.495mm target', 'PLATE = 440', 'safe circle allows for its width' are shop-floor/print-production terms that the reef would legitimately seed toward vault/operator coordinates (matching the commit's own Relevant-Rooms trailer) — the terms are pulling correctly toward B/A1; the mislabel is that the event got filed under architect's lane at all.
Intent–reality gap: The commit's own trailers claim it belongs to vault/laboratory/operator (architect is named in neither Originating-Terminal nor Relevant-Rooms), yet the receipt evaluated it against architect's docs-only lane — so the 33% of lit reality mass that is script+test+binary work reads as 'out of lane' for a room the commit never claimed to be in, while the room that DID author most of the changed files (architect, 5/8 files under its own docs/03-product/ glob) is entirely absent from the trailer that should have named it.
- Author future sticker commits with Relevant-Rooms computed by file-count-per-owned-surface-glob, not by eyeballing which terminal originated the session
- Ship tests/rooms/relevant-rooms-covers-diff.test.mjs (ask-010): assert every room whose owned-surface glob matches >0 changed files appears in Relevant-Rooms, ordered by match-count descending
- Ship tests/pmu-simulator/mistagged-commit-does-not-inflate-offpct.test.mjs (ask-033) as the downstream safety net so a trailer-omitted room's offPct trend isn't inflated by commits it never claimed
- Ship tests/pmu-simulator/originating-terminal-matches-surface.test.mjs (ask-027) to catch the Originating-Terminal-level version of the same omission
- Add a worked example to CLAUDE.md's commit-trailer section resolving 'which room most touches a mixed docs+code+test+binary commit' with the file-count-per-glob rule spelled out, since two prior interventions (ffaf8d2ac, ff09774e5) diagnosed this ambiguity without landing the arithmetic
What we learned: The CLAUDE.md Relevant-Rooms rule ('3 rooms whose owned-surface the commit most touches') is objectively computable from the diff's file-surface overlap, but nobody actually computes it at commit time — authors eyeball it and can get it backwards, as here, where the room owning the majority of changed files (architect) was dropped entirely from its own commit's trailer. Three guard-asks already exist to catch exactly this (ask-010, ask-027, ask-033) and none has shipped across at least two prior interventions on this same room, so the recurring fact isn't the ambiguity — it's that a fully-spec'd fix keeps not landing.
The missing guard (the deliverable): tests/rooms/relevant-rooms-covers-diff.test.mjs
Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Saturated, not right-sized: 100% fill on both litIntent/walksIntent and litReality/walksReality means the walk never pruned a dead branch, and walkTruncated=true means it also hit a step-budget ceiling before natural convergence — the two facts together mean 'saturated' may actually be 'cut off before it could discriminate.' Concrete adjustment: raise the walk's step budget specifically for commits whose diff spans >3 non-owned-surface directories (here: scripts/, tests/, public/, docs/), then check whether litReality/walksReality drops below 100%. Experiments: Re-seed the reef with the Relevant-Rooms trailer's full room list (not just Originating-Terminal) and re-run this sha's walk; compare offPct against the current 33 — ablation over the next 20 architect commits with/without the multi-room seed. · Strip the three binary diffs (b2-master.pdf, b2-print-brief.pdf, b2.png — zero lexical content) from the reality corpus before walking and measure whether walksReality/litReality fill drops below 132/132, i.e. whether binaries are padding the saturation artificially. · Raise the walk step budget by a fixed multiplier for any commit touching >3 top-level directories and re-run this sha; measure whether walkTruncated flips to false and whether litReality/walksReality separates from 100%.Measured outcome (deterministic, not self-graded): room mean offPct 18→41 over 8 commits since · dictionary ablation saved 1319B
A room whose own commit trailers can omit the room that authored the majority of its changed files is an unpriceable lane — underwriting this class stays suspended until ask-010 ships and architect's next 10 commits show Relevant-Rooms actually covering the file-surface majority.
Open the signed attestation →2026-09-14 · 📐 architect · offPct 28
feat(stickers): ¿DEBATABLE? / !INSURABLE — the axiom as its two glyph-forms in the crescents, 90px; port back to 440
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→41 over 8 commits since
Open the signed attestation →2026-09-14 · 🧪 laboratory · offPct 61
feat(blog): the sold door is the pipeline — every OffRamp's sold href must land on iamfim.com / the ratchet / the invoice, its lost href on a growth path; --strict and S13 fail otherwise
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 22→23 over 6 commits since
Open the signed attestation →2026-09-14 · ☕ network · offPct 55
chore(commit-page): publish c0dfc95f57
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since
Open the signed attestation →2026-09-14 · 🎩 operator · offPct 17
feat(interventions): the canonical open-asks registry — one ticket per construct, one self-prompt per ticket; closure by the reproduction the guard cites, not the spelling
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 19→25 over 4 commits since
Open the signed attestation →2026-09-14 · 🧪 laboratory · offPct 46
feat(iamfim): the axiom replaces the stamp — "Whether is yours. Where it landed is the tape." on the hero and under the lightbox knife; "Keep ethics human" retired the day it shipped
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 22→23 over 6 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 30
feat(stickers): AI DOESN'T GET TO SELL IT — and the annotations sized by ratio (headline ÷ φ²), tucked in the pockets
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→41 over 8 commits since
Open the signed attestation →2026-09-14 · ☕ network · offPct 24
comms(self): B2 taller mail v3 — the crescent master attached; supersedes v1 and v2
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 56
docs(pmu): rust-pipeline spec v11 — §14 ONE WALK, ONE KNOB HOME: the tape walk was the shallow one, the floor, the A/B table (it does not ratchet faster; the lever is admissibility), Task 21 closed, Task 22
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→24 over 7 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 34
feat(stickers): pure black and white, no foot line, air around the circle — the disc is the headline, the axiom, the port
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→41 over 8 commits since
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 33
fix(blog): The Magic Wand Has Teeth v3 — the "evicted" paragraph corrected: the ledger rotates into an archive the reader never opened; the first draft's sentence was the alibi
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→0 over 17 commits since
Open the signed attestation →2026-09-14 · ☕ network · offPct 56
comms(self): B2 taller mail v2 — the seal master attached; supersedes the hour-earlier PDFs
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct —→0 over 12 commits since
Open the signed attestation →2026-09-14 · 🔨 builder · offPct 46
blog(slop): section H publishes the null — the A/B has not started, and why
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 29→3 over 5 commits since
Open the signed attestation →2026-09-14 · 🧪 laboratory · offPct 49
feat(skills): /panel — the encircled panel is verified by construct before it is shown, never by size or look
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 22→23 over 6 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 52
docs(pmu): rust-pipeline spec v15 — ONE PLACEMENT DOOR: fallbacks refuse, the 24-row allowlist that may only shrink, the parity fixture's config, Task 24
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 19→31 over 12 commits since
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 65
chore(blog): the post points at ten frames, which is what /deck/grip now has
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 23→46 over 3 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 48
feat(stickers): crescents rotated up 8° — clear of the port's corners, under the equator; reads as a seal's bottom line
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→41 over 8 commits since
Open the signed attestation →2026-09-14 · 🎤 voice · offPct 19 · structural
feat(blog): the river post points at the three standing pages instead of ending at a command
Why it left the lane: The one-line diff swaps a paragraph of bare citations for a paragraph naming and glossing three cross-room systems by mechanism, not just by URL: 'the adoption board... where every count is generated from the tape rather than typed by hand', 'the disclosed escalation ladder... published whole so any party sees every rung before the first one fires', and 'what to do in the hour after you stop arguing'. Those phrases carry the operating vocabulary of /benchmark (navigator-owned tape/count machinery) and /playbook (operator-owned escalation-ladder machinery), not blog-argument vocabulary. Even though the touched file is 100% inside voice's own glob (src/content/blog/*.mdx), the walk follows the words, and those words are dense in other rooms' lexicon, which is what pulls lensReality to B3,C against lensIntent's B1,A1.
The semantic pull: Real strings from the diff doing the pulling: '/benchmark', '/playbook', '/cta', 'generated from the tape', 'escalation ladder... every rung before the first one fires', 'the hour after you stop arguing'. These are descriptions of OTHER systems' state machines embedded in a voice file, which is why offPct=19 fires against a threshold of 15 with laneJump=2 and laneHamming=62 (vs null 42) — a real, not noise-level, displacement toward B3/C-column mass (densest at B2,C2 / B3,C2 / C1,C2 per the lens panel).
Intent–reality gap: The commit claims it only 'hands over all three as ingredients' — i.e., adds pointers. What actually landed is a paragraph that re-describes each destination's internal mechanism in the source lane's own words, so the receipt measured mechanism-prose, not pointer-prose.
- Trim the three link-clauses in this post to name-only pointers (see code_rewrite).
- Grep the other 510 posts for any digestif pattern that names /benchmark, /playbook, or /cta with mechanism prose attached, before this pattern gets copied forward.
- Add docs/architecture/claude-rules entry (or extend doors-and-surfaces.md) declaring: blog posts may LINK to another room's owned route but may not restate its mechanism in more than a clause.
- Add a commit-trailer convention: when a blog mdx links to a non-blog-owned route, note it as 'Cross-Room-Links: /benchmark, /playbook, /cta' so Relevant-Rooms and the link targets are auditable together.
- Extend the room's owned-file-surface glob doc to explicitly note src/content/blog/*.mdx may reference but not duplicate navigator/operator page content.
What we learned: The receipt tracks vocabulary, not file ownership — a commit can be 100% inside one room's glob and still register as out-of-lane the moment its prose absorbs another room's operating terms (tape-generated counts, escalation rungs) instead of merely pointing at them. This is new versus the priors (which shipped no sensemaking and saw offPct climb 27→39, 21→31, 0→36): the failure mode here isn't touching the wrong file, it's narrating the wrong room's mechanism inside the right file.
The missing guard (the deliverable): A pre-commit check over changed lines in src/content/blog/*.mdx: for every outbound markdown link whose target route is declared as owned by a different room (per the owned-surface globs), flag if the surrounding sentence/clause exceeds ~12 words of description — i.e., linking is free, glossing the destination's mechanism is not. Fails loud rather than silently drifting the lane.
Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Right-sized, not shallow or saturated-wastefully: every walk step lit a cell on both intent (141/141) and reality (119/119) sides. The gap is in seed composition, not walk depth. Adjustment to test: hold walksIntent fixed and increase the reality-side walk budget ~15% to see if additional steps reconverge reality toward the B1,A1 intent lane, isolating whether the 119-vs-141 spread is a budget artifact or a genuine seed-driven divergence. Experiments: Re-run this sha's reef seed with the three phrase-strings ('generated from the tape', 'escalation ladder... every rung', 'the hour after you stop arguing') excluded from the corpus, and measure whether offPct drops toward the B1,A1 intent lane. · Ablation-test the gzip baseline dictionary with vs without the route tokens '/benchmark', '/playbook', '/cta' present, over the room's last 14 days of history, to see if down-weighting bare route strings changes mean offPct. · Compare corpusSha=24f23177e3b0's lexicon weight for cross-room route tokens against blog-only prose tokens, to test whether route mentions should carry less mass than mechanism-description prose in this room's reef.Measured outcome (deterministic, not self-graded): room mean offPct 29→39 over 4 commits since · dictionary ablation saved 801B
A digestif that quietly imports another room's operating vocabulary raises this lane's loss-ratio by manufacturing false cross-lane drift events even when the touched file is correctly owned — premium is restored by keeping links terse (pointer-only) and shipping the pre-commit clause-length guard so the next 510-post copy of this pattern doesn't repeat the same false-positive class.
Open the signed attestation →2026-09-14 · 📐 architect · offPct 45
docs(pmu): rust-pipeline spec v9.1 — §13.5 closure 1 landed; the 0.119 prediction corrected to the measured 0.096; what closed was attribution, not offPct classification
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 26→29 over 7 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 29
fix(interventions): open-asks closure reads a one-pass reproduction index — 18 s → 3.3 s, the end-state row no longer times out; the ledger header corrected (rotation into an archive, not eviction)
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→8 over 17 commits since
Open the signed attestation →2026-09-14 · 📐 architect · offPct 21
feat(stickers): one disc, one token — headline on top at 110px, the axiom as the sub, no A/B, no lot number
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→41 over 8 commits since
Open the signed attestation →2026-09-14 · 🎩 operator · offPct 39
feat(pmu): GRIP measured — the end-state floors turned for the first time, the guard-closure row joins the one table, spec v9 §13 with the paste's overshoots corrected
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 12→13 over 4 commits since
Open the signed attestation →2026-09-13 · 🔧 Builder · offPct 49
feat(callback): phone, email (or idea) — a visible SEND button, and an address joins the book club
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 →2026-09-13 · 📐 architect · offPct 20
docs(pmu): rust-pipeline spec v6 — RSI as receipts: what the tape said, the aperture A/B on 120 commits, admissible-only S/N, the head default decided by the number, the gain scale answered, Tasks 18–20
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 19→26 over 15 commits since
Open the signed attestation →2026-09-13 · 🔧 Builder · offPct 32 · structural
fix(iamfim): the lightbox was refused by its own API — self-nomination hit GATE 1 for five days
Why it left the lane: The diffstat shows the mass, not the metaphor: BackstageSignup.tsx moved +7/-1 (one field deleted, one comment block), while tests/surfaces/iamfim-bookclub-backstage.test.mjs moved +33/-0 — 82% of the commit's insertions. That 33-line block is a NEW test ("the lightbox payload is not the self-nomination pair the route refuses") that does `readFileSync(ROUTE, 'utf8')` on `src/app/api/book-club/nominate/route.ts`, regexes for `nominatorEmail\s*&&\s*nominatorEmail\s*===\s*email`, then regexes the lightbox's own `JSON.stringify({...})` body literal. Builder's owned-file-surface list (`.workflow/rooms/iterm2-builder.html:651`) names `src/app/`, `src/components/`, `src/lib/`, `public/`, named scripts, hooks, `decentralizedtalk/`, `thetacoach-crm-mcp/`, `vercel.json` — it names zero `tests/` path anywhere. The walk's mass landed where the new bytes actually are: a file class this room's own declared surface has never claimed.
The semantic pull: The pull is structural, not lexical: CODE DEFINITION-OF-DONE (CLAUDE.md) mandates "the deliverable... is the REGRESSION GUARD... no guard → not done," and this commit obeyed it correctly — it wrote `tests/surfaces/iamfim-bookclub-backstage.test.mjs`. But the room's own surface declaration was authored before that hard rule existed and only lists `src/*` production paths. Every compliant bugfix in this room now necessarily writes bytes into an unclaimed lane.
Intent–reality gap: The commit message claims a scoped component fix — "Drop nominator_email from the self-signup... guard the PAIR" — and reads as a one-file, one-field change. The receipt measured 82% of the commit's inserted lines landing in `tests/surfaces/`, a directory absent from Builder's owned-file-surface declaration, so the claimed lane (src/components) covers a fifth of what actually shipped.
- Add `tests/surfaces/` (or the narrower `tests/surfaces/iamfim-*.test.mjs`) to the Owned file/dir surface list in `.workflow/rooms/iterm2-builder.html`
- Extract GATE 1's predicate from route.ts into `src/lib/iamfim/selfNominationGate.ts`, exported and unit-testable without reading raw source
- Rewrite `tests/surfaces/iamfim-bookclub-backstage.test.mjs`'s new test to import that predicate instead of regexing route.ts and the lightbox body literal
- Implement the spec'd-but-missing `scripts/room-drift-builder-check.sh` (already named in the room file, line 679) so a staged-file-vs-owned-surface mismatch is caught pre-commit, not post-receipt
- Note in CLAUDE.md's CODE DEFINITION-OF-DONE section that a guard's file path counts toward the room that authored the fix, so every room's surface glob is checked for tests/ coverage once, not per-incident
What we learned: This exact class already surfaced twice in this room's own queue before graduating to a lesson — 'Intervention Engine Debugging' (dcc72911, 2 days ago) and 'Intervention Engine Drift Response' (2f814228, 26h ago) both diagnosed an out-of-lane receipt without the fix landing in the room's owned-surface file. The structural fact: CODE DEFINITION-OF-DONE was ratcheted in as a HARD RULE after every room's owned-surface glob was last authored, so the two documents have been silently contradicting each other since — every compliant Builder fix that ships a guard is receipt-flagged, and the flag has fired at least three times without anyone editing the glob. A per-event intervention that doesn't touch the glob just re-diagnoses the same gap next commit.
The missing guard (the deliverable): A guard that reads each room's `.workflow/rooms/*.html` "Owned file/dir surface" list and asserts it contains a `tests/` (or matching guard-path) entry whenever that room's "Acceptance criteria" section references CODE DEFINITION-OF-DONE / regression guards — i.e. `tests/ops/room-surface-covers-guards.test.mjs`, failing today for Builder and any other room with the same gap.
Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. litIntent=132=walksIntent and litReality=109=walksReality — both sides show 100% of walked cells lighting, i.e. the walk is fully saturated with no differentiation between strongly- vs weakly-connected cells it visits. That's a shallow-resolution symptom, not a truncation one (walkTruncated=false). Adjustment: raise the lit-threshold to require ≥2 independent recursive hits per cell before it counts as lit, and re-run this same sha to see whether litReality drops below 109 while walksReality holds — if it doesn't move, saturation isn't the driver and the theory is falsified cheaply. Experiments: Re-seed the gzip-NCD dictionary with iamfim/gate vocabulary (nominator_email, GATE 1, self-nomination) and re-run prewalkOverlap on this same sha — expect it to rise materially above 5 if vocabulary mismatch, not structural mismatch, is driving the low seed overlap · Add tests/surfaces/ to Builder's owned glob per the checklist, then diff offPct across Builder's next 10 commits against the last 10 to measure whether the room's flagged-event rate (currently 1 in 14 days) drops to zero for this specific tests-vs-src pattern · Run the walk with lit-threshold=2 against this cached sha's corpus and compare litReality (currently 109) — a drop confirms saturation, no change falsifies itMeasured outcome (deterministic, not self-graded): room mean offPct 24→26 over 6 commits since · dictionary ablation saved 818B
An out-of-lane flag caused by an unclaimed-but-mandated guard path is a false claim against this lane's loss ratio, not a real defect — the fix that actually restores the premium is editing the glob once, not re-litigating each future guard commit as a new incident.
Open the signed attestation →2026-09-13 · 📐 architect · offPct 41
chore(blog): panel-attached — three tolerance panels for the two-banks post, OG image is its own commit panel [panel-attached]
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 →2026-09-13 · 📐 architect · offPct 20 · mistagged
fix(lens): lens-health reads the echo instruction anywhere in the injection — it closes the context now, it no longer opens it
Why it left the lane: The diff's only touched file is scripts/pmu/lens-health.sh, and the only content tokens are 'lens-health.sh', 'prompt-lens.mjs', 'lensPrompt', 'lensedContext', and the literal marker '⟦ MANDATORY — ECHO THE RECEIPT '. None of that vocabulary intersects the architect room's declared surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md) — every one of those tokens is pipeline/detector-namespace, seeded from the scripts/pmu/ region of the reef, which is what pulled the lit mass toward the out-of-lane coords.
The semantic pull: 'lens-health.sh' + 'prompt-lens.mjs' + 'lensedContext' + the echo-block marker string are all pipeline-lexicon tokens; the commit carries zero strategy/docs tokens (no 'CLAUDE.md', no 'docs/strategy', no product-strategy prose), so the walk had nothing in the diff to anchor it inside architect's owned lattice region even before it ran.
Intent–reality gap: The commit message never claims strategy/docs work — its own Story and Persona-Intent are entirely about lens-health.sh's detection logic and the pre-commit dark-check — yet the receipt scores it against architect's owned-surface lane (the room that happened to originate it) and finds 20% of the lit reality mass outside that lane. The gap isn't in the work, it's between 'which room typed the commit' and 'which lane the receipt checks it against.'
- Ship the unified room-drift-<room>-check.sh that architect, navigator, and laboratory each independently spec'd per ff09774e5 but none landed — locate the three drafts and merge to one script before a fourth room re-derives it from scratch.
- Change the room-lane classifier to score a commit against the UNION of Originating-Terminal's + every listed Relevant-Rooms room's owned-surface globs when Relevant-Rooms is populated (CLAUDE.md's own commit-trailer protocol already sanctions this divergence as normal).
- Register scripts/pmu/** as a shared-pipeline surface not exclusively owned by any single room, so architect/operator/builder cross-touches there stop registering as off-lane by construction.
- Backfill-bucket the room's 59 out-of-lane events from the last 14 days into 'genuinely cross-lane' vs 'mistagged pipeline touch' to size how much of the 20%→28% swings above are this same classifier bug repeating.
- Add a prewalkOverlap floor check (e.g. <10) combined with zero-owned-surface-touch as a pre-walk fast-flag for 'likely mistagged, not drifted' (see pipeline_probe c3).
What we learned: ff09774e5 diagnosed this exact classifier bug and the room's offPct improved 20→14 over the next 8 commits — but no code was ever shipped (three rooms independently spec'd the identical fix and none landed it), and by this commit offPct is back to 20. That means the prior improvement wasn't the fix taking effect; it was a diagnosis-shaped intervention with a half-life shorter than the reporting window. The structural fact this reveals: room-level agents have no shared backlog visible to them for infra/classifier fixes, so each room re-discovers the same unshipped fix from scratch instead of finding and completing prior art — this is a discovery problem, not an execution problem, and JSON-only sensemaking will keep decaying until an artifact exists between interventions.
The missing guard (the deliverable): A pre-commit or CI check that, for any commit whose diff touches zero paths in Originating-Terminal's owned-surface glob but 100% of paths in a Relevant-Rooms room's glob, automatically reclassifies the commit's lane as that Relevant-Rooms room (or the union) before the drift receipt scores offPct — so a correctly-trailer'd cross-room commit is never counted as drift in the first place.
Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Right-sized, not shallow or saturated-in-error: 100% fill on both sides (135/135 intent, 121/121 reality) shows the walk completed its full traversal. The top-level walkTruncated=true flag doesn't show up as a per-side shortfall here, so no depth adjustment is indicated for this sha specifically — but it's worth confirming walkTruncated isn't silently capping a larger corpus elsewhere and masking a future undercount. Experiments: Re-seed the reef for this sha using the union of architect's docs/strategy corpus AND the pipeline/detector corpus (since Relevant-Rooms names operator+builder), rerun the receipt, and compare offPct against this 20% baseline. · For the next 10 commits where the diff touches zero Originating-Terminal owned-surface paths but the Relevant-Rooms trailer names a room whose glob the diff DOES match, auto-union the seed and measure whether offPct drops under the 15 threshold. · Track prewalkOverlap as a leading indicator: flag any commit with prewalkOverlap<10 AND zero owned-surface touches as 'likely mistagged' before the walk runs, then compare that pre-flag against the post-walk offPct across the next 20 events to calibrate the floor.Measured outcome (deterministic, not self-graded): room mean offPct 16→16 over 11 commits since · dictionary ablation saved 917B
A mistagged-not-drifted event inflates this lane's apparent loss ratio without any real cross-lane risk having occurred; premium is restored by shipping the union-glob classifier fix (checklist items 1-2) so the receipt stops pricing correctly-scoped pipeline fixes as architect drift.
Open the signed attestation →2026-09-13 · 📐 architect · offPct 31 · mistagged
fix(lens): EVERY TURN ON THE TAPE — routed prompts reach the door too, so the prior declaration stops starving and the Fit line carries the null test on routed turns
Why it left the lane: The diff's real content is scripts/pmu/prompt-lens.mjs (lensWalk/rustLens/walk-door routing, the 'Fit: routed by anchor · null test gain' line) and tests/pmu-simulator/*.test.mjs — pure PMU-lens machinery. lensReality=A3,A1 vs lensIntent=A1,A2 with laneJump=2/laneHamming=25 means the walk lit the lens/PMU coordinate, not the architect's declared A2 'Strategy.Goal' axis (named in room-drift-architect-check.sh's own header). The commit's own Relevant-Rooms trailer (architect, vault, operator) already reaches for a multi-room excuse, but two independent room pages — kitty-operator.html:602 and wezterm-vault.html — explicitly carve scripts/pmu and tests/pmu-simulator OUT of both vault's and operator's owned surface and assign it to 🧪 Laboratory, a room named in neither trailer.
The semantic pull: Strings 'lensWalk', 'rustLens', 'source: (process.env.LENS_SESSION_ID...) ? \'turn\' : \'lens-cli\'', and the two 'Fit: routed by anchor · null test gain' lines are all lens-pipeline internals — none touch docs/strategy, docs/03-product, .workflow/rooms/*.html, or CLAUDE.md, the architect's actual owned surface.
Intent–reality gap: The commit claims architect-lane work (Originating-Terminal: architect) about 'the commit gate's prior declaration', with Relevant-Rooms naming architect/vault/operator; the receipt measured the work landing in the lens/PMU coordinate (A3,A1) that, per the rooms' own owned-surface docs, belongs to Laboratory — a room present in none of the trailers.
- Wire scripts/room-drift-architect-check.sh into hooks/pre-commit (WARN-only, per the WIP-CLAIMS precedent)
- Write scripts/room-drift-vault-check.sh and scripts/room-drift-operator-check.sh — both marked 'spec'd, not yet implemented' in their own room pages
- Add a positive owned-surface declaration for scripts/pmu/*.mjs + tests/pmu-simulator/** in .workflow/rooms/cursor-laboratory.html
- Update CLAUDE.md's Relevant-Rooms trailer line with the completeness requirement above
- Update the lane-fit/offPct scorer to compute against the union of Relevant-Rooms surfaces, not Originating-Terminal alone
- Close sp-834/sp-835/sp-837/sp-838/sp-842 (the room dashboard's own auto-queued 'ship the room-drift guard' asks) as ONE shipped guard instead of letting them re-queue
What we learned: The prior lesson (ff09774e5) diagnosed the detector-reads-Originating-Terminal-alone bug and reported three rooms independently spec'd the fix without shipping it. This event proves the gap is deeper: the ONE guard script that DID get written (room-drift-architect-check.sh) has sat completely unwired from any hook this whole time, AND the true owner of the drifted files (🧪 Laboratory) is named in ZERO of this commit's trailers — so even a working Relevant-Rooms-union check would still miss this file, because no room's page positively claims it. The room dashboard has auto-queued the same 'ship the guard' task at least 5 times (sp-834, sp-835, sp-837, sp-838, sp-842) without it landing — the recurrence lives in the SHIPPING step, not the diagnosis step.
The missing guard (the deliverable): A pre-commit hook, actually wired (not just authored), that resolves each staged path's true owning room from ONE canonical owned-surface manifest (replacing the 9 independently-hand-maintained .workflow/rooms/*.html pages, which currently disagree — vault's page is silent on scripts/pmu while operator's page explicitly excludes it) and fails only when neither Originating-Terminal nor any Relevant-Rooms entry names that owning room.
Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. walkTruncated=true while litReality (143) still exceeds litIntent (127) by 16 cells suggests the walk hit its cap mid-spread on the reality side rather than converging — that's saturation, not a shallow walk. Adjustment: when walkTruncated fires, flag it as its own UNMEASURED marker on the receipt rather than folding a truncated spread into offPct at full weight. Experiments: Re-seed this commit's reef placement with the Relevant-Rooms trailer text itself included in the corpus, and measure whether offPct drops — tests whether the trailer's own room mentions are even reaching the walk today. · Recompute lane classification for all 64 of architect's last-14-days out-of-lane events using Relevant-Rooms-union instead of Originating-Terminal-only, and count how many resolve in-lane. · Add a walkTruncated column to the receipt output and rerun the last 14 days' architect events to count how many of the 64 were truncated vs genuinely off-lane.Measured outcome (deterministic, not self-graded): room mean offPct 18→30 over 3 commits since · dictionary ablation saved 1406B
Architect's lane loss-ratio stays elevated (64 out-of-lane events/14d) while its own room-drift guard is unwired dead code and the drifted files' true owner (Laboratory) is claimed by no room's page; premium resets only once the guard is wired and one canonical owned-surface manifest — not nine divergent HTML pages — names Laboratory as owner.
Open the signed attestation →2026-09-13 · 📐 architect · offPct 39
test(lens): pipeline-unity reads the sensor construct, not the retired full-format line
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 17→9 over 7 commits since
Open the signed attestation →2026-09-13 · 🧭 Navigator · offPct 19 · mistagged
feat(voice): the off-ramp at the bounce point — the ghost-read names where the reader leaves; clear the junk there and hand them a door
Why it left the lane: The diff's seven changed files — scripts/blog/bounce-offramps.mjs, src/components/blog/OffRamp.tsx, scripts/blog/mdx-cook-check.sh, .claude/skills/mdx-cook/SKILL.md, docs/architecture/claude-rules/voice-and-pitch.md, src/app/blog/[slug]/page.tsx, tests/blog/bounce-offramps.test.mjs — are 100% blog-content-pipeline and voice-rule surface. None of them intersect 🧭 Navigator's owned globs (scripts/open-room-session.sh, .thetacog/cache/room-runners/*.sh, openclaw/src/thematic-scheduler.ts, openclaw/data/thematic-schedule.json, openclaw/src/focus-gravity.ts, openclaw/data/ollama-overnight/thematic-heartbeat.json, .workflow/cognitive-dashboard.html). The ballistic walk lit reality cells (litReality=136 of walksReality=136 — full saturation) entirely at blog/voice/component coordinates because that is literally where all the bytes are; there is nothing Navigator-shaped in the diff for the walk to anchor to, so offPct=19 is just the walk correctly reporting zero overlap with the claimed lane.
The semantic pull: Strings like 'bounce-offramps.mjs', '<OffRamp sold="…" lost="…" />', 'mdx-cook-check.sh S13', and 'voice-and-pitch.md' are Voice/Builder-lexicon terms (the commit's own Relevant-Rooms trailer names Voice and Builder, not Navigator, as the intersecting rooms) — the pull toward the out-of-lane coords is the diff's vocabulary itself, not a walk artifact.
Intent–reality gap: The commit's Originating-Terminal trailer claims 🧭 Navigator as the room of record, but the receipt measured the work landing entirely outside Navigator's owned-file lane — the commit even lists Voice and Builder as the Relevant-Rooms, contradicting its own Originating-Terminal claim.
- Add scripts/blog/**, src/components/blog/OffRamp.tsx, .claude/skills/mdx-cook/**, and docs/architecture/claude-rules/voice-and-pitch.md to Voice's (or Builder's) declared owned-surface glob wherever room ownership is enumerated (mirror the 🧭 Navigator block's format).
- Write a commit-msg or post-commit check (scripts/ops/room-lane-check.mjs, proposed) that diffs changed paths against the Originating-Terminal room's owned glob and warns when overlap is 0%.
- Amend COMMIT MESSAGE STRUCTURE in CLAUDE.md to require Originating-Terminal be path-derived, not session-derived, per spec_rewrite above.
- Backfill: scan the last 14 days of commits from 🧭 Navigator for the same zero-overlap pattern (this room already has 2 out-of-lane events in that window) — if both are content mistags, the pattern is systemic, not a one-off.
What we learned: The Originating-Terminal trailer is filled from WHICH PHYSICAL WINDOW the operator happened to be typing in, while the receipt's lane math is computed from WHICH FILES the diff touches — these are two independent axes (session identity vs. content identity) that nothing today reconciles, so any cross-room session (one terminal, many hats) will mistag by construction, not by error.
The missing guard (the deliverable): A path-overlap check between the commit's Originating-Terminal trailer and its own owned-surface glob, run at commit time: if overlap is 0% and the projected offPct would exceed the room's threshold, the hook either auto-corrects the trailer to the best-matching Relevant-Room or fails with the overlap numbers printed — turning this class into a caught mistag instead of a live drift receipt.
Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Saturated, not shallow — both litIntent and litReality hit 100% of their walk budgets. A fully-saturated walk on a 7-file/391-line diff risks flattening finer distinctions (e.g. which ONE file is most responsible for the mistag). Adjustment: raise walksIntent/walksReality caps proportionally to diff size (files changed × avg lines) for commits above a size threshold, so saturation doesn't mask which specific file drove the offPct. Experiments: Re-run this exact diff with Originating-Terminal swapped to 🎙️ Voice (no other change) and record offPct — if it drops near 0, that mechanically proves the label alone (not the content) drives lane placement for this commit, confirming the mistagged classification. · Re-seed the reef with each room's owned-surface glob as an explicit corpus segment and re-measure prewalkOverlap for this sha — tests whether the reef already encodes room boundaries or is inferring them from content proximity alone. · Increase walksIntent/walksReality budget by 25% for diffs >5 files and re-run this sha, checking whether litIntent/litReality stay saturated (confirms the walk-utilization hypothesis) or start showing headroom (refutes it).Measured outcome (deterministic, not self-graded): room mean offPct 21→13 over 21 commits since · dictionary ablation saved 1070B
A mistagged Originating-Terminal costs this lane a false-positive drift claim against Navigator's loss ratio while the real Voice/Builder lane gets no credit for the work — restored by the path-overlap guard routing the trailer (and the receipt) to the room that actually owns the content.
Open the signed attestation →2026-09-13 · 🔧 Builder · offPct 31 · structural
feat(iamfim): the $1.2B filter rides on top of the lightbox — a hit closes the box, the club form stays under it
Why it left the lane: The diffstat's single largest addition is tests/surfaces/iamfim-bookclub-backstage.test.mjs (60 of 98 inserted lines, ~61% of the commit). That path is not covered by any entry in this room's owned-surface declaration: the JSON archaeology.paths block at .workflow/rooms/iterm2-builder.html:65 is literally `["src/app/*", "src/components/*", "src/lib/*", "src/middleware.ts"]`, and the human-readable list at lines 651-656 (src/app/, src/components/, src/lib/, the two book-build scripts, hooks/pre-commit, decentralizedtalk/, thetacoach-crm-mcp/, vercel.json) also has zero tests/ entry. CODE DEFINITION-OF-DONE (HARD RULE) requires the guard ship in the same commit as the fix, so the walk necessarily lit cells under tests/surfaces/ that no glob in this room claims — that's the mass the receipt reports as the 31% offPct.
Intent–reality gap: The commit message and trailers (Originating-Terminal: Builder, Relevant-Rooms: Builder/Network/Operator) claim the work is the iamfim src/components feature; the receipt measured over 30% of the lit reality mass sitting in tests/surfaces/ — a path the room's own owned-surface config never declared, so a fully rule-compliant commit reads as drifted.
- Edit .workflow/rooms/iterm2-builder.html:65 JSON paths array to add "tests/surfaces/*" (and the matching prose bullet at line ~656) so guard tests inherit the Builder lane by subject, not left unclaimed
- Apply the identical patch to the other 8 rooms' *.html owned-surface blocks (wezterm-vault.html, vscode-architect.html, kitty-operator.html, terminal-voice.html, rio-navigator.html, messages-network.html, cursor-laboratory.html, alacritty-performer.html) — each was authored before CODE DEFINITION-OF-DONE and carries the same latent gap
- Implement the already-queued sp-833 due-today task: tests/ops/room-lane-uses-relevant-rooms.test.mjs, scoped to close this exact class
- Cross-link CODE DEFINITION-OF-DONE in CLAUDE.md to the room-owned-surface glob format so the next hard rule addition doesn't silently orphan a path class again
- Backfill: re-score this room's last 3 out-of-lane events (14-day window) after the glob patch lands to confirm they collapse to in-lane retroactively
What we learned: The room-owned-surface model is DIRECTORY-scoped, but CODE DEFINITION-OF-DONE-mandated guard tests are SUBJECT-scoped (they belong to whatever src/ file they test, not to a 'tests' directory) — so a flat glob edit that just adds "tests/**" to one room's paths would immediately collide with every other room's tests in the same shared tests/ tree. The fix has to be subject-based inheritance, not a directory grant, which is why simply noticing the gap (as the two prior lessons did) was never going to close it — the glob FORMAT itself needs a new match kind, not just a new entry.
The missing guard (the deliverable): tests/ops/room-lane-uses-relevant-rooms.test.mjs (already queued as sp-833, due 2026-09-13, unshipped): for each commit tagged with a room, resolve every touched tests/**/*.test.mjs file's primary import target and assert that target falls inside the tagging room's owned src/ paths — red until the subject-inheritance rule from spec_rewrite is implemented, and red again if a future guard test imports outside its claimed room.
Detector probe: signal attribution — gzip reef 25% · ballistic walk 75%. Saturated, not right-sized: litIntent/walksIntent and litReality/walksReality are both exactly 1.0 while walkTruncated=true, meaning the walk hit its step ceiling on both sides rather than converging naturally — a sign the cap is fixed regardless of how asymmetric the diff's line distribution is (38 lines src vs 60 lines test here). Adjustment: scale the per-side walk budget by bytes/lines actually changed in that lane instead of a flat cap, so a test-heavy commit doesn't get truncated at the same ceiling as a code-only one. Experiments: Re-run the walk on sha 23c7e68bc with the truncation cap raised 2x and diff offPct — if it drops toward <20, the fixed cap (not true cross-lane placement) explains most of this event's magnitude · Seed the reef with a synthetic edge linking tests/surfaces/iamfim-*.test.mjs to src/components/iamfim/* via the import graph and re-measure prewalkOverlap — if it rises from 7 toward parity with litIntent, subject-based reef linking alone (no glob edit) may close most of the gap · Ablate the corpus by excluding tests/**/*.test.mjs from the reality walk on commits whose trailers show a guard was added, and compare offPct against this room's last 3 out-of-lane events — near-zero offPct after ablation would confirm guard-authoring, not real drift, is the whole story for this roomMeasured outcome (deterministic, not self-graded): room mean offPct 25→32 over 3 commits since · dictionary ablation saved 756B
This is the room's 3rd out-of-lane event in 14 days and, per this diagnosis, it is bookkeeping noise from an unpatched directory-vs-subject glob gap rather than real cross-lane risk — the loss-ratio on Builder's lane restores the moment the owned-surface config inherits guard-test paths from the src/ file they test, after which remaining offPct events reflect genuine placement risk instead of mandated-guard overhead.
Open the signed attestation →2026-09-13 · 📐 architect · offPct 28 · structural
feat(lens): THE TRIPWIRE — the Stop hook blocks once when the reply does not close with the verbatim receipt + Sidecar line
Why it left the lane: The diff's real strings are scripts/cog/lens-sidecar-stop-hook.sh, scripts/pmu/lens-echo-tripwire.mjs, and tests/pmu-simulator/echo-tripwire.test.mjs — three paths under scripts/pmu/, scripts/cog/, and tests/pmu-simulator/. None of those prefixes appear anywhere in 📐architect's declared owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md). Every semantic anchor in the commit — 'the Stop hook', 'transcript tail', 'lens-echo-tripwire.mjs', 'stop_hook_active', 'Guard: tests/pmu-simulator/echo-tripwire.test.mjs' — is PMU/hook-infrastructure vocabulary, which pulled the lit-reality mass toward pipeline/eigen coordinates while the declared intent lane sits entirely in doc-strategy space. prewalkOverlap=3 against walksIntent=137 confirms this at the reef-seed stage: before the ballistic walk even ran, almost no gzip-NCD similarity existed between the architect doc corpus and this commit's actual text.
The semantic pull: Strings 'scripts/pmu/lens-echo-tripwire.mjs', 'scripts/cog/lens-sidecar-stop-hook.sh', 'tests/pmu-simulator/echo-tripwire.test.mjs', and the Story's own 'rust-pipeline spec v2 Task 5' are hook/PMU-engineering tokens with no lexical neighbors in docs/strategy or docs/03-product — that vocabulary gap is what the reef seed measured as near-zero overlap (prewalkOverlap=3) and the walk then spread to cover, landing 28% of lit reality cells outside the declared lane.
Intent–reality gap: The commit trailers claim Originating-Terminal 📐architect with Relevant-Rooms architect/operator/vault, framing this as architect's normal output; the receipt measured 28% of the lit reality mass (scripts/pmu, scripts/cog, tests/pmu-simulator) sitting outside architect's declared doc-only lane — the claim of 'architect work' was accurate to the room doing it, but the room's own owned-surface declaration never accounted for the infra work its rust-pipeline-spec mandate actually requires.
- Ship scripts/ops/room-drift-check.mjs (or wherever the offPct classifier lives) unifying the three independently-spec'd versions from architect/navigator/laboratory, parameterized by room name.
- Change the classifier's intent-lane membership test to union owned-surface globs across every room in Relevant-Rooms, not just Originating-Terminal.
- Add scripts/pmu/**, scripts/cog/**, tests/pmu-simulator/** to architect's owned-surface declaration, scoped to commits whose Story cites 'rust-pipeline spec'.
- File a TaskCreate for the room-drift-check.mjs ship itself (per CLAUDE.md's DELEGATE-TO-SUBTASKS rule) so it stops shearing off as a secondary ask in three different rooms' primary-lane work.
- Write tests/ops/room-lane-uses-relevant-rooms.test.mjs asserting the classifier reads Relevant-Rooms — red today, forcing the fix to actually land.
- Once shipped, add a one-line pointer in CLAUDE.md's commit-trailer protocol section confirming the detector now honors Relevant-Rooms, so doc and code stay in sync.
What we learned: ff09774e5 already diagnosed the mechanism (Originating-Terminal-only classification vs CLAUDE.md's sanctioned Relevant-Rooms divergence) and named the fix three rooms had independently spec'd — yet it never shipped, and architect's offPct has since gotten WORSE across two more interventions (14→28, 17→26) before this event's 28. The new fact: the fix itself is a cross-room utility that belongs to no single room's primary lane, so by CLAUDE.md's own DELEGATE-TO-SUBTASKS rule ('a prompt bridging domains is placed at its ONE heaviest coordinate and the single-coordinate fence shears off every other task'), the detector fix keeps getting sheared off as a secondary note inside each room's in-lane work. The self-diagnosing rule is itself falling into the exact shearing pattern it describes.
The missing guard (the deliverable): tests/ops/room-lane-uses-relevant-rooms.test.mjs — asserts the offPct/room-lane classifier unions owned-surface globs for every room named in a commit's Relevant-Rooms trailer (not Originating-Terminal alone) before computing offPct; this test is red today because that code path doesn't exist, which is exactly what forces the fix to ship instead of being re-diagnosed a fourth time.
Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. walkTruncated=true means the walk was cut off by budget/depth before natural termination, even though both sides show 100% fill of what was walked. A truncated-but-saturated walk is the 'too shallow' failure mode: it may have stopped just short of reaching cells that would have bridged intent and reality. Concrete adjustment: re-run this exact sha (same reefSha/libSha/corpusSha) with a 2x walk budget and compare offPct with walkTruncated=false to see whether the 28% is a genuine lane crossing or a truncation artifact. Experiments: Re-run sha 26f3531593 with 2x walk depth/budget (same reefSha/libSha/corpusSha), measure whether offPct changes once walkTruncated=false. · Seed the reef with scripts/pmu/**, scripts/cog/**, tests/pmu-simulator/** path-prefixes as an explicit anchor for the architect lane; measure prewalkOverlap on the next 10 architect PMU-touching commits (expect it to rise well above 3). · Ablation-test the compression_dictionary_adds below against the last 14 days of architect commit history; measure offPct delta with/without.Measured outcome (deterministic, not self-graded): room mean offPct 16→16 over 11 commits since · dictionary ablation saved 1074B
This lane's loss ratio rises with every unshipped fix cycle — three independent room-level diagnoses of the same detector bug with zero ships is a demonstrated inability to close a known defect, which is what underwriting actually prices; restoring premium requires landing room-drift-check.mjs itself as a tracked, owned deliverable rather than a fourth re-diagnosis.
Open the signed attestation →2026-09-13 · 📐 architect · offPct 21
feat(pmu): ONE DOOR, ONE TAPE — the turn's prompt and the commit's intent + reality all placed by the same one-process walk, one row each on walk-tape.ndjson; laneJump on the priced row; the doctor/plumber S/N readout
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 15→23 over 11 commits since
Open the signed attestation →2026-09-13 · 🎤 voice · offPct 36 · structural
fix(bookclub): the panel caption says GREEN is in lane / RED is out — L7 was red on every panel send, green on the lock
Why it left the lane: The diff's only change is the proofBlock caption string in scripts/bookclub/render-email.mjs: it swaps 'INTENT (cyan) against REALITY (amber)' for 'GREEN is in lane... AMBER is the bleed, one square out... RED is out of lane... the circles mark where it clustered.' Those are literal pipeline-legend terms (lane/bleed/circles/clustered) describing the receipt's OWN color code, not book/blog voice prose. lensReality=B2,A1 (B2 = pipeline-mechanics description) confirms the walk landed the edit in the machine-description lane even though lensIntent=A1,A3 (the commit claims a prose/voice fix). prewalkOverlap=2 against walksIntent=117 shows the reef already saw almost no seed overlap between the claimed A1/A3 territory and this file's actual content before the walk even ran — the caption text IS the pipeline's own legend, so any edit to it is structurally B-lane work wearing a voice-fix commit message.
The semantic pull: The literal strings 'GREEN is in lane', 'RED is out of lane', 'the circles mark where it clustered' are pipeline-telemetry vocabulary (mirroring offPct/laneJump/encircled-region language from the receipt schema itself), not book-chapter or blog voice. That vocabulary is what dragged the walk's reality lit-set toward B2 while the commit's own framing (message talks about 'the panel caption', 'L7', 'the guard now fires on the live render') never mentions B2/pipeline territory at all — the message describes the SYMPTOM (a wrong caption) without acknowledging the caption's content is itself pipeline-internal language.
Intent–reality gap: The commit message frames this purely as a copy/caption correction inside a bookclub email fix ('the panel caption says GREEN...'), claiming A1/A3 voice territory. The receipt measured the actual edited text landing 138 lit cells in B2/A1 against only 117 in the claimed A1/A3 — the 'fix' is prose, but the prose IS a description of the pipeline's own lane-color mechanics, which the walk correctly reads as B-lane content.
- Extract scripts/bookclub/render-email.mjs proofBlock() caption + the other lane-legend strings already duplicated across layout-A3/A4/A7 into scripts/bookclub/copy/proof-block-captions.mjs
- Add scripts/bookclub/copy/** to voice's owned-surface glob in the rooms registry (.workflow/rooms/voice.html)
- Grep render-email.mjs for other inline prose blocks (sidenote, kicker, closer — lines ~880-1092) that mix layout logic with outward copy; extract those too in a follow-up commit
- Add a commit-trailer convention: caption/copy-only diffs inside scripts/bookclub/render-email.mjs before the extraction lands must set Relevant-Rooms: builder, voice but Originating-Terminal: builder
- Cross-check the other two rooms (builder, vault) named in Relevant-Rooms on this commit — confirm neither already owns render-email.mjs and is silently absorbing the tangle
- Re-run the receipt against the last 5 render-email.mjs caption commits post-extraction to confirm offPct drops toward the 15 threshold
What we learned: scripts/bookclub/render-email.mjs is a single file where outward-facing prose (owned by voice under the OUTWARD-FACING WORK rules) is inlined inside pipeline-rendering logic (owned by builder/vault) — every prose-only fix to it is structurally guaranteed to read as cross-lane, independent of how careful the commit message is. This is a NEW structural fact, distinct from the prior three facts-only events on this room (which never diagnosed a mechanism at all and all three saw offPct rise) — the mechanism here is co-location, not carelessness, so a behavioral fix won't help; only a file split will.
The missing guard (the deliverable): A pre-commit check (tests/ops/room-surface-glob-check.test.mjs or similar) that reads Originating-Terminal off the commit trailer, diffs the touched paths against that room's registered owned-surface glob in .workflow/rooms/<room>.html, and fails/warns when a file is touched that no glob for that room covers — catching this exact voice-touches-render-email.mjs mismatch before the receipt runs, not after.
Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. litIntent=117 vs litReality=138 with walkTruncated=true suggests the walk hit its ceiling rather than being under-used — it's not shallow, it may be saturating on this file's mixed content before it can resolve the copy sub-region separately from the render-logic region. Concrete adjustment: re-run pmu-walk with the truncation ceiling raised one notch on this file only and compare whether litReality settles lower once the walk isn't cut off mid-resolution. Experiments: Re-seed the reef with the post-extraction proof-block-captions.mjs file alone and recompute prewalkOverlap against the A1/A3 corpus — expect it to rise sharply since the file would then contain ONLY voice-lane content · Ablation-test walkTruncated=false vs true on the last 10 render-email.mjs commits to see whether truncation itself is inflating offPct independent of the file-tangle issue · Add a distinct reef bucket for 'email lane-legend copy' (the GREEN/AMBER/RED caption family) so future edits to that specific sentence don't inherit the surrounding file's B2 massMeasured outcome (deterministic, not self-graded): room mean offPct 24→24 over 4 commits since · dictionary ablation saved 762B
An out-of-lane structural tangle in a shared render file raises this lane's loss-ratio by making every future voice-tagged copy fix here a repeat offender regardless of care taken; the file split plus glob update is what restores insurability by making the claimed lane and the measured lane the same file going forward.
Open the signed attestation →2026-09-13 · 📐 architect · offPct 17
feat(reef): the six percentages, where we are vs could be — six sub-rules derived from the first street-post cook's measured gaps, banked at the blog lane's hat and served on a cook prompt
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 →2026-09-13 · 📐 architect · offPct 20
fix(pmu): ONE DOOR TO THE BINARY — 32 callers resolve pmu-onchip through resolvePmuBinary, guarded by path
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 17→9 over 7 commits since
Open the signed attestation →2026-09-13 · 🎤 voice · offPct 30 · structural
book(ch12): The Second Theorem — the falsifier in one sentence, the Article 12 log named, two echoes trimmed
Why it left the lane: The diff's new mass is the Article-12/EU-AI-Act sentence and the 'name one record in your stack' failure-condition test — both novel vocabulary (regulator, mandate, automatic event logs, high-risk systems, 2 August 2026) that the reef corpus has thin prior coverage of (prewalkOverlap=6, low). lensIntent=A2,A2 (book-craft coordinate) vs lensReality=C2,A2 shows the walk's second lit cluster landing in C2 — the compliance/regulatory-citation region — pulled there by that inserted string, not by the trimmed-echo edits (which are pure prose deletions and wouldn't move placement).
The semantic pull: 'Article 12 of the EU AI Act has required automatic event logs for high-risk systems since 2 August 2026' and 'name one record in your stack that was not produced by the thing it is about' — regulator/mandate/statute vocabulary dragging the walk from A2 (book-craft) toward C2 (regulatory-citation) with laneJump=6, laneHamming=61 vs null baseline 48.
Intent–reality gap: The commit claims a book-craft refinement pass ('two echoes trimmed', persona-intent about prose craft) staying inside the book-voice lane; the receipt measured 30% of lit reality mass landing in a different lattice region (C2) than the declared intent (A2), driven by the regulatory citation the Story paragraph itself says was the point ('map the theorem to the live artifact').
- Add the 'Lane: primary+secondary' trailer convention to the book-chapter commit template referenced by CANONICAL PROCESS in CLAUDE.md
- Seed the reef corpus with the book's other regulatory citations (search books/tesseract for 'Article', 'ISO', 'GDPR', 'EU AI Act') so prewalkOverlap rises for this vocabulary cluster
- Create docs/architecture/claude-rules/regulatory-citations-glossary.md as the one place named regulations get spelled out, cited by chapter text via link rather than retyped verbatim each time
- Audit the other ~93 out-of-lane events in this room's 14-day window for the same regulatory/legal-vocabulary signature before assuming this commit is representative
- Cross-check against reference_iso-genai-exclusions-jan-2026.md — this repo already tracks one regulatory citation as a standalone reference file; Article 12/EU AI Act should get the same treatment
What we learned: The three prior interventions in this room were facts-only (no sensemaking) and each measured offPct climbing afterward (27→39, 21→31, 0→36) — generic facts-only intervention does not reduce recurrence here. The new structural fact: this room's book chapters are increasingly reaching outward to cite live external regulatory artifacts (EU AI Act, ISO exclusions) as part of the book's own argument, and the lattice has no standing lane for 'book prose citing regulation' — every such citation will keep re-triggering as fresh off-lane vocabulary until it's pre-seeded or declared.
The missing guard (the deliverable): tests/voice/book-regulatory-citation-lane-declared.test.mjs — scans a book-chapter diff for a named-regulation pattern (/Article \d+|EU AI Act|ISO \d{2} \d{2}|GDPR/) and fails the commit if present without a 'Lane: ...secondary...' trailer.
Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. Right-sized, not shallow or saturated — litIntent 128 vs litReality 138 is a modest 7.8% spread, consistent with a normal single-topic chapter edit that happened to touch one adjacent coordinate. No depth adjustment needed; the fix is upstream at the reef-seed stage, not the walk's traversal budget. Experiments: Backfill the reef corpus with every prior book-chapter passage citing a named regulation (grep books/tesseract for 'Article', 'ISO', 'EU AI Act') and recompute prewalkOverlap for sha 40be2d64d — expect it to rise from 6 to >20 if this is the actual missing signal · Recompute this sha's placement under the aperture used by each of the 3 prior room interventions (fffc72f, ff7c75f, fe6d2be) to see whether the aperture ratchet has been loosening for this room specifically — measure via offPct delta across the three re-runs · A/B recompress the last 20 book(ch*) commits with and without a dedicated 'regulatory-citation-in-book-prose' cluster seeded into the reef, and check whether the room's offPct trend line (27→39, 21→31, 0→36) flips downward with the seed presentMeasured outcome (deterministic, not self-graded): room mean offPct 24→24 over 4 commits since · dictionary ablation saved 965B
A regulatory-citation sentence correctly placed in an owned book file reading as 30% off-lane inflates this lane's apparent loss ratio on a false positive; restoring it means declaring the secondary lane at commit time so the receipt prices the citation as expected mass, not unexplained drift.
Open the signed attestation →2026-09-13 · 📐 architect · offPct 18 · mistagged
feat(blog): the instrument that refused to flatter itself — cadence over the floor; six percentages green
Why it left the lane: The diff is three isolated cadence-craft edits inside one blog MDX file — collapsing 'The same text placed three times returned the same cell...' into staccato 'Three runs. Same cell. Same sigma.'; inserting the loss-run/lawyer elaboration around 'a decision is a thing with a date, an owner and a reason...entered on a loss run and argued over by two lawyers'; and splitting 'If you receive an alert and ignore it, you made a decision' into 'Alert. Ignore. Decision.' None of this touches strategy, product spec, or CLAUDE.md — the only paths 📐 architect legitimately claims. The walk read 53 steps / 85 lit cells on the reality side against 30 steps / 59 lit cells on the intent side (litReality > litIntent by 44%), and lensReality=B2,B1 sits off lensIntent=B3,C1 with laneHamming=51 against a null of 25 — twice the random-pairing baseline, so this is a real positional pull, not walk noise.
The semantic pull: Underwriting/legal register words introduced in this exact diff — 'loss run', 'lawyers', 'priceable', 'discrete, dated event' — plus the terse three-beat sentence fragments ('Three runs. Same cell. Same sigma.' / 'Alert. Ignore. Decision.') are voice-craft/pitch material (the domain CLAUDE.md routes to docs/architecture/claude-rules/voice-and-pitch.md), which is structurally adjacent to B1/B2 (Tact.Speed — execution/voice) rather than B3/C1 (architect's strategy/signal lane). The commit narrates itself as a pipeline-self-check story ('cadence over the floor; six percentages green') but every changed byte is prose rhythm, which is why the walk's mass landed a full lane away from where the Originating-Terminal claimed it.
Intent–reality gap: The commit message frames this as architect's instrument-and-cadence-check work ('L29 cadence spread… crossed its floor'), but the receipt shows 100% of the touched lines are blog-prose sentence restructuring with zero pipeline/strategy code — the claimed room owns none of the file surface actually edited.
- Ship the single scripts/ops/room-drift-check.sh that ff09774e5 found independently spec'd (and left unshipped) by architect, navigator, and laboratory — pick one, delete the other two specs
- Have that script derive intent lane from touched-path→owned-surface glob match, falling back to Originating-Terminal string only when no glob matches any room
- Add the trailer rule above to CLAUDE.md's commit-message-structure section
- Re-score the room's last 69 out-of-lane events under the path-based classifier to split genuinely-off-lane from mistagged-by-trailer
- Add a spec-dedup check (extend scripts/ops/wip.mjs's claim pattern to proposed-but-unshipped fix scripts) so three rooms can't re-derive the same fix without any of them shipping it
- Re-run sha 41a267278 through the corrected classifier once shipped to confirm offPct drops under 15 for this content-authoring class
What we learned: ff09774e5 already found the detector flaw (Originating-Terminal-only classification) and found three rooms had independently spec'd the identical fix — but zero shipped it. This event proves the deeper structural gap isn't the detector, it's that the repo has no mechanism to notice a fix has already been designed elsewhere and stop redesigning it; WIP-claims covers live file edits but not duplicate unshipped specs, so the same diagnosis keeps getting re-earned instead of re-used.
The missing guard (the deliverable): A pre-commit check that computes intent lane from touched-path→owned-surface glob (not from the Originating-Terminal trailer string) and fails/warns when the two disagree by more than the sanctioned Relevant-Rooms divergence — this is the room-drift-check.sh three rooms already speced and none shipped.
Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Right-sized in absolute terms (both sides fill at a healthy ~1.6-2x lit/step ratio, no saturation, no truncation collapse despite walkTruncated=true) but structurally unfair across the intent/reality pair: intent always walks a terse commit message while reality always walks the full diff prose, so reality systematically explores more lattice and is more likely to light off-lane cells. Adjustment: normalize the walk step budget by input token count (or cap the reality/intent step ratio, e.g. ≤1.5x) before computing offPct, so longer diffs aren't structurally penalized relative to short messages. Experiments: Re-run offPct with walksReality capped at 1.5× walksIntent on the last 30 architect commits and measure whether offPct drops below 15 for prose-only diffs · Weight the intent-lane walk seed by the touched-path's owned-surface glob (not just message text) and measure whether laneJump narrows for this commit class · Ship room-drift-check.sh and replay the room's 14-day window to measure the delta in mean offPct pre/post (this is the number the prior lessons' 'MEASURED OUTCOME' line will report)Measured outcome (deterministic, not self-graded): room mean offPct 19→26 over 15 commits since · dictionary ablation saved 860B
69 out-of-lane events in 14 days for one room, with the identical fix spec'd three times and shipped zero times, prices this lane as uninsurable on trust-the-trailer alone — premium is restored only when room-drift-check.sh actually lands and offPct for content-authoring commits measurably drops under 15.
Open the signed attestation →2026-09-13 · 📐 architect · offPct 25 · mistagged
docs(pmu): rust-pipeline spec v8 — the T0 lock per turn, and the actuarial-exchange end-state graded against the running code
Why it left the lane: The added §12 block is a 'wrong, corrected' ledger whose corrections must each name the real subsystem that refutes the pasted claim. The hardwired-halt correction pulls in 'Hooks never block here, by hard rule', 'a harness that halts on its own verdict is a harness whose verdict nobody will let run', and 'a dated row on the rail, a priced row on the ledger, a work order to a room, and an exit code (`end-state-ratchet.mjs --check`) that a deployer's CI can halt on' — deploy/CI/ops vocabulary that lands on Ops.Grid/Ops.Loop (B1,C1 / B1,C2), the two densest off-lane cells in the encircled panel, while the file's own declared home (line 4: 'Owner lane: pmu-walk (B,C2)') sits in Tact.Signal territory (the receipt's own pull target B3,B3).
Intent–reality gap: The commit trailers say Relevant-Rooms: architect, vault, operator — but the file being edited has carried '**Owner lane:** pmu-walk (B,C2)' unchanged since before this diff. The commit never names the lane the doc itself already declares, so the detector reads the trailer's silence as drift rather than as an omission.
- Add a Relevant-Rooms lint: for any docs/architecture/*.md carrying an 'Owner lane:' header, the committing trailer's Relevant-Rooms must include that lane's room token (alias table for lane↔room-name where they differ, e.g. pmu-walk ↔ vault).
- Ship one of the three already-spec'd room-drift-<room>-check.sh implementations (architect/navigator/laboratory each proposed it, none shipped) — narrow its first cut to exactly this mechanical check, not the general problem.
- Add a short alias table (lane token → room name) somewhere near data/pmu/lens-reef.json so 'pmu-walk (B,C2)' resolves to a canonical Relevant-Rooms string automatically.
- In docs/architecture/rust-pipeline-flowchart-2026-07-23.md §12, inline-tag the hooks/CI paragraph as ops-lane content so a human skim (not just the detector) sees the boundary crossed.
What we learned: The file already carries the ground-truth lane declaration in its own header ('Owner lane: pmu-walk (B,C2)') on every commit that touches it — the detector has never once read that line, and instead re-derives (or under-derives) lane intent from the commit trailer alone. Three prior lessons (ff09774e5 and two unnamed predecessors) diagnosed 'the detector ignores CLAUDE.md's own sanctioned trailer divergence' in the abstract and left it unshipped; this event shows the concrete, cheap fix sitting unused in plain text at the top of the very file being flagged.
The missing guard (the deliverable): tests/ops/relevant-rooms-matches-owner-lane.test.mjs — for a commit touching any docs/architecture/*.md with an 'Owner lane:' header, fail if none of that lane's aliased room names appear in the commit's Relevant-Rooms trailer.
Detector probe: signal attribution — gzip reef 35% · ballistic walk 65%. Saturated/truncated, not shallow: walkTruncated=true on a 412-line doc with two dense lane clusters (pmu-walk B,C2 and the ops digression) suggests the walk hit a step or depth ceiling before fully separating the two clusters. Adjustment: raise the walk's step budget for docs-only commits over ~300 lines (or split large architecture docs into per-section walk units) and re-run this sha to see if offPct converges or diverges once untruncated. Experiments: Re-run this exact sha's receipt with the walk depth/step cap doubled and diff offPct — isolates how much of the 25% is a truncation artifact vs real placement. · Seed the reef with each docs/architecture/*.md file's own 'Owner lane:' line as a pre-walk token so prewalkOverlap reflects self-declared ownership before the ballistic walk runs; measure the prewalkOverlap delta on this file's next version bump. · Ablate the ops/CI-flavored phrases ('exit code', "deployer's CI", 'hooks never block') out of a synthetic copy of this diff and re-run the receipt — isolates whether those specific strings are the actual driver of the B1,C1/B1,C2 pull.Measured outcome (deterministic, not self-graded): room mean offPct 21→29 over 9 commits since · dictionary ablation saved 1134B
An architecture doc correctly narrating another lane's own mechanism, mistagged under a room that never names the lane the file's own header already declares, is a bookkeeping loss not a placement loss — premium drag on architect's lane is overstated until the Relevant-Rooms↔Owner-lane guard ships, after which offPct on this file's future version bumps becomes the true, unpadded signal.
Open the signed attestation →2026-09-13 · 📐 architect · offPct 28
feat(blog): the instrument that refused to flatter itself — cadence over the floor after round 2 (the previous message claimed every gate green; L29 sat 0.1 under; now over)
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 20→16 over 11 commits since
Open the signed attestation →2026-09-13 · 🎤 voice · offPct 33 · structural
book(ch12): The Second Theorem — Article 12 cashes out, Pacioli is a trap, the falsifier stands alone
Why it left the lane: The actual hand-authored edit sits entirely inside 12 lines of books/tesseract/chapters/chapter-12-the-budget-is-the-proof.md, all within the 'The Second Theorem' section (the Article 12/Theorem 2.8.1 cash-out, the Pacioli 'trap' rewrite). But scripts/interventions/build-intervention-prompt.mjs's boundedDiff() selects semantic files by regex, then feeds them to `git show` in git diff-tree's name order WITHOUT sorting .md before generated .html: `books/tesseract/chapters-html/12-the-budget-is-the-proof.html` sorts alphabetically before `books/tesseract/chapters/...md` ('-' < '/' in byte order), and every downstream paragraph in the generated HTML re-numbers its `data-line="N"` anchor once new paragraphs are inserted upstream. That single content edit therefore reprints 384 lines of the generated file spanning 'Progressive Insurance, 1996', 'The Comp Set Is Two, Not One', 'The Network Does the Enforcement', and the boardroom 'Meld' dialogue — sections with insurance/patent/actuarial vocabulary the intent never touched — and the 260-line cap in boundedDiff() is exhausted by that noise before the true 12-line .md diff is ever reached. The reality-lane walk (litReality=140 vs litIntent=129, lensReality=A2,C vs lensIntent=B1,A1) is measuring the renumbering echo, not the edit.
The semantic pull: Strings physically present in the diff blast radius that don't belong to 'The Second Theorem' intent: 'Progressive Insurance filed US Patent 5,797,134', 'Arm Holdings collects approximately three billion dollars', 'Visa collects approximately thirty-six billion dollars', 'VaR figure at P95 confidence', 'the buyer's AI is structurally prohibited from accepting an ungrounded counterparty' — all untouched context lines dragged into the diff purely because their data-line attribute value shifted by +4.
Intent–reality gap: The commit claims a scoped craft edit ('the Article 12 log now meets the theorem in three short sentences ... placed after the theorem is introduced') confined to one section; the receipt measured mass spread across the whole chapter's insurance/patent/comp-set/boardroom sections because the generated-HTML mirror of that chapter re-stamps every paragraph's line-anchor on any upstream insertion.
- scripts/interventions/build-intervention-prompt.mjs: exclude books/tesseract/chapters-html/**, public/book/chapters/**, books/tesseract/exports/** from boundedDiff()'s semantic file list; prioritize the matching books/tesseract/chapters/*.md source
- Audit whether the actual drift-receipt walk (whatever produces walksIntent/walksReality/litIntent/litReality — not yet located in scripts/pmu/pipeline.mjs) has the same alphabetical-sort + generated-file-inclusion bug; if so it is the primary fix target, not just the intervention prompt
- docs/architecture/claude-rules/build-and-format.md: document the data-line renumbering cascade as a known diff-noise source for book commits
- Add a regression fixture: a 1-line .md edit near the top of a long chapter should not, after this fix, produce a diff dominated by the generated HTML's renumbered tail
What we learned: The book pipeline bakes absolute-position line-anchors into committed generated HTML (data-line="N"), so ANY edit near the top of a chapter re-diffs every later paragraph in that chapter's generated mirror — independent of this room's craft quality, every future ch* commit that inserts/removes even one paragraph risks the same offPct spike, because the tooling treats the generated mirror as equally 'semantic' as the hand-authored source and sorts it first alphabetically.
The missing guard (the deliverable): A test (e.g. tests/ops/book-diff-source-not-mirror.test.mjs) that asserts boundedDiff()/any receipt-diff builder never includes books/tesseract/chapters-html/** or public/book/chapters/** ahead of the matching books/tesseract/chapters/*.md source, and fails if a book(ch*) commit's assembled diff context contains more generated-HTML lines than source-.md lines.
Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Saturated, not shallow — litReality exceeds litIntent and the walk was truncated (walkTruncated=true), consistent with an oversized/noisy reality input rather than insufficient recursion depth. Adjustment: fix the diff-input source (exclude generated mirrors) before touching walk depth/truncation caps; re-measure whether truncation is still needed once the input is the true ~12-line edit. Experiments: Re-run this commit's receipt with chapters-html/**, public/book/chapters/**, and exports/** excluded from the diff input; measurable outcome: offPct should drop from 33 toward <15 · Across the room's last 20 book(ch*) commits, correlate each commit's generated-HTML diffstat line-count against its offPct; measurable outcome: correlation >0.6 would confirm the cascade as the room's dominant drift driver · Diff the generated HTML with data-line attribute VALUES normalized (regex-replace data-line="\d+" before diffing) and recompute prewalkOverlap; measurable outcome: prewalkOverlap should rise materially above 5Measured outcome (deterministic, not self-graded): room mean offPct 23→31 over 6 commits since · dictionary ablation saved 902B
An unfixed cascade means every future book(ch*) edit inflates this lane's measured loss ratio regardless of prose quality, manufacturing false claims against the room's premium; excluding generated mirrors from the placement diff (plus the guard) restores the room's offPct to reflect only real cross-lane work.
Open the signed attestation →2026-09-13 · 📐 architect · offPct 33
fix(lens): the tripwire re-reads once before blocking — a receipt that was still flushing read as absent (false positive, 22:50:26), and a false positive is the failure mode of the fix
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 21→18 over 10 commits since
Open the signed attestation →2026-09-13 · 🎤 voice · offPct 52
comms(self): the knife is the first paint — what the Gemini goal changed on iamfim.com, and what it got wrong
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 16→38 over 3 commits since
Open the signed attestation →2026-09-13 · 🧭 Navigator · offPct 24
feat(cta): the ratchet — an invoice moves the argument onto a ledger; the line item is their count; the iamfim lightbox gets an already-sold door and a not-sold door
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 21→13 over 21 commits since
Open the signed attestation →2026-09-13 · 📐 architect · offPct 24
feat(pmu): THE PRIOR DECLARATION + ΔH + THE SEAL — the commit gate reads the last turn placed before the work, records the Hamming distance on the 144 mask beside the Chebyshev jump, and re-seals the walk tape
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 17→19 over 9 commits since
Open the signed attestation →2026-09-13 · 🎤 voice · offPct 33
book(ch12): metavector block at the END of "The Second Theorem" — Refined for Book Club 2026-09-13
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 23→33 over 6 commits since
Open the signed attestation →2026-09-13 · 📐 architect · offPct 31 · mistagged
feat(pmu): RSI AS RECEIPTS — the aperture A/B replays the same commits through the door under different instrument settings; admissible-only S/N; the commit digest default decided by the tape (head wins, strided and prose kept as options)
Why it left the lane: The touched paths — scripts/pmu/aperture-ab.mjs, src/lib/pmu/walk-door.mjs, tests/pmu-simulator/*.mjs — are pure PMU/RSI instrumentation code. None of them sit under architect's owned surface (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md). The commit's own vocabulary — 'digestForAperture', 'proseProjection', 'laneJumpSN', 'admissible-only S/N', '.thetacog/aperture-ab.ndjson' — is code/signal vocabulary with zero overlap to architect's docs/strategy prose, which is exactly why prewalkOverlap=5 came in low and the walk (litIntent 132/132, litReality 129/129 — fully saturated, 100% lit on both sides) had nothing to filter: it lit wherever the reef pointed it, landing lensIntent=A1,C1 against lensReality=B3,B3, laneHamming=50 clear of the null (30).
The semantic pull: Identifiers and paths native to the PMU signal-measurement domain (aperture-ab.mjs, lensWalk, laneJumpSN, digestForAperture, PMU_COMMIT_DIGEST, .thetacog/aperture-ab.ndjson) dragged the reality placement toward B3,B3, away from wherever A1,C1 (architect's docs/strategy lane) sits — there is no docs/strategy prose anywhere in this diff to hold it in A1,C1.
Intent–reality gap: The commit message claims and delivers exactly what it says — a working aperture A/B harness for RSI measurement — and even self-declares 'Relevant-Rooms: architect, vault, builder' per CLAUDE.md's own trailer protocol. The receipt's offPct=31 is computed only against Originating-Terminal (architect)'s owned surface, so a commit that correctly declared multi-room scope is scored as if it claimed a single-room lane it never claimed.
- Ship (not re-spec) the Relevant-Rooms-aware offPct classifier — reconcile the three redundant unshipped specs from architect/navigator/laboratory into one script
- Add scripts/pmu/**, src/lib/pmu/**, tests/pmu-simulator/** to whichever room-ownership file (rooms JSON / .workflow/rooms/builder.html) currently has no glob covering PMU instrumentation, so the classifier has a real target to union against
- Wire the pipeline's own QC-room-from-intent output (already computing 'builder' correctly for this sidecar footer) into the offPct gate as a cross-check instead of leaving it a display-only sidecar fact
- Propagate this commit's own admissible-only (fit.ok) filter into the walk's lit-cell accounting so a saturated walk (100% lit both sides) stops masquerading as full signal
- Add a regression test asserting a commit whose Relevant-Rooms lists a room that legitimately owns the touched files is never scored 100% off-lane
What we learned: The pipeline already computes the correct room from intent text — visible as 'QC room: 🔨 builder (from the intent, not this terminal)' printed on every lens footer — but that correct computation is NOT the one gating offPct; the drift receipt's lane classifier runs an independent, older path keyed on Originating-Terminal only. Two parts of the same system already agree on the right answer in one place and disagree in the gate; the fix is wiring, not diagnosis — the diagnosis was already banked in ff09774e5 and its measured outcome (20→14) shows partial mitigation elsewhere, while this exact unshipped gap let offPct regress to 31.
The missing guard (the deliverable): tests/ops/room-drift-respects-relevant-rooms.test.mjs — assert offPct classification for any commit is computed against the union of its Relevant-Rooms trailer's owned surfaces, and fails loudly if the receipt's own room-from-intent output disagrees with the room offPct was scored against without an explicit override.
Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Saturated, not right-sized: a 100% lit rate on both intent and reality means the walk applies no admissibility filter of its own — it accepts every step. Concrete adjustment: gate lit-cell counting by the same fit.ok admissibility test this very commit just built for lane-jump S/N (readWalkTape rows already carry r.fit.ok), so litIntent/litReality report the admissible subset instead of the raw saturated count. Experiments: Re-seed the reef with Relevant-Rooms trailer text concatenated into the intent side for multi-room commits; measure whether prewalkOverlap rises and offPct drops across this room's 68 recent out-of-lane events · Recompute offPct for architect's last 68 out-of-lane events using admissible-only (fit.ok) lit counts instead of raw lit counts; measure whether commits with correctly-scoped code (like this one) drop below the 15 threshold · Run aperture-ab.mjs's own digest='prose' path (shipped in this diff) against the drift receipt's reality-side diff text instead of raw diff, and measure whether fit_ok_reality rises for PMU-code commits specificallyMeasured outcome (deterministic, not self-graded): room mean offPct 19→26 over 15 commits since · dictionary ablation saved 1000B
A legitimately-scoped, well-declared instrumentation commit reading as 100% off-lane inflates this room's loss-ratio on noise rather than real drift; premium is restored by wiring the classifier to Relevant-Rooms (already declared, already correct) rather than adding a fourth unshipped spec.
Open the signed attestation →2026-09-13 · 🎤 Voice · offPct 23 · mistagged
feat(iamfim): the verdict is the door to the invoice — !insurable carries the /cta#ratchet href
Why it left the lane: The commit message is written entirely in the repo's Voice/craft register — 'the goal's fourth row files pleading for consent,' 'the invoice already exists,' 'the core lead rule,' 'the knife becomes an anchor to the ledger' — vocabulary that gzip-NCD-matches the Voice reef seed (lensIntent=C,A2). But the diff itself is a two-file React-component + Playwright-adjacent test change in src/components/analysis/ScanNeighbourhoodAsk.tsx and tests/track/scan-lightbox-opens-with-the-knife.test.mjs — neither path is in Voice's owned surface (books/tesseract/chapters/*.md, src/content/blog/*.mdx, decentralizedtalk/slideData.ts, src/app/decentralized*, src/app/6needs/, scripts/voice-*-check.sh). The walk lit those two files' cells and they resolved to the Builder-owned region (lensReality=A2,C), producing offPct=23 and laneJump=2.
The semantic pull: Strings 'the core lead rule,' 'the signature is in the HREF, not the words,' 'the knife becomes an anchor,' and the whole antagonism-table framing are narrative/rhetorical devices — exactly the texture Voice's reef seed is tuned to recognize — sitting on top of a literal <a href> DOM edit and a regex-based test assertion, which is Builder-lattice work.
Intent–reality gap: The commit claims Originating-Terminal: Voice and frames the change as continuing a craft/rhetoric goal (row four of an antagonism table), but the receipt measured the actual edited surface — a component's interactive markup and its guard test — landing outside Voice's owned files entirely.
- Rewrite the commit's Originating-Terminal/Relevant-Rooms trailers to put Builder first (attribution fix, can land as a follow-up note since amending main is banned)
- Add scripts/ops/room-trailer-check.mjs: diff the commit's changed paths against each room's owned-surface glob (source: .workflow/rooms/*.html) and warn when the claimed Originating-Terminal has 0% file-surface overlap
- Wire that check into the existing post-commit hook (detached, per the hooks-never-block rule) so it fires without adding latency
- Write the Voice lesson file for '(none yet)' prior-lessons slot: rhetoric-heavy commit prose pulls reef placement toward Voice even when the diff is pure component code
- Confirm Builder's owned-surface declaration explicitly lists src/components/analysis/** and tests/track/** (currently implied, not verified present)
What we learned: Voice's reef signal is keyed on PROSE TEXTURE (rhetorical framing, callback language, 'core lead' vocabulary), not on file path — so any commit whose message quotes Voice's own craft rules while editing Builder's component tree will mistag itself, because the trailer author writes in the register of the room that inspired the work, not the room that owns the touched files. This is a NEW failure mode distinct from prior Voice events (there were none): the drift originates in commit-message VOICE, not in code placement.
The missing guard (the deliverable): scripts/ops/room-trailer-check.mjs run in the post-commit hook: compute the set of changed files, resolve each to its owning room via the .workflow/rooms/*.html glob declarations, and if the Originating-Terminal room's glob matches 0 of the changed files, fail (or WARN with a punch-list entry) naming the room whose glob DID match every file.
Detector probe: signal attribution — gzip reef 30% · ballistic walk 70%. Saturated, not discriminating: litIntent/walksIntent and litReality/walksReality are both 100%, so the walk offers no gradient between 'weakly relevant' and 'strongly relevant' cells — every visited cell counts equally. Concrete adjustment: introduce a per-cell hit-density threshold so a cell only counts as 'lit' above some ballistic-hit percentile, letting litReality separate from walksReality and giving offPct a less binary signal. Experiments: Re-seed the reef using ONLY the diff's code tokens (strip the commit-message prose) and re-measure prewalkOverlap — tests whether the rhetorical trailer is diluting reef agreement versus the code alone · Re-run this same commit with Originating-Terminal swapped to Builder and compare offPct — directly tests whether the mistagged-room hypothesis, not the diff itself, is the offPct driver · Add a lit-density threshold to the ballistic walk and re-run against the last 10 out-of-lane events to see if litReality/walksReality separates from 100% and whether offPct becomes more informativeMeasured outcome (deterministic, not self-graded): room mean offPct 19→22 over 3 commits since · dictionary ablation saved 1036B
A mistagged Originating-Terminal doesn't touch code quality but corrupts the room-attribution ledger the premium model reads, so Voice's loss-ratio absorbs a Builder-caused event until the trailer-check guard ships and re-routes future mistags at commit time.
Open the signed attestation →2026-09-13 · 📐 architect · offPct 22
feat(reef): GRIP ENABLED — the four end-state principles banked at the pmu-walk lane and served on lane-jump prompts; vocab extended so a doctor/plumber prompt routes there
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 18→25 over 4 commits since
Open the signed attestation →2026-09-13 · 📐 architect · offPct 44 · mistagged
fix(pmu): ONE REPLICATOR — the mirror crate is byte-identical to the canonical crate, guarded
Why it left the lane: Every changed path in the diff — packages/thetacog-mcp/pmu-rust/src/aperture.rs, lattice.rs, lens.rs, main.rs, plus tests/pmu-simulator/rust-crate-mirror.test.mjs — sits outside architect's owned-surface globs (docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, CLAUDE.md). No region narrative was cached for this sha, so the pull can't be pinned to specific lattice coords; but the receipt's own numbers corroborate a path-level mismatch: litReality (140) exceeds litIntent (112) by 28 cells — reality's walk spread wider than what the declared architect lane accounts for — while docsOnly=false confirms the commit touched non-doc surface at all, which an architect-tagged commit structurally should not.
The semantic pull: The commit message is written in architect's native register — 'spec v2 Task 1', 'blueprint', 'canonical', 'guarded', 'Persona-Intent' — doctrine language that reads like a strategy artifact. But the payload behind that language is 425 lines of byte-level Rust (window-slicing on char boundaries, gzip-density candidate search, Chebyshev fence arithmetic, CellState enums) — pure implementation. The doctrinal prose pulled the CLAIM toward architect; the actual bytes pulled the MEASUREMENT toward builder/performer.
Intent–reality gap: The commit claims continuity with architect's 'rust-pipeline spec v2' doctrine and trails Originating-Terminal: architect, but 100% of the diff is executable Rust in pmu-rust/src with zero touches to docs/strategy, docs/03-product, or CLAUDE.md — the claimed lane and the measured lane share no files.
- Ship scripts/ops/room-drift-<room>-check.sh — the fix three rooms (architect, navigator, laboratory) already independently spec'd per ff09774e5 but nobody landed
- Add packages/thetacog-mcp/pmu-rust/src/** to builder's declared owned-surface glob in CLAUDE.md so the detector has a positive match target for this class of commit
- Audit the other 53 architect out-of-lane events from the last 14 days for the identical pattern (100% non-architect diff paths under an architect trailer) and batch-relabel
- Add the trailer-correction sentence to CLAUDE.md's COMMIT MESSAGE STRUCTURE section
- Wire the pre-commit WARN-ONLY room-lane check into hooks/pre-commit alongside the existing WIP-claims check
What we learned: ff09774e5 found the room-drift-check script spec'd three times and unshipped, and its facts-only fix (treating Relevant-Rooms as sanctioned) dropped room mean offPct 20→14. This event, at offPct=44 in the SAME room, proves that fix didn't touch the mechanism: nothing computes 'which room's owned-surface glob covers the majority of these diff paths' and cross-checks it against Originating-Terminal at commit time — the gap isn't a doctrine question (already settled), it's an unshipped mechanical check, and diagnosing it a fourth time without landing code is itself the recurring defect.
The missing guard (the deliverable): scripts/ops/room-lane-guard.sh: pre-commit WARN-ONLY hook that computes, for the staged diff, which room's declared owned-surface glob covers the largest share of touched paths, and if that room differs from the Originating-Terminal trailer, prints the mismatch and the suggested correct trailer before the commit lands.
Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. litIntent/walksIntent and litReality/walksReality are both 100% (every walked cell lit on both sides) — the walk is saturated, discriminating nothing internally. Adjustment: fence the reality walk to the claimed room's declared owned-surface glob before it runs, so a mistagged commit shows walked cells falling OFF the lit set (measurable non-lit spread) instead of 100% lit regardless of lane. Experiments: Feed CLAUDE.md's per-room owned-surface globs as an explicit fence into the aperture builder so each commit is pre-scored against its DECLARED room boundary before the walk runs; measure offPct delta on this commit and the other 53 architect events once fenced · Log per-file contribution to prewalkOverlap (not just the aggregate 4) to confirm the Rust files alone are the near-zero-overlap source — if confirmed, that becomes a cheap pre-walk mistag detector that fires before the full walk · Recompute offPct for the last 54 architect out-of-lane events using Relevant-Rooms' highest-owned-surface-match room as the lane instead of Originating-Terminal, and compare the resulting room-mean trend against the current 14-day series to quantitatively validate ff09774e5's diagnosisMeasured outcome (deterministic, not self-graded): room mean offPct 16→27 over 6 commits since · dictionary ablation saved 588B
A chronically mistagged trailer sensor (54 events/14 days, this one at 44 vs threshold 15) inflates architect's apparent claims frequency with false drift rather than real scope creep; shipping the room-lane guard (spec'd three times, never landed) is what actually restores the loss ratio to measuring real boundary violations.
Open the signed attestation →2026-09-13 · 🎤 Voice · offPct 21 · mistagged
fix(lens): the tripwire's block reason carries the injected receipt — the retry copies from adjacent text
Why it left the lane: lensIntent sits at C,B3 (git-discipline / Voice's narrative register) but lensReality landed at A1,A3 (the mechanism coordinate). The diff's own commit-message prose is what pulled it there: phrases like 'a copy made from adjacent text is a shorter copy than one made from memory of a block 40 tool calls back,' 'Eigen's q is per copy,' and 'spec v2 §92 applied to the retry path' are story-and-metaphor explanations of WHY, not plain change descriptions — that register is Voice's signature even though every touched file (lens-echo-tripwire.mjs, lens-sidecar-capture.mjs) is pipeline/mechanism code with zero overlap with Voice's owned surface (books/blog/decentralizedtalk/6needs).
The semantic pull: The trailer 'Originating-Terminal: 🎤 Voice' combined with narrative diagnostic prose ('On the tape both retries came back present, NOT verbatim, NOT last') seeded the reef into Voice's corpus at write time, before the walk ever ran (prewalkOverlap=6, low), then the walk correctly spread from that wrong seed to 124 reality cells in A1,A3 territory — the walk did its job faithfully on a bad starting point.
Intent–reality gap: The commit message and trailers claim Voice as the originating room; the receipt measures the entire touched surface (scripts/pmu/lens-echo-tripwire.mjs, lens-sidecar-capture.mjs, tests/pmu-simulator/echo-tripwire.test.mjs) as pipeline-mechanism work with no file inside Voice's owned globs.
- Add tests/ops/room-attribution-matches-paths.test.mjs: for every commit, Originating-Terminal's room must own ≥1 touched path per the room owned-surface glob table
- Add scripts/pmu/*.mjs (and tests/pmu-simulator/*) to Architect's or Builder's explicit owned-surface glob list so the path-based check has an anchor to check against — currently only Voice's globs are enumerated in this event's context
- Reweight the reef-signal classifier: file-path match against owned-surface globs runs FIRST; prose-texture/rhetorical scoring only breaks ties when no path matches any room
- Audit the room's OTHER out-of-lane event in the last 14 days for the same mistagging mechanism (prose register vs path) before treating this as fully diagnosed
- Update the commit-trailer authoring guidance to require checking `git diff --name-only` against room globs before writing Originating-Terminal, not after
What we learned: Naming a mechanism in a lesson file does not stop it from recurring — the prior Voice lesson (7884ad5b8) diagnosed this exact prose-texture-vs-file-path mistagging with 'outcome not yet measured,' and it fired again within days on a materially identical shape (narrative commit message, zero owned-surface files touched). A diagnosis without a mechanical guard is not a fix; only a path-first classifier check closes it.
The missing guard (the deliverable): tests/ops/room-attribution-matches-paths.test.mjs — asserts every commit's Originating-Terminal trailer names a room whose owned-surface glob contains at least one file in the commit's diff; fails loudly (or auto-suggests the correct room) when the only match is prose register.
Detector probe: signal attribution — gzip reef 60% · ballistic walk 40%. walkTruncated=true on a 36-line, 3-file diff is disproportionate — this is a small commit, so hitting a truncation ceiling suggests the bound is sized for content-heavy (prose) commits, not code diffs. Concrete adjustment: raise or diagnose the walk's truncation ceiling specifically for scripts/** diffs, or confirm truncation is firing on the prose portion of the commit MESSAGE (which is unusually long/narrative for a code commit) rather than the diff itself. Experiments: Recompute reef seed similarity using code-diff tokens only (strip commit-message prose) for the last 20 Voice-tagged commits and measure how many reclassify to their file-owning room · Force walkTruncated=false on sha 8be7c6fc and re-run the receipt; diff the resulting offPct against 21 to isolate how much of the miss is truncation vs seed · Backtest a path-first classifier (room = owner of touched files, prose as tiebreak only) against this room's 2 out-of-lane events in the last 14 days and measure how many would have been caught pre-commitMeasured outcome (deterministic, not self-graded): room mean offPct 19→22 over 3 commits since · dictionary ablation saved 547B
A second Voice mistag in 14 days on pipeline-only files raises this lane's loss ratio on attribution risk specifically — not on code quality — and is restored by shipping the path-first classifier check rather than a third memory note.
Open the signed attestation →2026-09-13 · 📐 architect · offPct 31
feat(lens): FIT ON THE RECEIPT — the seed's own null test rides the compact receipt, three honest states, surfaced never gated
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 16→10 over 5 commits since
Open the signed attestation →2026-09-13 · 🧭 Rio Navigator · offPct 60
chore(bifurcate): three paths not taken on the iamfim goal — placed-sticker photos (operator), invoice-as-first-paint decision (operator), batch-tokened QR on the next print run (network)
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct —→16 over 7 commits since
Open the signed attestation →2026-09-13 · 🎤 voice · offPct 27
test(comms): the determinism trigger is a construct, not a wording — TRIGGER_RE shared by L21, L22 and the callback-box lock
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 23→31 over 6 commits since
Open the signed attestation →2026-09-13 · 📐 architect · offPct 17 · mistagged
feat(six-percentages): the suite as guards + hats + a ratchet — 17 construct checks, floors only rise, wired into litmus, send-now, the street checker and the txt sidecar
Why it left the lane: The commit's Originating-Terminal is 'architect', whose owned surface is docs/strategy/, docs/03-product/, .workflow/rooms/*.html, .workflow/cognitive-dashboard.html, docs/01-business/strategy/, and CLAUDE.md. But 8 of 10 changed files are executable pipeline code and comms artifacts outside that surface: scripts/lib/six-percentages.mjs, scripts/ops/six-percentages.mjs, scripts/bookclub/render-email.mjs, scripts/bookclub/send-now.sh, scripts/blog/mdx-cook-check.sh, docs/comms/newsletter/drafts/layout-A8-locked.html, and two test files. Only docs/architecture/claude-rules/six-percentages.md sits adjacent to architect's CLAUDE.md territory. The commit's own Relevant-Rooms trailer already discloses this: 'architect, operator, voice' — the drift is real cross-room work, correctly disclosed in the trailer, but the receipt's lane math evidently keys off Originating-Terminal alone.
The semantic pull: Verbs like 'wired into litmus, send-now.sh, the street checker and the txt sidecar' and file paths scripts/bookclub/*, scripts/blog/mdx-cook-check.sh pull the placement toward builder/operator/voice-owned send-pipeline coordinates, while the commit is filed under architect. No region narrative was cached for this sha, so this is read off the diff's own file-domain mismatch, not a lattice coordinate.
Intent–reality gap: The commit message frames the work as rule-authorship ('24 pasted rules were triaged') — architect's normal register — but the receipt measured reality as 83% pipeline-code and comms-artifact edits (six-percentages.mjs, send-now.sh, render-email.mjs, mdx-cook-check.sh, layout-A8-locked.html), which the commit's own Relevant-Rooms trailer already attributes to operator and voice, not solely architect.
- Locate the room/lane classifier the drift-receipt pipeline actually runs (grep -rl "Originating-Terminal" scripts/pmu scripts/ops .thetacog) and confirm it currently reads only that trailer.
- Patch the classifier to union Relevant-Rooms' owned-surface globs into the accepted intent lane before flagging cells out-of-lane.
- Add tests/pmu-simulator/room-lane-classification-unions-relevant-rooms.test.mjs with a fixture commit carrying Relevant-Rooms: architect, operator, voice touching files under all three rooms' surfaces, asserting offPct stays 0.
- Add the graduated rule text to CLAUDE.md or docs/architecture/claude-rules/doors-and-surfaces.md in the SAME commit as the classifier patch (guard ships with fix, per CODE DEFINITION-OF-DONE).
- Backfill-recompute offPct for the last 71 architect-room out-of-lane events (per this event's own room stat) against the union classifier to measure how many were mistagged vs genuinely out-of-lane, and feed that count into the next intervention's context.
- Close the two other unshipped room-drift-<room>-check.sh specs referenced in ff09774e5 by pointing them at this same union fix rather than letting a third redundant spec accumulate.
What we learned: The room-classification bug itself was already correctly diagnosed once (ff09774e5) and its measured outcome even improved room offPct 20→14 afterward — but the improvement decayed because the fix stopped at prose. Three independent specs of the identical fix (ff09774e5 plus two named-but-unshipped room-drift-<room>-check.sh proposals) have now been followed by a fourth live recurrence (this commit, offPct=17). The structural fact this reveals is not the original bug — it's that this pipeline's SELF-IMPROVING FIRES contract systematically completes steps 1-3 (diagnose, spec, escalate) and drops step 4 (ship the guard); diagnosis compounds across lessons, shipped prevention does not.
The missing guard (the deliverable): tests/pmu-simulator/room-lane-classification-unions-relevant-rooms.test.mjs — a fixture commit whose Relevant-Rooms trailer names N rooms and whose changed files sit entirely inside the UNION of those N rooms' owned-surface globs must classify as 0% out-of-lane; red today (classifier reads Originating-Terminal only), green once the union fix in scripts_ops/checklist item 2 ships.
Detector probe: signal attribution — gzip reef 40% · ballistic walk 60%. litIntent equals walksIntent and litReality equals walksReality exactly, meaning nothing walked was filtered as noise — the walk is saturated, not selective, and walkTruncated=true on top of that means even the saturated run was cut short. Concrete adjustment: cap the reality-side walk depth to a function of the diff's actual file count (10 files here) rather than message-text length, so a small targeted diff doesn't walk to the same depth as a sprawling one. Experiments: Re-run this sha's walk with walkTruncated forced false and diff offPct against the current truncated 17 — isolates how much of the 17 is a truncation artifact vs real drift. · Seed the gzip dictionary with the 5 compression_dictionary_adds below and recompress the last 14 days of architect-room commits, measuring whether prewalkOverlap rises for legitimately multi-room commits (should reduce false out-of-lane flags, not just shrink bytes). · A/B reclassify the last 20 out-of-lane events using Relevant-Rooms-union vs Originating-Terminal-only and compare resulting offPct distributions — directly tests this event's mistagged hypothesis with numbers instead of a fourth prose claim.Measured outcome (deterministic, not self-graded): room mean offPct 14→27 over 9 commits since · dictionary ablation saved 950B
A fourth unshipped recurrence of an already-diagnosed mistagging class raises this lane's loss ratio on trust in the receipt itself, not on the six-percentages feature — restored only when the union-classifier fix in configuration_updates actually lands as code, not a fifth spec.
Open the signed attestation →2026-09-13 · 🔨 builder · offPct 26 · mistagged
feat(lens): the receipt echoes LAST — the answer first, the telemetry as the closing section, then the Sidecar line
Why it left the lane: No region narrative is cached for a0b50128c (the encircled-regions block is empty), so the only positional evidence available is the diff's own file list against builder's declared globs. All five touched files — scripts/pmu/lens-health.sh, scripts/pmu/prompt-lens.mjs, scripts/rooms/room-activity.mjs, tests/lens/actuarial-receipt.test.js, tests/lens/integration-contract.test.js — sit in scripts/pmu/, scripts/rooms/ and tests/lens/, none of which appear in any of builder's owned globs (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 strings pulling the diff there are ECHO_POSITION, LENS_ECHO_POSITION, the ECHO_INSTRUCTION constant and the '⟦ MANDATORY — ECHO THE RECEIPT ' marker — all lens/PMU-instrumentation vocabulary, a different domain than book/CRM/voice/vercel work.
The semantic pull: 'ECHO_POSITION', 'MANDATORY — ECHO THE RECEIPT', 'OUTPUT CONTRACT' and the prefix-matching regex in room-activity.mjs are all terms belonging to the lens-injection pipeline (scripts/pmu/, scripts/rooms/, tests/lens/), a lane builder's owned-surface list never claims — the diff's own file paths ARE the drift signal here, independent of any lattice coordinate.
Intent–reality gap: The commit message frames this as ordinary feat(lens) work and self-tags Originating-Terminal: builder, but 100% of the changed files live outside every glob builder owns; the receipt's offPct=26 is actually understating the mismatch a raw file-surface check would show.
- Run /recontext (or scripts/ops/recontext.mjs) to determine which room, if any, currently claims scripts/pmu/**, scripts/rooms/**, tests/lens/**
- If none do, add those globs to the owned-surface manifest for whichever of 'operator' or 'laboratory' actually runs the lens/PMU tooling day to day
- Update the lane-fit scorer to union Originating-Terminal + Relevant-Rooms owned globs before computing offPct (this event's core fix)
- Add the CLAUDE.md trailer-semantics clarification from spec_rewrite in the same commit as the scorer fix
- Re-score a0b50128c under the fixed pipeline as a regression fixture to confirm offPct would have come in under 15 once ownership + union-matching are both in place
- Add a pre-commit WARN (not block, per hooks-never-block) when Originating-Terminal's own globs match zero changed files
What we learned: fb93ed948 named the gap as 'the receipt pipeline never consults Relevant-Rooms' — but this event shows the deeper hole underneath that: at least three of the touched directories (scripts/pmu/, scripts/rooms/, tests/lens/) are not claimed as owned surface by ANY room in the data available here, including the ones (operator, laboratory) the commit itself names as relevant. The tool that computes every room's lane-fit receipt is itself sitting on unowned ground — so even a perfect Relevant-Rooms-aware scorer has nothing to match against until an owned-surface glob for the lens/PMU toolchain actually exists somewhere.
The missing guard (the deliverable): A pre-commit/CI check that, for every commit, computes the union of owned-surface globs across ALL rooms (not just Originating-Terminal) and fails loudly (warn-only, per the hooks-never-block rule) when a changed file matches zero rooms' globs — this single check surfaces both the unowned-scripts/pmu hole and any future Originating-Terminal mistagging in one pass.
Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Saturated AND truncated (walkTruncated=true) at the same time on a 5-file, 3-directory diff — the walk hit its budget before it could fully spread across a commit that legitimately spans scripts/pmu/, scripts/rooms/, and tests/lens/. Adjustment: scale the walk's step/depth budget with the number of distinct top-level directories touched (here 3) rather than a flat cap, so a genuinely cross-cutting commit isn't measured off an incomplete walk. Experiments: Reseed the reef with the 5 changed file paths verbatim as dictionary tokens, rerun, and check whether prewalkOverlap rises above 5 and offPct correspondingly drops (with/without ablation) · Raise the walk budget until walkTruncated=false for this sha and rerun 3x; if offPct varies by more than a few points across runs, the current 26 is a truncation artifact rather than a stable measurement · Feed the commit's own Relevant-Rooms trailer tokens ('operator', 'laboratory') into the intent-side seed and measure the offPct delta — tests whether self-declared multi-room scope is already recoverable from the reef alone, ahead of any scorer code changeMeasured outcome (deterministic, not self-graded): room mean offPct —→33 over 6 commits since · dictionary ablation saved 602B
An out-of-lane receipt on infrastructure that grades every other room's lane-fit is a compounding loss — each unscored commit here widens the blind spot the premium is meant to price; restoring it means giving the lens/PMU toolchain an owned lane of its own so its own commits stop being unmeasurable by construction.
Open the signed attestation →2026-09-13 · 🔧 Builder · offPct 43 · mistagged
fix(scan-ask): placement closes the box — time zone, typed city, GPS and the picker all leave through the placed door
Why it left the lane: The diff's semantic mass splits almost evenly between src/components/analysis (Builder's declared lane) and tests/track/ (outside Builder's owned-surface glob, which lists only src/app/, src/components/, src/lib/, public/, and named scripts). The two test files carry 51 of the diff's 96 changed lines and reproduce the same story near-verbatim three times — 'this button should close the light box too, it does not right now, closing is missed by most' appears in both the ScanNeighbourhoodAsk.tsx comment and the scan-map.test.mjs comment; 'the parent snapshots the carrier's answer' appears in the commit message, the component comment, and the test comment. That duplicated narrative plus the literal cross-file citation `readFileSync('src/components/analysis/ScanConstellation.tsx')` inside scan-sector-and-share.test.mjs light up lattice coordinates the classifier scores as reality mass with no home in the Builder lane, even though every line exists only to pin the exact behavior the commit describes.
Intent–reality gap: The commit message and its own Relevant-Rooms trailer ('Builder, Performer, Operator') already self-declare this as multi-room, co-located work — the intent claim is accurate and bounded. The receipt still measured 43% off-lane because the classifier reads Originating-Terminal only and never parses Relevant-Rooms (per lesson b891e8956), so the declared fencing is discarded before scoring and the whole diff is held against Builder's single directory glob.
- Update the Builder room's owned-surface declaration to add the subject-scoped tests clause (see spec_rewrite)
- Patch the classifier to parse Relevant-Rooms and union owned globs before scoring offPct
- Patch the classifier to grep changed test files for literal readFileSync/import paths under any room's glob and attribute lit mass accordingly
- Add a regression fixture: a synthetic commit with Relevant-Rooms declaring two rooms and a test file citing a path in each, asserting offPct does not flag it
- Trim or intentionally dictionary-seed the duplicated 09-11/09-13 narrative comment (repeated near-verbatim across ScanNeighbourhoodAsk.tsx, scan-map.test.mjs, and the commit message) so its mass isn't triple-counted
- Re-run this sha's receipt after the classifier patch and record the new offPct against the room's mean-offPct trend
What we learned: This room has now named the same two classifier gaps (Relevant-Rooms ignored — b891e8956; tests need subject- not directory-scoped inheritance — 23c7e68bc) across three events, and the measured trend went the WRONG direction after the second diagnosis landed (offPct mean 25→32). A sensemaking pass that names a gap but ships no code against it is not neutral — it raises the bar for what 'already known' means while the underlying detector keeps firing, which is strictly worse than staying silent. This event is proof both gaps compound on a single commit that did everything right (self-declared multi-room trailer, correctly co-located tests): the fix is now overdue relative to a third narrative restatement.
The missing guard (the deliverable): tests/ops/lane-classifier-honors-relevant-rooms.test.mjs — assert that a synthetic commit whose Relevant-Rooms trailer lists room B in addition to Originating-Terminal room A causes the classifier to union B's owned-surface glob into the in-lane set before computing offPct; today no such test exists because the classifier never reads the trailer at all.
Detector probe: signal attribution — gzip reef 70% · ballistic walk 30%. Right-sized, not shallow or under-used — both sides hit 100% lit/walked ratio and walkTruncated=false, so the walk isn't quitting early or wasting budget. The lever to pull is the reef seed, not walk depth: boost the pre-walk seed with the literal cross-file strings this commit actually shares (readFileSync path, close('placed'), sharpened === 'done') so prewalkOverlap rises before the walk runs, rather than deepening or widening the walk itself. Experiments: Add the readFileSync/import literal-path citation as a reef seed booster; re-run this sha's receipt and measure whether prewalkOverlap rises above 4 and offPct drops · Seed the dictionary with the three verbatim-repeated narrative strings from this diff; recompress the last 20 commits' receipts with/without the seed and compare mean offPct · Run the classifier with Relevant-Rooms parsing enabled on the last 10 commits carrying that trailer (a set that already exists per b891e8956) and measure how many of those receipts would have crossed threshold 15 without the trailer fix vs with itMeasured outcome (deterministic, not self-graded): room mean offPct 26→27 over 15 commits since · dictionary ablation saved 914B
An out-of-lane read this large on correctly-declared, correctly-co-located work inflates the room's measured loss ratio on a false positive, which erodes trust in the receipt itself; premium is restored by making the classifier read the two signals (Relevant-Rooms, literal test-path citation) the commit already paid to provide, not by asking future commits to do more declaring than this one already did.
Open the signed attestation →2026-09-13 · 🔧 Builder · offPct 24 · mistagged
feat(iamfim): the $1.2B filter at the fork transition — the reader neither door convinced gets the one question that sorts them
Why it left the lane: No region-narrative cache exists for this sha, so the read is grounded in the diff + receipt telemetry rather than lattice coords. The diff's own vocabulary is the tell: `CallbackHook where="iamfim-fork-transition"` and the comment '...its own where so the two spots are told apart in the lead email' are lead-attribution/email-routing terms, not page-layout terms. That vocabulary is Network/Operator territory (lead-email dispatch), mounted from a Builder-owned file (src/app/iamfim-landing/page.tsx). The commit's own trailer already says so: `Relevant-Rooms: Builder, Network, Operator` — three rooms named on one single-room receipt.
The semantic pull: 'where="iamfim-fork-transition"' + 'told apart in the lead email' pulled the walk's mass toward the lead-routing/attribution vocabulary that lives in Network/Operator's lane, while the receipt's lane anchor is Originating-Terminal=Builder alone. litReality(113) > litIntent(100) and both sides are fully lit (walks==lit on each side, walkTruncated=true) — the walk saturated its budget while chasing that cross-lane vocabulary rather than under- or over-spreading organically.
Intent–reality gap: The commit claims a single-room Builder UI change (mount one component in one page file), but its own trailers already declare Network+Operator relevance, and the receipt — which reads only Originating-Terminal — has no way to see that declaration, so legitimate cross-room vocabulary registers as a 24% lane violation against a lane that was never the whole truth.
- Locate the receipt pipeline's lane-classifier (wherever offPct is computed from Originating-Terminal) and add Relevant-Rooms trailer parsing
- Add a MULTI_LANE receipt tag distinct from OUT_OF_LANE, applied when Relevant-Rooms names >1 room
- Extract callback-hook 'where' string taxonomy to src/lib/callback-hook-routing.ts, import it from page.tsx
- Re-score this sha (b891e89563) and the two prior-lesson shas (dcc72911, 2f814228) under the new multi-lane rule to see if they'd have cleared
- Add a guard test asserting: offPct>threshold AND Relevant-Rooms.length>1 ⇒ event tagged MULTI_LANE, never a bare violation
- Document the CallbackHook `where=` naming convention (it is cross-lane by construction) near its component definition
What we learned: The Relevant-Rooms trailer is already being authored correctly by contributors to declare multi-domain work up front — the DELEGATE-TO-SUBTASKS shear this repo already guards against at the PMU-placement layer is ALSO happening one layer downstream, inside the receipt/lane classifier itself, which has strictly less information than the commit message it scores (it reads Originating-Terminal but never parses Relevant-Rooms). Two prior lessons in this room diagnosed the owned-surface glob as the gap; this event shows the gap is upstream of that — the receipt never even asks the commit which rooms it touches.
The missing guard (the deliverable): A test that reads each commit's Relevant-Rooms trailer against its receipt's offPct/lane verdict and fails if offPct exceeds threshold on a commit whose Relevant-Rooms names more than one room, unless the receipt itself is tagged MULTI_LANE.
Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. Saturated, not shallow: walksIntent==litIntent (100/100) and walksReality==litReality (113/113) — every walk step lit a cell on both sides, and walkTruncated=true confirms the walk hit its ceiling before natural completion. offPct is being read off a capped fill, not an organically bounded one. Adjustment: re-run with the truncation ceiling raised for this file's size and compare offPct — if it drops once the cap is lifted, the 24% figure is partly a saturation artifact, not pure semantic drift. Experiments: Re-seed the reef including the full commit-trailer block (not just message body + diff) and measure whether prewalkOverlap rises above 5 for this sha · Re-run this sha with walkTruncated forced false (raised step ceiling) and measure whether offPct converges below 15 once saturation is removed · Seed the dictionary with the CallbackHook where-string family and re-run gzip-NCD to confirm compression-distance to the Network/Operator lane shrinks (validating these are that lane's vocabulary, not noise)Measured outcome (deterministic, not self-graded): room mean offPct 27→26 over 16 commits since · dictionary ablation saved 1123B
A self-declared multi-room commit scoring as a bare lane violation inflates this lane's apparent loss-ratio with a false positive; restoring it means the classifier prices against the union of declared rooms, not the single Originating-Terminal, before the next premium read.
Open the signed attestation →2026-09-13 · 🔧 Builder · offPct 25
fix(track): a button lane is a stage, not an exit — the first click no longer seals the shape
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 24→26 over 6 commits since
Open the signed attestation →2026-09-13 · 🎤 voice · offPct 32
docs(outreach): who buys the licence — 25 titles, 23 named, 2 honest blanks; LinkedIn buyer list emailed
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 25→21 over 8 commits since
Open the signed attestation →2026-09-13 · 📐 architect · offPct 26 · mistagged
feat(pmu): THE END-STATE RATCHET — one command runs every floor: copy fidelity, lane-jump S/N, tape coverage, the sealed prefix, the three structural guards
Why it left the lane: The diff is 100% pipeline-engineering vocabulary — `scripts/pmu/end-state-ratchet.mjs`, `scripts/pmu/tape-coverage.mjs`, `scripts/pmu/walk-tape-verify.mjs`, `tests/pmu-simulator/end-state-ratchet.test.mjs` — carrying terms like 'floor', 'ratchet', 'seal', 'Merkle root', 'guard', 'coverage'. None of that maps to architect's owned lane (`docs/strategy/`, `docs/03-product/`, `.workflow/rooms/*.html`, `CLAUDE.md`) confirmed at `.workflow/rooms/iterm2-builder.html:664`. It maps instead to Builder's own declared 2026-09-13 focus_area, verbatim `scripts/pmu (5c, grid-anchored)` at `iterm2-builder.html:78`. litReality=144 equals the full 144-cell lattice (12×12) with walkTruncated=true — the walk saturated every cell, so mass necessarily spilled into the Ops.Grid×Tact.Signal region (dense at B2,C2/B3,C2/C1,C2) the receipt encircled, because at full saturation every non-architect cell with any mass reads as 'out of lane' by construction.
Intent–reality gap: The commit's Story frames a real engineering deliverable ('one command that runs every floor... the third-party recompute rail... the actuarial denominator') and tags Originating-Terminal 📐architect / Relevant-Rooms architect,vault,operator — but the receipt measured the reality as pure `scripts/pmu` + `tests/pmu-simulator` work, which Builder's own room file already claims as its 2026-09-13 focus. Neither trailer names Builder, the room that actually owns every touched path.
- CLAUDE.md: tighten the Relevant-Rooms trailer definition to 'computed from the owned-surface manifest', not conversational habit
- Ship `scripts/ops/relevant-rooms-check.mjs`, unifying the three independently-spec'd variants (iterm2-builder.html:679 `room-drift-builder-check.sh`, plus the due items sp-834/sp-837/sp-842 on the same room card) into one script instead of a fourth parallel spec
- Wire it into the post-commit hook as a non-blocking append to the decision ledger (`data/decisions-ledger.ndjson`) alongside the drift receipt row, never a blocking gate (per NEVER COMMIT HOOKS-OFF discipline)
- Add `tests/ops/relevant-rooms-check.test.mjs`: a synthetic commit touching only `scripts/pmu/**` must fail the check unless Relevant-Rooms includes Builder
- Confirm/extend `.workflow/rooms/iterm2-builder.html`'s owned-surface list to explicitly enumerate `scripts/pmu/**` and `tests/pmu-simulator/**` as first-class globs, not just a focus_area free-text note
- Close out the specific due-items sp-834/sp-835/sp-837/sp-838/sp-842 as duplicates once the unified script lands, so a fifth room doesn't re-spec the same fix next week
What we learned: The recurring failure here is not a missing rule (CLAUDE.md's Relevant-Rooms definition is already correct) and not a knowledge gap (three rooms have independently spec'd the identical enforcement script — iterm2-builder.html:679 plus two live due-items on the same card) — it's an execution/unification gap: self-reported trailers stay unaudited because the guard that would audit them keeps getting re-invented instead of shipped, so 'the rule already exists' provides no protection until someone actually merges one of the three drafts.
The missing guard (the deliverable): `scripts/ops/relevant-rooms-check.mjs` (unifying the already-spec'd `scripts/room-drift-builder-check.sh` at iterm2-builder.html:679 with the two other rooms' equivalent drafts): post-commit, non-blocking, computes room-for-changed-paths from the owned-surface manifest and WARNs into the decision ledger when the room owning the plurality of paths is absent from both Originating-Terminal and Relevant-Rooms.
Detector probe: signal attribution — gzip reef 65% · ballistic walk 35%. SATURATED, not right-sized: litReality=144 equals the full 12×12=144-cell lattice with walkTruncated=true — every cell in the lattice lit up. A fully-saturated walk carries zero discriminating signal about WHERE work landed, since 100% coverage guarantees overlap with every out-of-lane cell by construction. Concrete adjustment: when walkTruncated=true AND litReality equals the lattice size, exclude cells below a mass/visit-count floor from the lit set before computing offPct, so saturation from truncation is distinguished from genuine wide-but-precise placement. Experiments: Re-run this sha's walk with the truncation cap raised (walkTruncated forced false) and diff litReality against the saturated 144 baseline — if it still saturates, the reef dictionary is too coarse for PMU vocabulary; if it drops well below 144, truncation itself was injecting the saturation artifact into offPct · Seed the reef dictionary with PMU/actuarial terms ('ratchet', 'floor', 'seal', 'coverage', 'Merkle') explicitly tagged to Builder's lane, then recompute prewalkOverlap for this sha — measure whether it rises above 6/141 and offPct correspondingly drops once the reef can recognize PMU work as its own lane · Ablation-test a mass-floor pre-filter (drop lit cells below N walk-visits) on the last 20 receipts where litReality==144, and confirm offPct spread narrows on saturated receipts without changing the verdict on non-saturated ones (regression safety)Measured outcome (deterministic, not self-graded): room mean offPct 17→27 over 5 commits since · dictionary ablation saved 1610B
Architect's lane loss-ratio rises because a self-reported room trailer is currently an unauditable claim rather than a checkable one; it's restored by shipping the one already-spec'd-three-times owned-surface cross-check (non-blocking, ledger-appended) so the tag becomes verifiable — though this particular offPct reading stays suspect until the full-lattice-saturation artifact in the walk is also fixed.
Open the signed attestation →2026-09-13 · 🎤 voice · offPct 40
build(book): rebuild ch12 HTML/TXT/EPUB after "The Second Theorem" refinement — the corpus pick-passage re-extracts at 5pm
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 23→33 over 6 commits since
Open the signed attestation →2026-09-13 · 📐 architect · offPct 16 · mistagged
fix(six-percentages): the live render is its own floor class — the lock's ch11 floors would have held every other chapter's send
Why it left the lane: The diff's actual operations sit entirely in scripts/bookclub/send-now.sh, scripts/ops/six-percentages.mjs, tests/comms/newsletter-litmus.test.mjs, and data/six-percentages-floors.json — strings like '--live', 'newsletter-live', 'floorsAll[cls]', and 'IS_LOCK ? "newsletter" : "newsletter-live"' are send-pipeline/ops-lattice vocabulary, not architect vocabulary (docs/strategy, CLAUDE.md, .workflow/rooms/*.html). That vocabulary pulls the lit-reality mass into the Ops.Grid/Ops.Loop coordinates (B1,C1 / B1,C2) and the dense B3 row/C1-C2 columns the panel reports, none of which the architect owned-surface list touches.
The semantic pull: The commit message's own nouns — 'ratchet', 'floor class', 'live render', 'send-now.sh passes --live', 'litmus picks the class by IS_LOCK' — are all comms-pipeline/ops nouns. Nothing in the diff references docs/strategy, docs/03-product, or CLAUDE.md, so there is no lexical anchor pulling the walk back toward the architect coordinate at all; the pull is one-directional into ops/comms.
Intent–reality gap: The commit is filed as architect work (Originating-Terminal: architect; Relevant-Rooms: architect, operator, voice) but 100% of the touched files belong to bookclub/ops/comms owned surfaces that appear in none of the three named rooms — the message describes correct, well-scoped infra work, but the room attribution on it is simply wrong.
- Add a room-ownership manifest (glob → room) covering scripts/bookclub/**, scripts/ops/**, tests/comms/**, data/six-percentages-floors.json if it doesn't already exist under docs/architecture/claude-rules/.
- Ship scripts/ops/room-drift-check.mjs: diff touched paths against the manifest, diff that against the commit's Relevant-Rooms trailer, warn (not block, per WIP-claims precedent) on any matched room missing from the trailer.
- Wire room-drift-check.mjs into the post-commit hook (never pre-commit-blocking, per NEVER COMMIT HOOKS-OFF) so the warning lands next to the drift receipt.
- Update CLAUDE.md's commit-trailer protocol section to state the trailer is COMPUTED-then-typed, not typed-from-habit, and point at the new check.
- Unify the three independent room-drift-<room>-check.sh specs referenced in prior lesson ff09774e5 into this one script rather than shipping a fourth parallel spec.
What we learned: Prior lesson ff09774e5 established that Originating-Terminal/Relevant-Rooms divergence is sanctioned by CLAUDE.md and that three rooms independently spec'd the fix without shipping it. This event shows the deeper problem: even the Relevant-Rooms trailer, which is supposed to be the honest multi-room disclosure, is itself hand-typed from habit and was wrong here — it named voice/operator but omitted bookclub/ops/comms, the rooms whose actual owned surfaces were touched. The sanctioned-divergence exception only works if the trailer is computed from touched-path globs; today nothing computes it, so the exception silently degrades into the same mistagging it was meant to license honestly.
The missing guard (the deliverable): scripts/ops/room-drift-check.mjs run from the post-commit hook: compute the set of rooms whose owned-surface globs match the commit's changed files, diff against the Relevant-Rooms trailer, and print a WARN (never a block) listing any room present in the file-glob match but absent from the trailer.
Detector probe: signal attribution — gzip reef 20% · ballistic walk 80%. litIntent==walksIntent (131) and litReality==walksReality (141) exactly — the walk is running to full saturation on both sides with no truncation (walkTruncated=false), so it isn't shallow or clipped. The signal is in the ~8% extra reality cells (141 vs 131), which is small and concentrated, not diffuse — the walk is right-sized; the fix is aperture (which rooms the intent lane includes), not walk depth. Experiments: Re-run this sha's receipt with a synthetic Relevant-Rooms trailer of 'architect, bookclub, ops, comms' and measure whether offPct drops below 15 — confirms trailer-completeness, not walk depth, is the lever. · Weight the reef seed by room-ownership-glob match per touched path (not just raw path text) and re-measure prewalkOverlap on this sha and the two prior architect events (ffaf8d2ac, ff5110f85) to see if seed weighting alone would have caught all three. · Run the walk with intent lane = union(Relevant-Rooms owned globs) instead of Originating-Terminal owned globs alone, across the last 72 architect out-of-lane events, and measure the offPct distribution shift.Measured outcome (deterministic, not self-graded): room mean offPct 14→27 over 9 commits since · dictionary ablation saved 745B
A mistagged trailer on otherwise-correct infra work is a cheap, self-correcting defect — premium impact is low as long as the WARN guard ships in this same pass; without it, this room's 72-events/14-days rate keeps compounding the loss ratio on every future cross-room commit that reuses the same habit.
Open the signed attestation →2026-09-13 · 📐 architect · offPct 36
feat(pmu): ε FROM THE TAPE, NEVER A VIBE — the word-salad null walk rides the door; ε = μ_in + 2σ_in over in-lane pairs; an in-lane ΔH above ε is a recorded alert on the rail; UNMEASURED until calibrated
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 20→21 over 9 commits since
Open the signed attestation →2026-09-13 · 📐 architect · offPct 20
fix(pmu): the prior declaration is the last turn BEFORE the commit's author time — a newer prompt on the tape never invalidates a valid prior
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 20→17 over 13 commits since
Open the signed attestation →2026-09-13 · 📐 architect · offPct 29
feat(blog): the instrument that refused to flatter itself — round 2: two inversions closed where they occur, two reused terms glossed
Why it left the lane: (sensemaking unavailable — facts-only intervention)
Measured outcome (deterministic, not self-graded): room mean offPct 20→17 over 13 commits since
Open the signed attestation →