From d9d8cbfd3e9e3e99235655e55093440081f97817 Mon Sep 17 00:00:00 2001 From: m3ultra Date: Sat, 25 Jul 2026 23:10:34 +1000 Subject: [PATCH] =?UTF-8?q?Lane=20F=20R36=20w2=20(v7.0=20close):=20THE=20F?= =?UTF-8?q?REEZE=20=E2=80=94=20README=20v7=20section,=20charter=20risk=20v?= =?UTF-8?q?erdicts,=20notes=20=C2=A736?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit README: the v7.0 section (the loop dig->guide->want->travel->list->paper, the delta-law machinery, the classic covenant) + the morning-paper manual row. V7_THE_GAME.md: the five charter risks get their retired-or-carried verdicts, v4-style, written by F under the single-lane-close ruling: economy RETIRED- structural (the named bot verifier carried to the live tier) · schema drift RETIRED (three optional widenings, zero migrations) · re-emit identity CARRIED (never fired; owned-item stability check unbuilt — the next re-emit round owns it) · scope gravity RETIRED (the stage gates held) · v6 collision RETIRED (the 2 a.m. commits were the one contact, swept R36w1 + gated R36w2). LANE_F_NOTES §36 + F-progress: the close record — both playtests, E's three flags closed by measurement, the DJ-roster hold, the full gate numbers (7 passed / 0 failed / 0 warn / 0 skipped · flags 0 fails / 1 warn (deliberate) · selfcheck 156,352/156,352 · figure-scale 29 figs incl. the 5 DJ bodies · MATRIX GREEN 10 towns x 7 gates · R32-35 smokes re-green on the final tree). Co-Authored-By: Claude Fable 5 --- F-progress.md | 39 +++++++++++++ README.md | 29 ++++++++++ docs/LANES/LANE_F_NOTES.md | 116 +++++++++++++++++++++++++++++++++++++ docs/V7_THE_GAME.md | 35 +++++++++++ 4 files changed, 219 insertions(+) diff --git a/F-progress.md b/F-progress.md index 855142b..e4e0868 100644 --- a/F-progress.md +++ b/F-progress.md @@ -4,6 +4,45 @@ --- +## Round 36 (THE v7.0 CLOSE, wave 2) — the gate, the freeze, the tag + +**Zero alpha-blockers stood** (Fable's wave-0 naked-boot playtest walked the whole loop by hand), +so wave 2 was pure close: E's three flags measured shut, the full gate over the final tree, docs +frozen, **tag `v7.0` (annotated, LOCAL — Fable pushes)**. + +**E's 2 a.m.-asset flags, closed by measurement:** (a) the 5 trellis DJ bodies' bind skeletons +measure **0.984–0.989 units** vs the legacy roster's 173.46 (cm) — the figure-scale gate grew a +DJ-body leg that spawns all five BY NAME through the real browse path: statures **1.64–1.89 m**, +all in [1.4,2.0], feet planted, rig-kind verified (the old sample's `(i*7)%19` could never reach +indices 17–21). (b) New STRICT `smoke_djdance`: the 4 Rokoko clips bind **64/65 tracks, sole +unbound `mixamorigReference`** (gate on binds + NaN, never node counts — no template pin); a +gig-night dancer's live action IS a dance clip (identity by duration, mixer advancing, +`position.y` flat = the clip moves the body); `?classic` fetches **zero dance clips** (positive +control: default fetched 4); `?noassets` procedural sway ALIVE (placeholder dancers bounce +0.07 m — the inverse pair proves the branch). (c) Rokoko zone = E's w1 provenance, nothing +runtime. + +**THE HOLD (the round's one warn, machine-recorded in smoke_djdance): `?classic=1` fetches the +5 DJ body GLBs** — unconditional `PED_NAMES.normal` members (rigs.js, D's file, `b339402`), +which also widened classic's crowd pool 17→22 ungated. Fable blesses or bounces; F did not +improvise in D's file during the close. + +**The gate (final tree, :8946 port-isolated): `qa.sh --strict --matrix` 7 passed · 0 failed · +0 warn · 0 skipped; flags harness 0 fails / 1 warn (the held finding, deliberate); selfcheck +156,352/156,352; figure-scale 29 figs / 6 shops; MATRIX GREEN 10 towns × 7 gates.** The R32–35 +smokes all re-green on the final tree: bible (ledger Σask $333 → Σoffer $135, scarcity across +reload, ?game=0 control) · hunt (rumor + auto-clear + travel day 1→2→3, same-town free) · +godbay (one-hammer byte-identical, SOLD net $19 bounded, the paper on the wake toast) · +first-five (HILLS HOIST $191 splash, beats on the real path, seeded across browsers). Classic +covenant fp `0x5f76e76`, gig golden `0xec7a2d39`, world fp `0xb1c7843e` unmoved. + +**The freeze:** README v7.0 section (the loop + the morning-paper manual row) · V7 charter risks +retired-or-carried v4-style (economy RETIRED-structural, bot verifier carried to the live tier · +schema RETIRED · re-emit identity CARRIED, never fired · scope RETIRED · v6 collision RETIRED) · +LANE_F_NOTES §36. Full record: LANE_F_NOTES §36. + +--- + ## Round 35 (v7.0 close, wave 2) — THE FIRST FIVE MINUTES (Fable, solo, JING5) A fresh game arrives HUNTING: one seeded artist want (`rng(citySeed,'firstwant',0)` × the diff --git a/README.md b/README.md index 8ed3edc..c3b9175 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ Click **START** to lock the mouse. Then: | read the **guide** stamp on every price card | the 90s price-guide band ("guide $8–24"). An item **asking under its band is a gem** — buy it, sell it to a keeper, pocket the margin. Bought slots stay gone for the day (the bin remembers) | | **☆ WANT IT** on a pull card | start hunting it — keepers gossip ("saw one in Castlemaine"), and buying one clears the hunt. **Switching towns costs a day** — the 23 towns are a map now, not a dropdown | | **⚖ LIST** in the crate | consign a find to **GodBay** — the auction hammers overnight (sleep or ride somewhere). One hammer per item, ever: keeper cash now, or the gavel tomorrow | +| wake up (sleep or arrive) | **the morning paper** rides the wake/arrival toast: "⚖ SOLD 'Milk Bar Dreams' — hammer $8, $7 after fees" (or "PASSED IN — it comes home"). The news is a toast, never saved — the ledger is your cash and crate | | click a book spine / toy box | pull-and-buy card (real price stickers in godverse shops) | | walk out the door / **Esc** | leave the shop (Esc also frees the mouse anywhere) | | **M** | 2D town map (street only) | @@ -162,3 +163,31 @@ economy design: [`docs/G3_ECONOMY_DESIGN.md`](docs/G3_ECONOMY_DESIGN.md). the default boot, plus a `?classic=1` before/after. **QA:** `tools/qa.sh --strict` (classic regression + default-boot gate + smokes + no-giants) `--soak` (the full-week soak); the seated drummer passes the no-giants gate at the seated stature band `[0.9,1.5] m`. + +## v7.0 — THE GAME: you're a crate-digger in 90s Australia + +v4 made the towns real, v5 made the shops real — **v7 makes it a game.** Boot the plain URL on a +fresh browser and you arrive HUNTING: the splash names a seeded first want and your pocket money +("You're hunting HILLS HOIST — $191 in your pocket"), three toast-beats walk you through the first +dig, and from there the loop is live: + +**dig** (E at a record bin — the crate riffle) → **read the guide** (every price card carries a 90s +price-guide band; an item asking *under* its band is a gem, and spotting one is the whole skill) → +**☆ WANT** what you're hunting (keepers gossip seeded rumors — "saw one in Castlemaine") → +**travel** (switching towns costs a day; the 23 towns are a strategy map) → sell to the **keeper** +(instant cash, always under guide — the no-pump law) or **⚖ LIST on GodBay** (a seeded offline +auction that hammers overnight; one hammer per item, ever — no retry farm) → **SLEEP** (= save; the +day advances, parody/mint stock rotates per (shop, day), bought slots come back) → wake to **the +morning paper** ("⚖ SOLD — hammer $22, $19 after fees"). Repeat, richer and one gem wiser. + +The machinery under it: a versioned localStorage save carrying THE DELTA ONLY (cash · collection · +day · town · wants · pulls · listings — the world always regenerates from seed, so a corrupt save +can cost you your stuff, never the town), JSON export/import for moving machines, and an economy +fenced by gates: sell < guide-band structurally, auction EV ≈ 0.8×mid (random flips bleed; only +finds profit), save/load byte-determinism, rotation seeded by (citySeed, shop, day). + +**`?classic=1` still boots the pure v2 town — zero save, zero game DOM, zero Storage calls, +instrumented every run** — and `?game=0` opts out of the layer on any boot. Charter: +[`docs/V7_THE_GAME.md`](docs/V7_THE_GAME.md) (ratified 2026-07-17, risk verdicts appended at the +close) · economy: [`docs/G3_ECONOMY_DESIGN.md`](docs/G3_ECONOMY_DESIGN.md) · the tour (day one to +first gem, 6 frames, no staging): [`docs/shots/v7_tour/`](docs/shots/v7_tour/). diff --git a/docs/LANES/LANE_F_NOTES.md b/docs/LANES/LANE_F_NOTES.md index 91e1fd7..c681ddb 100644 --- a/docs/LANES/LANE_F_NOTES.md +++ b/docs/LANES/LANE_F_NOTES.md @@ -1888,3 +1888,119 @@ tag gated on John's playtest. baseline snapshot (base = wants at boot; card adds base+1; the rumor may name ANY live want; buying clears ITS want back to base). A feature that moves a boot invariant must sweep every gate that assumed it — grep the harness for the invariant before calling a round closed. + +## §36 — R36: THE v7.0 CLOSE (wave 2 — the gate, the freeze, the tag) + +### §36.1 The two playtests (the tag's precondition, both on record) + +- **Fable, wave 0 (fresh naked boot, in person): ZERO alpha-blockers.** The whole loop by hand: + splash hook → strip spawn → onboarding beats → BIBLE guide on the cards → ☆ WANT (the + splash-seeded HILLS HOIST, add + auto-clear-on-find) → ⚖ LIST → sleep → the morning paper + ("SOLD Milk Bar Dreams — hammer $8, $7 after fees") → travel Boolarra→Katoomba costing a day, + the save riding along. The v7.x queue (filed, NOT fixed, per the five-holds law): + ⚖ discoverability · LIST confirm-click · the paper as a bigger artifact · keeper-rumor + untested-by-hand. Fable's verdict line, kept for the tag: *"zero alpha-blockers; the game + charged me $12 tuition for ignoring its own advice."* +- **R31's alpha playtest** stands as the precedent that found the dig default-off blocker; this + one found none — the explicit-flag blindfold lesson (harness #4) held: the wave-0 boot was + NAKED, and the R31/R35 flag-absent gates had kept the default boot the game. + +### §36.2 E's wave-1 flags, closed by measurement (the 2 a.m. assets) + +E's R36 w1 sweep (`83bce93`) regularized `046668e`+`b339402` (9 assets, not the brief's 7: +4 Rokoko dance clips + **5** trellis DJ bodies) and flagged three things at F's gate. All three +measured on the final tree: + +1. **Flag (a) — the bind-scale seam.** The DJ bodies' bind skeletons measure **0.9835–0.9893 + units** vs the legacy roster's ~173.46 (cm convention) — E's "~0.95–0.99" confirmed at + runtime. `rigs.js:163` span-normalise absorbs it at spawn: the figure-scale gate grew a + **DJ-body leg** (interior_scale_check.py) that spawns all five BY NAME through the real + browse-spawn path and asserts stature — **woman_dj_01 0.986u→1.64 m · woman_dj_02 + 0.987u→1.71 m · woman_dj_03 0.984u→1.81 m · dj_techno_01 0.986u→1.87 m · dj_phrtt_01 + 0.989u→1.89 m**, all in [1.4,2.0], feet planted, rig-kind verified (not placeholder — the + subject provably exercised; the old browse sample's `(i*7)%19` could never reach fleet + indices 17–21). Bonus contact: the pinned seed's own gig crowd contains dj_phrtt_01 and + woman_dj_02 organically. +2. **Flag (b) — gate on binds + NaN, never node counts.** New STRICT `smoke_djdance`: runtime + bind census post `_canon`/`_rotOnly` — every clip binds **64/65 tracks, sole unbound = + `mixamorigReference`** (Rokoko's root; matches E's node-side 65/66 census and 90sDJsim's + in-game measurement). No structural-template pin anywhere in F's suite — the 68-node/52-joint + Rokoko shape passes because nothing wrongly asserts the sit/look 66/65 template. +3. **Flag (c) — ROKOKO zone** — E's provenance/licence row verified in w1; nothing for the + runtime gate beyond (b). + +### §36.3 `smoke_djdance` — what the 2 a.m. commit claimed, now proven (STRICT) + +The commit verified "page boots" only. The gate now proves: **4 dance clips load and +canonicalise** on the default boot · a gig-night **dancer's live action IS a dance clip** +(identity by duration — 30.5–52.4 s is unambiguous vs idle; mixer provably advancing; +`fig.position.y` FLAT, so the clip moves the body, not the fallback) · **`?classic=1` fetches +ZERO dance clips** (positive control: the default boot fetched all 4 — the detector +discriminates) · **`?noassets=1`**: zero GLB fetches, dancers exist as placeholders, and the +**procedural sway fallback is ALIVE** — bounce amplitude 0.07 m vs the clip-driven 0.00 (the +inverse pair proves which branch moved the body). 0 console errors on every boot. + +### §36.4 THE HOLD (the round's one warn — not F's to fix) + +**`?classic=1` fetches the 5 trellis DJ body GLBs.** They are unconditional `PED_NAMES.normal` +roster members (rigs.js:22, Lane D's file, landed in `b339402`) — which also widened classic's +seeded crowd pool 17→22 normal on July 20. The plan fingerprint is plan-side so the covenant +gates stayed green, and draws are in tolerance — but the classic FETCH SURFACE and crowd +identity moved without a ruling, six epochs after the covenant froze. Fable's brief expected +"?classic fetches NO dance/DJ GLBs"; measurement says the clips comply and the bodies don't. +Per the five-holds law this is **WARNED in the suite** (`smoke_djdance`, the machine record) +and **held**: Fable either blesses the roster change (the fetch surface was never covenanted; +man_dj_streetwear_01 set the DJ-in-roster precedent in v2) or directs D to gate the five out of +classic's pool. F did not improvise in D's file during the close. + +### §36.5 The gate — full `qa.sh --strict --matrix` on the final tree (:8946, port-isolated) + +**SUMMARY: 7 passed · 0 failed · 0 warn · 0 skipped — QA GREEN.** The per-gate record: + +- **scaffold + consistency + citygen selfcheck**: ALL GREEN **156,352/156,352** checks. +- **manifest validator**: OK — 0 errors, 0 warnings (48 facades · 85 skin groups · 33 GLBs · + 28 audio; atlas-QA 15 per-shop atlases valid, 15 licence lines SHOWN; depot live). +- **flags harness: 0 fails / 1 warn** (the warn is §36.4's held DJ-roster finding, by design). + - classic covenant: fp `0x5f76e76` holds · dig INERT at the bin · gig layer wholly absent · + 162 draws / 16,642 tris (baseline 164) · 0 errors. + - default boot: all four flags ON · 14 gigs / 14 posters / venue geo / tram · gig golden + `0xec7a2d39` · 131 draws / 23,390 tris @ venue block · **dig REACHABLE naked** (R31's fence). + - R30 gates re-green: sell routing ($12 buy → +$4 == min(basis−1, basis/2), HUD follows) · + save determinism (byte-equal import, 255 B state / 316 B export, world fp `0xb1c7843e` + unmoved, weekNight 2 == (3−1)%7) · no-pump (5/5 strictly negative, Σ −$59, both controls + discriminate) · classic purity (ZERO Storage calls classic AND game=0; positive control + sees the save + all 7 game DOM ids) · rotation (day fps `0x50edd91b → 0x2121f187 → + 0x2f4a9b93`, re-entry + cross-boot byte-identical, ?game=0 == day 1, 88,320 bytes hashed). + - **R32 bible**: 80 offers / 5 bins in-band-or-gem · bin1 holds 2 gems (grail asking $19 vs + keeper $30) · ledger closes Σask $333 → Σoffer $135 (gems +$21) · emptied bin 0/16 across + reload · ?game=0 re-opens 16/16. + - **R33 hunt**: ☆→★ through the real card (save carries 2 wants) · keeper muttered the rumor + ("THE VERANDAHS? saw one in Castlemaine") · buy cleared ITS want · travel synthetic→melbourne + day 1→2 with $179 + 1 find riding · same-town free · return fare day 3 · ?game=0 zero DOM. + - **R34 godbay**: consign through the crate (collection 2→1) · ONE HAMMER byte-identical + across a double sleep · SOLD net $19 ≤ 2×$24×0.88 · the paper rode the wake toast + ("⚖ SOLD Cane Toad Blues — hammer $22, $19 after fees") · travel hammered on arrival · + ?game=0 no auction house. + - **R35 first-five**: fresh game hunts HILLS HOIST with $191 on the splash · beats ②③ + the + send-off on the real path · returning save gets no tutorial · second fresh browser hunts the + SAME want (seeded) · ?game=0 control. + - **R36 smoke_djdance**: all green per §36.3 (binds 64/65 · dancers clip-driven · classic zero + dance fetch · noassets sway 0.067 m). +- **figure-scale gate**: **29 figs / 6 shops** all human-sized incl. the new DJ leg (§36.2's + five, 0.984–0.989 u → 1.64–1.89 m). +- **MATRIX GREEN — 10 towns × 7 gates** (boot · determinism · budget · district · roads · tram · + noassets): 2 synthetic + 3 fixtures + 5 real caches, budgets 66–161 draws, every town + byte-equal on re-boot, 0 fetches under ?noassets across all ten. + +### §36.6 The freeze + the tag + +- **README**: v7.0 section (the loop dig→guide→want→travel→list→paper, the delta-law machinery, + the classic covenant) + manual row for the morning paper (☆ WANT and ⚖ LIST rows landed with + their rounds). +- **V7_THE_GAME.md**: the five charter risks get their retired-or-carried verdicts, v4-style + (written by F under the single-lane-close ruling): economy RETIRED-structural (bot verifier + carried to the live tier) · schema drift RETIRED · re-emit identity CARRIED (never fired; + owned-item stability check still unbuilt — next re-emit round owns it) · scope gravity + RETIRED · v6 collision RETIRED (the 2 a.m. commits were the one contact, now swept + gated). +- **Tag `v7.0`** — annotated, **LOCAL ONLY** (the R35 close law: the tag waited for hands, and + the hands played twice). Fable reviews, pushes main + tag, writes the epoch retro. diff --git a/docs/V7_THE_GAME.md b/docs/V7_THE_GAME.md index 11899ff..00c6431 100644 --- a/docs/V7_THE_GAME.md +++ b/docs/V7_THE_GAME.md @@ -104,3 +104,38 @@ v7.0-alpha can start **now** — it's unblocked (v6 waits on footage; the two do Recommended: R30 = v7.0-alpha wave 1 (F save core + B collection UI + C sell counter contracts first). John ratifies this charter (or amends the fantasy — it's your shop, your era, your game) and says go. + +## Risk verdicts at the close (R36, v7.0 — written by F per the single-lane-close ruling) + +1. **Economy balance — RETIRED (structurally fenced).** The no-pump gate is STRICT since R30 + (5 real UI round trips all strictly negative + C's broke-player negative control); R32 moved + the fence from the receipt to the band (`credited == min(bandLow−1, ⌊bandLow/2⌋)`, the exact + formula, not an inequality); R34's GodBay holds EV ≈ 0.8×mid under the ONE-HAMMER law (item- + identity-seeded — a passed-in item re-lists to the same result forever, so there is no retry + farm), bounded above at 2×high×0.88. Both hand playtests confirmed the shape — Fable's wave-0 + line: the game charged $12 tuition for ignoring its own advice. *Honest residue:* the named + adversarial verifier (a greedy N-day arbitrage bot) was never built as an agent — the + structural gates + two hand playtests stood in for it. It goes live again with G's live tier + (v7.x), where structure alone won't be enough. +2. **Save schema drift — RETIRED.** `procity-save/1` versioned from day one; corrupted/foreign + blobs loud-reject + stash raw + boot fresh (gated since R30). The schema widened three times + in-epoch (`pulls` R32 · `wants` R33 · `listings` R34), every field optional, + validated-exact-and-loud when present, absent-compatible — zero migrations, zero silent + rejections, alpha saves still load at the close. +3. **Item identity across re-emits — CARRIED (narrowed, never fired).** The sku IS the identity + (the R25/R26 fences); real-sourced pulls/listings key by `sku:`, parody by seeded slot + identity. No atlas was re-emitted during v7, so the risk never had a chance to fire — and + E's validator still lacks the chartered owned-item stability check. Carried to whichever + round next re-bakes an atlas: that round must add the check BEFORE the re-emit. +4. **Scope gravity — RETIRED (the stage gates held).** Alpha shipped one town playing complete + (R30–31), beta opened the 23 (R32–33), v7.0 closed with the auction + onboarding (R34–35). + Every mid-epoch want was FILED, not built: the §31.6 beta queue, then the v7.x queue + (⚖ discoverability · LIST confirm · the paper as artifact · keeper-rumor by hand · walkable + home room). No housing, no romance, no phone. +5. **v6 collision — RETIRED (none, by design).** The epochs interleaved without a merge + conflict or a contract collision. The one contact was the July-20 2 a.m. commits + (`046668e`/`b339402`: 4 Rokoko dance clips + 5 trellis DJ bodies, v6-flavoured assets landing + mid-v7 outside the round system) — swept into provenance/licence/depot by E (R36 w1) and + gated by F (R36 w2: figure-scale spawn proof, runtime bind census, classic zero-fetch for the + clips). One hold from that sweep rides the R36 record: the DJ bodies joined `?classic`'s + roster ungated — Fable to bless or bounce.