spec 0028 · 0029 §8 — studio IA decision

Where does media generation live?

Both paths give Produce a real media-making surface — a shared card spine and a right column that generates, auditions and picks each card's VO + illustration, plus the contact-sheet text-leak screen. They differ on one thing: whether media generation also stays in the Author editor, or moves out so Author is purely for shaping.

panel generates media (VO / illustration / cover) panel shapes structure & fields only
A

Additive — Produce gains a media surface; Author keeps its inline loop

lower risk

Author's editor is untouched: you still generate VO and illustrations right where you write the card. Produce adds its own MediaGen (VO + illustration) and ContactSheet on the right. Fast to ship and the authoring loop is undisturbed — but media generation now lives in two places, so "where do I regenerate this?" has two answers.

Author — shape the reel

keryx studio AuthorProducePublish ● unsaved
Reels
ci-linear
afmpeg-fs
oauth-core
on a linear history
01
02
03
Card editor gen
text · narration · roles · flags
On-screen text…
VO takes
Illustration
Associated
source · bundle · cover

Produce — make the media

keryx studio AuthorProducePublish Saved
Reels
ci-linear
afmpeg-fs
oauth-core
01
02
03
9:16 preview hero · render / cancel
MediaGen gen
selected card · VO + illustration
£0.04pick ✓
ContactSheet
text-leak screen
⚠ overlap Media generation appears on both Author and Produce. Simplest to build and the authoring loop is preserved, but the two amber panels blur responsibility — a later slice still has to reconcile which surface owns regeneration.
B

Full move — shaping on Author, making on Produce

bigger change

Author becomes purely about structure: the card inspector is fields only (text · narration · roles · flags) beside Associated. All generation — VO + illustration, cover, the record action — moves to Produce's right column, joined by ContactSheet and a Spend & quota readout. One clean answer to "where do I make media", at the cost of a heavier change that touches the authoring loop you iterate in.

Author — shape only, no generation

keryx studio AuthorProducePublish ● unsaved
Reels
ci-linear
afmpeg-fs
oauth-core
on a linear history
01
02
03
Card inspector
text · narration · roles · flags — fields only
On-screen text…
Narration (VO)…
accent role
Associated
source · bundle · cover

Produce — the one home for media

keryx studio AuthorProducePublish Saved
Reels
ci-linear
afmpeg-fs
oauth-core
01
02
03
9:16 preview hero · render / cancel
MediaGen gen
selected card · VO + illustration · record
£0.04pick ✓
ContactSheet
text-leak screen
Spend & quota
ElevenLabs68%
this reel£0.31
✓ single home Exactly one amber surface: shape on Author, make on Produce. Cleanest mental model and it realises the 0028 §3.2 end-state (CardInspector vs MediaGenPanel) in one go — but it's a larger change that reworks the authoring loop and needs its own godog/Playwright pass.

Side by side

 A · AdditiveB · Full move
Author rightCard editor with inline VO + illustration genCard inspector — fields only + Associated
Produce rightMediaGen (VO + illustration) · ContactSheetMediaGen (VO + illustration + record) · ContactSheet · Spend & quota
Media gen livestwo placesone place
Authoring loopuntouched generate where you writereworked hop to Produce to generate
Build sizesmall additive, no removalslarge gut + rewire the editor
Responsibilityblurred two amber surfacesclean shape vs make
Reconcile later?yes a follow-up sliceno spec end-state now

Both honour your Illustration + VO call for the Produce-right MediaGen. The real trade is DevEx vs. clarity: A keeps generation one keystroke from where you write (and defers the responsibility question); B commits to a clean shape → make split now, at the cost of a heavier change to the loop you iterate in. Either can be the first slice — B just carries more of the 0028 §3.2 decomposition in one push.