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_showproposes switchingshow.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 statuscompares 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:
- The switch:
show.jsonstyle becomes the new style. - 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. Onlypalettechanges; shape, costume cut and name stay. A character whose hand-set colors the style rejects is listed, not changed. - 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.