From 4399bc90e2f40bf2dcdb8871e31cf21a17f5376b Mon Sep 17 00:00:00 2001 From: m3ultra Date: Thu, 16 Jul 2026 00:55:42 +1000 Subject: [PATCH] =?UTF-8?q?lane=20C:=20session=20start=20=E2=80=94=20verif?= =?UTF-8?q?ied=20frozen=20contracts=20against=20live=20synthetic=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- plan/status/lane-C.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 plan/status/lane-C.md diff --git a/plan/status/lane-C.md b/plan/status/lane-C.md new file mode 100644 index 0000000..4c03135 --- /dev/null +++ b/plan/status/lane-C.md @@ -0,0 +1,37 @@ +# 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 20–150ms, 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 (intrinsics→PerspectiveCamera) matches the + video; free-roam detaches. All COLMAP→Three 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, Range→206, 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.