Contents

M8 Restyling

"Restyle the whole show" switches the active StyleSpec. The engine already redraws everything in the new style. M8 makes the switch a decision the person can see and trust: what will change, side by side, before approving, and what did change, after.

Read with ARCHITECTURE §4 (Theme → Style → Pattern → Instance), ADR-0007 (versioned builders and canon) and docs/design/m3-showrunner.md (change sets, previews, locks).

Where things stand

  • restyle_show proposes switching show.json's style. When the new style's design transforms or frame rate would change how a locked character looks, the proposal lists it as canon drift.
  • A proposal's previews render in the proposal's show, so a model sheet of a restyle proposal is the "after". Approved sheets are recorded in .reelwright/approved/, the "before". reelwright status compares current sheets with approved ones and reports drift by hash.
  • Generated characters keep the colors their palette solver chose under the style that was active then. A new style with other color rules leaves them off-style (character.off_style_color), so nothing re-derives them.

The restyle proposal

restyle_show {style, rederive?: true} proposes one change set:

  1. The switch: show.json style becomes the new style.
  2. Re-derived palettes (default on). Every generated, unlocked character (it has meta.derivation) has its palette re-solved under the new style's color rules, with the same seed and plan. Only palette changes; shape, costume cut and name stay. A character whose hand-set colors the style rejects is listed, not changed.
  3. Locked characters are never changed. Each one the style moves (design transforms, frame rate, colors outside the new rules) is listed as canon drift, with the reason.

Previews: a restyle preview kind. Each character gets one row, before then after (the model sheet in the active style, then in the proposal's), with the drift reason as a caption. A set gets its wide view the same way. One contact sheet covers the cast; it is what render_preview with the change id returns.

The drift report

reelwright drift --show <dir> (and the drift_report read tool) renders every character that has an approved sheet and compares it with the approved one:

  • the pixel delta;
  • a before | after | difference sheet per character that moved, in .reelwright/drift/<date>/;
  • a list of the moved characters, ranked by delta, each with its likely cause: style fields, a revision since approval, or the builder version.

Locked characters that moved are errors in the report. Unlocked ones are notes.

Watch it

Restyle Marigold from style.saturday_morning to style.bright_modern. The proposal shows each crew member before and after, and re-derives the generated characters' palettes. Then restyle back, and run reelwright drift: the hand-made cast has not moved, and each re-derived palette is the one the original style gives its seed.