Evidence in plan/status/integration2.md. v0.2.0 held for the real-footage field test. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
50 lines
3.3 KiB
Markdown
50 lines
3.3 KiB
Markdown
# Status — integration2
|
||
|
||
## Round 1 — 2026-07-17 — STATUS: merged (synthetic pass complete; field test GATED on real clips)
|
||
|
||
**Directives acknowledged:** Round 4. Single-agent phase 5c, main working directory on
|
||
branch `integration2`. Coordinator and integration agent are the same session this round.
|
||
|
||
**Merge state:** foundation2, lane/g-capsule, lane/f-social, lane/e-director2 all merged to
|
||
`main` in completion order; every merge independently re-verified (suite re-run in the lane
|
||
worktree before merging, then on the merged tree). CR-4 and CR-5 ratified at merge (CR-1
|
||
precedent; decisions recorded in plan/CHANGE_REQUESTS.md). Suite: 127 → 169 → **189 passed**;
|
||
`npm run build` clean at every step.
|
||
|
||
**Full-system synthetic pass — evidence per milestone:**
|
||
- **M10 (beats):** `ingest → features` on the repo project: 29 beats, tempo **120.0 BPM**
|
||
(ground truth 120), beat grid at 0.5 s spacing (~+20 ms bias, well inside ±50 ms), 40
|
||
onsets → `data/work/beats.json` matches contract #1.
|
||
- **M11 (director):** CLI `direct --top-n 4` emits frozen-shape camPath JSON, keyframe times
|
||
ON the beat grid (3.02, 4.02, …). Live browser: 🎬 visible, click → **10 keyframes loaded,
|
||
all beat-snapped (≤11 ms), path auto-plays** (⏹ Path state).
|
||
- **M12 (export):** live browser via the `__f4d` pump at 50 Hz (hidden pane, rAF=0 — pitfall
|
||
#2 workaround; WebAudio grants the timer exemption): full-length export auto-stopped at the
|
||
last keyframe → `video/webm;codecs=vp9,opus`, **duration 13.98 s vs 14.0 expected (±5% ✓)**,
|
||
audio track present and decoding (webkitAudioDecodedByteCount 28 770 after 1.5 s), state
|
||
restored, ⏺ re-armed. NOT verifiable headless: rendered-frame quality (needs a focused
|
||
window — flagged for the human).
|
||
- **M13–M15 (lane F):** lane self-verified live in isolated servers (see plan/status/lane-F.md
|
||
— full create→rename→recolor→jump→delete roundtrip, 3840×3093 helper-free PNG, both FX
|
||
types, 0.101 ms/frame worst case). Coordinator re-check on merged main: all modules
|
||
ready=true, buttons visible, anchor panel lists 4 anchors with tag/jump/edit/delete, FX
|
||
fires on a scrub crossing of bass_drop, **zero console errors**.
|
||
- **M16 (paths):** live: save (via module's own prompt flow) → dropdown refreshes → load
|
||
reproduces keyframes **exactly** (deep-equal on toJSON) → delete refreshes. 30 lane tests.
|
||
- **M17 (capsule):** baked from the real dist (19 files, 6.8 MB), served by bundle
|
||
`serve.py`: app boots in the browser with **zero off-origin requests**
|
||
(performance.getEntriesByType — nothing to :8000), `capsule: true`, all `.write-ui` hidden,
|
||
**video seek to t=10 exact** (Range/206 over serve.py), `/api/audio/1` → 200 (WebAudio
|
||
clock live), 4 anchors + 7 events + point cloud + timeline all present. Screenshot on file.
|
||
|
||
**Housekeeping:** `.gitignore` now covers `data/capsule/` and `.claude/worktrees/`
|
||
(lane G's note).
|
||
|
||
**Field test:** NOT RUN — gated on 2–4 real overlapping clips in `data/raw/` (the standing
|
||
human item since Round 2). Per the adjusted plan (DIRECTIVES Round 5) the **v0.2.0 tag waits**
|
||
for the field test; the synthetic integration pass is complete and accepted.
|
||
|
||
**Blockers:** none for code. Human items listed in DIRECTIVES Round 5.
|
||
|
||
**Next:** field test on real footage when clips land → ISSUES.md entries → v0.2.0.
|