Files
calesthio 50891a75b7 hyperframes: add HTML/CSS/GSAP as a parallel composition runtime
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.
2026-04-18 18:37:00 -07:00

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 using CinematicRenderer. 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. See skills/core/hyperframes.md. hyperframes lint and hyperframes validate must 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_treatment
  • grade_profile
  • mix_notes
  • variant_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.