Merge integration2: phase 5 synthetic integration complete (suite floor 189)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
commit
f7ba7f2095
2
.gitignore
vendored
2
.gitignore
vendored
@ -7,3 +7,5 @@ __pycache__/
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
frontend/dist/
|
frontend/dist/
|
||||||
.env
|
.env
|
||||||
|
data/capsule/
|
||||||
|
.claude/worktrees/
|
||||||
|
|||||||
@ -4,6 +4,43 @@ Written **only** by the coordinator (the human's planning session). Agents: read
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Round 5 — 2026-07-17 — PHASE 5 COMPLETE on synthetic; floor 189; v0.2.0 waits on the field test
|
||||||
|
|
||||||
|
**Execution report (all same-day):** foundation2 → lanes E/G/F in parallel worktrees (per
|
||||||
|
directive 3) → integration2. Every lane merged after independent coordinator verification
|
||||||
|
(suite re-run in the lane's worktree, then on the merged tree, live-browser checks per
|
||||||
|
feature). Full evidence: plan/status/{foundation2,lane-E,lane-F,lane-G,integration2}.md.
|
||||||
|
|
||||||
|
**Accepted:** M10–M17 all pass acceptance on the synthetic fixture. Highlights: beats recover
|
||||||
|
the 120 BPM ground truth (worst beat 30 ms); director output is beat-snapped and shape-locked
|
||||||
|
through frozen geometry helpers; export produced a 13.98 s vp9/opus webm (±5% ✓, audio track
|
||||||
|
live) driven headless via the `__f4d` pump; the capsule boots with ZERO off-origin requests,
|
||||||
|
seeks over Range, hides all write UI. Lane F self-verified live in isolated servers — model
|
||||||
|
evidence discipline, worth repeating.
|
||||||
|
|
||||||
|
**Ratified:** CR-4 (lane G) and CR-5 (lane E) — stub-era test assertions superseded by
|
||||||
|
milestones landing, CR-1 precedent. **The test floor is now 189.** Build stays clean.
|
||||||
|
|
||||||
|
**Standing decisions:**
|
||||||
|
1. **v0.2.0 tag is HELD** until the real-footage field test runs (it is integration2's actual
|
||||||
|
milestone; synthetic-only doesn't earn the tag). Failures go to plan/ISSUES.md, not fixes.
|
||||||
|
2. Stub-era assertions in foundation tests are now an acknowledged lifecycle: when a milestone
|
||||||
|
lands, retiring its stub assertion via a CR entry + pointer to the real coverage is the
|
||||||
|
house pattern (CR-1/-4/-5). Foundation agents: prefer writing stub tests that survive the
|
||||||
|
landing (assert shape, not stub-ness) so future lanes don't need CRs.
|
||||||
|
3. `.gitignore` gained `data/capsule/` and `.claude/worktrees/`.
|
||||||
|
|
||||||
|
**For the human (the entire remaining critical path):**
|
||||||
|
(a) **Drop 2–4 real overlapping clips into `data/raw/`** — the field test and v0.2.0 gate on
|
||||||
|
this and only this.
|
||||||
|
(b) Focused-window eyeball pass (10 min, headphones): sync panel stays green during playback;
|
||||||
|
🎧 spatial audio while flying around; 🎬 auto-path ride; ⏺ export and CHECK THE FRAMES
|
||||||
|
(headless verified duration/audio only — rendered frame quality needs human eyes);
|
||||||
|
📷 photo PNG; ✨ FX bursts at full rAF rate; anchor panel roundtrip.
|
||||||
|
(c) Optional but high-impact: train a splat for the real project
|
||||||
|
(`scripts/splat_via_modelbeast.sh`) before capsuling it — photo mode + capsule get
|
||||||
|
dramatically better.
|
||||||
|
|
||||||
## Round 4 — 2026-07-17 — Fresh-eyes upgrades landed; PHASE 5 begins (M10–M17)
|
## Round 4 — 2026-07-17 — Fresh-eyes upgrades landed; PHASE 5 begins (M10–M17)
|
||||||
|
|
||||||
**Coordinator work landed directly on `main` (self-reviewed + live-verified):**
|
**Coordinator work landed directly on `main` (self-reviewed + live-verified):**
|
||||||
|
|||||||
49
plan/status/integration2.md
Normal file
49
plan/status/integration2.md
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
# 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.
|
||||||
Loading…
Reference in New Issue
Block a user