Skip to content

fix(LTX25-DEVICE-RESIDENCY): name the load prologue load.open, because a floor wide enough to hide it is a mute switch (#1439) - #1622

Merged
localai-bot merged 5 commits into
mainfrom
row/LTX25-DEVICE-RESIDENCY-1439
Aug 22, 2026
Merged

fix(LTX25-DEVICE-RESIDENCY): name the load prologue load.open, because a floor wide enough to hide it is a mute switch (#1439)#1622
localai-bot merged 5 commits into
mainfrom
row/LTX25-DEVICE-RESIDENCY-1439

Conversation

@localai-bot

Copy link
Copy Markdown
Collaborator

CHECK(leaves >= 0.95 * wall) in ltx2 video: a render through the ABI emits a phase table that SUMS to wall reds main intermittently, and it failed at
0.702349 >= 0.702944 — 0.08% short. Two earlier sessions deliberately left it
alone and recorded why: 91% of its residue is ONE contiguous ~11.3 ms interval at
the head of the load span, before load.dit opens. It is a real startup phase.
Any slack big enough to stop the flapping would exceed 12 ms and would hide it.

So this names the phase instead of widening the floor. The assertion is
byte-for-byte unchanged. ltx2_video.cpp opens phase::Scope open_phase("load.open") immediately after the load span and closes it
immediately before the load.dit block, over the prologue the probe already
identified: device resolution, the platform probe, the two refusals, the
device-byte probe install, the DiT safetensors header open and the LoRA option
parsing. Scope::Close rather than a nested block is the shape
render_phase_log.h documents for this driver, whose regions are sequential
statements in one function.

Red first, and the red IS the reachability mutation. The test change was built
alone, so the red arm is this tree with the gate asking for the name and no
production scope to answer it: 447 assertions, 1 failed, the phase table names no 'load.open' phase. With the scope: 459 assertions, 0 failed. Deleting the
production call site is precisely that first arm.

A second mutation pins the CLOSE and not only the OPEN. Sinking
open_phase.Close() below the load.dit block compiles and keeps the SUM case
green at 459/459, and is caught instead by the #1440 nested-record rule: the
carrying-phases case reds at 595/1 with 'load.dit' is emitted NESTED. Tree
md5-verified restored between arms.

The residue, six runs per arm on one binary each, Release CPU: median
unaccounted_seconds 2.91 ms before, 0.94 ms after; load.open is emitted as a
leaf at t=0.000 and measures about 1.3 ms.

Two limits on that number, in the spec and repeated here because they bound the
claim. The box was at loadavg 24-31, so the render's wall is 7-10 s rather than
the 0.22-0.58 s of #1439's population — the flattering regime the issue itself
identified, where a slower render passes. And the 11.3 ms head is not reproduced
at this build type with the fixture warm; the prologue is about 1.3 ms here. The
direction and the mechanism are measured; the magnitude at which the floor bites
is inherited from the earlier probe, and a quiet-box run at fixture scale stays
owed.

The order case gains load.open as its first entry, so a swapped scope name reds
there the way load.dit and load.prompt_embeds already do.

Not owed: a docs/models/ltx-2-5.md edit. The spec said this change owes the
phase names published there. That document publishes none — ## Inspect a render
names sum_leaf_seconds, unaccounted_seconds and two switches and no
individual phase. Checked rather than assumed.

Refs #1439, which stays OPEN. The repair is measured; the regime where the
floor bites is not, and one quiet-box run at fixture scale is what closes it.
That run is owed by LTX25-DEVICE-RESIDENCY and is named in its ## Owed row.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]

mudler added 5 commits August 21, 2026 17:32
…use a floor wide enough to hide it is a mute switch (#1439)

`CHECK(leaves >= 0.95 * wall)` in `ltx2 video: a render through the ABI emits a
phase table that SUMS to wall` reds `main` intermittently, and it failed at
`0.702349 >= 0.702944` — 0.08% short. Two earlier sessions deliberately left it
alone and recorded why: 91% of its residue is ONE contiguous ~11.3 ms interval at
the head of the `load` span, before `load.dit` opens. It is a real startup phase.
Any slack big enough to stop the flapping would exceed 12 ms and would hide it.

So this names the phase instead of widening the floor. The assertion is
byte-for-byte unchanged. `ltx2_video.cpp` opens `phase::Scope
open_phase("load.open")` immediately after the `load` span and closes it
immediately before the `load.dit` block, over the prologue the probe already
identified: device resolution, the platform probe, the two refusals, the
device-byte probe install, the DiT safetensors header open and the LoRA option
parsing. `Scope::Close` rather than a nested block is the shape
`render_phase_log.h` documents for this driver, whose regions are sequential
statements in one function.

Red first, and the red IS the reachability mutation. The test change was built
alone, so the red arm is this tree with the gate asking for the name and no
production scope to answer it: 447 assertions, 1 failed, `the phase table names
no 'load.open' phase`. With the scope: 459 assertions, 0 failed. Deleting the
production call site is precisely that first arm.

A second mutation pins the CLOSE and not only the OPEN. Sinking
`open_phase.Close()` below the `load.dit` block compiles and keeps the SUM case
green at 459/459, and is caught instead by the #1440 nested-record rule: the
carrying-phases case reds at 595/1 with `'load.dit' is emitted NESTED`. Tree
md5-verified restored between arms.

The residue, six runs per arm on one binary each, Release CPU: median
`unaccounted_seconds` 2.91 ms before, 0.94 ms after; `load.open` is emitted as a
leaf at `t=0.000` and measures about 1.3 ms.

Two limits on that number, in the spec and repeated here because they bound the
claim. The box was at loadavg 24-31, so the render's wall is 7-10 s rather than
the 0.22-0.58 s of #1439's population — the flattering regime the issue itself
identified, where a slower render passes. And the 11.3 ms head is not reproduced
at this build type with the fixture warm; the prologue is about 1.3 ms here. The
direction and the mechanism are measured; the magnitude at which the floor bites
is inherited from the earlier probe, and a quiet-box run at fixture scale stays
owed.

The order case gains `load.open` as its first entry, so a swapped scope name reds
there the way `load.dit` and `load.prompt_embeds` already do.

Not owed: a `docs/models/ltx-2-5.md` edit. The spec said this change owes the
phase names published there. That document publishes none — `## Inspect a render`
names `sum_leaf_seconds`, `unaccounted_seconds` and two switches and no
individual phase. Checked rather than assumed.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
…anchor list must be re-derived at the FINAL head

`build-test-cpu` reds on `ltx2 video: the recorded reader anchors are the ones in
the source`. This branch inserted `phase::Scope open_phase("load.open")` into
`src/vllm/multimodal/ltx2_video.cpp` and moved every reader below it, so the
READER ANCHORS comment now points at the wrong lines. The guard did its job.

The repair is a new anchor list, and a list is only correct at the head it was
derived from. `origin/main` moved eight commits since this branch forked, so
deriving the numbers before the merge would record a set that the merge itself
invalidates -- which is the exact defect this gate exists to catch. So the merge
lands first and the derivation follows it.

The merge is textually trivial. `.agents/issue-index.md` is the only shared
record either side touched: `origin/main` appends four rows (#1183, #1613, #1614,
#1502) and this branch appends none, so the union driver has nothing to
reconcile and the result is main's file byte-for-byte. No other path conflicts.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
… row's own `load.open` scope moved (#1439)

`ltx2 video: the recorded reader anchors are the ones in the source` reds
`build-test-cpu` and `sanitize-cpu (thread)` on this branch. The cause is this
branch: `phase::Scope open_phase("load.open")` and its `Close` went into
`ResolveAndRender` above every accepted-key reader, so all fourteen readers moved
down by 28 to 31 lines and the recorded list stopped naming any of them.

Nothing is wrong with the code the comment describes. The readers are the same
fourteen, in the same order, reading the same keys; only their line numbers
changed. So the repair is the list, and the gate that caught it stays exactly as
it is. It has now fired three times for three different insertions, which is the
argument for deriving the numbers rather than trusting them.

The new list is the one the test itself printed, at the head that carries it
rather than at the head that broke it. `origin/main` had moved eight commits, so
this branch merged first and the derivation ran after the merge -- recording a
set that a pending merge would invalidate is the same defect in a new costume.
The merge turned out not to touch `ltx2_video.cpp`, so the numbers are equal to
the ones the pre-merge run reported, but that was checked and not assumed.

Only the fourteen digits on the comment line change, so the edit cannot move an
anchor it is recording: one line in, one line out, and the derived set is
identical either side of it.

Release CPU, whole `test_ltx2_video` binary, one build per arm. Stale list: 102
cases, 101 passed, 1 failed; 4227 assertions, 4226 passed, 1 failed. Corrected
list: 102 cases, 102 passed, 0 failed; 4225 assertions, 4225 passed, 0 failed.
The anchor case alone is 26 assertions in both arms, 25 passed before and 26
after, so it is the only case whose verdict this changes. The two-assertion
difference in the totals is not this edit, and a control says so rather than an
argument: a third run of the corrected binary, same bytes and same source,
reported 4227 of 4227. So a render case's assertion count follows the phase
records that run emits, it moves between 4225 and 4227 on its own, and the box
was at load 28-75 throughout. Only the failure counts are stable.

Not owed: `.agents/specs/ltx25-retire-dead-arms.md` section 2.1. Its table is
declared "as of `3c6706cd0`", a dated record rather than a live one, and the
test's own failure text says it stays. Checked rather than assumed.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
… the anchors it could have moved

`origin/main` advanced to `0822160f5` while this branch's gate was running, so
the trailer gates refused to report and asked for a merge. This is that merge.

It carries one commit, SPEC-DFLASH2 W6 (#1314, #1637). It touches neither
`src/vllm/multimodal/ltx2_video.cpp` nor `tests/vllm/multimodal/test_ltx2_video.cpp`,
so the READER ANCHORS list this branch just re-derived still names the fourteen
readers. That was checked against the merged tree and not assumed from the
subject line, because an anchor list is only true at the head it was derived
from and this is a different head.

`.agents/issue-index.md` takes six appended rows from main and none from this
branch, so the union driver has nothing to reconcile again.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
…e the anchors at the merged head

`origin/main` advanced five commits while this pull request's continuous
integration settled. None of them edits `src/vllm/multimodal/ltx2_video.cpp` or
`tests/vllm/multimodal/test_ltx2_video.cpp`, so the recorded `READER ANCHORS`
line should still hold. That is a prediction, not a result, and this row has
already been caught twice by exactly this staleness. The anchor list is
therefore re-derived by running `test_ltx2_video` at the merged head rather
than by reading the diff.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Claude:claude-opus-5 [Claude Code]
@localai-bot
localai-bot merged commit 519303d into main Aug 22, 2026
18 of 24 checks passed
@localai-bot
localai-bot deleted the row/LTX25-DEVICE-RESIDENCY-1439 branch August 22, 2026 01:14
localai-bot pushed a commit that referenced this pull request Aug 22, 2026
GitHub refused the squash with a conflict on `.agents/issue-index.md`. That file
carries `merge=union` in `.gitattributes`, and the forge does NOT honour the
driver -- so two branches that each append a row conflict there even though the
union resolves cleanly. Doing the merge locally is what applies the driver.

`#1622` landed between this branch's last merge and the squash attempt. The only
shared file is that append-only index, and both sides only append. No source file
is touched by both.

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: Claude:claude-opus-5 [Claude Code]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants