Repository navigation
Backfill contact sheets (26) and asset sheets (28) for existing showcase pieces #202
Description
What
showcase/README.md now requires a contact sheet and an asset sheet for every showcase piece, each on its own recorded evidence. The 28 pieces already in the tree predate that rule.
| Gate | Conformant | Non-conformant |
|---|---|---|
| Contact sheet | 2 — crate-stack, stone-archway |
26 |
| Asset sheet | 0 | 28 |
Why the rule exists
Contact sheets — the first sheets built for crate-stack and stone-archway showed both wedge pools reading as cool grey bands rather than the warm pool the house style calls for. Both pieces were relit as a direct result. Nothing else in the pipeline puts a still beside its peers, so nothing else could have caught it.
Asset sheets — showcase is entirely game props, which is exactly the scope docs/VISUAL-STYLE.md § Asset quality names. Budgets measure geometry conformance; the contact sheet measures staged presentation; neither removes the scene, and a strong scene carries a weak model. The evidence recorded in that file is socket-attach-points, which passed every measurable floor on its first draft — edge90 0.000, ten materials, no default datablock names — and was still judged bad by eye and rebuilt from scratch. "The floors scored the bevels, not the design."
Scope of the backlog
Contact sheets are cheap: compositing an existing committed hero beside the pinned calibration set needs no re-render. 26 sheets, mechanical.
Asset sheets are not. Each needs the hero re-rendered alone — neutral three-quarter view, plain studio lighting, no staging tricks — and the four pinned reference assets rendered the same way. None of the 28 showcase scripts has a neutral-render mode; they all build the full staged scene in render_still. Retrofitting means either a --neutral flag across 28 scripts or a separate harness that imports each piece's builder and stages it plainly.
Blocked on #200
Do not generate contact sheets from the committed heroes until #200 is resolved. Those heroes are measurably not what the scripts render today — four of five pieces sampled drift 10–22 % of pixels, with the committed file systematically brighter. A contact sheet built from a drifted hero would calibrate against the wrong image, and the calibration band itself (damped-track-aim 0.1722 … bmesh-gear 0.3048) may be measured off drifted files.
Sequence: settle #200, regenerate the stills, then build the 26 contact sheets against known-good images.
Suggested order
- Resolve Committed hero stills do not match what the scripts render #200 so the stills are trustworthy.
- Contact sheets for the 26, in batches, reporting the per-criterion verdicts the convention asks for. Expect some to fail and need relighting — that is the gate working, and it is the same fix
crate-stackandstone-archwayneeded. - Decide the neutral-render mechanism for asset sheets, then work through the 28.
Steps 2 and 3 are quality-pass work, not a single PR.
Activity
TMHSDigital commentedon Sep 23, 2026
Status update: the #200 sweep partly unblocks this
The full drift sweep (posted on #200, tool in #218) sorts the 28 showcase heroes, compared against the fresh render re-encoded at webp q90:
Counts have moved since this was opened
docs/gallery/contact-sheets/now holds sheets for 6 showcase pieces:cart,chopping-block,crate-stack,hay-bale,stone-archway,stone-well. All six are in the matching group.What is unblocked now
Contact sheets for the 8 matching pieces without one: wooden-barrel, market-stall, street-lantern, watchtower, water-trough, hitching-post, wooden-bucket, wooden-ladder. Their committed heroes are what the code renders, so calibrating against them is sound.
Still blocked on #200
The 14 drifted pieces need their stills regenerated first.
One thing to recheck
The contact-sheet calibration band itself shifts.
damped-track-aim(the low end) renders at mean luma 0.1510 from code versus 0.1721 as committed, so sheets should compare against fresh renders of the calibration set, not the committed files.fix(gallery): regenerate the 25 drifted heroes from their code, with …
TMHSDigital commentedon Sep 23, 2026
Contact sheets: done for all 28 showcase pieces (#225)
scripts/render_hero.py. All 25 now match what their scripts render.scripts/contact_sheet.pybuilds sheets in the committed format and prints luma, stage, wedge warmth and saturation per tile. fix(gallery): regenerate the 25 drifted heroes from their code, with contact sheets #225 added or rebuilt sheets for those 14 plus the 8 matching pieces that had none. With the 6 that already existed, 28/28 showcase pieces now have a sheet underdocs/gallery/contact-sheets/.wall-torchis the exception, bright by design from its flame.treasure-chest,wooden-ladder,hitching-postandwatchtowerare the weakest at thumbnail scale.damped-track-aimrenders at 0.1511 from code, not the 0.1722 it had as committed.Remaining here: asset sheets (0/28)
Still needs a neutral-render mode (plain three-quarter view, studio light, no staging) across the 28 showcase scripts, or a harness that imports each builder and stages it plainly. The four reference assets need rendering the same way. Leaving this issue open for that step.
fix(showcase): remodel iron-cauldron (chain, forged head, casting ban…
fix(showcase): moka-pot gets brushed, heat-tinted aluminium