Fix: flatten comfyui and ltx-video-pipeline to Gitea convention (flat skill dirs). comfyui v5.1.0, ltx-video-pipeline v2.0.0.
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user