Files
hermes-skills/ltx-video-pipeline/references/claude-wiring-diagnosis-2026-07-21.md
T

53 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`:
```python
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 started` per 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_.png` shows 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