PROCITY/docs/V8_SOMEONE_LIVES_HERE.md

8.9 KiB
Raw Blame History

PROCITY v8 — SOMEONE LIVES HERE (epoch charter — DRAFT, John's rulings recorded)

Fable (m3), 2026-07-26. Built on REVIEW_CITY_PATTERNS.md — a 16-agent top-down audit (5 lane cartographers · asset-capability probe · design research · 4 design themes × adversarial verify · synthesis). That review is the evidence; this is the plan. Read it first — it corrects three numbers this project had been repeating for epochs.

The vision

v7 made the town a game. v8 makes it a place someone lives. Not more systems — more inhabitation: the sound of a life happening off-screen, twenty-three towns that finally look like different towns, a magpie that won't let you walk past it in September, a back yard with washing on the Hills Hoist, and a bloke actually standing at the pie cart that has been sitting unmanned on the street for five epochs.

JOHN'S RULINGS (2026-07-26, recorded verbatim in effect)

RULING 1 — THE KERB: FOOTPATH.

"footpath for sure."

The 9 m band between kerb and shopfront is footpath, not road. Lane A's published corridor law (roadWidth / vergeBand / poleOffset, registry.js) is hereby the single source of truth, and Lane B's ground adopts it: extend the existing merged footGeos class inward from e.width/2 to roadWidth(e)/2. +0 draws (same merged mesh), ~2k tris, fill-rate improves because 18 m of every main street stops being painted as road.

Consequences, binding:

  • The 14 gig posters currently standing in the road land where A already thinks they are.
  • registry.js's own comment calls that band "verandah'd footpath" and buildings.js already builds an awning over it on every shop lot — so this ruling makes the geometry agree with the code's own documentation. Grass verges survive on residential edges only, where they are period-correct.
  • Special cases that must be handled or the ruling breaks: arcade (roadWidth 0 → zero-area road quad + coincident kerbs) and lane (vergeBand = [2,2]).
  • The gate ships with a falsifiability control: run the poster-clearance leg against ?verge=0 and assert it FAILS there — the pre-change failure is already known and counted at exactly 14. Keep ?verge=0 permanently as a gate flag; it costs nothing and it is the best gate design in the review packet.

RULING 2 — REAL TOWNS GET THE CONTENT: FUND THE CIVIC FETCH.

"real towns where possible spread it out."

The review's biggest strategic finding: all 21 real towns are 100% use:'shop' lots with a single district (mainstreet) — no houses, no yards, no stalls, no market block. Every residential/market/vendor idea was therefore synthetic-town-only. John has ruled that the content goes to the real towns wherever possible, which means the fix is funded and moves into v8 rather than waiting for v9:

  • Lane A + Lane E: the third fetch class. build_towns.py currently asks Overpass for shops and roads. It gains a bounded third class — landuse=residential, building=house, leisure=park/pitch, amenity=marketplace/memorial/fuel/school/bus_stop/telephone/post_box — and plan_osm.js emits more than one district and more than one lot use.
  • The data is already half here: the caches in-repo already contain, unused, 30,959 footway ways · 12,351 service ways · 6,421 crossings · 2,714 sidewalk tags · 13,199 oneway tags. Some of the districting can be derived without any new fetch at all — A measures which before E re-fetches.
  • Hazard, named now: build_towns.py rewrites the whole cache and its own docstring records the Newcastle incident (shops refetched, old roads silently reused). 46 pinned goldens ride on byte-identity nobody has proven. The re-fetch is therefore its own carefully-gated round with per-town before/after diffs — not a step folded into a content round.
  • Standing Overpass authorisation applies (one bounded query per town, 4 s courtesy, ODbL attribution into every cache and SOURCES.md).

RULING 3 — ANIMALS: open, spike running.

"idk about rigged animal models... they have different rigging too right? diff skeleton?"

Correct — there is no mixamorig for quadrupeds; every animal asset ships a bespoke skeleton. A dedicated spike (foreign-skeleton loader proof + CC0 source vetting + species tiering + adversarial review) is running; its answer lands as an appendix to this charter. The working assumption until it reports: tier 0/1 (static + scripted, generated locally for $0) ships regardless, and tier 2 (genuinely skinned, downloaded) is admitted only if the spike proves both the mechanism and an affordable draw cost.

The shape

WAVE 0 — THE FLOOR (one round, three lanes, all micro, must precede content) 0.1 the kerb ruling landed as code + the ?verge=0 control · 0.2 repair smoke_tram (it asserts one thing, prints a SKIP when absent, and passes on the fenced path — a live vacuous-gate violation inside our own suite) · 0.3 re-pin the budget of record to the walked worst frame (280/300, not the 131 bookmark figure) and settle ONE shared instance cap · 0.4 wire ctx.onChunkBuilt/onChunkDisposed (producer and consumer both shipped since R3, never connected).

WAVE 1 — INHABITATION (four parallel one-round items; no clips, no rigs, no mocap footage — this epoch deliberately does not wait on John's camera) 1.1 the audio inhabitation layer — the review's only unqualified SHIP: a dog going off behind a paling fence, a mower two streets over, a radio through a window, sprinklers, a roller door. Zero draws, zero tris, ~30 lines of numpy each. · 1.2 the per-town character vector — 23 towns get a ground palette, ambience mix and sky bias; ground.js merges each surface class into ONE town-wide mesh, so a palette swap is +0 draws / +0 tris. · 1.3 the magpie — one bird, six weeks, +1 draw. · 1.4 backyard Australia — Hills Hoists, paling fences, aerials, tanks, built inside buildings.js's existing boxMats instanced mesh (+0 draws for the box props). Per ruling 2, 1.4's reach now depends on the civic fetch — it ships on synthetic immediately and extends to real towns as districts land.

WAVE 2 — THE STREET GETS A VERB (sequential, behind 2.0) 2.0 the street interaction surface (a KeyE verb, an interactRects registry, hit priority, a click fence) · 2.1 the manned cart — consumes the flagship dead seam (44 cart sites on the golden seed, 511 across real towns; furniture.js:252 already holds the shop record and throws it away). Blocker, not cosmetic: the cheap doorRect ride would make every milk bar and stall un-enterable from the front — the cart must raycast its own InstancedMesh. · 2.2 the fauna substrate + field guide · 2.3 dogs, tier B first.

Laws (inherited, plus this epoch's)

Everything standing. New for v8: spend triangles, not draws (the walked worst frame is 280/300; tris sit at 99124k of 200k — every proposal states its draw cost against 280, and a town-wide InstancedMesh costing 1 draw beats a per-chunk type costing +1 × up to 31 live chunks) · one instance cap per shared layer, settled once, before three implementations invent three · the depot is a read-only archive (971 live assets, 53 recorded, known trademarked items inside) — generate fresh, never pool from it · every new gate copies the shape of 1.1's control: point one table entry at a non-existent key and assert the leg FAILS.

The cut list stands

Recorded in the review, killed with measurements, not re-opened without new evidence: the town-loop bus (its own gate refuted it — what survives is one file: let the tram run on main+side edges, retiring the same dead seam for +0 draws) · the ute that sells · the charity bin (its filter accepts nothing) · the dusk flush (the day is 240 seconds long) · the magpie hat (no street verb exists) · the OSM level crossing (the rescoped synthetic version survives) · the mail run · parked cars this epoch (deferred, not rejected — and when they land, 45° angle parking is a charter requirement).

Standing — what still needs John

  1. The market plaza amendmentground.js paints a 46×46 m plaza at the origin, on top of the spine road, touching none of the 40 stall lots. Fixing it changes the covenanted town's visual output. Recommend: fix under the amendment law (the R27 precedent — the covenant is anti-drift machinery, not a defect preservative), as its own small ruling.
  2. hardyards provenance — 39 GLBs that are exactly the vernacular kit's shopping list, with provenance documented for one file. Only John knows where they came from. 🟠 until cleared.
  3. Where is MOCAPGOD? The fleet docs say lanes 0/A/B are done; on m3ultra the directory is 0 bytes and not a git repo (it lives on gitea and, presumably, ultra). Not blocking — v8 needs no clips — but the fleet docs are wrong somewhere.
  4. The animal ruling, once the spike reports.