Files
calesthio 8fc3e9fbd1 backlot: fix dogfood findings + global type scale
Fixes surfaced by the "How Salt Changed History" run:

- Decisions rail showed a stale choice. Contract now requires a superseding
  decision_log entry when a logged choice changes mid-run; the board collapses
  by category+subject and renders the latest as current, tagged "revised"
  (AGENT_GUIDE Decision Communication Contract; board.js renderDecisions).
- Assets gate jumped by a draft render. The review surface is the filmstrip:
  render per-scene stills to snapshots/<scene_id>.png (scripts/atelier_snapshots.py)
  and STOP; the full/draft render is the compose stage, post-approval
  (checkpoint-protocol, bespoke-composition).
- Broken thumbnails / missing scenes. A .tsx "animation" asset is no longer a
  renderable visual — resolve snapshots/<scene_id>.* or a shot-spec placeholder;
  add <img onerror> fallback and a BESPOKE placeholder (state.py, board.js).
- Clicking a card video did nothing. .thumb video had no sizing, so the frame
  and click box drifted; add object-fit:cover. Click-to-play on the render-hero
  player; narration is clickable -> modal with the full text (board.css/js).
- Type too small everywhere. Add one --fs-scale (1.16) knob; every font-size is
  calc(px * var(--fs-scale)) so text scales proportionally and reversibly,
  verified for zero overflow at desktop + tablet widths.
2026-07-03 06:55:43 -07:00
..