festifun/backend/festival4d
type-two 8f2a488c51 foundation3 (M18): complete Friend-Tracks foundation — fixture ground truth, contracts, stubs
Completes M18 on top of the WIP checkpoint (6a703c3). Three lanes (H/J/K) depend only on
what this freezes.

- synthetic.py: base testsrc2 saturation/brightness-muted so its magenta/cyan colour bars
  don't swamp lane H's colour detector; the two moving markers stay the only detectable blobs.
- Frontend (step 6): friendTracks.js stub (never-throws, fx.js pattern) wired into main.js;
  hidden #btn-friends + #friends-panel; state.tracks loaded when manifest.has_tracks.
- Tests (step 8): test_tracks_foundation.py (20) — DB helpers, /api/tracks routes, solve
  degradation, manifest.has_tracks, frozen OOK protocol + encoders, track_truth shape, the
  projection round-trip (rendered pixels back-project to 3D truth, worst err <1e-3 → lane H's
  median<0.3 reachable by construction), and a real-ffmpeg render test proving marker A is the
  dominant magenta blob after base-muting.
- CR-6: the two sanctioned M18 test-lock edits (test_api manifest key-set +has_tracks;
  test_capsule bundle paths +api/tracks). Additive; flagged for integration3 ratification.

Suite: 14 pre-existing files sum to 189 (floor held) + 20 new = 209 passed, exit 0.
Frontend `npm run build` clean. Do NOT merge — coordinator reviews + merges (DIRECTIVES R6 #3).

Recovered by the coordinator session after the foundation3 agent's isolation worktree was
removed mid-run, leaving the work uncommitted; every file independently reviewed, full suite +
build re-run green, then committed. No work redone.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 21:18:53 +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 foundation3 WIP checkpoint (steps 2-5,7): DB/API/CLI/config/capsule + tracker stubs 2026-07-17 20:55:29 +10:00
audio_features.py M10: audio features — beats & onsets from the reference ingest WAV 2026-07-17 17:48:31 +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 foundation3 WIP checkpoint (steps 2-5,7): DB/API/CLI/config/capsule + tracker stubs 2026-07-17 20:55:29 +10:00
capture.py Live capture: USB webcams, laptop cams, and phones -> data/raw 2026-07-17 15:43:51 +10:00
cli.py foundation3 WIP checkpoint (steps 2-5,7): DB/API/CLI/config/capsule + tracker stubs 2026-07-17 20:55:29 +10:00
config.py foundation3 WIP checkpoint (steps 2-5,7): DB/API/CLI/config/capsule + tracker stubs 2026-07-17 20:55:29 +10:00
db.py foundation3 WIP checkpoint (steps 2-5,7): DB/API/CLI/config/capsule + tracker stubs 2026-07-17 20:55:29 +10:00
director.py M11: auto-director — top-N events -> beat-snapped camPath (backend + UI) 2026-07-17 17:51:52 +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 foundation3 (M18): complete Friend-Tracks foundation — fixture ground truth, contracts, stubs 2026-07-17 21:18:53 +10:00
tracker_detect.py foundation3 WIP checkpoint (steps 2-5,7): DB/API/CLI/config/capsule + tracker stubs 2026-07-17 20:55:29 +10:00
tracker_solve.py foundation3 WIP checkpoint (steps 2-5,7): DB/API/CLI/config/capsule + tracker stubs 2026-07-17 20:55:29 +10:00