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 12 months ago·Updated 5 days ago· 117
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—