Skip to content

W0's phase-table gate cannot see two SIBLING anchor names exchanged, and decode.video.vae's placement is gated by a cardinality alone #1446

Description

@localai-bot

Found by the FOURTH fresh review of #1441 against 165db635c. Two of that change's own stated guarantees fall to two-line mutations, on the anchored set it declares. Every earlier mutation (M12, M11, M11b, M13, M7, M4, M10) is RED against that head, so this is not a regression in the repair — it is the same class one level over, for the fourth time.

N1 — sibling anchor names are swappable. Swap the decode.audio.mel and decode.audio.vocoder string literals in src/vllm/multimodal/ltx2_video.cpp (1 file, +2/-2, compile rc 0). The containment case reports exit 0, 1/1, 194/194 and the SUMS case exit 0, 1/1, 446/446, byte-identical to the honest claim, over a table reading decode.audio.vocoder 0.007 s / decode.audio.mel 0.220 s where the honest table has them reversed. 96.8% of decode.audio's decomposed seconds land on the wrong name, on a leaf that is 47.8% of that render's named leaf seconds and was 25.5% of wall in the first artifact this row shipped, and #1010 asks for the vocoder BY NAME. W1 would rank the wrong model. Nothing in the case ties a sub-scope NAME to a POSITION: the counts are {1, 1} either way, containment holds for both, subs is sorted by start before the overlap check, and CheckOnlyAnchorsAreNested is a set-membership test. The load-order assertion was added to that same change because M13 showed a sibling name swap moves 96% with everything green, and the identical hole was left on the one sibling pair inside its own anchored set.

N6 — decode.video.vae's placement is not gated at all. Move the scope off AccumulateTemporalGroup and onto the buffer.Allocate in the same loop body of src/vllm/model_executor/models/ltx2_video_vae_tiled.cpp (1 file, +7/-8, compile rc 0): containment exit 0, 194/194, SUMS exit 0, 446/446. The table then reports decode.video.vae = 0.000 s beside a five-millisecond decode.video, with the tile decode inside no sub-scope. The gate checks that anchor for cardinality, for nested and for containment in a chunk window and nothing else — Carrying{"decode.video", ...} lists only decode.video.chunk in parts, so the vae contributes zero to coverage. The anchor fires in neither M11 nor M11a, so on the evidence it constrains nothing the gate did not already hold, and the W5 ## Owed item it was written to pay is paid in prose only. The claim "so that leaf finally has a sub-scope whose ends are both production events" appears in the pull-request body, the ltx2_video_vae_tiled.cpp comment, ltx2_video.cpp and docs/USAGE.md, and is a statement about the source that no gate holds.

Three smaller findings beside them. Every decode-side count is demonstrated at N = 1 (video_decode_chunks == 1, decode.video.chunk == 2, artifacts.frames.ppm == 1, decode.video.vae == 1, re-derivation 1 == 1), which cannot distinguish "once per unit of work" from "once per render" — the exact distinction that assertion exists to make — and the re-derivation hardcodes Ltx2ScaleFactors{8, 32, 32}, Ltx2AutoTileSizeConfig(32, 32, ...) and Ltx2CreateTiles(latent_t, 1, 1, ...) rather than reading the fixture's own config. The counts also compare a PER-RENDER counter (im.trace, reset on every Generate) against a PROCESS-WIDE record count (PhaseLog, reset only at load), correct only because the case renders once. And a leaf may grow over adjacent UNNAMED time up to its coverage slack — about 5.3% for denoise, 11% for decode.video, 1% for decode.audio, up to 100% for artifacts.frames — which the nested invariant cannot see because that invariant is about neighbours.

NOT a correctness defect in the instrument, which four reviews have now found reachable on the shipped default. Fixed in flow.

Owned by row LTX25-DEVICE-RESIDENCY; spec ltx25-device-residency.md section ### What a FOURTH fresh review found.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions