Implementation spec: governance, decision intelligence, theme system, and E2E bug fixes
Implements the 2026-04-02 transformation spec (Phases 1-8) and fixes all critical bugs found during 5-pipeline E2E testing. Governance & Decision Intelligence: - Pipeline-specific stage order in checkpoint (replaces global STAGES list) - Provider scoring engine (lib/scoring.py) with 7-dimension weighted ranking - Decision log artifact enforced at proposal/idea stage across all 10 pipelines - Delivery promise classifier prevents silent motion-to-still downgrades - Structured shot language in scene_plan schema (camera, lens, lighting, DOF) - Variation checker and slideshow risk scorer block samey output before render - Creative intake, capability extension, and creative-intake meta skills - Final self-review artifact with 5 mandatory checks before presenting output - Source media review contract for user-supplied footage Render & Theme System: - Remotion AnimatedBackground now derives colors from playbook (no more hardcoded dark blue fintech gradient on every video) - video_compose builds custom ThemeConfig from playbook YAML colors/fonts — custom playbooks flow through to Remotion automatically - Explainer component wires theme to all child components (charts, cards, etc.) - resolveAsset() handles absolute paths on Windows/Unix via file:// URIs - RENDERER_FAMILY_MAP synced with actual Remotion compositions Critical Bug Fixes: - Windows npx subprocess: run_command() resolves .cmd wrappers via shutil.which() - Silent renderer downgrade: Remotion failure now returns explicit error with options instead of silently falling back to FFmpeg - .env inline comment parsing strips trailing # comments from API keys - concat_path UnboundLocalError in video_compose finally block - audio_mixer and showcase_card capture=True kwarg bug - Selector estimate_cost() calls fixed (_select_tool -> _select_best_tool) - asset_manifest schema expanded with provider, license, subtype fields - screen-demo subtitle_gen moved from required to optional tools - Duration drift detection in post-render final review (>25% warns)
This commit is contained in:
@@ -9,7 +9,7 @@ This stage prepares the actual animated ingredients: narration, diagrams, math r
|
||||
| Layer | Resource | Purpose |
|
||||
|-------|----------|---------|
|
||||
| Schema | `schemas/artifacts/asset_manifest.schema.json` | Artifact validation |
|
||||
| Prior artifacts | `state.artifacts["scene_plan"]["scene_plan"]`, `state.artifacts["script"]["script"]`, `state.artifacts["idea"]["brief"]` | Tool path and beat map |
|
||||
| Prior artifacts | `state.artifacts["scene_plan"]["scene_plan"]`, `state.artifacts["script"]["script"]`, `state.artifacts["proposal"]["proposal_packet"]` | Tool path and beat map |
|
||||
| Tools | `tts_selector`, `image_selector`, `video_selector`, `math_animate`, `diagram_gen`, `code_snippet`, `music_gen` — selectors auto-discover all available providers from the registry | Asset production options |
|
||||
| Playbook | Active style playbook | Visual consistency |
|
||||
|
||||
@@ -95,8 +95,38 @@ Recommended metadata keys:
|
||||
- missing capabilities are surfaced honestly,
|
||||
- every referenced file exists.
|
||||
|
||||
### Mid-Production Fact Verification
|
||||
|
||||
If you encounter uncertainty during asset generation:
|
||||
- Use `web_search` to verify visual accuracy of subjects (e.g. what does this building actually look like?)
|
||||
- Use `web_search` to find reference images before generating illustrations
|
||||
- Log verification in the decision log: `category="visual_accuracy_check"`
|
||||
|
||||
Visual accuracy matters. If the script mentions a specific place, person, or object,
|
||||
verify what it actually looks like before generating images. Don't rely on
|
||||
the AI model's training data — it may be wrong or outdated.
|
||||
|
||||
## Common Pitfalls
|
||||
|
||||
- Using high-variance generation when a deterministic asset would work better.
|
||||
- Rebuilding the same title or label system repeatedly.
|
||||
- Hiding failed asset paths instead of reporting them.
|
||||
|
||||
|
||||
## When You Do Not Know How
|
||||
|
||||
If you encounter a generation technique, provider behavior, or prompting pattern you are unsure about:
|
||||
|
||||
1. **Search the web** for current best practices — models and APIs change frequently, and the agent's training data may be stale
|
||||
2. **Check `.agents/skills/`** for existing Layer 3 knowledge (provider-specific prompting guides, API patterns)
|
||||
3. **If neither helps**, write a project-scoped skill at `projects/<project-name>/skills/<name>.md` documenting what you learned
|
||||
4. **Reference source URLs** in the skill so the knowledge is traceable
|
||||
5. **Log it** in the decision log: `category: "capability_extension"`, `subject: "learned technique: <name>"`
|
||||
|
||||
This is especially important for:
|
||||
- **Video generation prompting** — models respond to specific vocabularies that change with each version
|
||||
- **Image model parameters** — optimal settings for FLUX, DALL-E, Imagen differ and evolve
|
||||
- **Audio provider quirks** — voice cloning, music generation, and TTS each have model-specific best practices
|
||||
- **Remotion component patterns** — new composition techniques emerge as the framework evolves
|
||||
|
||||
Do not rely on stale knowledge. When in doubt, search first.
|
||||
|
||||
@@ -164,7 +164,32 @@ Note: This approach is not yet proven in the OpenMontage pipeline.
|
||||
- **Always offer at least one free/local option** alongside paid approaches
|
||||
- **Never silently downgrade** — if the best approach needs a key the user doesn't have, say so explicitly
|
||||
|
||||
### Step 4: Design Concept Options
|
||||
### Step 3d: Mood Board (Before Concepts)
|
||||
|
||||
Before developing full concepts, present a quick mood board to catch direction mismatches early:
|
||||
|
||||
- **3-5 reference images** (animation style examples from web search — show what each approach LOOKS like)
|
||||
- **Color palette direction** (2-3 options, e.g. clean data-viz vs vibrant motion graphics vs sketchy hand-drawn)
|
||||
- **Tone references** ("Think: 3Blue1Brown meets Kurzgesagt" or "Think: Pixar short meets infographic")
|
||||
- **1-2 animation style samples** (if Manim: mathematical elegance; if Remotion: smooth data transitions; if AI video: cinematic motion)
|
||||
|
||||
Ask: **"Does this FEEL like what you're imagining? Any of these off-track?"**
|
||||
|
||||
This catches style misalignment before concept design. If the user expected hand-drawn and you're heading toward data-viz, better to know now.
|
||||
|
||||
### Step 4: Progressive Reveal and Concept Design
|
||||
|
||||
Don't dump the full proposal at once. Build understanding step by step:
|
||||
|
||||
1. **Research summary** (2-3 sentences): "Here's what I found..."
|
||||
→ User reacts, course-corrects if needed.
|
||||
2. **Mood board** (from Step 3d — already presented)
|
||||
→ User confirms animation style direction.
|
||||
3. **Concept options** (3+ approaches):
|
||||
→ Present below.
|
||||
4. **Invite mixing** (see Step 4c below).
|
||||
5. **Production plan for selected concept** (tools, cost, timeline):
|
||||
→ User approves budget and approach.
|
||||
|
||||
Build **at least 3 genuinely different concepts.** Start from the `angles_discovered` in the research brief and the animation mode analysis.
|
||||
|
||||
@@ -233,6 +258,13 @@ Present all concepts clearly to the user. For each concept, show:
|
||||
4. **Duration** — how long
|
||||
5. **Reuse strategy** — "5 scenes built from 2 templates" vs "8 unique scenes"
|
||||
|
||||
#### Step 5b: Invite Mixing
|
||||
|
||||
After presenting concepts, always say something like:
|
||||
> "You can also mix elements — for example, Concept A's hook with Concept C's animation approach, or Concept B's narrative with Concept A's visual style. What speaks to you?"
|
||||
|
||||
If the user mixes, create a new hybrid concept entry in the proposal_packet with clear attribution: "Hook from Concept A, animation approach from Concept C, narrative structure from Concept B."
|
||||
|
||||
Let the user select, combine, modify, or redirect.
|
||||
|
||||
Record the selection in `selected_concept` with rationale and any modifications.
|
||||
@@ -351,3 +383,22 @@ Validate the `proposal_packet` artifact against `schemas/artifacts/proposal_pack
|
||||
- **Ignoring mathematical accuracy**: If the research brief flagged technical accuracy constraints, the concept MUST respect them. A beautiful but wrong animation is a failure.
|
||||
- **Not distinguishing image_animation from clip_video**: These are fundamentally different. Image-based animation (Approach A) generates still images and uses Remotion for motion/crossfade. Clip-based video (Approach B) generates actual video clips with an AI video model. The user should understand this distinction clearly.
|
||||
- **Silent downgrades**: If the user picked image_animation but image generation fails, STOP and tell them. Never silently fall back to text cards or diagram stills.
|
||||
|
||||
|
||||
## When You Do Not Know How
|
||||
|
||||
If you encounter a generation technique, provider behavior, or prompting pattern you are unsure about:
|
||||
|
||||
1. **Search the web** for current best practices — models and APIs change frequently, and the agent's training data may be stale
|
||||
2. **Check `.agents/skills/`** for existing Layer 3 knowledge (provider-specific prompting guides, API patterns)
|
||||
3. **If neither helps**, write a project-scoped skill at `projects/<project-name>/skills/<name>.md` documenting what you learned
|
||||
4. **Reference source URLs** in the skill so the knowledge is traceable
|
||||
5. **Log it** in the decision log: `category: "capability_extension"`, `subject: "learned technique: <name>"`
|
||||
|
||||
This is especially important for:
|
||||
- **Video generation prompting** — models respond to specific vocabularies that change with each version
|
||||
- **Image model parameters** — optimal settings for FLUX, DALL-E, Imagen differ and evolve
|
||||
- **Audio provider quirks** — voice cloning, music generation, and TTS each have model-specific best practices
|
||||
- **Remotion component patterns** — new composition techniques emerge as the framework evolves
|
||||
|
||||
Do not rely on stale knowledge. When in doubt, search first.
|
||||
|
||||
@@ -9,7 +9,7 @@ Package the animation so the metadata, thumbnail concept, and platform framing r
|
||||
| Layer | Resource | Purpose |
|
||||
|-------|----------|---------|
|
||||
| Schema | `schemas/artifacts/publish_log.schema.json` | Artifact validation |
|
||||
| Prior artifacts | `state.artifacts["compose"]["render_report"]`, `state.artifacts["idea"]["brief"]`, `state.artifacts["script"]["script"]` | Final outputs and topic framing |
|
||||
| Prior artifacts | `state.artifacts["compose"]["render_report"]`, `state.artifacts["proposal"]["proposal_packet"]`, `state.artifacts["research"]["research_brief"]`, `state.artifacts["script"]["script"]` | Final outputs and topic framing |
|
||||
| Playbook | Active style playbook | Visual naming consistency |
|
||||
|
||||
## Process
|
||||
|
||||
@@ -9,7 +9,7 @@ You are converting the script into a feasible animation plan. This is the stage
|
||||
| Layer | Resource | Purpose |
|
||||
|-------|----------|---------|
|
||||
| Schema | `schemas/artifacts/scene_plan.schema.json` | Artifact validation |
|
||||
| Prior artifacts | `state.artifacts["script"]["script"]`, `state.artifacts["idea"]["brief"]` | Beat map and tool path |
|
||||
| Prior artifacts | `state.artifacts["script"]["script"]`, `state.artifacts["proposal"]["proposal_packet"]` | Beat map and tool path |
|
||||
| Playbook | Active style playbook | Palette, typography, motion consistency |
|
||||
|
||||
## Process
|
||||
|
||||
@@ -107,6 +107,17 @@ Before submitting the script, verify:
|
||||
- [ ] Mathematical accuracy is maintained (if applicable)
|
||||
- [ ] Later stages can map scenes cleanly from this script
|
||||
|
||||
### Mid-Production Fact Verification
|
||||
|
||||
If you encounter uncertainty during script writing:
|
||||
- Use `web_search` to verify factual claims before committing them to the script
|
||||
- Use `web_search` to find reference images for visual accuracy
|
||||
- Log verification in the decision log: `category="visual_accuracy_check"`
|
||||
|
||||
Every factual claim in the script should be traceable to the `research_brief`.
|
||||
If you make a claim that isn't in the research, do additional research and
|
||||
add the source. Do not invent statistics, dates, or attributions.
|
||||
|
||||
## Common Pitfalls
|
||||
|
||||
- **Writing too many ideas into one section.** One beat = one visual idea.
|
||||
|
||||
Reference in New Issue
Block a user