2.9 KiB
Claude Wiring Diagnosis — 2026-07-21
Claude Opus 4.8 SSH'd into 10.0.0.202 and diagnosed the subject duplication bug.
Root Cause
Node 132 (LTXDirectorGuide, the refiner pass) had its latent input wired to ["34", 0] (uncropped LTXVSeparateAVLatent output) instead of ["55", 2] (LTXDirectorCropGuides cropped output).
Mechanism (from source code review)
LTXDirectorGuide doesn't blend the I2V image in — it appends it as extra latent frames on the end of the sequence, then records how many to remove later in a conditioning key (ltx_director_guide.py:596). LTXDirectorCropGuides trims exactly that many afterward.
The critical line is ltx_director_guide.py:339:
initial_latent_length = int(latent_length) # captured from whatever arrives
The graph runs 133 first (8 steps, denoise 1.0), then 132 (4 steps, 0.42). Node 55 correctly crops 133's guide frames off... but 55:2 (the cropped latent) is never consumed. Node 132 takes 34:0 instead — the raw, uncropped sampler output. Only 55's conditioning outputs are wired, which is why the break is invisible in the UI.
So 132 counts stage-1's leftover guide frames as real video content, appends a second guide on top, and the final crop removes only one set. The orphaned guide frames decode as actual footage: a second copy of the man, frozen in the start-frame pose, while the real generation gets out of bed.
Empirical Confirmation
- ffprobe: 249 frames / 10.375s. Requested: 240 / 10.0s. The overshoot is leftover guide latent, decoded as video.
- Batches 1, 2, and 3 are all 249 frames (
00007,00013,00019,00025–00030). Byte-identical symptom across every "fix" — the wiring never changed. - Log shows two
[LTXDirectorGuide] execute startedper render, both "Using Appended Keyframe Guidance" — double append, confirmed.
Reference Workflow Comparison
example_workflows/LTX_Director_2_Workflow_Hotfix.json wires it as:
stage1 → 34 Separate → 55 CropGuides → 14 LTXVLatentUpsampler → 132 Guide
(55:2, cropped)
Our v3 deleted node 14 (LTXVLatentUpsampler) and reconnected 132 straight to 34:0. Removing the upsampler is what orphaned the crop.
Fix
Point 132.inputs.latent at ["55", 2] instead of ["34", 0]. Restoring the upsampler between them is the fully-correct form.
Verification
Output should be exactly 240 frames for 10s@24fps. 249 frames = bug present.
Other Findings
- ID LoRA / distilled LoRA at 1.0 — not the cause. Log confirms
is_lora_active: False, ic_lora_name: None. - Scene 2 "soup" problem — separate issue. The start frame
ltx_start_frame_02_00001_.pngshows a man over a tall steaming stockpot, which reads as soup. Bad start frame, not a prompt bug. - Seed is 0 and shared — bump to random. ComfyUI caches identical graphs.
- Session ID: 5381500e-a071-42f5-8d6b-d780520a981b
- Cost: $1.34 USD, 31 turns