Product Boundaries

April 24, 2026 · View on GitHub

The layers, what each owns, and which surface is canonical during the migration. Derived from section 7 and section 11 of the findings doc.

Layer map

LayerOwnsCallersTarget location
ContractsTyped content schema, result shapes, validatorsRuntime, skills, scripts, CLIsrc/contracts/ package
RuntimeDeterministic media execution, rendering, validationScripts, skills, CLIsrc/runtime/ package
Scripts/hooksReproducible deterministic entry pointsHarnesses, local agents, humansscripts/
SkillsHarness-facing content playbooks + invocationsClaude Code / Codex / OpenCodeskills/ (new)
AdaptersExternal-system bridges (MCP, platform connectors)Runtime (optional)connectors/, MCP adapter
CLIThin local shell over the runtimeHumans, local agentssrc/cli/ (thin)

Contract layer

Typed contracts for scripts, scenes, renders, evaluation results, and validation reports. Everything else depends on this package. Contracts never import runtime internals.

Keep small, stable, and versioned. Treat as public API.

Runtime layer

Media execution core: TTS, captions, timing, rendering, concatenation, QC. Deterministic. Takes a contract in, emits a contract + artifact out. Can be used offline for fixtures. No agentic reasoning here.

Scripts / hooks layer

Thin deterministic scripts around the runtime. Examples: ingest a topic brief, render from a frozen contract, prep a publish payload. Each script is reproducible, log-structured, and callable from any harness or local agent.

Skills layer

Harness skills own the agentic layer: brief generation, archetype selection, hook design, reverse-engineering winners, edit review. Skills invoke runtime/scripts; they do not re-implement them.

Adapter layer

Optional bridges:

  • MCP for tools the harness should call directly
  • platform connectors for upload/publish
  • research adapters for external signal sources

Adapters are loadable extensions, not required paths.

CLI layer

Kept only as a thin local shell. Not a product surface. Phase 5 decides whether it stays thin, is kept for specific workflows, or is removed entirely.

Dependency direction

contracts  ←  runtime  ←  scripts  ←  skills
                      ↖           ↙
                       cli (thin)
                   adapters (optional)

Nothing below the line imports upward. Skills never reach into runtime internals; they call scripts or the runtime public API.