mirror of
https://github.com/hanzoai/video.git
synced 2026-11-03 04:21:39 +00:00
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.
2.6 KiB
2.6 KiB
Compose Director - Avatar Spokesperson Pipeline
When To Use
Render the final spokesperson outputs. The bar is simple: the presenter must look stable, speech must be clear, and subtitles or support cards must not crowd the frame.
Runtime Routing (HARD CONSTRAINT — Remotion only)
Phase 1 deferred from HyperFrames. edit_decisions.render_runtime must be "remotion". This pipeline depends on the Remotion TalkingHead composition and remotion_caption_burn — both have no HyperFrames parity in Phase 1.
- If
edit_decisions.render_runtime == "hyperframes", stop. Re-open the idea stage and surface the constraint. Silent rewrite is a governance violation. - Per AGENT_GUIDE.md → "Present Both Composition Runtimes (HARD RULE)": the lock to remotion is NOT an excuse to skip the conversation. The user deserves to know that HyperFrames exists as a runtime and why it isn't viable for avatar-spokesperson. Log a
render_runtime_selectiondecision with hyperframesrejected_because: "TalkingHead + caption parity deferred on avatar-spokesperson". - Pass
proposal_packet/brieftovideo_compose.execute()for in-tool runtime-swap detection.
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"] |
What to render |
| Tools | video_compose, audio_mixer, video_stitch, audio_enhance |
Render and audio finishing |
| Playbook | Active style playbook | Typography and layout rules |
Process
1. Render The Hero Cut First
Prefer one strong master before derivatives. Compose:
- presenter video,
- subtitles,
- lower-thirds,
- CTA cards,
- mixed narration.
2. Keep The Frame Clean
Subtitle and CTA placement matter more here than flashy transitions. Leave the face and mouth region unobstructed.
3. Verify Mouth Timing And Audio
If the avatar path used lip sync or audio-driven talking head, check:
- mouth timing,
- face artifacts,
- drift on long sections,
- audio clarity.
4. Verify Every Output
Record important findings in:
render_report.verification_notesrender_report.warningsrender_report.metadata.variant_notes
5. Quality Gate
- the output file is valid,
- speech is clear,
- subtitles stay readable,
- the presenter remains visually stable.
Common Pitfalls
- Letting subtitles cover the chin or mouth area.
- Shipping a long lip-sync render without spot-checking drift.
- Making derivative crops that cut off the presenter or CTA.