# PROCITY v5 — THE REAL SHOP: the epoch retro *Fable (m3, integrator), 2026-07-17, written after the `v5.0` tag (`b2d29ba`) per ROUND27 §7. Epoch span: R23 → R27. Tags: `v5.0-alpha` → `v5.0-beta` → `v5.0`. The first two-studio epoch: Lane G (ultra) went from merged guest to the lane that shipped the epoch's server.* ## What shipped, in one breath The tier ladder, whole: **344 real-or-minted items across 15 keyed crates in two godverse towns**, every crate distinct (105 pairs, 0 shared titles), sourcing-honest (`real`/`mint` as law, prefixes as namespace fences); Monster Robot Party's actual crate 550 riffled and bought in-game off its actual POS; **tier 2 live** — read-only endpoints over the real till, fences enforced at the DB credential, `/reserve`+`/buy` absent by John's A-then-B ruling; and the epoch's defining proof: **a real HTTP server killed mid-session costs the game Δ+2 ms and exactly one refused connection** — the offline law as an executable, not a sentence. Plus the finale nobody ordered: **every shopfront in every town finally faces its street.** ## The five holds — the epoch's spine Every hold was correct; every hold traced to the same species (a rule or contract meeting a case written before the case existed); every hold was released by its owner, never by the beneficiary: 1. **R23** — the crate was real but had no street, no identity, no compatible contract; the gate built to catch it was blind-green, and #7a as briefed would have passed vacuously. 2. **R24→25** — E's rebuild sat uncommitted; tagging would have produced a tag whose tree lacked the code that produced its green. 3. **R26** — the mint-id rule demanded a POS sku from crates that never saw a till; G refused the easy green because colliding id spaces in the economy layer eventually sells the wrong record. 4. **R27 (reader)** — "zero console errors on server death" was physically impossible; the replacement (exactly one refusal) is strictly stronger because it proves the breaker. 5. **R27 (facade)** — the fifth hold found the oldest bug in the project. ## The finale: the facade, and the covenant amendment B's frontage helper — a micro-task — exposed that `plan_osm` aimed lots' −Z at the street while `buildings.js` draws facades on +Z. The wave-5 ruling named it "every real town since R18" and ordered A to *measure the marched path rather than assume it clean*. **A's measurement caught the ruling's own premise: it was EVERY town, EVERY path, since v1** — all four seating sites wrote `atan2(outward)` under comments that said `-outward`; 637 of 681 synthetic lots faced no street at all; the classic covenant town was a row of back walls, and A proved it the only way left — standing in the street, looking at NUMBAT PLAYTHINGS facing the dirt. **John ruled the covenant amendment**, and his ruling is the epoch's best line: *the covenant is anti-drift machinery, not a defect preservative.* `0x3fa36874` did its job for five epochs — it never drifted. It was never right, and no hash can catch what was wrong in the first commit. **A golden proves nothing changed; it cannot prove anything is correct.** 51 goldens re-pinned in one commit; F re-pinned its own files per A's handoff (lane boundaries held to the last); and A caught, in passing, a bare-string OR-clause in F's classic gate that would have gone green off a *sentence about* the old covenant. The cross-convention gate is now in the selfcheck so the two conventions are compared against each other forever. ## The epoch's signature species: the vacuous gate Named as law in R24, then found NINE times — including three inside the law's own applications: the empty-glob validator, the covers-render #7a, my id-equality gate spec (positional ids collide), F's selector entering the wrong shop, the silent licence line, the impossible zero-errors assert, F's 72/72 self-agreement (testing a spec line's data against the same line), F's attempt-4 error-check (the call succeeded; the pose was never applied), and the stdout OR-clause. The case law that came out of it is the epoch's real export: - **A gate proves it touched its subject** (fetch log, matched-file count, id equality — something falsifiable) or it is not a gate. - **The collateral assertion**: when correct and broken implementations both hide the obvious evidence, assert on what discriminates (the other 119 records unchanged). - **Cross-convention checks**: two subsystems implementing "the same" convention are compared against each other, never each against its own spec line. - **Control-deltas for performance**: an absolute threshold measures the wrong thing politely. - **A named exception starts protecting new bugs the moment the real fix exists** (F's 404 tolerance — deleted, and the deletion caught a ninth invisible probe). - **Id prefixes are namespace fences**; plan ids, godverse ids, POS skus and listing ids are four spaces, and no bare number crosses them. ## What worked — keep doing 1. **Restraint under benefit.** F declined to touch A's sweep, E's validator, and E's uncommitted file across three separate holds where one edit would have unblocked its own tag; B proved the facade one-liner and reverted it; A handed F's re-pins to F instead of editing F's files. The party that benefits never releases its own hold. 2. **Ownership sentences.** "The red was mine" (E) · "my rule was the stale thing" (C) · "it fired 54/72 on a good town" (A) · "four of the five attempts were F's fault" (F). Nobody defended; everybody measured. 3. **The contract's author is the authority for the contract's shape** — and when contract and runtime disagree, **the runtime is the authority** (R24's root-cause ruling). 4. **Machine-enforced fences beat reviewed promises**: the read-only credential (measured permission-denied), 501s for absent verbs, metadata-only responses. 5. **The two-studio pattern matured**: G went from branch-merged guest (R23) to full lane on main (R25) to shipping the epoch's server (R27), with John's rulings recorded as mechanism. ## What cost us — fixed or fenced 1. **Comments and specs are not measurements.** All four facade sites' comments described the correct behaviour above code doing the opposite, for 27 rounds. The cross-convention gate is the fix; the lesson is older: nothing is true because a document says it. 2. **Consistency masquerades as correctness.** Every subsystem agreed with itself, so every gate was green over a wrong world; only a human in the street saw it. Money shots and walk-arounds are QA, not decoration — John's browser stroll started the v6 charter, and A's street-level eyeball confirmed the covenant bug. 3. **My briefs carried five corrected errors this epoch** (the `tier` field, the id-equality gate, the zero-errors assert, the "wire on entry" default that F correctly made opt-in, and the wave-5 premise). All five were caught by the contract-first channel or by measurement before they became bugs. Briefs state acceptance; lanes own method; the integrator is not exempt from measurement-over-brief. ## Carried forward - **v5.x**: Option B reservation (chartered, behind John's hold budget) · tier-2 auto-discovery (needs a reachability contract) · more POS shops if monsterrobot gains siblings · **a shop-ops note for John, not a code item: the POS has recorded no sale since 2026-07-01 — G proved the dump is fresh but the data is stale; worth checking the till's sync before the next live demo.** - **v4.x tail** (unchanged): thin-tail clustering floor · seating overflow tail · instrument LOD · tram-stop tri diet · awning ripple · audioEmitter · flag retirement. - **v6 — THE LIVING STREET**: charter drafted (`docs/V6_LIVING_STREET.md`), spikes gated on John's mocap vids (the MOCAPGOD queue is still empty) and the MOCAPGOD-C/MIRPAMO integration call on ultra. *— Fable. Twenty-seven rounds, eleven tags, five correct holds, one amended covenant. The game now sells a record that is really in the crate, in a shop that is really on the street, in a town that is really in Australia — and for the first time since v1, the shops are facing you when you walk up the road.*