PROCITY/docs/shots
m3ultra 12eb571357 Lane E R39 (6/n): THREE GLBs shipped as GLASS, not one — transmissionFactor 1 stripped, published, sha1-verified, and now GATED. Plus the arcade's three meshes.
Lane C measured the bookshelf's transmission halving interior draws (opshop/hall 191->104, book/hall
101->51, dept/hall 116->116 control). The cause, with vendored line numbers: three.module.js:16209
enters renderTransmissionPass(opaqueObjects, ...) whenever currentRenderList.transmissive is
non-empty, and :16433 re-renders the WHOLE OPAQUE LIST into a render target — every opaque draw
issued twice. Trigger is material.transmission > 0 (:6890), set from the glTF at GLTFLoader:1202.
And at 1.0 it is not 'a bit glassy': :494 does totalDiffuse = mix(totalDiffuse, transmitted.rgb,
material.transmission) — the diffuse term is REPLACED by the backdrop.

I SCANNED ALL 103 GLBs. Three carried it:
  procity_fit_bookshelf_01      mtl_10218_Bookshelves_v1     shipped and hurting (C's)
  procity_street_longbench_01   lambert3SG                   NOT WIRED — the 5.86 m arcade bench
                                                             the v9 charter names, on my R38
                                                             recommend list for Lane B
  procity_street_streetlight_01 Streetlight_HighResSG3       NOT WIRED — one per ~18 m of street
The two unwired ones are the worse finding: the street budget is 292/300 with EIGHT draws of margin,
and a pre-pass there costs another ~292, not eight. Armed, not fired.

FIXED SURGICALLY. pipeline/strip_transmission.py rewrites only the JSON chunk and copies BIN through,
printing sha1(BIN) before and after: BIN IDENTICAL on all three, tris/dims/mtl/img/tex unchanged.
KHR_materials_ior deliberately left (ior does not trigger the pre-pass).

PUBLISHED + VERIFIED under John's R22 standing authorization via the passwordless tailnet ingress:
6/6 HTTP 200 off the PUBLIC depot, byte counts exact, sha1 identical, depot copies re-scanned clean.
_published.json 56 -> 59.

GATED, which matters more than the fix: validate_manifest.py now HARD FAILS on transmissionFactor>0
with the three.js line numbers and the fix command in the message; glb_stat.py grew a transmission
column and a loud footer. Nobody looked for three epochs because a bookshelf is obviously not glass.

ALSO: the arcade's three meshes, published and catalogued the same round they were generated —
aframe_board 366 tris (<=16 inst), blade_sign 299 (17 inst), keycutter_sign 498 (1 inst). manifest
furniture 13->16, GLBs 36->39, validate 0 errors 0 warnings. blade_sign ships FLAGGED: its back face
carries TRELLIS-hallucinated art where the concept had no data, which is one more reason the
+0-draw perpendicular-quad answer is the recommendation and this GLB is the fallback.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 21:11:34 +10:00
..
before Lane F: integration — interiors + keepers + street peds + QA harness 2026-07-14 14:29:03 +10:00
laneA Lane A round 8: OSM to parity + a second town (Katoomba) — carried R7 brief, full 2026-07-15 04:15:12 +10:00
laneB Lane B round-9: v2 tram (?tram=1) + tour bookmarks + rain-drop polish 2026-07-15 11:09:41 +10:00
laneB_r4 Lane B round-4: closed facades (§3.5) + shot poses/letterbox + furniture GLB + novelty_record 2026-07-14 19:59:27 +10:00
laneB_r37_kerb Lane B R37 (v8 wave 0 §0.1 + §0.4): THE KERB IS FOOTPATH — +0 draws, tris DOWN; the chunk seam is subscribable at last 2026-08-03 16:40:43 +10:00
laneB_r38 Lane B R38 (v8 WAVE 1, INHABITATION): all four runtime items — the whole round costs +1 walked draw 2026-08-03 18:53:26 +10:00
laneB_r39 Lane B R39 39.2: THE FOG — the map shows what you walked past, and is finally readable 2026-08-03 21:04:34 +10:00
laneC Lane C R39 §39.3: the op shop gets a bin — the verb table, and the margin was never six 2026-08-03 20:59:42 +10:00
laneD Lane D round 12: gig band + crowd + patronage surge (?gigs=1) 2026-07-15 19:49:07 +10:00
laneE Lane E R39 (6/n): THREE GLBs shipped as GLASS, not one — transmissionFactor 1 stripped, published, sha1-verified, and now GATED. Plus the arcade's three meshes. 2026-08-03 21:11:34 +10:00
laneF Lane F R13 (v3.0-beta, the district): per-venue gig state + walla/applause + queue wiring; qa --strict 6/6 2026-07-16 00:22:03 +10:00
references Lane F: integration — interiors + keepers + street peds + QA harness 2026-07-14 14:29:03 +10:00
release_v3 Lane F R15 (v3.0): the release money-shot tour (ledger #4) + settled measurements (ledger #5) 2026-07-16 11:35:27 +10:00
release_v3_1 Lane F R16 (v3.1 THE FLIP) — close: default-boot tour + week soak + docs 2026-07-16 13:32:22 +10:00
release_v4 Lane F R22 (v4.0 — THE EPOCH CLOSE): the re-measure, the selector, the release tour, the tag 2026-07-16 22:32:32 +10:00
release_v5 Lane F R27 (v5.0): the covenant re-pinned, the frame that took five tries, QA GREEN 2026-07-17 16:48:22 +10:00
v1_tour Lane F R5 F1: v1.1 — re-capture interior shots on C1 re-map + E1 bake 2026-07-14 21:05:11 +10:00
v2_tour Lane F R10: verify giant-rig fix + re-shoot tour + re-frame night_crowd 2026-07-15 13:56:23 +10:00
v4_alpha Lane F R19 (v4.0-alpha close): the alpha gate + roads dimension + the first real-street money shot 2026-07-16 18:07:24 +10:00
v4_beta Lane F R21 (v4.0-beta close): the beta gate — tram dimension, the re-measure, the beta shot 2026-07-16 21:37:04 +10:00
v7_alpha Lane F R31 wave 2 (v7.0-alpha close): THE SHOT + the ledger. docs/shots/v7_alpha/crate_panel.png — the alpha's face: Monster Robot Party's real frontage, THE CRATE open with 3 real finds (real cover thumbs, paid/where/day honest), game bar day 1 · $116 · CRATE 3 · SLEEP, driven through the REAL loop with the dig param ABSENT (the R31 flip carries the shot), 0 console errors. LANE_F_NOTES §31 (the flip both ways, the two new gate legs + their negative control, harness lesson #4 — the explicit-flag blindfold, THE BETA QUEUE filed) + F-progress R31. Tag v7.0-alpha rides this commit, LOCAL ONLY — Fable reviews and pushes. 2026-07-18 16:38:07 +10:00
v7_beta Fable (integrator): ROUND 35 CLOSED — the first five minutes land; every v7.0 SYSTEM is built 2026-07-20 20:13:02 +10:00
v7_tour Fable (integrator): THE TOUR — day one to first gem, 6 frames, no staging 2026-07-20 20:18:13 +10:00
contact.html Lane F R3: hours/closed-shops + manifest/rig-fleet/?noassets + --depot + QA harness fixes 2026-07-14 17:19:11 +10:00
README.md Lane F R10: verify giant-rig fix + re-shoot tour + re-frame night_crowd 2026-07-15 13:56:23 +10:00
v2_contact.html Lane F R10: verify giant-rig fix + re-shoot tour + re-frame night_crowd 2026-07-15 13:56:23 +10:00

docs/shots — visual regression + devlog reference tree

Owned by Lane F (each lane also drops its own acceptance screenshots here).

docs/shots/
  laneA/ … laneE/  … per-lane acceptance screenshots (each lane owns its dir)
  v1_tour/  … F: the v1 beauty shots (tools/shots.py) — frozen devlog set
  v2_tour/  … F: the v2 tour (tools/v2_tour.py) — the CURRENT canonical set (see below)
  before/   … F: last known-good capture, for side-by-side regression
  references/ … real-world reference photos named per shot
  v2_contact.html … generated contact sheet for the v2 tour

cd web && python3 -m http.server 8130 then tools/.venv/bin/python tools/v2_tour.py → 1280×720 PNGs in v2_tour/ + docs/shots/v2_contact.html.

file what it documents
street_noon.png main strip at midday
crossroads_busy.png busiest intersection, peds about
shopfront_detail.png verandah + sign + window up close
patronage_door.png streamed peds at an open shop's door (Lane D patronage)
rain_verandah.png rain outside a lit ?winmap video-shop window
rain_street.png wet strip, rain down the street
tram_stop.png the v2 tram paused at a shelter (?tram=1)
night_crowd.png VIDEO REGAL glowing amid CLOSED neighbours at night — the §3.5 hours story (clean-night boot). NB: no visible street crowd — see the note below.
browsers.png an occupied shop's interior life — a browser at the rack + the keeper at the counter, both human-sized (R10 giant-rig fix). figures human-sized vs door/fittings: yes.
dig_real.png riffling a real-cover record bin (?dig=1&stock=real)
katoomba_main.png plan-agnostic main strip (?plansrc=osm&town=katoomba)

Note on night_crowd (Lane F, R10)

Re-framed to the tighter, readable "one lit shop in a closed town" composition. It does not show a standing street crowd, and that is not a framing bug: Lane D's night patronage parks ducked-in patrons hidden inside the shop (they become the interior browsers seen in browsers.png), and seed 20261990's video shop sits on a low-traffic corner, so none gather visibly outside (tested: 0 patronage / 0 visible at night). The town's night life is the interior presence + the neon-vs-CLOSED mood. A visible outdoor night queue would need a new Lane-D mechanic (loiter-outside-the-openLate-shop) — parked for v3. The ~20 fps in night captures is a headless-chromium software-GL artifact (the scene is light, ~128 draws / 65k tris); on real hardware the night scene is not a perf concern.

Regression workflow

Before a risky change, snapshot the good state into before/, then re-run v2_tour.py and eyeball v2_contact.html. Process rule (R10): any shot containing a humanoid gets an explicit "figures human-sized relative to doors/fittings: yes" line in the progress note — actually look.