Lane F R31 wave 2 (v7.0-alpha close): THE SHOT + the ledger. docs/shots/v7_alpha/crate_panel.png — the alpha's face: Monster Robot Party's real frontage, THE CRATE open with 3 real finds (real cover thumbs, paid/where/day honest), game bar day 1 · $116 · CRATE 3 · SLEEP, driven through the REAL loop with the dig param ABSENT (the R31 flip carries the shot), 0 console errors. LANE_F_NOTES §31 (the flip both ways, the two new gate legs + their negative control, harness lesson #4 — the explicit-flag blindfold, THE BETA QUEUE filed) + F-progress R31. Tag v7.0-alpha rides this commit, LOCAL ONLY — Fable reviews and pushes.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
50385c0f08
commit
2491f1c8ec
@ -4,6 +4,32 @@
|
||||
|
||||
---
|
||||
|
||||
## Round 31 (v7.0-alpha CLOSE) — THE DIG FLIP + the tag
|
||||
|
||||
**Fable's wave-0 playtest found the one alpha-blocker: the dig was default-OFF on a plain boot.**
|
||||
`index.html` still carried the v2-era opt-in (`params.has('dig')`) six epochs after the README
|
||||
claimed "dig on" — and every R30 game-loop gate booted `dig=1` explicitly, so the suite was green
|
||||
while E at a bin did nothing on the boot every player gets. Fixed with the one-line flip
|
||||
(`DIG_ON = flagOn('dig')` — ?dig=0 opt-out, ?classic=1 off, `dig` on the flags surface) and fenced
|
||||
with two new STRICT legs: **default_boot_gate asserts dig REACHABILITY on a NAKED boot** (E at an
|
||||
aimed bin → digActive true → closed clean) and **classic_regression asserts dig INERT at the bin**
|
||||
(zero `pcdg-*` DOM, zero Storage calls — measured, not assumed). *Harness lesson #4: the
|
||||
explicit-flag blindfold — a gate that force-feeds its subject's flag can never notice the default
|
||||
is broken; every claimed-default-on flag needs at least one flag-ABSENT gate.* Splash de-staled
|
||||
("Every door opens." — the "(soon)" is over; controls line = E riffle/sell · C crate · SLEEP to
|
||||
save) + the README manual row. `PROCITY_QA_PORT` override so the suite never silently reuses
|
||||
whatever holds :8130 (this round: Fable's own preview server).
|
||||
|
||||
**The re-gate (final tree, :8931): `qa.sh --strict --matrix` 7 passed · 0 failed · 0 warn ·
|
||||
0 skipped; flags_check 0/0 incl. both new legs; MATRIX 10 towns green.** Money shot:
|
||||
`docs/shots/v7_alpha/crate_panel.png` — Monster Robot Party's frontage, THE CRATE with 3 real
|
||||
finds (real cover thumbs, honest paid/where/day), game bar day 1 · $116 · CRATE 3 · SLEEP, driven
|
||||
through the real loop with the dig param absent. **Tag `v7.0-alpha` — annotated, LOCAL ONLY**
|
||||
(Fable pushes). THE BETA QUEUE (Fable's design wants, filed NOT fixed) is in LANE_F_NOTES §31.6.
|
||||
Commits: `50385c0` (flip + gates + splash) · shot + notes commit (tag target). Full record: §31.
|
||||
|
||||
---
|
||||
|
||||
## Round 30 (v7.0-alpha — THE SAVE AND THE CRATE) — F: the contract first, then the save core + tomorrow
|
||||
|
||||
**The contract shipped before a line of implementation** (`53fcd3c`): `window.PROCITY.game =
|
||||
|
||||
@ -1663,3 +1663,94 @@ as §30.5's closed-door: a verify that forgets the world's rules reads the rules
|
||||
an inventory). Buying it again is possible **and loses money every time** (the −$6/trip measurement is
|
||||
exactly this); scarcity-per-day would need the save to carry per-day pull records. The no-pump clamp is
|
||||
what makes the infinite crate safe. Rule it in beta with the guide bands, not here.
|
||||
|
||||
---
|
||||
|
||||
## 31. Round 31 — the v7.0-alpha CLOSE: THE DIG FLIP (wave 1) + THE TAG (wave 2)
|
||||
|
||||
### §31.1 The alpha-blocker (Fable's wave-0 playtest) and the flip
|
||||
|
||||
**The dig was default-OFF on a plain boot.** `web/index.html` still carried the v2-era opt-in
|
||||
(`const DIG_ON = params.has('dig') && params.get('dig') !== '0'`) six epochs after the README's
|
||||
flags table began claiming "dig on" — and every R30 game-loop gate booted `dig=1` EXPLICITLY, so
|
||||
the whole suite was green while the boot every player gets had no crate-riffle at all: E at a bin
|
||||
did nothing. The gates tested the game; nobody tested that the default boot IS the game.
|
||||
|
||||
**The flip (one line + the law):** `DIG_ON = flagOn('dig')` — default-ON, `?dig=0` opts out,
|
||||
`?classic=1` master-off: the exact pattern the other flipped flags ride. `dig` joins the
|
||||
`PROCITY.flags` intent surface (the gates read intent there). Measured both ways in fresh
|
||||
contexts on a port-isolated server (:8951):
|
||||
|
||||
| boot | measured |
|
||||
|---|---|
|
||||
| NAKED (no params) | E at a bin → riffle **OPENED** + closed clean · `flags.dig` true · 0 errors |
|
||||
| `?dig=0` | opt-out honoured — riffle does NOT open, **ZERO** dig DOM |
|
||||
| `?classic=1` | dig INERT at the bin (E falls through `trySell` (null game) + shelf no-op) · ZERO `pcdg-*` DOM · **ZERO Storage-prototype calls** (instrumented) · 0 errors — the covenant untouched |
|
||||
| `?noassets=1` naked | dig opens on **parody canvas** · 0 errors (existing law holds) |
|
||||
|
||||
*(Observation filed, pre-existing, NOT touched: `assets/gen/*.jpg` skin textures fetch under
|
||||
`?noassets` — 22 fetches, fail-soft, present since v1; the dig added zero fetches to that boot.)*
|
||||
|
||||
### §31.2 The gate that makes the regression impossible (vacuous-gate law, turned on F's own suite)
|
||||
|
||||
Two new STRICT legs in `tools/flags_check.py`:
|
||||
|
||||
- **default_boot_gate** grows **dig REACHABILITY on the NAKED boot**: enter a record shop, E at an
|
||||
aimed bin, `digActive` must go true (and close clean via WALK OUT); plus a `PROCITY.flags.dig`
|
||||
intent assert. Un-flip the default again and this line goes red. Negative control: the identical
|
||||
measurement on a `?dig=0` boot reads `opened:false` (pre-flight, :8951) — the detector
|
||||
discriminates.
|
||||
- **classic_regression** grows the **dig-INERT leg**: the old `digActive` assert was vacuously
|
||||
false on the street; it is now measured AT THE BIN — E opens nothing, zero dig DOM, filed as
|
||||
"measured, not assumed".
|
||||
|
||||
**Harness lesson #4 of the epoch (house habit): the explicit-flag blindfold.** A gate that
|
||||
force-feeds its subject's flag (`dig=1` in every boot query, belt-and-braces) can never notice the
|
||||
default is broken. Where a flag is CLAIMED default-on, at least one gate must exercise it with the
|
||||
flag ABSENT. Now true for dig; gigs/weather/winmap/tram always had it (the default-boot gate boots
|
||||
naked by construction).
|
||||
|
||||
### §31.3 Port isolation (small, suite-wide)
|
||||
|
||||
`PROCITY_QA_PORT` env override added to `flags_check.py`, `qa/interior_scale_check.py`,
|
||||
`qa/town_matrix.py`. `ensure_server()` silently REUSES anything parked on :8130 — this round that
|
||||
was Fable's own preview server, and a shared server is somebody else's cache semantics + somebody
|
||||
else's lifecycle. The R31 re-gate rode `:8931`; default behaviour unchanged.
|
||||
|
||||
### §31.4 The splash (same file, same commit)
|
||||
|
||||
"Every door opens **(soon)**" — stale by six epochs — is gone: the tagline now sells the loop
|
||||
("Every door opens. Dig the crates, sell the flips, sleep — the town remembers.") and the controls
|
||||
line carries the game beats (E riffle a bin / sell at the counter · C your crate · SLEEP to save).
|
||||
README manual gains the matching row (sell at the counter · C crate · SLEEP = save/advance/rotate).
|
||||
|
||||
### §31.5 The re-gate, the shot, the tag — RESULTS
|
||||
|
||||
All on the FINAL tree (commit `50385c0`), suite port-isolated on `:8931` (`PROCITY_QA_PORT` —
|
||||
Fable's preview holds :8130, untouched):
|
||||
|
||||
- **`qa.sh --strict --matrix`: 7 passed · 0 failed · 0 warn · 0 skipped.** flags_check **0 fails /
|
||||
0 warns** — both new R31 legs green in the run (`dig REACHABLE on the naked boot — E at a bin
|
||||
opened the riffle (and closed clean)` · `?classic dig INERT at the bin — E opened nothing, zero
|
||||
dig DOM`), all five R30 STRICT gates re-proven over the flipped tree, classic covenant fingerprint
|
||||
green, no-giants green. **MATRIX GREEN — 10 towns (synthetic + fixtures + real caches) × 7 gates.**
|
||||
- **The money shot: `docs/shots/v7_alpha/crate_panel.png`** — Monster Robot Party's real frontage
|
||||
(redhill_godverse, `stock=real`), THE CRATE open with **3 real finds** (The Return $40 ·
|
||||
First Filtration Of The Duplex Brains $15 · Blue Blackness $20 — real cover thumbs off the
|
||||
per-shop atlas, every row honest: `paid $N · Monster Robot Party · day 1`), game bar
|
||||
**day 1 · $116 · CRATE 3 · SLEEP**. Driven through the REAL loop with the dig param ABSENT (the
|
||||
flip carries the shot): enter → E at three different bins → riffle → pull → BUY ×3 → street →
|
||||
C. 0 console errors. Script: session scratchpad (`crate_shot.py`) — the PNG is the deliverable.
|
||||
- **The tag: `v7.0-alpha`**, annotated, **LOCAL ONLY** on the notes commit — Fable reviews and
|
||||
pushes main + tag together (treaty).
|
||||
|
||||
### §31.6 THE BETA QUEUE (Fable's playtest, filed NOT fixed — John's ruling queue)
|
||||
|
||||
1. **Spawn faces dirt/building-backs** instead of the strip — wants a cluster-pose for spawns.
|
||||
2. **THE CRATE is unreachable inside shops** — C is street-only by design (hud.js); a player wants
|
||||
it at the counter.
|
||||
3. **Dawn sky reads dusk-orange** (cosmetic).
|
||||
4. The pull card's **value hint is THE BIBLE** (chartered — the beta's guide bands).
|
||||
5. Automation-only, unverified in person: **dig Esc-close under synthetic events**.
|
||||
6. *(carried from §30.6)* no per-day `gone` tracking on parody/mint dig stock — scarcity-per-day
|
||||
needs the save to carry pull records; rule it with the guide bands.
|
||||
|
||||
BIN
docs/shots/v7_alpha/crate_panel.png
Normal file
BIN
docs/shots/v7_alpha/crate_panel.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 894 KiB |
Loading…
Reference in New Issue
Block a user