PROCITY/docs/shots
m3ultra d14cf7fa6e Lane F R41 §41.6: 18 gates green — the deny-list, the wardrobe switch, and no byte-hash goldens
qa.sh --strict: 18 passed · 0 failed · 0 warn · 0 skipped. selfcheck 157,647/157,647,
fingerprint 0x5f76e76 unmoved. No tag — John's playtest session rules the epoch.

THE FIVE ASKS. [C] wardrobe wired via exported WARDROBE_BASE + stockBaseFor(shop), preloaded
inside the existing STOCK_REAL gate: ON under ?stock=real (52 pack items, 69 garment ids on
rendered meshes, 1 atlas, exactly 2 requests) and CHEAPER (59->55 draws, 111->100 textures);
OFF is what ships by default, A/B'd against a reverted control tree — default arm identical
on every counter (160 URLs same hash, 131/18,018 street, 59/28,505 interior). [D] three gates
wired (r41_shots.py writes to TMPDIR so gate runs never rewrite committed shots). [E]
clips_verify wired — 46 clips / 6 groups / 3,498,124 B.

[B's bookmark finding] CONFIRMED AND WIDER: street_noon, shopfront_detail, crossroads_busy
AND market_square all give 3 distinct hashes across 3 boots; only night_neon is stable.
RULING: no gate pins a screenshot byte-hash on any bookmark — everything R41 asserts is a
counter. Filed to B: one await document.fonts.ready in buildings.js.

[C's drawSweep] CONFIRMED INDEPENDENTLY with F's own sweep (never calls C's): GLB-on worst
123 @ dept/auto. The phantom control (one stale room left in scene) reads 197 — +74 on every
reading — decomposing R39/R40's '188' as 116 real + ~72 phantom.

NEW GATES, controls demonstrated. r41_denylist.mjs (ruling 3): 738 files / 197.3 MiB scanned
by path AND bytes, 7 banned names, 0 hits; the control plants a banned manifest row every run
-> RED on 2 names -> removed -> GREEN. r41_integration.py: wardrobe both arms · interior <=350
on both instruments · ?noassets=1 zero across six fetch classes over a 3-shop walk (control
fetches 5/6) · ?clips=0 142 URLs and ?classic=1 125 URLs with zero R41 cargo.

BUDGETS. Street: noon 282 · NIGHT 291/120,093 — margin 9, INTACT · classic 269 byte-exact ·
?clips=0 NIGHT 291, delta 0. No lane spent a street draw. Interior: true pre-R41 116, R41 123
@ dept/auto, margin 227; over 33 real shops worst 110; pub 49 quiet / 77 gig night.

FILED BACK: flags_check's _enter_record_shop went RED on 8 smokes because §41.4's bins put
every one of the first six record-shop counters inside 2.6 m — widened to the whole open set,
verified not a game defect. smoke_djdance read _actions[0] and D's per-instance clip swapping
made the mixer multi-action, so a healthy dancer was called a stall — now follows the clip by
name. D's r41_shots.py browse arm is deterministically red here (re-enters the winner after a
~3 s/candidate scan, by which time the occupant has left) — wired WARN-level with the reason
at the call site, fix handed to D. F's own r39_transmission.py had an unmeasured 30 s goto
default that flaked once under a full strict run; pinned to 90 s.

11 proof frames in docs/shots/laneF_r41/ with sidecars: street_postures (5 rigs, 3 clips
playing) against its ?clips=0 control (1 clip) · street_lean · browse_interior · pub_furnished
+ the honest kit before/after pair · record_dj_booth · opshop_wardrobe on/off · credits_panel
with ODbL on screen. Every humanoid frame carries its R10 human-sized line.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 18:11:58 +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 (Fable's ruling): the magpie takes E's GLB use-if-ready, and the fallback's white moves 2026-08-03 21:37:24 +10:00
laneB_r40 Lane B R40 §40.3 (+E's §40.4 rule): the 307 was fiction, the town speaks its street names 2026-08-07 12:28:08 +10:00
laneB_r41 Lane B R41 §41.5: the credits surface — and the game had never shown the OSM attribution it owes 2026-08-07 18:10:39 +10:00
laneC Lane C R41 §41.4: the shops get their stock — and the measuring instrument was wrong 2026-08-07 18:11:07 +10:00
laneD Lane D R41 §41.3: the town stops walking — 99.3% to 78.1%, at zero draws 2026-08-07 18:11:30 +10:00
laneE Lane E R41 (§41.1+§41.2): 46 clips and 110 fittings — and every handover number was the wrong unit 2026-08-07 18:10:12 +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
laneF_r39 Lane F R39 (v9 WAVE 1, CLOSE): QA GREEN 10/0/0/0 — and the interior margin is 162, not 21 and never 6 2026-08-03 22:47:03 +10:00
laneF_r40 Lane F R40 §40.6: the notepad — F8, the tour, and the gate that caught the harness 2026-08-07 12:29:02 +10:00
laneF_r41 Lane F R41 §41.6: 18 gates green — the deny-list, the wardrobe switch, and no byte-hash goldens 2026-08-07 18:11:58 +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.