DIRECTIVES round 3: v0.1.0 accepted; phase 4 = anchor polish + real-footage field test

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-07-16 10:06:01 +10:00
parent d313c8dce8
commit b83e577870

View File

@ -4,6 +4,51 @@ Written **only** by the coordinator (the human's planning session). Agents: read
--- ---
## Round 3 — 2026-07-16 — Integration review: v0.1.0 ACCEPTED; polish + field test next
**Coordinator review of the integration work (independently verified):** `main` == `origin/main`
(d313c8d), tag `v0.1.0` on e5d6b2c. Re-ran the suite: **101 passed**; frontend build clean. The
M8 acceptance test is faithful (forward-projects ground truth, no self-confirmation); `resolve.py`
is clean orchestration over lane B's frozen primitives; CR-1/CR-2 correctly adjudicated and
strictly additive; camPath's Catmull-Rom parameterization maps exactly to three.js segment
lookup (checked). The live-browser M8/M9 verification methodology was sound given the
hidden-tab rAF throttle. **v0.1.0 accepted.**
**Ratification:** Round 2 was written by the integration agent; DIRECTIVES.md is coordinator-only.
Content verified accurate — ratified as written. Rule stands for future rounds.
**Review findings (all polish; none block the tag):**
1. **Anchor stacking — the one real wart.** Each annotation creates a NEW anchor, so the
documented two-view "refine" flow leaves BOTH the view-1 fallback anchor and the view-2
triangulated anchor, identically labeled (reproduced: 2 anchors for 1 object). On real
footage the fallback can be far off and there is no way to remove it — no
`DELETE /api/anchors/{id}`, no UI delete.
2. `docs/ideas.md` (spec §5 future-extensions note) was never created.
3. Human focused-browser M4 sync eyeball still open (carried from Round 2).
**Directives — Phase 4 (one agent, branch `phase4/polish-field-test`):**
1. **Polish pass (small, do first):**
- When an annotation resolves for an event that already has a resolved anchor from a prior
annotation of the same event, **update that anchor in place** (supersede the fallback with
the triangulation) instead of creating a sibling. Keep per-annotation `resolved_anchor_id`
history consistent.
- Add `DELETE /api/anchors/{id}` + a small delete affordance in the UI (e.g. in the
annotation panel or anchor list). Additive API only; file a CR entry noting it.
- Create `docs/ideas.md` (gaussian splatting, MP4 fly-through export, realtime ingest,
multi-modal audio analysis — from the spec's future-extensions list).
- Suite must stay ≥ 101; add tests for supersede + delete.
2. **Field test protocol (the real milestone):** when the user drops 24 real overlapping clips
into `data/raw/`, run `ingest → sync → reconstruct → events → serve`; record in
`plan/status/phase4.md`: per-pair sync confidence, offsets, COLMAP registration rate,
which milestones survived contact with real footage. **File failures as entries in a new
`plan/ISSUES.md` rather than rushing fixes** (per plan/10-integration.md item 4).
3. Maintain `plan/status/phase4.md`; same evidence discipline.
**For the human (unchanged + one new):** (a) open the app in a normal focused browser window
once and confirm the sync panel stays green during continuous playback; (b) shoot or collect
24 overlapping clips of the same performance for the field test; (c) optionally set
`GEMINI_API_KEY` before `events` to see real moment labels.
## Round 2 — 2026-07-16 — Integration complete; v0.1.0 shipped ## Round 2 — 2026-07-16 — Integration complete; v0.1.0 shipped
**Integration merged to `main` (e5d6b2c) and tagged `v0.1.0`.** M8 (annotation→3D correction + **Integration merged to `main` (e5d6b2c) and tagged `v0.1.0`.** M8 (annotation→3D correction +