Separates creative grammar (renderer_family) from technical engine (render_runtime) so HyperFrames can stand alongside Remotion as a first-class runtime instead of masquerading as a Remotion sub-case. Locks runtime choice at proposal stage and enforces it end-to-end: the schemas require it, video_compose routes by it, the reviewer fails closed on silent swaps, and a parametrized contract test walks every pipeline manifest to ensure each planning-stage skill explains the conversation to the user. Adds hyperframes_compose (scaffold/lint/ validate/render/doctor/add_block), a playbook -> CSS style bridge, and vendored HyperFrames Layer 3 skills from commit d291358, pinned via PROVENANCE.md for future re-sync. Final_review now records render_runtime_used and runtime_swap_detected so compose lies are catchable after the fact.
3.8 KiB
Compose Director - Cinematic Pipeline
When To Use
Render the cinematic piece with careful attention to grade, audio dynamics, and frame treatment. This is not a generic export step.
Runtime Routing (MANDATORY first step)
Read edit_decisions.render_runtime. Cinematic work routes to:
render_runtime="remotion"— default for video-led trailers usingCinematicRenderer. Keeps video clips, transitions, and ambient overlays in one React-based pass.render_runtime="hyperframes"— for kinetic title cards, HTML/GSAP-driven trailers, or launch-reel-style compositions where the visual grammar is HTML/CSS. Seeskills/core/hyperframes.md.hyperframes lintandhyperframes validatemust both pass before render.render_runtime="ffmpeg"— simple source-footage concat with no composition.
delivery_promise.motion_required=true means the locked runtime is a commitment. Silent swap to another runtime (including FFmpeg Ken Burns) is a CRITICAL governance violation. If the locked runtime fails, escalate per AGENT_GUIDE.md > "Escalate Blockers Explicitly."
Pass proposal_packet to video_compose.execute() so the tool's runtime_swap_detected check compares directly against proposal_packet.production_plan.render_runtime. Without it the swap check is skipped in-tool and only the reviewer skill catches the drift.
Prerequisites
| Layer | Resource | Purpose |
|---|---|---|
| Schema | schemas/artifacts/render_report.schema.json |
Artifact validation |
| Prior artifacts | state.artifacts["edit"]["edit_decisions"], state.artifacts["assets"]["asset_manifest"] |
Edit plan and media assets |
| Tools | video_compose, audio_mixer, video_stitch, video_trimmer, color_grade, audio_enhance |
Render and finishing |
| Playbook | Active style playbook | Finish consistency |
Process
0. Check Hard Requirements Before Rendering
If the approved brief or scene plan makes motion a hard requirement, verify that the render path still preserves that promise.
- If Remotion is required and unavailable or failing, stop and bubble the issue to the user immediately.
- Do not switch to an FFmpeg-only still-image fallback for a motion-led trailer, teaser, or agent video.
- Do not convert the piece into an animatic unless the user explicitly approves that downgrade.
- If the render engine changes materially, tell the user before rendering and explain why.
Mandatory Remotion preflight (run before every render when the scene plan includes any Remotion scene type — title cards, stat cards, anime/hero_title, end-tag, overlays):
python -c "
from tools.tool_registry import registry
registry.discover()
info = registry.get('video_compose').get_info()
print('Render engines:', info.get('render_engines'))
print('Remotion note:', info.get('remotion_note'))
"
If Remotion is not in the available render engines, stop and report to the user per the Decision Communication Contract. Do not substitute a reduced-fidelity render path without approval.
1. Use Frame Treatment Deliberately
Only use letterbox, 24fps intent, or heavy grading if they help the piece. Do not apply them because the pipeline name says cinematic.
2. Preserve Audio Dynamics
The mix should allow:
- quiet moments,
- impact moments,
- clear dialogue or narration,
- controlled music swells.
3. Verify The Final Mood
Check:
- opening frame,
- reveal beat,
- final landing,
- subtitle readability where relevant.
4. Use Render Metadata
Recommended metadata keys:
frame_treatmentgrade_profilemix_notesvariant_outputs
Common Pitfalls
- Flattening the audio so the piece loses dynamics.
- Applying letterbox to footage that needs every pixel.
- Letting grading or sharpening damage faces or text.
- Silently swapping a blocked Remotion render for a lower-fidelity still-image export.