Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .agents/issue-index.md
Original file line number Diff line number Diff line change
Expand Up @@ -710,3 +710,4 @@ rather than merged. `scripts/check-agent-record.py` gates both.
| [#1881](https://github.com/mudler/vllm.cpp/issues/1881) | `LTX25-DIT-ATTN-FLASH` | **The LTX-2.5 pixel A/B recorded a 75 KB LAUNCHER as its binary identity, and two builds a whole release window apart printed the SAME value while the 92 MB library that holds every measured kernel differed by 6,372,624 bytes.** Observed live on `dgx:gpu0` 2026-08-24 while the FA-2 ladder of [#1855](https://github.com/mudler/vllm.cpp/issues/1855) was building. `BINSHA=$(sha256sum "$BIN/ltx2-gen")` hashes 75,344 bytes of `main()`; `vt::Attention`, `vt::AttentionDenseFlash`, `vt::AttentionDenseFa2`, both VAEs and the loader are all in `libvllm.so.0.0.3`, which was hashed NOWHERE. Run `1612-r3` (source `3e2961ef0`, `libvllm` 85,703,328 B) and run `1853-fa2-r1` (source `62cbae10d`, `libvllm` `f046e75dcede2586...`, 92,075,952 B) both recorded `binary_sha256=834cec557c16cf77...`, each `binary_built=in-lease` with `BUILD_RC=0`. The launcher's own translation unit did not change, so its output is reproducible BY CONSTRUCTION - the one artefact whose hash was stable was the one containing none of the code under measurement. Consequence: §10.7's "the binary `834cec55...`", which #1743 and #1855 rest on, does NOT pin the code that produced them, and a later reader reads the same string and concludes the same code ran. **NOT an invalidation of 1612-r3**: its four arms ran from one build in one lease and each proved its own op from its own log; what its RECORD cannot do is tell its build from a later one. **FIXED IN FLOW for the pixel harness** - `LIBSHA` is computed, printed, written to `PROVENANCE` as `library_sha256` and added to every arm's `render.log` header, with three tripwires in `test_ltx25_pixel_ab_harness.py` that each red when their site is deleted. **STILL OWED**: `ltx25-dit-attn-flash-ab.sh` and `ltx25-dit-attn-fa2-hd128-ab.sh` carry the identical idiom, so every speed number they have recorded has the same hole. Owned by row `LTX25-DIT-ATTN-FLASH` and listed under `## Owed` | bug |
| [#1886](https://github.com/mudler/vllm.cpp/issues/1886) | `LTX25-DIT-ATTN-FLASH` | **The FA-2 arm that every production render resolves reads `DIRECTIONAL` against `naive` on the audio, and the checked statistic ranks it BACKWARDS against `flash`.** Measured on `dgx:gpu0`, `rc` job `4dcdd916...`, `RUN_ID=1853-fa2-r1`, source `62cbae10d`, `libvllm.so.0.0.3` `f046e75dcede2586...` (92,075,952 B), `768x448/49f`, seed `20260820`, FOUR arms from ONE build in ONE lease. This is the render [#1855](https://github.com/mudler/vllm.cpp/issues/1855) said had never been taken: `ltx2_device.cpp:536` is the only reader of `VLLM_LTX2_DIT_FLASH_ATTN`, unset selects `vt::AttentionDenseFa2`, and nothing in `include/`, `examples/` or `tools/` sets it. **Every arm proved its own op and neither other, and the counts were re-derived from each arm's raw `render.log` rather than read off its `ARM` summary**: `fa2` op18=0 op21=0 op22=1 (2.223 s/forward), `naive` op18=1 op21=0 op22=0 (45.512 s), `fa2-ctl` op18=0 op21=0 op22=1 (2.256 s), `flash` op18=0 op21=1 op22=0 (6.360 s). **The control is a zero, exactly**: `fa2-ctl` is BIT-IDENTICAL to `fa2`, 49/49 frames and `audio.wav` byte-equal, `control/treatment = 0.000000` on luma against a treatment effect of 8.952578, so nothing here is run-to-run variation. **Correspondence passes in full** (frame margin **1.1928 > 1** at frame 29, 0 of 49 frames off `(0,0)`, audio lag **0**) and **the three video statistics are incoherent** (sharpness **0.020738**, blockiness **0.040532**, motion **0.061146**). **The audio fires**: `coherence.audio_rms` `K` **0.511574** over 376 windows, means 865.774 vs 892.84, the shipped arm **3.03% quieter**, `top10% = +0.952`. `READING DIRECTIONAL`, `VERDICT FAIL (exit 1)`. **The direction is ONE CHANNEL**: ch0 `K` **0.705886** (-6.40%), ch1 `K` **0.060690** (-0.29%) at **1.18x** its own 0.0516 floor, i.e. FA-2 does not touch channel 1. **This CORRECTS #1855's attribution rather than confirming it**: `flash` loses the SAME channel (ch0 0.756589), so the direction belongs to the reassociated f32 online-softmax order both kernels share -- by TWO DIFFERENT reassociations, see `vt::AttentionDenseFast`, `vt::AttentionDenseFlash` and `vt::AttentionDenseFa2` in `include/vt/ops.h` and not to the #1549 swap. §11.9 pre-registered exactly this test before the render existed. **THE DILUTION IS ARM-DEPENDENT AND FALLS HARDEST ON THE SHIPPED ARM, which needed all three pairs to see**: the checked mono term retains 89.1% of `flash`'s channel-0 direction (0.674002 of 0.756589) and only 72.5% of `fa2`'s (0.511574 of 0.705886), because `flash` moves both channels the same way while `fa2` leaves ch1 at -0.29% and the average dilutes its channel-0 loss against an effectively unmoved channel. That is what pushed `fa2` to within 2.3% of the constant while `flash` sits 35% above it. **A first draft of this row claimed an INVERSION -- that the checked statistic ranks the two arms the wrong way round -- and a fresh review falsified it before it was published**: on `K` against `K` there is no inversion, because ch0 `K` ranks `fa2` below `flash` (0.705886 vs 0.756589) and the mono term ranks them the same way. The apparent reversal only appeared when an AMPLITUDE measure (`fa2` loses 6.40% of ch0 against `flash`'s 5.40%) was set against a COHERENCE measure, which is the category error §11.3 exists to prevent. The claim is withdrawn. **`fa2` vs `flash` shows no direction anywhere** (audio `K` 0.177718, sharpness 0.001954, `SEPARATED, NOT DEGRADED`, exit 0), which locates the direction between both fast kernels and `naive`. **The `flash` vs `naive` row is NOT an independent second observation**: it reads every §11.8 figure to six decimals because its renders are BYTE-IDENTICAL to run `1612-r3` across `3e2961ef0` -> `62cbae10d` and a `libvllm` differing by 6,372,624 bytes, so #1855 is reproduced rather than replicated and the count of independent observations is still ONE. **TWO LIMITS**: the checked constant carries the mono verdict by only 2.3% (`0.511574` vs `0.5`), a PARTIAL direction that §11.3's two-population argument does not cover, so there `0.5` is a chosen bound and NOT repaired by moving it (§9); and 376 windows are not 376 independent observations because the 2.010 s track has one loud passage. **NOT ATTRIBUTED**: why a reassociated attention sum costs 6.4% of one audio channel while leaving the other at its floor and the picture directionless is unexplained. NOT FIXED IN FLOW: a finding about a change already on `main` whose mechanism needs its own investigation. Owned by row `LTX25-DIT-ATTN-FLASH` and listed under `## Owed`. Recorded in [`ltx25-dit-attn-flash.md`](specs/ltx25-dit-attn-flash.md) §12.6 | bug |
| [#1887](https://github.com/mudler/vllm.cpp/issues/1887) | `LTX25-DIT-ATTN-FLASH` | **Three citations of `include/vt/ops.h:3304-3306` in [`ltx25-dit-attn-flash.md`](specs/ltx25-dit-attn-flash.md) were stale and asserted the OPPOSITE of the sentence they supported.** Found by the fresh review of [#1871](https://github.com/mudler/vllm.cpp/pull/1871) while that change was adding a FOURTH citation of the same anchor. At `def85d285` those lines sit inside the `AttentionRelPos` doc comment and read "Reductions are strictly sequential per output element => thread-count independent and byte-reproducible", while the three sites (§4 numerics, §10.2, and §11.3 -- the ratified criterion section the whole pixel lane rests on) cite them for the claim that `vt::Attention` and `vt::AttentionDenseFlash` "differ only in association". Correct at `90e8c3c85`/`ff8f72807`, stale by `c4ba829a3`. **Correct anchors, each verified unique by phrase**: `ops.h:3315-3316` (`Fast` NOT bit-identical to `Attention`, different head_dim partial-sum grouping), `ops.h:3328-3329` (`Flash` order UNCHANGED from `Fast`, bit-identical), `ops.h:3381-3382` (`Fa2` NOT bit-identical to `Fast`/`Flash`, `mma.sync` reassociates QK^T and PV). **A second defect the same reading exposed**: the anchor was being used to claim `flash` and `fa2` share ONE reassociated order, and they do not -- they are TWO DIFFERENT reassociations, so the supportable claim is a shared CLASS, which is what §12.6 measures. FIXED IN FLOW in #1871: all three pre-existing citations repaired and the fourth corrected before publication. Owned by row `LTX25-DIT-ATTN-FLASH` | bug |
| [#1884](https://github.com/mudler/vllm.cpp/issues/1884) | `LTX25-PHASE-RESIDUE` | **`CheckSeamAnchor` proves a seam anchor's POSITION and not its MAGNITUDE, so a zero-width anchor passes it green.** Filed by the change that introduced the gate ([#1668](https://github.com/mudler/vllm.cpp/issues/1668)), against its own work, and MEASURED: mutation M7 -- `artifacts.mux` closed immediately after it opens, dropping the late `Close()`, so the render's whole tail is un-named again -- passes **796 of 796 assertions, Status: SUCCESS**. Every clause survives a zero-width window: the count is 1, it is neither `span` nor `nested`, it still opens after `artifacts.audio` ends, nothing follows it so it is still the last leaf, and the containment clause holds VACUOUSLY because a zero-width window has no interior, so every other leaf ends at or before it or starts at or after it. The same argument applies to `load.dit_config`. **Third appearance of one shape**, after the `decode.audio.mel` partial transfer the file already records ("an anchor covering half its call passes 0.50 and is not detected here. Closing that needs a scope INSIDE the callee") and [#1568](https://github.com/mudler/vllm.cpp/issues/1568) one level down. **MUST NOT be closed by a share floor whose denominator is the INSTRUMENT or the wall**: a seam's honest share is a property of the box, which makes that floor `residue <= 2 * instrument` with a different name, and `## Design` 3 of the spec is the measured record of why that does not work -- 4 red in 45 at the table bound, 28 in 160 on a standalone probe, and a 20-run sample that saw none of its tail. **The one shape that prohibition does NOT cover, and where a next attempt should start**: the anchor's own extent against the SEAM its two neighbours define, both measured in the same run -- near 1 honest, near 0 collapsed, with the region being named as the denominator instead of the instrument, so it never asks how many seconds a seam SHOULD hold. It still needs a constant and a cross-box distribution, so it is a candidate and not a conclusion. Otherwise: an anchor INSIDE the callee, or a bound on a quantity the scheduler cannot move ([#1570](https://github.com/mudler/vllm.cpp/issues/1570), [#1439](https://github.com/mudler/vllm.cpp/issues/1439)). NOT FIXED IN FLOW: each closure is its own row with its own red-first tests and fresh review. Listed under `## Owed` in [`ltx25-phase-residue.md`](specs/ltx25-phase-residue.md) | bug |
Loading
Loading