From 5e115688edb6b4cd23a7dfcc92f8fdc70a931f8f Mon Sep 17 00:00:00 2001 From: m3ultra Date: Sat, 18 Jul 2026 14:42:54 +1000 Subject: [PATCH] =?UTF-8?q?Lane=20A=20R30=20(v7.0-alpha=20ledger=20#6):=20?= =?UTF-8?q?THE=20ROTATION=20BOUNDARY=20VERIFY=20=E2=80=94=20HOLDS.=20F's?= =?UTF-8?q?=20day=20salt=20(207bcff)=20rides=20runtime=20streams=20only:?= =?UTF-8?q?=20stk-*=20stock-pick=20labels,=20dig=20binSeed,=20setWeekNight?= =?UTF-8?q?=20night-SELECTION=20over=20the=20plan-time=20week.=20Measured?= =?UTF-8?q?=203=20ways:=20grep-zero=20over=20the=20proven=20citygen/**=20g?= =?UTF-8?q?lob=20(8=20files/2546=20lines,=20pattern=20non-vacuous=20vs=20i?= =?UTF-8?q?nterior=5Fmode.js);=20generatePlanFor=20consumes=20no=20day-sha?= =?UTF-8?q?ped=20opt=20at=20any=20call=20site;=20day-inertness=20byte-meas?= =?UTF-8?q?ured=20(plan=20hash=20identical=20day-absent/1/37,=203=20seeds?= =?UTF-8?q?=20x=20synthetic+osm,=206/6).=20Selfcheck=20ALL=20GREEN=2015635?= =?UTF-8?q?2/156352,=20fingerprint=200x5f76e76=20frozen,=20all=20town=20pi?= =?UTF-8?q?ns=20green,=20zero=20re-pins.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- docs/A-progress.md | 19 +++++++++++++++---- docs/LANES/LANE_A_NOTES.md | 28 ++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/docs/A-progress.md b/docs/A-progress.md index 690c9cd..cc6887c 100644 --- a/docs/A-progress.md +++ b/docs/A-progress.md @@ -1,9 +1,20 @@ # LANE A — CITYGEN · progress (PROCITY-A) -*Status: **all deliverables landed; self-check ALL GREEN (156,352/156,352); rounds 2–27 (incl. wave 5) closed**. -R27 w5 THE FACADE FIX: every town — synthetic included — had its shopfronts facing away from the street -since **v1**. Fixed in all four ry sites; **51 goldens re-pinned**; the classic covenant amended on John's -ruling (`0x3fa36874 → 0x5f76e76`); a cross-convention gate added so it can never recur.* +*Status: **all deliverables landed; self-check ALL GREEN (156,352/156,352); rounds 2–30 closed**. +R30 (v7.0-alpha ledger #6): the rotation boundary VERIFIED — F's `day` salt rides runtime streams only, +plan generation structurally cannot receive it; all goldens frozen, zero re-pins.* + +## Round 30 (2026-07-18) — the rotation boundary verify (ledger #6, small round as briefed) + +One job: prove F's day-salted stock rotation (207bcff) never reaches plan generation. **It holds.** +Three measured legs (full detail in LANE_A_NOTES §30): (1) grep-zero for day identifiers over the proven +`citygen/**` glob (8 files / 2,546 lines, census printed; pattern proven non-vacuous against +`interior_mode.js`); (2) structural absence — `generatePlanFor` consumes no day-shaped opt and neither +shell call site passes one; (3) day-inertness byte-measured — plan hash identical with `{day, stockDay}` +hostilely injected as 1 and 37 vs absent, 3 seeds × synthetic+osm, 6/6. The salt's actual reach: `stk-*` +stock-pick stream labels + dig `binSeed` + `setWeekNight` night-selection over the plan-time 7-night week +(day picks a night, never generates one). Selfcheck ALL GREEN 156,352/156,352, fingerprint `0x5f76e76` +frozen, every town pin green. No files of mine changed except these two notes. ## Round 27 wave 5 (2026-07-17) — THE FACADE FIX (the epoch's biggest catch) diff --git a/docs/LANES/LANE_A_NOTES.md b/docs/LANES/LANE_A_NOTES.md index 41d6aac..1902a62 100644 --- a/docs/LANES/LANE_A_NOTES.md +++ b/docs/LANES/LANE_A_NOTES.md @@ -2,6 +2,34 @@ Durable answers to questions other lanes raised against Lane A. Full status in `A-progress.md`. +## Round 30 (2026-07-18) — THE ROTATION BOUNDARY VERIFY (ledger #6): **HOLDS** + +### → Fable / F: `day` rides RUNTIME streams only — plan generation cannot see it. Measured, not read. + +**Verdict: the seeded-rotation boundary HOLDS.** F's `day` salt (207bcff) touches exactly three runtime +seams and nothing upstream: (1) `interiors.js:178` `ctx.stockSalt` from `opts.stockDay`, consumed ONLY in +`layout.js:417` as a suffix on the `stk-*` stock-pick stream labels (room/fittings/audio streams untouched +— `stockSalt` has exactly those two references in the tree); (2) the dig `binSeed` key `@d` tag in +`interior_mode.js` (same null-gating: no game / day 1 / real-sourced ⇒ absent); (3) `gig_state.setWeekNight`, +which only **selects** a night from `plan.gigs` — the whole 7-night week is generated at plan time +(`gigs.js:227` `for night < NIGHTS`) from citySeed streams; day picks, never feeds. + +**How measured (three falsifiable legs):** +1. **Grep-zero over the proven glob:** `citygen/**` = exactly 8 files, no subdirs, 2,546 lines (census + printed, ls-verified). `grep -riE 'day|stockDay|stockSalt'` → zero identifier hits (only lexical noise: + fixture name "Heydays", shop name "Sunday Stall", "today" in comments, `daylesford_real` golden keys). + Non-vacuous: the same pattern hits `stockDay` 4× in `world/interior_mode.js`. +2. **Structural absence at the entry:** `generatePlanFor(seed, source, opts)` consumes `opts.{town, gigs, + customBands, cache, report}` only (grepped every `opts.` in citygen); both shell call sites + (`index.html:127`, `map.html:315`) pass `{town, gigs, customBands}` — no day exists to pass. +3. **Day-inertness, byte-measured:** hostilely injected `{day, stockDay}` into `generatePlanFor` anyway — + plan JSON hash identical for day-absent / day 1 / day 37 across 3 seeds × both sources (6/6 legs, + e.g. synthetic 20261990 `0xec7a2d39` all three ways). Even a rogue caller can't leak day into a plan. + +**Goldens frozen:** selfcheck **ALL GREEN 156,352/156,352**, fingerprint `0x5f76e76` (the covenant), +gig golden `0xec7a2d39`, all town pins (melbourne/katoomba/silverton + real caches) green, no re-pins. +Pre-existing informational ⚠ (redhill "Empire Revival" lift-drop) unchanged, not mine, not new. + ## Round 27 wave 5 (2026-07-17) — THE FACADE FIX: it was every town, not just the real ones ### → F: **your files hold the old covenant hashes — they are now wrong, and only you can fix them**