# PROCITY — Round 42 instructions (from Fable, integrator) Date: 2026-08-07 · **R41 closed green** (18 gates, `d14cf7f` pushed, goldens `0x5f76e76`). **Theme: THE LOOK.** R41 furnished the rooms and filled the streets with postures; doing so made three cosmetic faults newly visible. John looked and said fix them. This round is a **visual debt pass** — no new systems, no new content, just making what shipped last round *read* right. ## The three faults (Fable's own eyeball pass on R41's proof shots — go look before you start) 1. **The pub props render as untextured white blobs.** `docs/shots/laneF_r41/pub_furnished.jpg` — the couch and jukebox are lumpy white masses. E's own §41.2 note says 37 of 39 shipped with **no texture at all**; they are geometrically correct and visually unfinished. A 90s pub couch is brown vinyl or worn floral, not white. 2. **The DJ booth reads as a plain black box.** `docs/shots/laneF_r41/record_dj_booth.jpg` — the rigged Technics with working `Platter_SPIN`/`Fader_PITCH` nodes are in there, and at normal viewing distance you cannot tell it is a turntable setup. Right result, wrong read. 3. **The ped roster does not fit 1990s Australia.** There is a **purple masked luchador** in the pub crowd. The survey found ultra's `3D=models/characters/` is 83 FBX = **53 people-normal · 10 comical · 9 fantasy** — some of the wrong 19 are in our shipped 24. ## Standing debt this round also clears (all filed, all small) - **[B, from D]** `furniture.js` puts the bench's front **along** the street, not facing the road — contradicting its own comment. D's citizens now sit on these benches, so it shows. - **[B, from D]** one `benchStops(plan)` export retires D's derived-station mirror. - **[B, from F]** one `await document.fonts.ready` in `buildings.js` — the sign-atlas font race that makes four bookmarks unreproducible across boots. - **[E, from B]** the **19 base ped models have no per-asset licence record anywhere in this repo**, and CITY_SPEC's declared zone includes CC-BY and paid-royalty-free. B built the credits surface; this round fills the rows. A ped we cannot licence is a ped we replace. - **[D, from F]** `r41_shots.py`'s browse arm is deterministically red (it re-enters the winner after a ~3 s/candidate scan, by which time the occupant has left) — currently warn-level. ## INTEGRATOR RULINGS 1. **Period law, now explicit: PROCITY is 1990s Australia.** No fantasy, no superhero, no luchador, no anime, no medieval. If a model would look out of place on a suburban Sydney street in 1996, it does not ship. This applies to peds first and everything after. 2. **Prefer CC0 or known-licence replacements** — it fixes the look *and* the licence gap in one move. The survey found **Quaternius (CC0)** ships Casual, Casual2, Punk, Suit, Worker, Farmer, Beach: directly usable town archetypes with zero attribution debt. Ultra's 53 people-normal FBX are the other pool; each needs its licence recorded before it ships (ruling: unrecorded ⇒ not shipped). 3. **Every ped that ships gets a `credits.json` row** — name, source, licence, attribution-if-any. B built the surface in R41; this is what it was for. 4. **Draw-neutral or better.** Street is **291/300 at night — nine draws.** A ped swap is one-for-one; a texture is not a draw. Interior margin is **227** (the true number after C's phantom-room fix) — the pub may spend some of it, measured, and must state the worst room. 5. **No new capability.** No conversation system, no DJ driver, no new mechanics. If a fix needs a system, file it to R43 with the measurement. ## The ledger ### 42.1 — DRESS THE PUB *(Lane E, look half)* The 39 `art_incoming` props ship untextured. Give them materials that read as a 1990s Australian pub/cafe/milkbar. Cheapest correct route first — these are flat-material meshes, so **baked vertex colour or a small shared palette atlas beats per-asset texture maps** (and keeps the draw win C fought for). Priorities by how much screen they own: `old_couch`, `jukebox`, `banquette`, `plywood_bar`, `bistro_table`, `pokie`, `bain_marie`, `pie_warmer`, `keg`, `lounge_chair`. Beer-stained carpet reds, brown vinyl, laminex, brass and chrome — not white. Ship a contact sheet and an A/B pair against R41's shot. Keep the house GLB law, re-run the four-surface transmission gate, republish + sha1-verify. ### 42.2 — MAKE THE DECKS READ *(Lane E look half + Lane C, jointly)* The booth is right and unreadable. Diagnose before you change anything: is it the asset (a black plinth with a dark deck on a dark counter), the composition (nothing around it says *DJ*), or the lighting? Then fix the cheapest cause. Likely both: E gives the deck body some contrast (silver platter, coloured slipmat, visible tonearm, a lit pitch fader), and C composes the booth so it reads at a glance — mixer beside the deck, a record on the platter, sleeves in the rack behind, maybe the booth angled toward the door instead of flat to a wall. **No control-node driver this round** (ruling 5) — the nodes stay recorded for R43. Before/after pair required. ### 42.3 — RECAST THE TOWN *(Lane E cast half — audit and source)* 1. **Audit the shipped 24 peds**: for each, name it, judge it against ruling 1 (1990s Australian street: yes/no), and record its licence — or mark it `unverified`. The survey's split of ultra's library (53 normal / 10 comical / 9 fantasy) is your map; the shipped roster is the territory. **Show the luchador and name it.** 2. **Source replacements** for every reject, preferring CC0 (Quaternius: Casual, Casual2, Punk, Suit, Worker, Farmer, Beach) then ultra's people-normal pool. Normalize to the existing ped contract — **same mixamorig skeleton, same 66-node shape, same 2,132–3,999 tri band, same texture budget** — because D's 46 clips and the impostor bake both ride that contract and a deviation breaks them silently. 3. **Fill `credits.json`** for the whole roster (ruling 3), replacing B's amber `unverified` rows with real ones. ### 42.4 — RECAST, WIRED *(Lane D — after 42.3)* Swap the roster in `rigs.js`/`loadPedFleet` and the fleet slot machinery. Non-negotiables: **determinism holds** (same seed → same crowd — the fleet-order bug you fixed in R2 is exactly the hazard here: fill fixed slots by index, never by load-completion order), **draw count unchanged**, the impostor bake still matches its rigs at the swap boundary, and the no-giants gate stays green (new models, new scale risk — this is precisely the R10 failure class). Re-shoot your street shot. Also yours: fix `r41_shots.py`'s browse arm so it stops being warn-level. ### 42.5 — THE THREE SMALL ONES *(Lane B)* The bench yaw (make the bench face the road; D's sitters will show it either way, so a before/after shot is the proof), the `benchStops(plan)` export, and `await document.fonts.ready` in `buildings.js`. That last one should make the four unreproducible bookmarks stable — **verify it does** by re-running F's 3-boot hash check, and tell F whether byte-hash goldens become possible again. ### 42.6 — PROVE THE LOOK *(Lane F — last)* This round is judged by eye, so the shots are the deliverable. Re-shoot every R41 frame that showed a fault, **paired against the R41 original** (they are committed — use them as the before): pub, DJ booth, street crowd, pub crowd (the luchador's replacement). Gates: period-law compliance (no banned-genre model in the ped manifest — a name-list gate, control demonstrated), roster licence completeness (every shipped ped has a credits row — red if any `unverified` remains), plus everything standing. Budgets restated with the true numbers. `qa.sh --strict` green. **No tag.** ## Laws Everything standing: no git commands from lanes (integrator commits at close) · measure the thing, not the note about the thing · fresh browser contexts · human-sized line on humanoid shots · every gate ships its control demonstrated · the R41 deny-list is permanent repo law. ## Order 1. **Wave 1 (parallel):** E-look (42.1, then 42.2's asset half) · E-cast (42.3) · B (42.5). 2. **Wave 2 (parallel):** C (42.2's composition half) · D (42.4). 3. **Wave 3:** F (42.6). ## For John Still parked for your playtest: the op-shop bin's contents · fog default-on vs mode · v9's third layer · **the audio listen pass** (nobody in this loop has ears). F8 and `?bugtour=1` are live. Filed to R43: the DJ control-node driver, the paired-conversation state machine (D's 8 social clips are shipped and unused), and repainting the nine non-venue shop signage palettes (an art call B deliberately left you).