festifun/backend/tests
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
..
conftest.py Foundation (M0 + M3 + frozen contracts): scaffold, synthetic fixtures, full API 2026-07-16 00:45:55 +10:00
test_api.py foundation3 (M18): complete Friend-Tracks foundation — fixture ground truth, contracts, stubs 2026-07-17 21:18:53 +10:00
test_audio_features.py M10: audio features — beats & onsets from the reference ingest WAV 2026-07-17 17:48:31 +10:00
test_audio_sync.py Sync solver: cache per-signal FFTs across the pairwise GCC-PHAT stage 2026-07-17 17:02:27 +10:00
test_capsule.py foundation3 (M18): complete Friend-Tracks foundation — fixture ground truth, contracts, stubs 2026-07-17 21:18:53 +10:00
test_capture.py Live capture: USB webcams, laptop cams, and phones -> data/raw 2026-07-17 15:43:51 +10:00
test_director.py M11: auto-director — top-N events -> beat-snapped camPath (backend + UI) 2026-07-17 17:51:52 +10:00
test_events_ai.py lane D (M7): audio moment detection + pluggable AI classification 2026-07-16 08:34:56 +10:00
test_geometry.py Lane B (M2 + M8 geometry): COLMAP reconstruction, geometry math, graceful degradation 2026-07-16 08:40:46 +10:00
test_ingest.py Lane A (M1): ingest + GCC-PHAT audio sync 2026-07-16 01:13:56 +10:00
test_paths.py lane G M16: deepen paths-route coverage (30 tests) 2026-07-17 17:48:22 +10:00
test_phase5_api.py Merge main (lane G M16/M17 + CR-4) into lane/e-director2; reconcile CRs 2026-07-17 17:58:22 +10:00
test_resolve.py Phase 4 polish: anchor supersede + delete, docs/ideas, field-test scaffolding 2026-07-16 12:15:35 +10:00
test_sfm.py Lane B (M2 + M8 geometry): COLMAP reconstruction, geometry math, graceful degradation 2026-07-16 08:40:46 +10:00
test_synthetic.py Foundation (M0 + M3 + frozen contracts): scaffold, synthetic fixtures, full API 2026-07-16 00:45:55 +10:00
test_tracks_foundation.py foundation3 (M18): complete Friend-Tracks foundation — fixture ground truth, contracts, stubs 2026-07-17 21:18:53 +10:00