Files
OpenMontage/schemas/artifacts/script.schema.json

105 lines
3.9 KiB
JSON
Raw Permalink Normal View History

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "openmontage/artifacts/script",
"title": "Production Script",
"description": "Timestamped script produced by the Script Writer agent.",
"type": "object",
"required": ["version", "title", "total_duration_seconds", "sections"],
"properties": {
"version": { "type": "string", "const": "1.0" },
"title": { "type": "string" },
"total_duration_seconds": { "type": "number", "minimum": 1 },
2026-06-29 12:08:37 -07:00
"voice_performance": {
"type": "object",
"description": "Narration delivery contract used by TTS asset generation.",
"properties": {
"performance_intent": { "type": "string" },
"pacing_profile": {
"type": "string",
"enum": ["contemplative", "conversational", "energetic", "technical", "cinematic", "custom"]
},
"energy_curve": { "type": "string" },
"pause_policy": { "type": "string" },
"sample_section_id": {
"type": "string",
"description": "Most performance-sensitive section to use for TTS sample approval."
},
"provider_notes": {
"type": "object",
"additionalProperties": { "type": "string" }
}
},
"additionalProperties": false
},
"sections": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "text", "start_seconds", "end_seconds"],
"properties": {
"id": { "type": "string" },
"label": { "type": "string" },
"text": { "type": "string" },
"start_seconds": { "type": "number", "minimum": 0 },
"end_seconds": { "type": "number", "minimum": 0 },
"speaker_directions": { "type": "string" },
2026-06-29 12:08:37 -07:00
"delivery_cues": {
"type": "object",
"description": "Structured voice-performance cues that TTS generation must apply.",
"properties": {
"pace": {
"type": "string",
"enum": ["slow", "measured", "conversational", "brisk", "fast", "custom"]
},
"energy": { "type": "string" },
"emphasis_words": {
"type": "array",
"items": { "type": "string" }
},
"pause_before_seconds": { "type": "number", "minimum": 0 },
"pause_after_seconds": { "type": "number", "minimum": 0 },
"delivery_note": { "type": "string" },
"provider_text": {
"type": "string",
"description": "Provider-ready narration text, including purposeful punctuation or SSML break tags when supported."
}
},
"additionalProperties": false
},
"enhancement_cues": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": { "type": "string", "enum": ["overlay", "broll", "diagram", "stat_card", "code_snippet", "animation"] },
"description": { "type": "string" },
"timestamp_seconds": { "type": "number" }
},
"required": ["type", "description"]
}
},
"pronunciation_guides": {
"type": "array",
"items": {
"type": "object",
"properties": {
"word": { "type": "string" },
"phonetic": { "type": "string" }
},
"required": ["word", "phonetic"]
}
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)
2026-04-03 09:35:09 -07:00
},
"source_ref": {
"type": "string",
"description": "Reference to the research_brief data point or URL that supports this claim. Every factual claim should be traceable."
}
},
"additionalProperties": false
},
"minItems": 1
},
"metadata": { "type": "object" }
},
"additionalProperties": false
}