# PROCITY — Round 41 instructions (from Fable, integrator) Date: 2026-08-07 · **R40 closed green** (12/12 gates, `c3384b9` pushed, goldens `0x5f76e76`). **Theme: THE LIBRARY LANDS.** John: *"we have heaps new furniture clothes ppl animations heapppppppps animations in our library — take a look and mega update our game."* Fable surveyed the fleet. The survey is the ground truth for this round; its numbers are quoted below and must be re-measured, not re-quoted, before anyone acts on them. ## The finding that defines the round **PROCITY ships 8 animation clips.** `idle · walk · sit · look · dance_drink · dance_medium · dance_party · dance_sway` — skeleton-only GLBs, 66 mixamorig nodes, loaded by `rigs.js:69 loadPedFleet()`. **The fleet holds 6,866 licence-clean clips** in ultra's `~/Documents/MOTIONLIB/green/` (2,394 Mixamo FBX · 2,548 CMU BVH · 1,620 100STYLE BVH · 304 ACCAD BVH), and **`~/Documents/MIRPAMO/` is a working local Mixamo** (`./bin/mirpamo batch .glb -o out/`, headless Blender, no cloud). **The skeletons match 1:1** — 66 mixamorig nodes both sides; retarget output is byte-shaped like the existing `idle.glb`. The Mixamo bank alone holds **237 idle variants · 270 walks · 140 sits · 163 greet/point/wave · 113 dances · 112 push/pull/pick/reach · 63 carry**. Every non-walking citizen in the game today plays the same idle. Plus: **45 record-shop fittings that pass the house law untouched** (`~/Documents/3dstore/`, ~300 tris median, metre-correct), **60 DJ-gear GLBs, 45 of them control-rigged** (working `Fader_CROSS` / `Platter_SPIN` / `Btn_STARTSTOP` node contracts), **48 pub/venue props** at 200k tris needing a 40× decimation, and **441 hand-prompted 1990–99 Australian garment PNGs** from wardrobegod (174 tops / 119 bottoms / 69 shoes / 66 hats / 12 bags). ## INTEGRATOR RULINGS — binding, no lane may reinterpret them 1. **🔴 THE BANDAI HAZARD IS CLOSED BEFORE ANY RETARGET RUNS.** m3ultra holds 3,077 **CC BY-NC** (non-commercial, never shippable) Bandai-Namco BVH at `~/Documents/MIRPAMO/library/downloads/bandai_namco_1/` — in a neutrally-named path, outside ultra's `red/` zone system, with nothing in the filename marking it. It is **one `mirpamo batch` away from a shipped build.** Lane E-motion's FIRST action, before touching any clip: zone it (rename with the `_NC-research` suffix per the house rule, or delete in favour of ultra's correctly-zoned `red/bandai/`) and reconcile `MIRPAMO/library/manifest.json`'s wrong `CC-BY-NC-ND` label against ultra's corrected `SOURCES.md`. Report it done with the paths. 2. **R41 clips come from the MIXAMO bank only.** Mixamo is usable inside games with **no attribution requirement** — the only rule is never redistributing clip packs, and retargeted per-character clips inside the game are explicitly fine. CMU/100STYLE/ACCAD are all attribution- bearing; they are a later round's work, after the credits surface exists (41.5). One licence regime this round. 3. **A DENY-LIST enters the repo law.** These never enter `web/` under any circumstance: `character_kit_modular/exports/bodies/**` (44 bodies, 30 named `-nsfw`, 465k tris each, broken 0×0×0 bboxes) · any `anatomy/` dir · `elsa_coronation_hair_wig_kh3.glb` (Disney/Square Enix IP rip) · `daphne_sexy.glb` (unverified rip) · `~/Documents/mocaponline/**` (vendor demo packs, licence unread, includes Epic's EULA-bound `SK_Mannequin.fbx`). No wildcard copies from any library — every asset enters by name. 4. **THE STREET BUDGET IS SPENT: 291/300 at night, nine draws.** No lane adds a street-side prop this round. Every asset in R41 lands **interior** (margin 162) or is **zero-draw** (clips are skeleton-only, 0 tris). Any street-side proposal gets measured and filed to R42, not shipped. 5. **Never run `gltf-transform optimize` on the DJ gear.** It collapsed a 696-node mixer to 25 nodes and deleted `Fader_CROSS`. Decimate only, and verify the node contract survives. 6. **Clip delivery is GROUPED, not 40 files.** A GLB holds many animations; boot fetch count is a budget. Deliver **≤6 grouped clip GLBs by category** with a documented index, not one file per clip. ## The ledger ### 41.1 — THE MOTION LIBRARY *(Lane E, motion half — the critical path, starts first)* Ruling 1 first, then: pick and retarget **~40–48 clips** from `green/mixamo_full` through MIRPAMO onto PROCITY's ped rig. Pick for what this game actually is — a shopping town with shops, benches, a pub, and citizens who currently only walk and stand: - **Idles (8–10 distinct)** — `Breathing_Idle`, `Big_Yawn_While_Standing`, `Sit_With_Fidgeting_Feet`, cocky/hip-lean variants: the clone-army killer. - **Browse/shop (6–8)** — `Examine_Forwards`/`_Backwards`, `Holding_An_Object_Idle`/ `_While_Walking`/`_While_Turning_Left`/`_Right`, `Closing_Cabinet_Door`, `Carrying_A_Box`. - **Sit/lean (6–8)** — `Little_Girl_Sitting_On_A_Bench_Swinging_Her_Legs`, `Leaning_Against_A_Wall_With_Various_Postures`, `Legs_Crossed_Leaning_On_Object`. - **Social (6–8)** — `General_Conversation`, `Having_A_Chat_At_The_Watercooler`, `Greeting_While_Standing`, `2_People_Shaking_Hands_Part_1/2` (a matched pair — keep them paired), `Nodding_Head_Yes`, `Shaking_Head_No_Dismissively`. - **Locomotion (4–6)** — walk variants + the `45/90/135/180_Degree_{Left,Right}_Turn` set. - **Venue (4–6)** — better dances, clapping standing/seated, cheering. Deliver: ≤6 grouped GLBs under `web/models/clips/`, a **new** `web/assets/motion_manifest.json` (new file — no race with props' manifest.json) indexing clip→group→category→duration→loopable, provenance in AUDIT.md, and MIRPAMO's `make smoke` green. Watch the documented gotcha: Blender 5 FBX export flattens slotted actions — feed GLB/BVH or use `strip_skin.py`. ### 41.2 — THE FITTINGS *(Lane E, props half — parallel with 41.1, disjoint files)* 1. **`~/Documents/3dstore/` — 45 of 46 GLB pass the house law as-is** (~300 tris median, metre scale, no Draco, no textures). Re-verify with `glb_stat.py`, bring them in by name, manifest them with footprints for C. Reject `3dmrp.glb` (499,948 tris). **This is the round's cheapest win — do it first.** 2. **DJ gear (ultra `3D=models/dj-gear/`, 60 GLB)** — 18 already ≤5k; normalize the rest (decimate only, ruling 5), **verify the `Fader_*`/`Platter_SPIN`/`Btn_STARTSTOP` node contract survives on every rigged model** and state the check. Manifest them with their control-node names so C/D can drive them later. 3. **Pub/venue props (`~/Documents/not-tonight/art_incoming/`, 48 GLB @ ~200k tris)** — 40× decimation through `normalize.py`. Content is exactly pub/cafe/milkbar (pokie, jukebox, keg, bain-marie, pie warmer, banquettes, ashtrays, sandwich board). Skip the 6 `staff*.glb` — they are 200k-tri statues with no skin, no anims, no materials. Publish to the depot over the tailnet path, sha1-verify, run the R40 transmission gate over every new asset (it now scans all four surfaces — prove it stays green). ### 41.3 — THE CITIZENS COME ALIVE *(Lane D — after 41.1 lands)* Wire the clip library into the fleet. `rigs.js loadPedFleet()` and the sim's state machine are yours. - **Per-citizen deterministic idle** from the new pool — seeded by identity, so the same citizen always stands the same way and the street stops looking like one person copy-pasted. - **A real BROWSE state** for the interior browsers (they currently stand): examine/hold/reach at C's browse points, seeded per browse point. - **Sit and lean** on the street furniture that already exists (benches, shopfronts) — this is where sit/lean clips earn their keep; keep it zero-draw (a seated ped is a ped that was already drawn). - Keep memory bounded and **state the numbers**: clips resident, fetch count at boot, heap delta. Determinism law holds — same seed, same crowd, same postures, byte-equal across two runs. - Everything gated so `?noassets=1` still runs (the 8-clip path must survive as the fallback). ### 41.4 — THE SHOPS GET THEIR STOCK *(Lane C — after 41.2 lands)* Place the new fittings. Interior margin is 162 draws — spend it deliberately and report the worst room after every change. - **Record/opshop/book/video/pawn/stall**: the `3dstore` tubs, crates, wooden racks, stackable `mos-japhop` units, library trolley, `vinylsleeve_v5`, window booth. - **Pub/cafe/milkbar**: the decimated venue props — this is the set that finally furnishes the pub. - **Record shop + gig venue**: the DJ gear (turntables, mixers, the 808/SP-1200/MPC) as hero props. - **The wardrobe PNGs** (441 garment layers, `90sDJsim/web/world/media/doll/`): route R5 — use them as op-shop rack textures and shelf stock art at **zero geometry cost**. Period-correct Australian 1990s naming is the whole point; keep the names visible where the game shows item text. - Every recipe change re-runs your sweep + soak: 0 throws, 0 path-fails, 0 leaks, draws ≤350. ### 41.5 — THE CREDITS SURFACE *(Lane B — small, and it unlocks future rounds)* PROCITY has no attribution surface. R41 ships Mixamo only (no attribution debt, ruling 2) — but CMU/100STYLE/ACCAD are 4,472 more clips waiting behind exactly this. Build it now: a credits panel (the flag/selector UI idiom you already own), fed by a data file lanes append to, listing asset sources and their licences. Zero draws in-game, classic-gated by construction. Then R42 can spend the CC-BY libraries the day it wants them. **Also yours, filed from R40:** A's D3 — `SHOP_REGISTRY` is missing pub/band_room/rsl, so 81 venue lots corpus-wide wear op-shop signage (`buildings.js:465`). Cosmetic, measured, and it will show in every pub shot this round takes. ### 41.6 — INTEGRATION AND PROOF *(Lane F — last)* Wire what needs wiring, gate what needs gating, and **prove the round with pictures** — this is the first round in a long time whose whole point is visible. New/extended gates: clip-manifest integrity (every referenced clip resolves), citizen-posture determinism (two runs byte-equal), interior draw budget with the new fittings, `?noassets=1` still clean, deny-list compliance (no banned path ever referenced from `web/`). Re-shoot the tour: a busy street with citizens in *different* postures, a browsing interior, the furnished pub, the record shop with real gear. `qa.sh --strict` green, budgets restated, goldens unmoved. **No tag** — John's playtest session rules on the epoch. ## Laws Everything standing, plus rulings 1–6 above. Highlights: measure the thing, not the note about the thing · pathspec-atomic commits, **no git commands from lanes** — the integrator commits at close · fresh browser contexts · human-sized line on humanoid shots · every gate ships its control demonstrated · budgets are numbers. ## Order 1. **Wave 1 (parallel):** E-motion (41.1, ruling 1 first) · E-props (41.2) · B (41.5). 2. **Wave 2 (parallel, after their inputs land):** D (41.3, needs 41.1) · C (41.4, needs 41.2). 3. **Wave 3:** F (41.6). ## For John Nothing blocks this round. Still parked for the playtest session: 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). The F8 notepad and `?bugtour=1` are live and waiting.