diff --git a/docs/ideas.md b/docs/ideas.md index c2b1c42..7588e5e 100644 --- a/docs/ideas.md +++ b/docs/ideas.md @@ -3,6 +3,12 @@ Parking lot for post-v0.1.0 extensions (spec Β§5 future-extensions). Not committed work β€” a place to capture direction so the prototype's scope stays honest. Roughly ordered by payoff-to-effort. +> **Status 2026-07-17:** splatting βœ… shipped (see `modelbeast-crossover.md`); spatial audio βœ… +> shipped (🎧, WebAudio master clock). Cinematic export β†’ **M12**, multi-modal audio analysis β†’ +> **M10/M11**, anchor manager β†’ **M13**, path persistence β†’ **M16** β€” all now specced in +> `plan/20-phase5.md`. Still parked here: realtime ingest, object/artist tracking, +> per-project workspaces, sync-graph visualization, per-moment splats (crossover doc Β§3). + ## Neural rendering β€” Gaussian Splatting Replace the sparse COLMAP point cloud with a **3D Gaussian Splatting** model for photorealistic free-roam instead of a dot cloud. COLMAP poses + images already feed splatting trainers diff --git a/plan/20-phase5.md b/plan/20-phase5.md new file mode 100644 index 0000000..938e6a8 --- /dev/null +++ b/plan/20-phase5.md @@ -0,0 +1,198 @@ +# Phase 5 β€” Friends, Director's Cut & Capsules (M10–M17) + +Canonical spec for the phase-5 milestones. **M0–M9 live in [`../OPUS_BUILD_INSTRUCTIONS.md`](../OPUS_BUILD_INSTRUCTIONS.md) +and every contract frozen there still applies** (timebase, DB schema, pose convention, +classifier contract, synthetic fixture). Standing protocol (status files, directives loop, +evidence discipline, worktrees) is unchanged from [`README.md`](README.md); the newest round of +[`DIRECTIVES.md`](DIRECTIVES.md) always wins. + +## Context β€” what shipped since v0.1.0 (read before planning anything) + +- **Splat rendering:** `GET /api/splat` + viewer `DropInViewer` with point-cloud fallback + (`docs/modelbeast-crossover.md`). +- **Live capture:** `FESTIVAL4D_CAPTURE=1` mounts `/capture` (README). +- **WebAudio master clock:** `t_global` derives from `AudioContext.currentTime`; + `GET /api/audio/{id}` serves a lazily-extracted stereo AAC per video; all `