From bd6f576c00ad8c8c7accaee921c2a31dd064bcdf Mon Sep 17 00:00:00 2001 From: m3ultra Date: Fri, 17 Jul 2026 13:27:28 +1000 Subject: [PATCH] =?UTF-8?q?Fable=20(integrator):=20round-27=20instructions?= =?UTF-8?q?=20=E2=80=94=20v5.0=20THE=20LIVE=20CRATE=20(wave=200:=20beta=20?= =?UTF-8?q?tag;=20then=20tier-2=20read-live,=20the=20kill-the-server=20gat?= =?UTF-8?q?e,=20the=20tour,=20the=20tag)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- docs/LANES/ROUND27_INSTRUCTIONS.md | 93 ++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 docs/LANES/ROUND27_INSTRUCTIONS.md diff --git a/docs/LANES/ROUND27_INSTRUCTIONS.md b/docs/LANES/ROUND27_INSTRUCTIONS.md new file mode 100644 index 0000000..ee2d049 --- /dev/null +++ b/docs/LANES/ROUND27_INSTRUCTIONS.md @@ -0,0 +1,93 @@ +# PROCITY — Round 27 lane instructions (from Fable, integrator) + +Date: 2026-07-17 · **R26 wave-4 verdict: C and E landed the mint-id fence, and both wrote the +same honest headline — "the rule was the stale thing, not E's check."** C owned its stale §7.2a +squarely (second time a C contract line met a case written after it and another lane took the +red); E proved the fix is *stronger* than the rule it replaces (the easy green was dropping the +prefix check; instead the prefix is now a sourcing-scoped namespace fence). The epoch's four +holds now all trace to the same species — a rule meeting a case written before the case +existed — and all four were caught before they could lie. The system is working exactly as +designed. + +**Open: F's wave-4 step 3.** The beta tag is one re-run away. Round 27 opens there, then closes +the epoch: **v5.0 — THE LIVE CRATE.** + +## WAVE 0 — F tags the beta + +`qa.sh --strict --matrix` (the 6/1/0 should flip to 7/0/0 — E's fence is in, C's line is law), +tag **`v5.0-beta`**, push. Nothing below starts until this lands. + +## Then: v5.0 — THE LIVE CRATE (tier 2, per the ratified G3) + +The charter's last rung, under John's binding A-then-B ruling: **read-live, sell-sandboxed** — +`/reserve` and `/buy` stay ABSENT (not stubbed; a sandbox a config typo can flip isn't a +sandbox). The server enriches, never gates: every boot path, gate, and tag works with the +server dead. Scope honesty up front: if tier 2 proves bigger than one round, F holds and we +split — four holds have proven the pattern; nobody forces an epoch close. + +## The ledger + +1. **The read endpoints (G, on ultra — server-side).** G3 §4 as ratified: `GET + /godverse/v1/shop//stock` (items + `gone:[sku]` + etag) and `/crates` (the + rotation menu), read-only over the live POS, serving **metadata only** (covers stay static + tier-1 files — the API never serves the atlas). Monster Robot is the only real shop; that's + the point — one shop, live, true. Deterministic-where-possible discipline: same POS state → + same response (etag'd). +2. **The tier-2 reader (F, with C's seam).** Async enrichment at room build: on entering a + keyed real-sourced shop, the shell fires the stock read (timeout-guarded, etag-cached) and + the crate applies the `gone` list + live prices when the response lands — the dig NEVER + blocks on the network (charter risk #1). C: if the crate needs a post-build content-adjust + hook, that's your seam to publish (half-day rule); if the existing adapter re-read covers + it, say so and F wires direct. Server dead / unreachable / slow → tier 1 exactly, silently. +3. **The kill-the-server gate (F — the epoch's defining gate).** Three arms, all falsifiable: + boot server-up → live fields present (assert etag/`gone` consumed); **kill the server + mid-session** → next read degrades to tier 1 with ZERO console errors and no stutter + (frame-time measured across the failure); boot server-down → pure tier 1, byte-identical to + the beta behaviour. This is charter law #1 made a gate. It runs as its own smoke class — + server lifecycle is controlled by the gate itself, so the assertion is deterministic even + though live stock isn't. +4. **Sold-means-gone, sandboxed (F + G).** The server's `gone` list removes items from the + live crate read (a record sold IN THE REAL SHOP disappears from the game crate — that's the + GODVERSE magic, direction: real→game). In-game buys stay session-local per Option A. Assert + both directions of the sandbox: a real `gone` item never renders; a game buy never appears + in any server state (there's no verb to carry it — prove the absence). +5. **The v5 tour + money shot (F).** `docs/shots/release_v5/`: the crate walk — Musgrave Road + → Monster Robot Party's frontage (B's mark visible) → the riffle with real covers → the + price sticker → the buy. Plus one mint-shop frame (the honest caption: plausible, not real) + and the `?classic=1` control. The R21 cluster-pose primitive poses the street frames. +6. **Docs freeze (all lanes, light).** A: CITY_SPEC v5 section (the tier ladder, sourcing, + the id-space fences, the manifest) + charter risk-list retired-or-carried, v4-style. E: + provenance v5-final (mint atlases + the licence line's story). C: LANE_C_PUB v5-frozen + marker. G: the G3 doc updated design→as-built. B/D: notes current; nothing else owed. +7. **The tag + the retro.** F: `qa.sh --strict --matrix` + the kill-the-server gate green → + tag **`v5.0`** → push. Then **Fable writes the epoch retro** (not a lane deliverable), and + the v6 conversation opens with John (the editor and multiplayer are still chartered; the + GODVERSE has more rungs — Option B's reservation upgrade is already chartered as v5.x). + +## Laws + +Charter v5 laws, all now with case law behind them · the vacuous-gate law · the id-namespace +fences (`sku_`/`mint_`, plan-id/godverse-id) · no golden moves expected this round (tier 2 +touches no plan, no cache, no atlas bytes) · the offline law is THE gate this round, not a +footnote. + +## THE EXACT RUN ORDER + +0. **WAVE 0: F re-runs and tags `v5.0-beta`.** Hard stop until it lands. +1. **Start together: G (#1 endpoints, on ultra) + C (#2 seam ruling: publish the hook or bless + the direct wire) + A/E (#6 docs prep — can run the whole round).** +2. **When G's endpoints are live on the tailnet and C's seam is ruled: F (#2 reader).** +3. **F (#3 kill-the-server gate + #4 sandbox proofs + #5 tour), then #7: tag `v5.0`, push.** +4. **Fable: the epoch retro.** + +Waves: **[F-beta-tag] → [G, C, A+E] → [F reader] → [F gate/tour/tag] → [retro]**. B/D on-call. + +## Standing + +- **John — one infra FYI, nothing to decide:** the kill-the-server gate needs the thriftgod + server reachable from m3 over the tailnet AND stop/start control from the gate (G owns the + mechanism — a lifecycle endpoint or an ssh'd systemd unit, G's call; it's in-house infra + under existing access). Your A-then-B ruling continues to hold the write verbs absent. +- **v5.x / v6 preview (the retro decides, do not start):** Option B's reservation upgrade + (behind your hold budget) · more POS shops if monsterrobot ever gets siblings · the editor · + multiplayer presence · the v4.x/v5.x polish tails.