Surveyed the fleet's asset libraries at John's ask. The finding that defines the round: PROCITY ships EIGHT animation clips; ultra's MOTIONLIB green zone holds 6,866 licence-clean ones, MIRPAMO is a working local retargeter, and the skeletons match 1:1 (66 mixamorig nodes both sides). The Mixamo bank alone: 237 idle variants, 270 walks, 140 sits, 163 greets, 113 dances, 112 push/pull/pick/reach. Every non-walking citizen in the game plays the same idle. Plus 45 record-shop fittings that pass the house law untouched, 60 DJ-gear GLBs (45 control- rigged), 48 pub props needing 40x decimation, and 441 hand-prompted 1990-99 Australian garment PNGs from wardrobegod. Six binding rulings. The first is a safety one: 3,077 CC BY-NC (never-shippable) Bandai clips sit on m3ultra in a neutrally-named path outside the red/ zone system - one mirpamo batch away from a shipped build. E-motion zones them BEFORE any retarget. R41 clips are Mixamo-only (no attribution debt); a deny-list (nsfw bodies, IP rips, unread vendor packs) enters repo law; the street budget is spent at 291/300 so every asset lands interior or zero-draw; never run gltf-transform optimize on the DJ gear (it deletes the Fader_CROSS node contract); clips ship grouped in <=6 GLBs, not 40 files. Ledger: E-motion 40-48 retargeted clips + motion_manifest; E-props 3dstore/dj-gear/pub props normalized + published; D per-citizen deterministic idles + a real BROWSE state + sit/lean; C the fittings into 12 shop types + wardrobe PNGs as op-shop rack art; B the credits surface (unlocks 4,472 CC-BY clips for R42) + A's filed D3 venue signage; F gates, proof shots, close. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
11 KiB
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 <rig>.glb <clipdir> -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
- 🔴 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'sred/zone system, with nothing in the filename marking it. It is onemirpamo batchaway from a shipped build. Lane E-motion's FIRST action, before touching any clip: zone it (rename with the_NC-researchsuffix per the house rule, or delete in favour of ultra's correctly-zonedred/bandai/) and reconcileMIRPAMO/library/manifest.json's wrongCC-BY-NC-NDlabel against ultra's correctedSOURCES.md. Report it done with the paths. - 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.
- 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) · anyanatomy/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-boundSK_Mannequin.fbx). No wildcard copies from any library — every asset enters by name. - 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.
- Never run
gltf-transform optimizeon the DJ gear. It collapsed a 696-node mixer to 25 nodes and deletedFader_CROSS. Decimate only, and verify the node contract survives. - 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}_Turnset. - Venue (4–6) — better dances, clapping standing/seated, cheering.
Deliver: ≤6 grouped GLBs under
web/models/clips/, a newweb/assets/motion_manifest.json(new file — no race with props' manifest.json) indexing clip→group→category→duration→loopable, provenance in AUDIT.md, and MIRPAMO'smake smokegreen. Watch the documented gotcha: Blender 5 FBX export flattens slotted actions — feed GLB/BVH or usestrip_skin.py.
41.2 — THE FITTINGS (Lane E, props half — parallel with 41.1, disjoint files)
~/Documents/3dstore/— 45 of 46 GLB pass the house law as-is (~300 tris median, metre scale, no Draco, no textures). Re-verify withglb_stat.py, bring them in by name, manifest them with footprints for C. Reject3dmrp.glb(499,948 tris). This is the round's cheapest win — do it first.- DJ gear (ultra
3D=models/dj-gear/, 60 GLB) — 18 already ≤5k; normalize the rest (decimate only, ruling 5), verify theFader_*/Platter_SPIN/Btn_STARTSTOPnode contract survives on every rigged model and state the check. Manifest them with their control-node names so C/D can drive them later. - Pub/venue props (
~/Documents/not-tonight/art_incoming/, 48 GLB @ ~200k tris) — 40× decimation throughnormalize.py. Content is exactly pub/cafe/milkbar (pokie, jukebox, keg, bain-marie, pie warmer, banquettes, ashtrays, sandwich board). Skip the 6staff*.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=1still 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
3dstoretubs, crates, wooden racks, stackablemos-japhopunits, 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
- Wave 1 (parallel): E-motion (41.1, ruling 1 first) · E-props (41.2) · B (41.5).
- Wave 2 (parallel, after their inputs land): D (41.3, needs 41.1) · C (41.4, needs 41.2).
- 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.