festifun/backend/festival4d
type-two 51650c728e foundation2 (phase 5a): contracts, stubs, hooks & UI wiring for lanes E/F/G
- DB: paths table (contract #3) + helpers; patch_anchor (label/color)
- API: GET /api/beats, POST /api/director (valid-empty degradation),
  /api/paths CRUD (validated POST -> 422), PATCH /api/anchors/{id};
  manifest gains capsule:false (test_api.py key-set lock updated consciously)
- CLI: features | direct | capsule subcommands -> lane stubs (exit-2 degradation)
- Backend stubs with frozen contracts in docstrings: audio_features, director, capsule
- Frontend: six lane stub modules imported from main.js; all phase-5 buttons
  pre-wired hidden in index.html; write-ui/body.capsule read-only mode;
  __F4D_API_BASE__ runtime override in state.js
- Hooks (contract #6): transport.captureAudioStream/releaseAudioStream,
  scene3d.focusOn, scene3d.setHelpersVisible (+registerHelper; camPath gizmos)
- Suite 121 -> 127 passed; npm build clean; live-browser verified (status file)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 17:31:08 +10:00
..
static Live capture: USB webcams, laptop cams, and phones -> data/raw 2026-07-17 15:43:51 +10:00
__init__.py Foundation (M0 + M3 + frozen contracts): scaffold, synthetic fixtures, full API 2026-07-16 00:45:55 +10:00
__main__.py Foundation (M0 + M3 + frozen contracts): scaffold, synthetic fixtures, full API 2026-07-16 00:45:55 +10:00
api.py foundation2 (phase 5a): contracts, stubs, hooks & UI wiring for lanes E/F/G 2026-07-17 17:31:08 +10:00
audio_features.py foundation2 (phase 5a): contracts, stubs, hooks & UI wiring for lanes E/F/G 2026-07-17 17:31:08 +10:00
audio_sync.py Sync solver: cache per-signal FFTs across the pairwise GCC-PHAT stage 2026-07-17 17:02:27 +10:00
capsule.py foundation2 (phase 5a): contracts, stubs, hooks & UI wiring for lanes E/F/G 2026-07-17 17:31:08 +10:00
capture.py Live capture: USB webcams, laptop cams, and phones -> data/raw 2026-07-17 15:43:51 +10:00
cli.py foundation2 (phase 5a): contracts, stubs, hooks & UI wiring for lanes E/F/G 2026-07-17 17:31:08 +10:00
config.py foundation2 (phase 5a): contracts, stubs, hooks & UI wiring for lanes E/F/G 2026-07-17 17:31:08 +10:00
db.py foundation2 (phase 5a): contracts, stubs, hooks & UI wiring for lanes E/F/G 2026-07-17 17:31:08 +10:00
director.py foundation2 (phase 5a): contracts, stubs, hooks & UI wiring for lanes E/F/G 2026-07-17 17:31:08 +10:00
events_ai.py Coordinator hotfix: Gemini model env-overridable, default gemini-3.1-flash-lite 2026-07-16 10:18:43 +10:00
frames.py Lane B (M2 + M8 geometry): COLMAP reconstruction, geometry math, graceful degradation 2026-07-16 08:40:46 +10:00
geometry.py Lane B (M2 + M8 geometry): COLMAP reconstruction, geometry math, graceful degradation 2026-07-16 08:40:46 +10:00
ingest.py Audio is the master clock + spatial audio free-roam (fresh-eyes opts 1 & feature 1) 2026-07-17 17:02:48 +10:00
resolve.py Integration (M8 + M9): annotation→3D, camera paths, README, v0.1.0 2026-07-16 09:59:51 +10:00
sfm.py Lane B (M2 + M8 geometry): COLMAP reconstruction, geometry math, graceful degradation 2026-07-16 08:40:46 +10:00
synthetic.py Foundation (M0 + M3 + frozen contracts): scaffold, synthetic fixtures, full API 2026-07-16 00:45:55 +10:00