# Synthetic Production Intelligence (SPI) Evidence-backed orchestration for generative media production. Not a text-to-video wrapper: SPI plans a production as structured state, renders it through swappable model backends, verifies results with evidence-carrying metrics, and (planned) repairs only what failed. ## V0.1 status (Phase 1 — honest ledger) | Component | Status | |---|---| | `ProjectState` (versioned, mutation log, transactional deltas) | **implemented** | | Evidence schema (PASS/REPAIR/REGENERATE/REPLAN/REJECT/UNRESOLVED/BLOCKED, evidence mandatory) | **implemented** | | `ProductionGraph` (DAG, topo sort, cycle rejection) | **implemented** | | Scheduler (priority, deps, retries, timing, cache hits) | **implemented** (mock lane) | | Mock renderers + GenerationCache (§58) | **implemented** | | Level-1 deterministic verification + adaptive evaluator routing | **implemented** | | EvidenceFusion + MasterArbiter | **implemented** | | IntentEngine / IdeaEngine / ConceptEngine | **stubs** (deterministic, no LLM) — real versions Phase 5 | | OutputCompiler | **stub** (draft manifest only) | | Real video backend (Wan 2.2 primary, LTX-2 secondary) | **not started** — Phase 2 | | WorldEngine, StoryGraph, CausalGraph, RepairEngine, DirectorSim/Bench, 4K, audio | **not started** | See `docs/architecture.md` for the component map and `docs/research_report.md` for the Phase-2 backend decision (Wan 2.2, Apache-2.0; LTX-2 as fast secondary). ## Install & test ```bash pip install -e ".[dev]" pytest -q ``` Mock mode (`SPI_MODE=mock` equivalent: `SPIApi(mode="mock")`) needs no GPU. ## Minimal end-to-end (mock lane) ```python from spi.api.server import SPIApi api = SPIApi(mode="mock") r = api.create_project("A cartographer returns to the lighthouse she haunted as a child; must: no dialogue") pid = r["project_id"] api.interpret_project(pid) # intent + constraints + idea budget api.commit_concept(pid, "IDEA_001") api.compile_production(pid) # scenes -> shots -> generation DAG api.render_draft(pid) # mock renderer, cached verdict = api.evaluate_draft(pid) # level-1 checks -> fusion -> arbiter assert verdict["status"] in ("PASS", "REPAIR") print(verdict["status"], verdict["evidence"][:1]) ``` ## Operating modes - `SPI_MODE=mock` — zero GPU, deterministic artifacts (current default) - `SPI_MODE=small` — reserved for Wan 2.1-1.3B / LTX-Video-2B smoke tests (Phase 2) - `SPI_MODE=production` — reserved for Wan 2.2 A14B (Phase 2+) ## Budget policy This repo is developed under `SPI_INTERN_MODE=ultra_low`: mock-first, cached research (`docs/model_registry.json`), no training without explicit justification, one smoke test only when necessary. Usage is tracked in `artifacts/resource_ledger.json`. ## License Code: Apache-2.0. Model backends carry their own licenses — see the registry.