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:
@@ -114,9 +114,21 @@
|
||||
"music_mood": { "type": "string" },
|
||||
"music_volume": { "type": "number", "minimum": 0, "maximum": 1 },
|
||||
"sfx_style": { "type": "string" },
|
||||
"ducking_threshold_db": { "type": "number" }
|
||||
},
|
||||
"additionalProperties": false
|
||||
"ducking_threshold_db": { "type": "number" },
|
||||
"voice_variation_allowed": {
|
||||
"type": "boolean",
|
||||
"default": false,
|
||||
"description": "Whether voice characteristics can shift between sections for emphasis"
|
||||
},
|
||||
"hero_moment_voice_shift": {
|
||||
"type": "string",
|
||||
"description": "How the voice should change for hero moments, e.g., 'slower, more deliberate, drop pitch'"
|
||||
},
|
||||
"transition_voice_shift": {
|
||||
"type": "string",
|
||||
"description": "How the voice should change at transitions, e.g., 'brief pause, then resume at slightly higher energy'"
|
||||
}
|
||||
}
|
||||
},
|
||||
"asset_generation": {
|
||||
"type": "object",
|
||||
@@ -172,11 +184,36 @@
|
||||
"description": "Enable color-blind safety checking for palettes.",
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"overrides": {
|
||||
"description": "Per-scene palette or rule exceptions. Up to 20% of scenes may intentionally deviate from the playbook for creative impact.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"max_deviation_ratio": {
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 0.5,
|
||||
"default": 0.2,
|
||||
"description": "Maximum fraction of scenes that may deviate from playbook defaults"
|
||||
},
|
||||
"scene_overrides": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["scene_id", "reason"],
|
||||
"properties": {
|
||||
"scene_id": { "type": "string" },
|
||||
"reason": { "type": "string", "description": "Why this scene deviates from the playbook" },
|
||||
"color_override": { "type": "object" },
|
||||
"typography_override": { "type": "object" },
|
||||
"motion_override": { "type": "object" }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
"$defs": {
|
||||
"font_spec": {
|
||||
"type": "object",
|
||||
|
||||
Reference in New Issue
Block a user