PROCITY/docs/shots
m3ultra a569f08b14 Lane E R39 (1/n): THE MAGPIE, SETTLED ON A PICTURE — B's own birdGeometry() dumped vertex-for-vertex (182 tris, not 154), rendered against E's tinted GLB at 64/48/32 px, still and under motion blur
- pipeline/dump_bird.mjs: imports web/js/world/magpie.js UNMODIFIED (bare 'three' resolved to the
  repo's vendored build through a node resolve hook) and dumps birdGeometry() — so the A/B is
  against Lane B's actual bird, not a port. MEASURED 182 tris / 216 verts. --sim walks a player
  past a territory on magpie.js's own clock: drawn 54.1% of frames, and OF THOSE perched 80.5% /
  swooping 7.7% / returning 11.8%.
- pipeline/bird_to_glb.py: wraps the dump as a GLB in E's frame (head +Z, +Y up) so the identical
  render_views.py rig shoots both; --fold applies the perch pose (x x 0.42). glb_stat re-measures 182.
- pipeline/render_views.py --noemit: strips emission from BOTH candidates. normalize.py's
  emissiveFactor 0.28 is albedo-MODULATED; a vertex-coloured mesh cannot express that in glTF and
  Blender writes a flat 0.28 that lifts a black bird to grey. Off both sides or the picture lies.
- pipeline/view_sheet.py --ab: the strip as a GRID (one line per candidate, stacked) plus two
  linear motion-blur blocks at 25% and 100% of the bird's width, and a wrapped notes footer.
- docs/shots/laneE/r39_magpie_ab.png — the sheet Fable rules on.

Recommendation in LANE_E_NOTES; picture first.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 20:35:00 +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
laneC Lane C R13 (v3.0-beta, the district): band_room + rsl archetypes, 4-piece band, RY audit (?gigs=1) 2026-07-15 23:05:03 +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 (1/n): THE MAGPIE, SETTLED ON A PICTURE — B's own birdGeometry() dumped vertex-for-vertex (182 tris, not 154), rendered against E's tinted GLB at 64/48/32 px, still and under motion blur 2026-08-03 20:35:00 +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.