From 6c62b1d0e55dc3f5ab6e056aa4425bb89299fe53 Mon Sep 17 00:00:00 2001 From: SolitaryThinker Date: Tue, 5 May 2026 15:33:36 -0700 Subject: [PATCH] [docs] dreamverse-integration: D-20 broken-pipe root cause + 4-commit fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add D-20 entry to decisions-log.md documenting the segment-2 BrokenPipe root cause: a TWO-direction silent drop of LTX-2 audio kwargs in public `VideoGenerator`. Inbound, `SamplingParam.update()` rejected `audio_num_frames` / `ltx2_audio_clean_latent` / etc. as unknown fields and `logger.error`'d-and-continued; outbound, the result dict didn't surface `ltx2_audio_latents` from `output_batch.extra`. The two directions hid each other — even after the inbound block was ported, segment 2 still broke until the outbound surface was added. * Document the resolution: 4 commits on `will/dreamverse-monorepo` (`1b686f4e`..`5eaf0a13`) covering ffmpeg toolchain pin, public-API audio kwarg routing + strict `update()`, native-ffmpeg + compile-off deploy defaults, and `--warmup` / `--torch-compile` CLI flags. End- to-end verified on GPU4 with `Cached audio latents shape=(1, 8, 126, 16) for segment 2` and `Segment 2: relayed av chunks=22, bytes=3.8MB`, no BrokenPipeError. * Cross-reference D-11 (Apr 26 cosmetic note about ffmpeg broken pipe on intentional client disconnect) — different code path; both resolved. * Update state.md: `will/dreamverse-monorepo` tip moves to `5eaf0a13` (11 commits ahead of `fbd823df`); refresh live-services PIDs to the post-D-20 deploy (BE 705513, FE 707746, both with native ffmpeg + `ENABLE_TORCH_COMPILE=0`); refresh test-status to include the new `test_extra_overrides_routing.py` (7/7 pass) and the live segment-1→2 audio continuation evidence. * Add D-20-CP follow-up to open-threads.md: cherry-pick `265ce1a6` onto `will/ltx2_sr_port` so the public-API fix lands in PR #1288 rather than waiting for `will/dreamverse-monorepo` to fold in. * Bump README.md "Last reconciled" header to mention D-20. Co-authored-by: Junda (David) Su <90978028+Davids048@users.noreply.github.com> Co-authored-by: Matthew Noto <99706358+RandNMR73@users.noreply.github.com> Co-authored-by: XOR-op <17672363+XOR-op@users.noreply.github.com> Co-authored-by: Zhang Peiyuan <42993249+jzhang38@users.noreply.github.com> --- .../memory/dreamverse-integration/README.md | 28 +++++++--- .../dreamverse-integration/decisions-log.md | 56 ++++++++++++++++++- .../dreamverse-integration/open-threads.md | 35 +++++++++++- .../memory/dreamverse-integration/state.md | 24 ++++---- 4 files changed, 120 insertions(+), 23 deletions(-) diff --git a/.agents/memory/dreamverse-integration/README.md b/.agents/memory/dreamverse-integration/README.md index 77335804e..5df5312a1 100644 --- a/.agents/memory/dreamverse-integration/README.md +++ b/.agents/memory/dreamverse-integration/README.md @@ -5,17 +5,31 @@ Tracks the public API refactor (PRs 0-17), the LTX-2 streaming server upstream, the Dreamverse switch from `FastVideo-internal` to public `FastVideo`, and the NVFP4 quantization landing. -**Last reconciled:** 2026-05-05 (**D-19** EXECUTED — Dreamverse migration -landed on `will/dreamverse-monorepo` @ `c1fe5d4c` (5 commits ahead of -`will/ltx2_sr_port` HEAD `fbd823df`). 164 files, 53,294 LOC, 31,725 files -under `apps/dreamverse/`. e2e PASSES against migrated code (8/8 Playwright -in 5.1s, `/proc/$PID/cwd` verified). Significant deviation from -[integration-plan.md](integration-plan.md): the plan's "DELETE +**Last reconciled:** 2026-05-05 (**D-20** EXECUTED — segment-2 BrokenPipe +root cause was a TWO-direction silent drop of LTX-2 audio kwargs in +public `VideoGenerator` (inbound `SamplingParam.update()` rejected +`audio_num_frames`/`ltx2_audio_clean_latent`/etc. as unknown fields and +`logger.error`'d, outbound result dict didn't surface +`ltx2_audio_latents` from `output_batch.extra`). Ported the +FastVideo-internal extra-overrides routing block + made `update()` +strict + added regression test (7 tests, all pass) + landed 4 commits +on `will/dreamverse-monorepo` @ `5eaf0a13` (11 commits ahead of +`fbd823df`). End-to-end verified on GPU4: `Cached audio latents shape +=(1, 8, 126, 16) for segment 2`, `Segment 2: relayed av chunks=22, +bytes=3.8MB`, no BrokenPipeError. Public-API fix needs cherry-pick to +`will/ltx2_sr_port` for PR #1288 — see open-threads.md item D-20-CP. +**D-19** EXECUTED previously: Dreamverse migration landed on +`will/dreamverse-monorepo` @ `c1fe5d4c` (5 commits ahead of +`will/ltx2_sr_port` HEAD `fbd823df`). 164 files, 53,294 LOC, 31,725 +files under `apps/dreamverse/`. e2e PASSES against migrated code (8/8 +Playwright in 5.1s, `/proc/$PID/cwd` verified). Significant deviation +from [integration-plan.md](integration-plan.md): the plan's "DELETE generic-merged from Dreamverse, import public substitutes" assumption was invalid (public APIs aren't drop-ins) — generic-merged files now carried PRODUCT-LOCAL inside `apps/dreamverse/server/`. Public `fastvideo.entrypoints.streaming.*` reverts to `fbd823df` state. See -[decisions-log.md D-19](decisions-log.md#d-19) for full context.). +[decisions-log.md D-19](decisions-log.md#d-19) + +[D-20](decisions-log.md#d-20) for full context.). FastVideo `will/ltx2_sr_port` @ HEAD (post-D-17 STACK.md removal + integration-review.md addition + integration-plan.md addition + D-18 reconciliation). Dreamverse `will/integrate-public-fastvideo` @ `ec8ef92`. diff --git a/.agents/memory/dreamverse-integration/decisions-log.md b/.agents/memory/dreamverse-integration/decisions-log.md index 24caee5b5..7ff98cedf 100644 --- a/.agents/memory/dreamverse-integration/decisions-log.md +++ b/.agents/memory/dreamverse-integration/decisions-log.md @@ -6,7 +6,7 @@ question/decision, rationale, current status. For implementation status see [pr-roadmap.md](pr-roadmap.md). For follow-up actions see [open-threads.md](open-threads.md). -**Last updated:** 2026-05-05 (added D-12 — GpuPool layer separation, Oracle review post-#1257-merge; added D-13 — prompt enhancer / LLMProvider abstraction shape, Oracle review pre-#1258-merge; added D-14 — streaming auxiliaries cohesion, Oracle review during #1284 review cycle; added D-15 — streaming router placement + sticky/active-active deferral, Oracle review during #1286 review cycle; added D-16 — streaming router polish round 2, second-pass review on top of D-15 covering bridge cancellation hygiene, registry state machine, httpx hard-fail, replica YAML parsing, and `websockets` dep; added D-17 — strategy reversal: abandon 6-PR split in favor of single mega-PR #1288 on `will/ltx2_sr_port`; added D-18 — Option B+ chosen: Dreamverse FE+product-server move into FastVideo as `apps/dreamverse/` subfolder while generic backend stays at `fastvideo.entrypoints.streaming.*`; integration-review.md deprecated, integration-plan.md is the executable migration plan; added D-19 — D-18 executed: 5 commits land on `will/dreamverse-monorepo`, fix-up commits corrected the integration-plan's invalid "delete generic-merged, import public substitutes" assumption — generic-merged files carried product-local instead, e2e passes against migrated code with /proc-verified evidence). +**Last updated:** 2026-05-05 (added D-12 — GpuPool layer separation, Oracle review post-#1257-merge; added D-13 — prompt enhancer / LLMProvider abstraction shape, Oracle review pre-#1258-merge; added D-14 — streaming auxiliaries cohesion, Oracle review during #1284 review cycle; added D-15 — streaming router placement + sticky/active-active deferral, Oracle review during #1286 review cycle; added D-16 — streaming router polish round 2, second-pass review on top of D-15 covering bridge cancellation hygiene, registry state machine, httpx hard-fail, replica YAML parsing, and `websockets` dep; added D-17 — strategy reversal: abandon 6-PR split in favor of single mega-PR #1288 on `will/ltx2_sr_port`; added D-18 — Option B+ chosen: Dreamverse FE+product-server move into FastVideo as `apps/dreamverse/` subfolder while generic backend stays at `fastvideo.entrypoints.streaming.*`; integration-review.md deprecated, integration-plan.md is the executable migration plan; added D-19 — D-18 executed: 5 commits land on `will/dreamverse-monorepo`, fix-up commits corrected the integration-plan's invalid "delete generic-merged, import public substitutes" assumption — generic-merged files carried product-local instead, e2e passes against migrated code with /proc-verified evidence; added D-20 — segment-2 BrokenPipe root cause was a TWO-direction silent drop of LTX-2 audio kwargs in public `VideoGenerator` (inbound: `SamplingParam.update()` rejected `audio_num_frames`/`ltx2_audio_clean_latent`/etc. as unknown fields and `logger.error`'d, outbound: result dict didn't surface `ltx2_audio_latents` from `output_batch.extra`); ported the FastVideo-internal extra-overrides routing block + made `update()` strict + added regression test + landed 4 commits on `will/dreamverse-monorepo`). ## Status legend @@ -16,6 +16,60 @@ follow-up actions see [open-threads.md](open-threads.md). ## Post-merge architecture decisions +### D-20: Segment-2 BrokenPipe root cause — two-direction silent drop of LTX-2 audio kwargs in public `VideoGenerator` + +**Status:** ✅ Resolved 2026-05-05. 4 commits on `will/dreamverse-monorepo` (`1b686f4e`..`5eaf0a13`); pushed to origin. End-to-end verified on GPU4 (`/proc/$BE_PID/environ` + `Cached audio latents shape=(1, 8, 126, 16) for segment 2` log line + `Segment 2: relayed av chunks=22, bytes=3.8MB`). +**Source:** Live debugging session triggered by recurring `RuntimeError: ffmpeg frame writer failed: [Errno 32] Broken pipe` on segment 2 in `/tmp/opencode/dreamverse-deploy/backend-gpu4.log`. + +**Question:** Why does segment 2 of every Dreamverse session crash with a writer-side EPIPE, while segment 1 streams fine? + +**Symptom chain decoded:** + +1. ffmpeg writer thread in `apps/dreamverse/server/av_streaming.py:307-317` raises `BrokenPipeError` mid-frame. +2. ffmpeg's exit code is `0` — the `if rc != 0` branch of `stream_fmp4` never fires; only `if writer_error[0] is not None` does. +3. `rc=0 + BrokenPipeError` means ffmpeg exited cleanly *before* the writer finished pushing all frames → ffmpeg closed stdin early due to `-shortest` + audio shorter than video. +4. Manual repro confirmed: with audio 71240 samples (~2.97s) and video 112 frames (~4.67s), ffmpeg `-shortest` + 1MB pipe + 1920x1088x3 frames produces exactly this signature (`rc=0 out_bytes=751028 writer_error=BrokenPipeError(32)`). +5. The 1.7s audio undershoot is suspicious because Dreamverse's `apply_audio()` in `apps/dreamverse/server/video_generation.py:132-186` explicitly extends `audio_num_frames = NUM_FRAMES + audio_extra` (=`121 + 40 = 161`) for continuation segments. Audio should be 6.71s, not 5.01s. The kwarg was being silently dropped. + +**Root cause (TWO directions):** + +| Direction | Where | What was missing | What it broke | +|---|---|---|---| +| **Inbound** (kwargs → `batch.extra`) | `fastvideo/entrypoints/video_generator.py::_generate_video_impl` | The 5-key extraction block (`ltx2_audio_latents`, `ltx2_audio_clean_latent`, `ltx2_audio_denoise_mask`, `audio_num_frames`, `video_position_offset_sec`) that FastVideo-internal has at lines 168-183. Without it, `apply_audio`'s kwargs landed in `sampling_param.update(kwargs)` which `logger.error`'d "%s has no field %s" and dropped them. | `audio_num_frames` never reached `batch.extra` → `ltx2_denoising.py:325` fell back to `batch.num_frames=121` → audio generated for 5.01s instead of 6.71s. After `head_trim_audio_frames=49` removed the leading 2.04s, only 2.97s of audio remained for 4.67s of video. | +| **Outbound** (`batch.extra` → result dict) | `fastvideo/entrypoints/video_generator.py::_generate_single_video` | `"ltx2_audio_latents": output_batch.extra.get("ltx2_audio_latents")` in the result dict. Internal exposes it at line 556; public didn't expose it at all. | `Dreamverse._derive_next_audio_latents()` always saw `None` → `self.continuation.audio_latents` was never set → segment 2's `apply_audio` short-circuited (`if not (… and self.audio_latents is not None): return`) → no audio continuation, no `audio_num_frames` extension, no `ltx2_audio_clean_latent` carry-over. | + +The two directions hid each other: even after the inbound block was ported, segment 2 still broke until the outbound surface was added. Both must be present for audio continuation to round-trip. + +**Resolution — 4 commits on `will/dreamverse-monorepo`:** + +| SHA | Subject | +|---|---| +| `1b686f4e` | `[fix] dreamverse: pin ffmpeg native build toolchain by uname -m` | +| `265ce1a6` | `[fix] api: route LTX-2 audio kwargs through batch.extra; strict update` | +| `dab9499c` | `[feat] dreamverse-deploy: native ffmpeg + compile-off defaults` | +| `5eaf0a13` | `[feat] dreamverse-deploy: --warmup / --torch-compile CLI flags` | + +`265ce1a6` is the substantive public-API fix: ports `_BATCH_EXTRA_PASSTHROUGH_KEYS` extraction in `_generate_video_impl`, ports `_extra_overrides` consumption in `_generate_single_video` (writes into `batch.extra`), surfaces `ltx2_audio_latents` in the result dict, and converts `SamplingParam.update()` from `logger.error`-and-drop to `raise ValueError` on unknown keys so the next contributor who adds an unrecognized kwarg hits a loud failure pointing at `_BATCH_EXTRA_PASSTHROUGH_KEYS` instead of debugging a broken-pipe-shaped symptom hours later. Adds `fastvideo/tests/api/test_extra_overrides_routing.py` (7 tests pinning the contract). + +**Why the strict-update is non-negotiable:** the `logger.error`-and-continue pattern is the exact mechanism that hid this bug for the entire Dreamverse-monorepo migration window. It silently traded loud-failure-now for silent-corruption-later. Strict raise + a clear "route via `_BATCH_EXTRA_PASSTHROUGH_KEYS`" hint converts the next regression of this shape from "broken pipe in production" to "ValueError at first call". + +**Cross-references:** + +- [D-11](decisions-log.md#d-11) (Apr 26) noted "ffmpeg fragment write Broken pipe" but framed it as cosmetic (client-disconnect race). Today's was a different code path: server-side EPIPE caused by a server-internal A/V duration mismatch. Both are now resolved; D-11's fix domain (swallow on intentional disconnect) remains unchanged but lower priority. + +- The `[fix] api: route LTX-2 audio kwargs ...` commit (`265ce1a6`) is on `will/dreamverse-monorepo` only. Cherry-picking onto `will/ltx2_sr_port` so it lands as part of PR #1288's mega-PR is a deferred follow-up — see open-threads.md "Cherry-pick API audio routing fix to PR #1288". + +**Side effects of the fix:** + +- `[feat] dreamverse-deploy: native ffmpeg + compile-off defaults` (`dab9499c`) wires the native LTO+libx264+native-arch ffmpeg the team playbook mandates into every deploy via `FASTVIDEO_FFMPEG_BIN=$HOME/opt/ffmpeg-native/bin/ffmpeg` and disables `torch.compile` by default (`ENABLE_TORCH_COMPILE=0`) so segment-1 cold start drops from ~3-4min (max-autotune) to ~45s (pure inference) — required for any iterative debugging cycle to fit inside the 300s session timeout. +- `[fix] dreamverse: pin ffmpeg native build toolchain by uname -m` (`1b686f4e`) makes `apps/dreamverse/scripts/install_native_ffmpeg.sh` immune to conda envs that activate both `gcc_linux-64` and `gcc_linux-aarch64` (the aarch64 activation script sorts later and wins, so the inherited `CC=aarch64-conda-linux-gnu-cc` defeated the script's `: "${CC:=...}"` deferred default and tripped x264's compiler probe with "unknown value 'native' for '-march'"). +- `[feat] dreamverse-deploy: --warmup / --torch-compile CLI flags` (`5eaf0a13`) adds `--warmup`/`--no-warmup` and `--torch-compile`/`--no-torch-compile` flags that override the env-var defaults and accept any position relative to the positional GPU/port args (verified across 13 parser permutations). + +**Watch-outs for downstream contributors:** + +- Adding a new pipeline-specific kwarg now requires either making it a `SamplingParam` field OR adding it to `_BATCH_EXTRA_PASSTHROUGH_KEYS` in `fastvideo/entrypoints/video_generator.py`. Strict `update()` will raise `ValueError` on unknown kwargs that aren't routed through one of those paths. +- The `[fix] api:` commit (`265ce1a6`) is BACKWARD-INCOMPATIBLE for any caller that was relying on `SamplingParam.update()` to silently swallow unknown keys. If pre-existing CI breaks elsewhere on this surface, the fix is to add the legitimate kwarg to `SamplingParam` or `_BATCH_EXTRA_PASSTHROUGH_KEYS` (not to revert the strict mode). + ### D-19: D-18 executed — Dreamverse migration on `will/dreamverse-monorepo`, generic-merged files carried product-local **Status:** ✅ Resolved 2026-05-05. 5 commits on top of `will/ltx2_sr_port` HEAD `fbd823df`. Branch pushed to origin at `c1fe5d4c`. e2e definitively passes. diff --git a/.agents/memory/dreamverse-integration/open-threads.md b/.agents/memory/dreamverse-integration/open-threads.md index e4533b9af..981fd1b5e 100644 --- a/.agents/memory/dreamverse-integration/open-threads.md +++ b/.agents/memory/dreamverse-integration/open-threads.md @@ -6,9 +6,12 @@ recommended next action. For why each item is open see [decisions-log.md](decisions-log.md). For PR-level context see [pr-roadmap.md](pr-roadmap.md). -**Last updated:** 2026-05-05 (strategy reversal — PR #1287 CLOSED, replaced -by mega-PR #1288 on `will/ltx2_sr_port` @ `b36bdbc9` covering the full -6-layer stack at once. See [decisions-log.md D-17](decisions-log.md#d-17). +**Last updated:** 2026-05-05 (D-20 broken-pipe root cause + fix landed on +`will/dreamverse-monorepo` @ `5eaf0a13`; added new thread D-20-CP for +cherry-picking the public-API audio routing fix to `will/ltx2_sr_port` +so it lands in PR #1288. Earlier: strategy reversal — PR #1287 CLOSED, +replaced by mega-PR #1288 on `will/ltx2_sr_port` @ `b36bdbc9` covering +the full 6-layer stack at once. See [decisions-log.md D-17](decisions-log.md#d-17). Item D resolution gate is now #1288 merge instead of #1287; same content, different vehicle.). @@ -16,6 +19,7 @@ different vehicle.). | # | Pri | Item | Effort | Unblocks | |---|---|---|---|---| +| **D-20-CP** | High | Cherry-pick `[fix] api: route LTX-2 audio kwargs through batch.extra; strict update` (`265ce1a6`) onto `will/ltx2_sr_port` so it lands in PR #1288 | 15 min | Surfaces the public-API audio-conditioning fix in the mega-PR rather than waiting for `will/dreamverse-monorepo` to fold in. Tests already pass (185/185 api). | | **D-8** | High | Verify `ltx2_image_crf` post-`d80c2a8` | 10 min | Confirms typed stage-override path actually flows; closes a latent silent-drop bug | | **1** | High | Migrate `/healthz`+`/readyz`+`/status` into FastVideo `build_app` | M-L | Closes BE_FLAVOR=fastvideo FE-compatibility; closes streaming-upstream contract debt | | **2** | High | Fix pre-existing AbsMaxFP8 test failure | S | Self-contained quantization tech debt | @@ -48,6 +52,31 @@ different vehicle.). ## High priority +### D-20-CP: Cherry-pick public-API audio routing fix to `will/ltx2_sr_port` + +**Why:** Commit `265ce1a6` (`[fix] api: route LTX-2 audio kwargs through batch.extra; strict update`) lives only on `will/dreamverse-monorepo` today. It touches public FastVideo surface (`fastvideo/entrypoints/video_generator.py`, `fastvideo/api/sampling_param.py`, plus a new regression test). For PR #1288 to ship a coherent public API — including the strict `SamplingParam.update()` — this commit needs to also land on `will/ltx2_sr_port`. + +**Action:** + +1. `git checkout will/ltx2_sr_port` +2. `git cherry-pick 265ce1a6` (clean; only touches `fastvideo/` paths that exist on both branches) +3. `pre-commit run --files fastvideo/entrypoints/video_generator.py fastvideo/api/sampling_param.py fastvideo/tests/api/test_extra_overrides_routing.py` +4. `pytest fastvideo/tests/api/ -q` (expect 185 passed) +5. `git push origin will/ltx2_sr_port` (fast-forward, no force) +6. `git checkout will/dreamverse-monorepo` (return to default working branch per runbook) + +**Outcome:** PR #1288 picks up the fix automatically (its head IS `will/ltx2_sr_port`). The cherry-pick lives on both branches as separate SHAs; they'll dedupe naturally on any future rebase. + +**Effort:** 15 minutes (cherry-pick + lint + test + push). + +**Dependencies:** None. Tests already pass; no rebase conflicts expected. + +**Files touched (same on both branches):** + +- `fastvideo/entrypoints/video_generator.py` +- `fastvideo/api/sampling_param.py` +- `fastvideo/tests/api/test_extra_overrides_routing.py` (new file) + ### D-8: Verify `ltx2_image_crf` typed flow post-`d80c2a8` **Why:** Apr 26 dreamverse_review documented this field getting silently diff --git a/.agents/memory/dreamverse-integration/state.md b/.agents/memory/dreamverse-integration/state.md index a66953c44..53082f812 100644 --- a/.agents/memory/dreamverse-integration/state.md +++ b/.agents/memory/dreamverse-integration/state.md @@ -1,4 +1,4 @@ -# Current State — 2026-05-05 (strategy reversal — single mega-PR #1288) +# Current State — 2026-05-05 (D-20 broken-pipe fix landed) Point-in-time snapshot of branches, commits, and live infrastructure. Update whenever commits land or services restart. @@ -12,7 +12,7 @@ roster of co-authors to credit on every commit see | Repo | Branch | Tip | Distance | |---|---|---|---| | FastVideo | `will/ltx2_sr_port` (**PR #1288 head**) | `fbd823df` | merged-into-main pending; latest tip post-D-16 + integration-review + integration-plan + GPU4 smoke validation | -| FastVideo | **`will/dreamverse-monorepo`** (**MIGRATION** — forked from `will/ltx2_sr_port`) | `c1fe5d4c` | 5 commits ahead of `fbd823df`. Phases 1+2+3 + 2 fix-up commits. apps/dreamverse/ holds full migrated Dreamverse (server/, web/, prompts/, scripts/, serve_configs/, AGENTS.md, etc.). 8/8 Playwright e2e PASSED against migrated backend (verified via `/proc/$PID/cwd = apps/dreamverse/server`). See [decisions-log.md D-19](decisions-log.md#d-19). | +| FastVideo | **`will/dreamverse-monorepo`** (**MIGRATION** — forked from `will/ltx2_sr_port`) | `5eaf0a13` | 11 commits ahead of `fbd823df`. Phases 1+2+3 + 2 fix-up commits + 4 D-20 commits (broken-pipe root cause fix: ffmpeg toolchain pin, public-API audio kwarg routing, native-ffmpeg + compile-off deploy defaults, --warmup/--torch-compile CLI flags). apps/dreamverse/ holds full migrated Dreamverse (server/, web/, prompts/, scripts/, serve_configs/, AGENTS.md, etc.). End-to-end verified on GPU4 with audio continuation across segments 1→2 (`Cached audio latents shape=(1, 8, 126, 16) for segment 2`, `Segment 2: relayed av chunks=22, bytes=3.8MB`, no BrokenPipeError). See [decisions-log.md D-19](decisions-log.md#d-19) + [D-20](decisions-log.md#d-20). | | FastVideo | `will/api_7.10` | `6ae7a99f` | **deprecated** — PR #1287 closed in favor of #1288. Branch can be deleted on origin and locally; kept for now as historical reference. | | FastVideo | `will/api_8`, `will/ltx2_sr_runtime`, `will/ltx2_nvfp4`, `will/ltx2_post_fixes`, `will/agents_cleanup` | (various) | **deprecated** split bookmarks. Strategy reversed to single mega-PR (D-17). Safe to delete locally; not pushed to origin. | | FastVideo | `will/ltx2_sr_port-pre-1286-rebase` | `1baa60bb` | **local-only safety backup** of pre-rebase chain (37 commits); keep until next slice merges | @@ -129,8 +129,8 @@ worker-death detection. | Port | Service | PID | Status | |---|---|---|---| -| 8009 | `dreamverse-server` | 2453227 | `/readyz` returns 200, 1 warmed GPU worker, queue 0 | -| 5274 | `next-server` (dev) | 2399103 | 200, ~13.6 KB shell | +| 8009 | `dreamverse-server` | 705513 | `/readyz` returns 200, 1 GPU worker on GPU 4, NVFP4 (50.9 GiB), `ENABLE_TORCH_COMPILE=0`, `FASTVIDEO_FFMPEG_BIN=$HOME/opt/ffmpeg-native/bin/ffmpeg`, `FASTVIDEO_VIDEO_CODEC=libx264` (post-D-20 deploy at 2026-05-05 14:??) | +| 5274 | `next-server` (dev) | 707746 | 200 | | 8000 | unknown FastAPI | — | **Not in handoff.** Probably stray `fastvideo serve`. Verify with `lsof -i :8000` before launching a new BE on the default port. | ## Stashes — DO NOT POP @@ -140,17 +140,17 @@ worker-death detection. | FastVideo | `stash@{0}: WIP on main: 71bfc13d HunyuanVideo plugin` | Pre-existing, unrelated to integration work | | Dreamverse | `stash@{0}: wip: server modular refactor (split config/prompting/runtime/session)` | 3867-line orphan modular split, **not part of `will/integrate-public-fastvideo`**. Recover on a separate branch if needed. | -## Test status (from May 2 handoff, not re-verified post-Layer-3) +## Test status | Suite | Status | |---|---| -| FastVideo `fastvideo/tests/api/` + `contract/` + `nvfp4_*` + `ltx2_pipeline_smoke` | 222 passed, 1 skipped | -| Playwright e2e against live BE+FE | 8 passed (5 backend-health + 2 frontend-shell + 1 preset-prompt-generation) | -| `fastvideo serve --config streaming_demo.yaml` validation | parses cleanly; dotted overrides work | -| `bash -n` on launch-demo skill scripts | clean across all 4 | - -The 3 post-handoff commits are small parity fixes; full re-verification is -recommended but not required to read this state. +| FastVideo `fastvideo/tests/api/` (post-D-20) | 185 passed (was 222 before some tests moved; new `test_extra_overrides_routing.py` adds 7) | +| FastVideo `contract/` + `nvfp4_*` + `ltx2_pipeline_smoke` (May 2 handoff) | 222 passed, 1 skipped | +| Playwright e2e against live BE+FE (D-19) | 8 passed (5 backend-health + 2 frontend-shell + 1 preset-prompt-generation) | +| Live segment-1→segment-2 audio continuation (D-20) | passes — `Cached audio latents shape=(1, 8, 126, 16) for segment 2` + `Segment 2: relayed av chunks=22, bytes=3.8MB`, no BrokenPipeError | +| `dreamverse-deploy.sh` flag parser standalone test (D-20) | 13/13 permutations pass + bad-flag rejection (defaults / single flags / both flags / `--no-*` overrides / env-only / flag-overrides-env / both-env+both-no-flags / flags interleaved with positional args) | +| `fastvideo serve --config streaming_demo.yaml` validation (May 2 handoff) | parses cleanly; dotted overrides work | +| `bash -n` on `apps/dreamverse/scripts/install_native_ffmpeg.sh` + `dreamverse-deploy.sh` (D-20) | clean | ## Pre-existing failures (NOT caused by this work)