DEC-0009: Orchestration Change — Cursor Takes the Lead
Date: 2026-03-22 Decision by: Human Status: Active Supersedes: Partial supersession of DEC-0001 (three-agent system roles unchanged, orchestration layer changed)
Context
Perplexity Computer was serving as the top-level orchestrator, intended to delegate execution to Cursor (local code/automation) and Claude Code (editorial/scripts). In practice, Perplexity:
- Ran media generation (TTS, video assembly, image processing) in ephemeral cloud virtual machines instead of delegating locally
- Provisioned API keys inside sandboxes that were destroyed — keys, assets, and hours of work lost
- Committed metadata for 109 images when only 10 existed on disk
- Attempted video assembly twice in the cloud; both failed
- Hit rate limits from sandbox IP addresses on Wikimedia downloads
- Created merge conflicts with duplicate YAML keys in 42+ KB entries
- Spent hundreds of dollars in API costs with nothing durable to show
Decision
Cursor is now the orchestration agent. The three-agent system (DEC-0001) remains, but with revised orchestration:
- Cursor drives task sequencing, pipeline execution, local media generation, site development, and quality control
- Claude Code handles editorial voice passes, script drafting, and KB content enrichment — delegated by Cursor or human
- Perplexity handles external research, fact-checking, and bulk KB population — delegated by human only, with explicit scope boundaries
Rules
- No media generation in cloud workspaces. All audio, image, and video generation runs locally via Cursor or Adobe CC.
- No API key provisioning in ephemeral environments. All keys live in
.env.localor Vercel env vars. - No metadata without assets. Never commit IMG/audio/video metadata unless the actual file exists on disk or Blob.
- Perplexity's scope is research and text. It writes markdown, YAML, and nothing else. No scripts, no API calls, no media.
- Manifest is the coordination layer.
episodes/{id}/manifest.yamlis the single source of truth for production state.
Consequences
- Production pipeline v2 (docs/production-pipeline.md) governs all episode production
- Voice config updated to Gemini 2.5 Pro TTS (Schedar), the voice actually selected for S1E1
- docs/ reorganized into clean structure with archived ephemeral files
- Gemini TTS generation script written (scripts/voice-generate-gemini.mjs)