PROCITY/docs/V5_REAL_SHOP.md
2026-07-16 22:48:59 +10:00

84 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PROCITY v5 — THE REAL SHOP (epoch charter)
*Fable (m3, integrator), 2026-07-16. John's pick at the v4 retro. Grounded in: the Lane G
marriage (merged, ruled, G2a atlas contract reviewed by C/E in R22), dealgod's 1.77M real items
with photos, thriftgod's census already driving `newtown_godverse`, and the v2-era dig/wallet/
stock machinery that has been waiting for this data since it shipped.*
## The vision
**v4 made the towns real; v5 makes the shops real.** Walk Fitzroy's actual street into an actual
op shop, riffle a crate, and the records in it are that shop's real stock — real covers, real
titles, real prices. Buy one and it's gone, because it was one-of-a-kind in the real world.
Thriftgod is the brain and the bank; PROCITY is the body.
## The tier ladder (the epoch's load-bearing idea)
Stock is a DATA TIER, like assets — each tier fully playable, each degrading softly to the one
below. This is the offline law made structural:
| tier | source | flag state | deterministic? |
|---|---|---|---|
| 0 · parody | seeded canvas sleeves (v1) | any boot, always works | yes — the QA baseline |
| 1 · static real | per-shop atlases baked from dealgod (G2a) | `?stock=real`, no server | yes — atlases are files |
| 2 · live GODVERSE | thriftgod server: live stock, sold-means-gone (G3) | server reachable | **no — by design** |
The seeded-everything law is NOT weakened: the *world* (geometry, layout, venues, citizens)
stays seeded and byte-identical; stock *contents* are inventory data riding the asset law.
QA gates run on tiers 01; tier 2 gets its own smoke class (reachability, fail-soft, latency)
that never gates a tag on server state.
## The stages
- **v5.0-alpha: THE FIRST REAL CRATE.** One real shop end-to-end — a Newtown record shop in
`newtown_godverse`, static atlas (G2a), riffle real covers, buy, wallet debits, every tier
degrades clean. Plus the **G3 design doc ratified** (both integrators + John) before any
server code exists.
- **v5.0-beta: THE REAL SHOPPING TOWN.** Every hero shop in 12 godverse towns carries real
static stock; godverse coverage grows where thriftgod's census is dense (fitzroy is the
prize); pricing from thriftgod's `mint()` profiles baked into the atlases; the dig UX polished
for real items (title/price cards are real data).
- **v5.0: THE LIVE TIER.** Thriftgod's server behind tier 2 per the ratified G3 design:
live per-shop stock, sold-means-gone, reservation semantics — with the offline law proven by
the gate (kill the server mid-session; the game degrades to tier 1 without a stutter). Tour,
docs freeze, tag.
## The laws
Everything inherited (classic covenant `0x3fa36874` forever · determinism for the world ·
budgets · amendment law · measurement-over-brief · drops counted · fresh-context verification),
plus this epoch's own:
1. **The offline law (non-negotiable, from the standing G3 ruling): the server enriches, never
gates.** Full offline play at tier 0 and tier 1, always. No boot path, gate, or tag may
depend on a reachable server.
2. **The determinism boundary:** world = seeded, frozen, gated. Stock = data tiers. Tier 2 is
openly non-deterministic and therefore never inside a golden or a byte-identical assert.
3. **The licence law (extends E's provenance spine):** item photos are the stores' own product
shots — 🟢 for in-house play; **flagged before any public/commercial release** (G's own
note, now law). No private-individual data, ever. Every atlas carries provenance.
4. **The write-back law:** game purchases NEVER mutate real thriftgod inventory without an
explicit, John-ratified reservation design in the G3 doc. Until then tier 2 is read-live,
sell-sandboxed. (Whether "sold in game" can mark real stock is John's call to make in the
design review, not a default.)
5. **The two-studio law:** G owns `pipeline/godverse_*`, `web/assets/stock_godverse/**`,
godverse caches, and the server side; AF own their lanes; cross-repo contracts publish
FIRST; both integrators sign the G3 design. **Merge amendment:** when a round's brief names
a G deliverable as gating, G's branch merges mid-round after Fable-m3 review (G's file
namespace is disjoint, so pathspec safety holds); otherwise boundaries as before.
## The risk list (kept current, v4-style)
1. **Latency/stutter at tier 2** — server calls must be async enrichment; the dig must never
block on the network. The G3 doc owns the caching design.
2. **Atlas budgets at real density** — a mecca hero shop can hold hundreds of real items; C's
interior ceilings are the law and the atlas contract must respect them (pagination/crate
rotation rather than bigger atlases).
3. **Census↔OSM identity** — matching thriftgod shops to godverse lots is fuzzy (names drift,
shops move). Mismatches must be counted and fail-soft to tier 0, never mis-stocked.
4. **Sold-means-gone semantics** — race conditions, reservations, and the write-back question.
All design-doc territory; nothing ships before ratification.
5. **Settled non-risks:** the dig/wallet/stockAdapter machinery (shipped v2, soaked 16 rounds);
static-atlas determinism (E's byte-identical pipeline discipline); the fail-soft ladder
(proven pattern from `?noassets` day one).