diff --git a/docs/LANES/ROUND26_INSTRUCTIONS.md b/docs/LANES/ROUND26_INSTRUCTIONS.md new file mode 100644 index 0000000..30c38f8 --- /dev/null +++ b/docs/LANES/ROUND26_INSTRUCTIONS.md @@ -0,0 +1,99 @@ +# PROCITY — Round 26 lane instructions (from Fable, integrator) + +Date: 2026-07-17 · **R25 verdict: one commit and one harness verdict from done.** A cleared all +8 reds with the round's best self-accounting ("healthy towns my gate called broken — it fired +54/72 on a good town"; keyed asserts now per-layer, the six goldens pinned, selfcheck +**156,211/156,211**). C's contract line and G's sku re-emit landed (index-only, as designed — +id-equality gates are discriminating forever). F's permanent crate smoke earned its keep on day +one by catching **two of F's own bugs** — the sharper one being the round's theme biting its +author: **plan ids and godverse ids share a numeric space**, so `enterShop(31)` silently entered +Wholefood Cafe (plan id 31) instead of Silky Oak Furnature (godverse id 31), and the soft-fall +assertion passed vacuously on the wrong shop. F fixed the selector to disambiguate and made the +smoke prove its target is keyed. *Recorded as a standing note: the two id spaces are disjoint +namespaces — no code or gate may compare a bare number across them.* + +**Open (why there is still no tag):** E's ledger #2 — the licence-line fix, and it's good work +(runtime-authority glob, loud SKIP, licence evidence as a required line) — sits **uncommitted** +in the tree; and F is mid-harness on its re-run. Round 26 opens by closing both, then the beta. + +## WAVE 0 — close the alpha (before anything else starts) + +1. **E: commit your own work.** `pipeline/validate_atlas.py` carries your R25 rebuild, unstaged. + If your session died before the commit: a fresh Lane E session verifies the diff against + ledger #2 (it should recognize its own writing), runs the validator against G's two sku + re-emitted atlases (the licence line must PRINT — that's the point), and commits E-pathspec. + Nobody else touches this file — it's yours. +2. **F: land the verdict.** Your re-run either comes back green → commit your staged R24/R25 + work (F-pathspec), full `qa.sh --strict --matrix`, README teaser with the tag, tag + **`v5.0-alpha`**, push — or it surfaces something new → file it, hold again, and the hold + will have been right three times. Nothing downstream starts until the tag verdict is known. + +## Then: v5.0-beta — EVERY CRATE DIFFERENT (the honest version) + +The R25 preview said "every hero shop stocked." The honest constraint: **only Monster Robot +Party has a POS** — the census's other shops are real businesses with unknowable inventory. +The beta makes every keyed crate *distinct and plausible* without pretending to data we don't +hold, on three rungs: + +- **Real depth where the data is real:** Monster Robot's other crates (the G3 §4 crate-rotation + menu, baked statically). +- **Minted plausibility where it isn't:** the G3 doc's own note, promoted — seeded `mint()` + (`random.Random(shop_id)`, ordered sample; deterministic) bakes per-shop atlases for keyed + shops without POS inventory, **provenance-marked `tier: "mint"`** so no gate, doc, or human + ever mistakes plausible for real. +- **Parody below that:** the texture layer and everything unkeyed stays exactly as it is. + +## The ledger + +1. **The mint contract line (C, first — half-day rule).** §7 grows the `tier` field: + `"real"` (POS snapshot) vs `"mint"` (seeded sample) — required in provenance, and the dig's + price card may show it subtly or not at all (your call, it's a vibe question), but gates + must see it. +2. **The mint baker + Monster Robot depth (G).** Seeded mint atlases for the keyed non-POS + hero shops in both godverse towns (deterministic: same shop_id → byte-identical bake); + Monster Robot's full crate menu baked as the real tier. Licence zone per atlas as ever — + mint items sample real dealgod listings, so the photo provenance is the same in-house-green + zone, flagged the same way. +3. **The validator grows the tier arm (E).** `tier` required on every atlas; `mint` atlases + must NOT carry `pos_snapshot` fields and vice versa (the separation is the honesty); the + licence line prints for both. Vacuous-gate law applies: an atlas with no tier FAILS. +4. **The dig UX for real items (C).** The price card gets the real fields the atlas index + already carries (artist / title / price / condition) — the card should read like a record + shop price sticker, not a database row. Budget ceilings unchanged. +5. **B returns — dig-adjacent street polish (your pick, at last).** First pick of the polish + list as promised, weighted toward the beta: shopfront signage/window treatment for stocked + godverse shops (a crate-diggers' shop should read as one from the footpath), or the awning + ripple, or the tram-stop tri diet — your choice, one item, measured as ever. +6. **The beta gate (F).** Per-shop distinctness (no two keyed crates identical — assert on + title sets, the R24 pattern), tier provenance visible in gate output (a mint crate never + reports as real), the ladder re-proof, `qa.sh --strict --matrix`, tag **`v5.0-beta`**, push. +7. **A / D — on-call.** A: nothing pending (your R25 close was clean). D: nothing — unless F's + distinctness gate wants a crowd check at a stocked shop (patronage at Monster Robot on a + Saturday feels like a D flourish, not a requirement). + +## Laws + +Charter v5 + vacuous-gate + the id-namespace note above. Golden discipline: no town-cache +changes this round → no golden moves (mint atlases are `stock_godverse/**` files, outside every +golden). No server code — tier 2 stays design until the beta ships and the v5.0 round charters +it against the ratified G3. + +## THE EXACT RUN ORDER + +0. **WAVE 0: E commits; F lands the verdict and (on green) tags `v5.0-alpha`.** Hard stop until + the tag verdict is known. +1. **Start together: C (#1 contract line + #4 dig card) + B (#5 pick).** +2. **When C's line lands: G (#2 mint baker + depth) and E (#3 tier arm) in parallel.** +3. **When G + E are in: F (#6)** — distinctness gate, ladder, tag **`v5.0-beta`**, push. + +Waves: **[E-commit, F-verdict] → [C, B] → [G, E] → [F]**. A/D on-call. + +## Standing + +- **John — nothing needs you.** The A-then-B ruling is binding and recorded; the beta stays + static-tier (no server); mint is the G3 doc's own blessed note, promoted with provenance + honesty. +- **v5.0 preview (do not start):** tier-2 read-live per the ratified G3 (Option A semantics — + read-live, sell-sandboxed, `/reserve`+`/buy` stay absent) · the kill-the-server-mid-session + gate · the v5 tour (the crate walk as a money shot) · docs freeze · the `v5.0` tag · the + epoch retro.