AU+IMG2VID Refresh Policy (legacy alias)
The node that decides how hard to re-anchor each segment to keep identity alive
- 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
The KeyframeTimeline node decides when to refresh; IAMCCS_AUIMG2VID_RefreshPolicy (legacy alias for Ltx2HelperModules_RefreshPolicy) decides how. Given the planner's segment plan and the keyframe schedule, it works out which refresh strategy each segment uses and how strongly to lock the anchor frames - then hands the result to the ReanchorLatent node as a refresh_payload. It's the tunable middle layer of the anti-drift system.
The single most important input is segment_policy, with four choices:
planner_driven(default) - let the upstream planner decide per segment.continuity_only- just trim/blend overlap, no heavy re-anchoring.reanchor_mix- blend continuity with re-anchoring.reanchor_only- force a full re-anchor every segment (heavy, but maximum identity lock).
Around that sit the two presets, continuity_preset and reanchor_preset (each offering the same menu: lossless_refresh_24fps, target_extension_ltx2, videoclip_audio_24fps, monologue_audio_24fps, the cut_bestofk_* variants, etc.). These preset different blend behaviors depending on whether the segment is being treated as a plain continuation or a refresh point.
Then the anchor strengths, which are the knobs that actually change the output:
first_anchor_strength(0.35) - how hard the first frame of the reference locks the generation.last_anchor_strength(0.2) - same for the last frame.tail_refresh_strength(0.3) - how strongly the tail of the previous chunk seeds the next.reanchor_overlap_mode- how the anchor region blends (cut,linear_blend,ease_in_out,filmic_crossfade,perceptual_crossfade).
Higher strength = better identity, more "locked down" motion. This is where the tradeoff lives: crank everything to 1.0 and your character stays the same but the video barely moves; drop toward 0.05 and it moves freely but drifts.
The outputs are the verdict for this segment: apply_refresh (boolean - does this segment refresh at all?), segment_role (a string like the resolved role), the effective strengths (first_anchor_strength_effective, last_anchor_strength_effective), and the counts first_lock_slots, last_lock_slots, end_transition_slots that tell downstream how many frames are being locked/transitioned. Wire refresh_payload into the ReanchorLatent node and you're done.
Where it sits: planner → audio timeline → keyframe timeline → refresh policy → re-anchor latent → runtime bridge. It makes the most sense there, because the presets were tuned for that chain - use the custom preset and you're back to setting everything by hand, at which point you should ask whether you need the node at all.
Installing: part of IAMCCS/IAMCCS-nodes - ComfyUI Manager → search "IAMCCS", or cd ComfyUI/custom_nodes && git clone https://github.com/IAMCCS/IAMCCS-nodes.git, restart. No models, no extra deps; it's policy math.
The trap is over-anchoring. New users see drift, set every strength to 0.8, and wonder why the video looks like a slideshow. Start with the defaults, and only raise first_anchor_strength/last_anchor_strength when a specific identity keeps slipping - that's the targeted fix, and it's what these separate strength inputs exist for.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| planner_payload | STRING | {} | — |
| keyframe_payload | STRING | {} | — |
| segment_policy | COMBO | planner_driven | 4 options: planner_driven, continuity_only, reanchor_mix, reanchor_only |
| continuity_preset | COMBO | lossless_refresh_24fps | 10 options: custom, target_extension_ltx2, lossless_refresh_24fps, lossless_refresh_strong_24fps, videoclip_audio_24fps, monologue_audio_24fps, +4 |
| reanchor_preset | COMBO | lossless_refresh_24fps | 10 options: custom, target_extension_ltx2, lossless_refresh_24fps, lossless_refresh_strong_24fps, videoclip_audio_24fps, monologue_audio_24fps, +4 |
| first_anchor_strength | FLOAT | 0.350–1 | — |
| last_anchor_strength | FLOAT | 0.200–1 | — |
| tail_refresh_strength | FLOAT | 0.300–1 | — |
| reanchor_overlap_mode | COMBO | filmic_crossfade | 5 options: cut, linear_blend, ease_in_out, filmic_crossfade, perceptual_crossfade |
| parent_contractopt | IAMCCS_SUPERNODE_CONTRACT | — | |
| linxopt | IAMCCS_SUPERNODE_LINX | — |
Outputs (12)
| Name | Type | Description |
|---|---|---|
| refresh_payload | STRING | — |
| contract | IAMCCS_SUPERNODE_CONTRACT | — |
| linx | IAMCCS_SUPERNODE_LINX | — |
| apply_refresh | BOOLEAN | — |
| segment_role | STRING | — |
| continuity_preset_override | STRING | — |
| first_anchor_strength_effective | FLOAT | — |
| last_anchor_strength_effective | FLOAT | — |
| first_lock_slots | INT | — |
| last_lock_slots | INT | — |
| end_transition_slots | INT | — |
| report | STRING | — |