festifun/plan/status/lane-C.md
m3ultra 4399bc90e2 lane C: session start — verified frozen contracts against live synthetic API
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 00:55:42 +10:00

38 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Status — lane-C
## Round 1 — 2026-07-16 — STATUS: in_progress
**Directives acknowledged:** round 0 of plan/DIRECTIVES.md (run order C→A→D→B; C starts
first as the longest lane + earliest API-contract validation; merge when acceptance passes,
don't wait on siblings; maintain this status file; evidence discipline — a checked box names
the test/command+output that proves it).
**Acceptance checklist** (lane brief M4/M5/M6 + timeline markers):
- [ ] M4 — synchronized playback: master clock; per-video correction (hard-seek >150ms,
nudge playbackRate 20150ms, lock <20ms); out-of-range videos pause+dim; one audio
source; dev overlay per-video sync error stays <50ms during continuous playback.
- [ ] M5 3D viewer: PLY point cloud; per-video camera-path lines + current-pose frusta
(colored); OrbitControls; snap-to-camera (intrinsicsPerspectiveCamera) matches the
video; free-roam detaches. All COLMAPThree via frozen `lib/pose.js`.
- [ ] M6 anchor overlays: per-video transparent canvas, letterbox-correct; project each
anchor via pose.js camera; skip if behind (z_cam<0); corners track the stage box in
all 3 videos while playing.
- [ ] Timeline event markers: `GET /api/events` as colored markers (color by event_type,
legend); hover tooltip; click-to-jump.
- [ ] App runs against synthetic data with **no console errors**; merged to `main`.
**Done this round (session start):** verified environment and the frozen contracts against the
live server (`python -m festival4d serve`): manifest (3 videos, offsets 0/+1370/842 ms,
t_global_max 21.37), 41 registered poses/video keyed by frame_idx (centered intrinsics
fx=fy=554.26, cx=320, cy=180), 4 stage-corner anchors, 7 typed events, Range206, colored
PLY (3106 pts). Independently verified stage-corner projection lands all 4 corners in-frame,
in front of the camera, for all 3 videos (cam0 left, cam1 front-center, cam2 right; centers on
an arc at radius ~9.5) so M5/M6 geometry is sound before writing render code.
**Blockers / questions for coordinator:** none. No change requests the frozen API/pose/
timebase contracts are sufficient for the whole lane as-is.
**Next:** build in dependency order state transport (verify M4 + dev sync overlay first,
per brief) videoGrid timeline scene3d overlays; verify live in-browser; adversarial
review pass; merge.