Nodes/IAMCCS-nodes/IAMCCS_Ltx2HelperModules Refresh Policy
ComfyUI Node

IAMCCS_Ltx2HelperModules Refresh Policy

Turn 'when to refresh' into 'how hard to refresh'

By IAMCCS·Created 11 months ago·Updated 8 days ago· 113
IAMCCS_Ltx2HelperModules Refresh Policy
  • parent_contract
  • linx
  • refresh_payload
  • contract
  • linx
  • apply_refresh
  • segment_role
  • continuity_preset_override
  • first_anchor_strength_effective
  • last_anchor_strength_effective
  • first_lock_slots
  • last_lock_slots
  • end_transition_slots
  • report
planner_payload{}
keyframe_payload{}
segment_policyplanner_driven
continuity_presetlossless_refresh_24fps
reanchor_presetlossless_refresh_24fps
first_anchor_strength0.35
last_anchor_strength0.20
tail_refresh_strength0.30
reanchor_overlap_modefilmic_crossfade

KeyframeTimeline tells you when a segment needs a refresh. RefreshPolicy is the node that turns that into how - the concrete numbers the rest of the chain acts on: whether to refresh at all, whether this segment is a light continuity pass or a full reanchor, which extension preset to use, and exactly how hard to lock the anchor frames. It's the decision node that sits between the timeline and the execution nodes (ReanchorLatent, Continuity, DiskExtension), reading two payloads and emitting one that everyone downstream trusts.

Think of it as the "mission control" of the refresh system. It exists because the same refresh concept needs different strengths at different moments: a periodic refresh can be a gentle tail nudge, while a reanchor segment - every few segments, when drift has accumulated - needs the anchors locked hard enough to drag the video back on course.

How it works

It reads the planner and keyframe payloads, then decides three things:

  • segment_role - continuity or reanchor. The default segment_policy of planner_driven defers to what KeyframeTimeline decided (is_reanchor_segment). You can force it: continuity_only, reanchor_only, or reanchor_mix.
  • apply_refresh - BOOLEAN, the go/no-go. True on reanchor segments or any segment the keyframe timeline flagged with has_refresh.
  • The effective strengths - here's where the knobs are: first_anchor_strength (default 0.35) and last_anchor_strength (default 0.20) set how hard the reanchor locks its start/end frames; tail_refresh_strength (0.30) governs the lighter tail refresh. On reanchor segments these get passed through to ReanchorLatent as effective values; on continuity segments they're zeroed out (a continuity pass shouldn't be yanking the anchors).

It also picks the extension preset per role: continuity_preset (default lossless_refresh_24fps) for continuity segments and reanchor_preset (default lossless_refresh_24fps) for reanchors - the presets are the same list the ExtensionModule uses, so this is where the refresh strategy meets the actual stitching config. reanchor_overlap_mode (default filmic_crossfade) sets how the reanchor blends.

The inputs and outputs that matter

Wire in planner_payload + keyframe_payload (the chain's handshake), set segment_policy and the three strength sliders, and read:

  • apply_refresh - BOOLEAN; connect it to anything that should only run on refresh segments.
  • segment_role - STRING (continuity/reanchor).
  • continuity_preset_override - STRING, the effective preset for the extension step.
  • first_anchor_strength_effective / last_anchor_strength_effective - FLOATs, what ReanchorLatent will actually use.
  • first_lock_slots / last_lock_slots / end_transition_slots - INTs, the Pro-slot configuration for the reanchor lock.

Plus refresh_payload (the JSON contract), contract, linx, and report.

Installing it

Ships in IAMCCS-nodes under IAMCCS/Ltx2 Helper Modules. Manager → "IAMCCS" → install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git

Restart ComfyUI. No models, no dependencies.

Common issues

The trap is misreading the effective strengths: on continuity segments first_anchor_strength_effective comes out as 0.0 even though your slider says 0.35 - that's deliberate (continuity doesn't anchor), and people waste time "fixing" it. If your video never reanchors at all, check segment_policy: continuity_only turns every segment into a continuity pass and silently zeroes all anchoring. And if the reanchor looks too strong - the clip snaps onto the anchor image - drop first_anchor_strength toward 0.2 before you touch the lock slots. The report tells you role, apply, and preset in one line; read it once and this node stops being a mystery.

CategoryIAMCCS/Ltx2 Helper Modules

Inputs (11)

NameTypeDefaultDescription
planner_payloadSTRING{}
keyframe_payloadSTRING{}
segment_policyCOMBOplanner_driven4 options: planner_driven, continuity_only, reanchor_mix, reanchor_only
continuity_presetCOMBOlossless_refresh_24fps10 options: custom, target_extension_ltx2, lossless_refresh_24fps, lossless_refresh_strong_24fps, videoclip_audio_24fps, monologue_audio_24fps, +4
reanchor_presetCOMBOlossless_refresh_24fps10 options: custom, target_extension_ltx2, lossless_refresh_24fps, lossless_refresh_strong_24fps, videoclip_audio_24fps, monologue_audio_24fps, +4
first_anchor_strengthFLOAT0.350–1
last_anchor_strengthFLOAT0.200–1
tail_refresh_strengthFLOAT0.300–1
reanchor_overlap_modeCOMBOfilmic_crossfade5 options: cut, linear_blend, ease_in_out, filmic_crossfade, perceptual_crossfade
parent_contractoptIAMCCS_SUPERNODE_CONTRACT
linxoptIAMCCS_SUPERNODE_LINX

Outputs (12)

NameTypeDescription
refresh_payloadSTRING
contractIAMCCS_SUPERNODE_CONTRACT
linxIAMCCS_SUPERNODE_LINX
apply_refreshBOOLEAN
segment_roleSTRING
continuity_preset_overrideSTRING
first_anchor_strength_effectiveFLOAT
last_anchor_strength_effectiveFLOAT
first_lock_slotsINT
last_lock_slotsINT
end_transition_slotsINT
reportSTRING