Repository Public
1# Implementation plan23Vertical slices, each one tested before the next. Status is tracked in `PROGRESS.md`.45| Milestone | Slice | Exit test |6|---|---|---|7| M0 Discovery | infrastructure audit, live API verification, capability matrix, cost and threat models | docs written, one real image → video → TTS round trip |8| M1 Foundation | schema + migrations, env, storage, queue, auth (password + TOTP, sessions, RBAC, audit), design tokens | `pnpm typecheck`, migration applies on an empty DB |9| M2 Public cinema | home, vertical feed, film page, series, explore, search, about, report; player with captions | Playwright on desktop + mobile profile |10| M3 First real generation | concept → keyframe → image-to-video → stored asset → playable draft, cost ledger | one shot generated in production, ledger row = provider ticks |11| M4 Studio | Concept Lab, script, storyboard, prompt workbench, voice, captions, FFmpeg assembly, QA, approval | a multi-shot narrated film published from the studio |12| M5 Programming | series templates, scheduler, budgets, duplicate prevention, publication policy | scheduler creates a project inside the quota and stops at the cap |13| M6 Hardening | unit + e2e tests, secrets scan, health, backups, restore drill, runbook | `pnpm check`, e2e against production, restore drill |1415Decisions taken up front:16171. One repository, two processes (web, worker), PostgreSQL + Redis + filesystem assets on a single cluster node,18 deployed with the cluster's own orchestrator (`mld`) rather than Docker (the nodes are macOS; Compose file kept19 for portability).202. REST adapters for xAI (resumable `request_id`, real cost ticks) — see `provider-capabilities.md`.213. Narration over cinematic shots, sidecar WebVTT captions rendered by the player (word-timed from TTS character22 timestamps). No burned-in subtitles, no lip-sync promise.234. Native clip audio is the sound bed (ducked under narration). No third-party music at all.245. Quality over volume: default programming is at most one film per day, with a human approval before release.25