From 30df1ebcfd2d89306ac7132872dafee68ba7a549 Mon Sep 17 00:00:00 2001 From: digital-garbage <133010426+digital-garbage@users.noreply.github.com> Date: Tue, 25 Aug 2026 22:00:52 +0300 Subject: [PATCH] fix(h3): JoyAI-Echo is a LoRA technique, not just a frame-index conflict MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The prior wording made the frame-index/anchor-eviction issue read as the reason JoyAI is blocked on H3. It isn't: no JoyAI-Echo LoRA exists for H3, so it's inaccessible by design regardless of interior pins. The frame-index issue is real but secondary — it's what would also go wrong if someone forced it on. --- movie_editor/frontend/pipeline_caps.js | 10 ++++++---- samplers.py | 12 +++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/movie_editor/frontend/pipeline_caps.js b/movie_editor/frontend/pipeline_caps.js index 204b1e27..4d83d3b8 100644 --- a/movie_editor/frontend/pipeline_caps.js +++ b/movie_editor/frontend/pipeline_caps.js @@ -137,10 +137,12 @@ + "condition row rather than an appended frame, so that tail is always empty. " + "(alg_anchor is NOT hidden — a continuation scene does carry real latent frames.)", joyai_memory: - "JoyAI-Echo places memory frame i at sequence position i. H3's packed layout pins only " - + "the FIRST or LAST frame, so every frame past the first is refused — and the one that " - + "lands replaces the scene's i2v anchor, because pins are keyed by frame index. This " - + "one is not merely inert on H3, it is harmful, so the sampler forces it off.", + "JoyAI-Echo is a LoRA-driven technique: the base weights were never trained to read the " + + "injected memory frames as memory, the LoRA is what teaches that, and no JoyAI-Echo " + + "LoRA exists for H3. There is nothing to load, so this is inaccessible on H3 by " + + "design, not merely unwired. It would also actively hurt output if forced on: the " + + "bank places memory frame i at sequence position i, and writing index 0 twice " + + "replaces whatever was there — evicting the scene's own i2v anchor.", }; // Sub-settings of the two groups above: they configure machinery that cannot run here. diff --git a/samplers.py b/samplers.py index b4ef233a..9bcb850d 100644 --- a/samplers.py +++ b/samplers.py @@ -7326,11 +7326,13 @@ class FunPackLTXAVSceneChainSampler: "tail is always 0 and there is nothing to blur. alg_anchor still " "works — a continuation scene does carry real latent frames)") if joyai_memory: - _dead.append("joyai_memory / JoyAI-Echo (the memory bank places frame i at " - "sequence position i, and H3's packed layout pins only the FIRST " - "or LAST frame — so every frame past the first is refused, and " - "the one that lands REPLACES the scene's i2v anchor, since pins " - "are keyed by frame index. Not inert on H3: harmful)") + _dead.append("joyai_memory / JoyAI-Echo (a LoRA-driven technique — the base " + "weights were never trained to read the injected memory frames " + "as memory, the LoRA teaches that, and no JoyAI-Echo LoRA exists " + "for H3. Inaccessible by design, not merely unwired. It would " + "also actively hurt output if forced on: the bank places memory " + "frame i at sequence position i, and writing index 0 twice " + "REPLACES whatever was there, evicting the scene's i2v anchor)") # Gated on joyai_audio_memory, not on the value alone: v2a_grad_scale is that # feature's coupling knob and is never installed without it (see the call site), # so reporting a left-over value as an H3 limitation blames the model for a knob