Ltx2VideoEngine::Load's requires_distilled_lora refusal ends with a NOTE telling the caller that this engine cannot put the adapter on stage 2 alone, and pointing at #1118. #1118 is CLOSED, by 4ae0f54ab (row LTX25-PHASE-LORA, PR #1140), which added Ltx2PhaseRecipe::loras and Ltx2RebindDitLoras and gave A2VidTwoStageRecipe stage 1 kNoAdapters.
Measured at c83b96934, src/vllm/multimodal/ltx2_video.cpp:1039-1041:
"NOTE the divergence this cannot express: upstream fuses that adapter into stage 2 ALONE (a2vid_two_stage.py:114 against :107) and this engine fuses once at load, so stage 1 sees it too — #1118."
Every clause after "NOTE" is false. The engine no longer fuses once at load for this recipe, stage 1 does not see the adapter, and the issue is closed. The comment above the refusal (:1023-1027) says the same thing in the same words and is equally stale.
ltx25-phase-lora.md repaired the reference-conditioning refusal's reason 2, which carried the same claim, and this second site was missed — the two are ~1100 lines apart and only the first was named in that row's ## Port map.
Second defect at the same site: the message cites the WRONG pipeline
The refusal is deliberately keyed on recipe.requires_distilled_lora rather than on the kind string, so that "the next recipe off this parser inherits it" (:1019-1021, which names #1093 and #1096 as waiting). But its body interpolates im.pipeline_kind into the first sentence and then hard-codes a2vid's anchors — a2vid_two_stage.py:164, :114, :107 — into the rest. So the first arm to inherit the flag gets a refusal that names its own pipeline and then cites a different pipeline's source lines.
--distilled-lora required=True lives at utils/args.py:1140-1155 on default_2_stage_arg_parser (:1123), which is the parser all of these pipelines select — a2vid_two_stage.py:311, ti2vid_two_stages.py:319, keyframe_interpolation.py. That anchor is shared and correct to cite; the per-pipeline stage-2 line numbers are not.
Fix
Rewrite the NOTE to say what closed it, in the form the neighbouring ruled-out reasons already use, and move the message's remaining anchors onto the shared parser rather than onto one pipeline's stage 2. Found and fixed in flow by row LTX25-TI2VID-RECIPE (#1093), which is the second user of this flag and therefore the first caller the wrong-pipeline half would have misled. tests/vllm/multimodal/test_ltx2_video.cpp:7238 asserts the string 1118 appears in the message and is updated with it.
Ltx2VideoEngine::Load'srequires_distilled_lorarefusal ends with a NOTE telling the caller that this engine cannot put the adapter on stage 2 alone, and pointing at #1118. #1118 is CLOSED, by4ae0f54ab(rowLTX25-PHASE-LORA, PR #1140), which addedLtx2PhaseRecipe::lorasandLtx2RebindDitLorasand gaveA2VidTwoStageRecipestage 1kNoAdapters.Measured at
c83b96934,src/vllm/multimodal/ltx2_video.cpp:1039-1041:Every clause after "NOTE" is false. The engine no longer fuses once at load for this recipe, stage 1 does not see the adapter, and the issue is closed. The comment above the refusal (
:1023-1027) says the same thing in the same words and is equally stale.ltx25-phase-lora.mdrepaired the reference-conditioning refusal's reason 2, which carried the same claim, and this second site was missed — the two are ~1100 lines apart and only the first was named in that row's## Port map.Second defect at the same site: the message cites the WRONG pipeline
The refusal is deliberately keyed on
recipe.requires_distilled_lorarather than on the kind string, so that "the next recipe off this parser inherits it" (:1019-1021, which names #1093 and #1096 as waiting). But its body interpolatesim.pipeline_kindinto the first sentence and then hard-codes a2vid's anchors —a2vid_two_stage.py:164,:114,:107— into the rest. So the first arm to inherit the flag gets a refusal that names its own pipeline and then cites a different pipeline's source lines.--distilled-lora required=Truelives atutils/args.py:1140-1155ondefault_2_stage_arg_parser(:1123), which is the parser all of these pipelines select —a2vid_two_stage.py:311,ti2vid_two_stages.py:319,keyframe_interpolation.py. That anchor is shared and correct to cite; the per-pipeline stage-2 line numbers are not.Fix
Rewrite the NOTE to say what closed it, in the form the neighbouring ruled-out reasons already use, and move the message's remaining anchors onto the shared parser rather than onto one pipeline's stage 2. Found and fixed in flow by row
LTX25-TI2VID-RECIPE(#1093), which is the second user of this flag and therefore the first caller the wrong-pipeline half would have misled.tests/vllm/multimodal/test_ltx2_video.cpp:7238asserts the string1118appears in the message and is updated with it.