Singularity R178
Singularity's Tail 5 gate for long Wan videos
- primary_model
- clip
- vae
- secondary_model
- image
- mask
- status
- saved_video_path
- saved_report_path
- report
- tail_frame_0
- tail_frame_1
- tail_frame_2
- tail_frame_3
- tail_frame_4
If you've ever made a Wan clip longer than ~5 seconds, you know the ritual: render segment one, grab its last frame, feed it back into an I2V node as the new start image, render segment two, and pray the two clips don't visibly jump. It works, and it's miserable. Singularity ("Singularity R178") is a public-alpha ComfyUI node that wraps that whole loop into one node - and then does one genuinely clever thing on top: at each segment boundary it pauses and shows you the last five frames so you can pick which one the next segment continues from, instead of chaining off whatever frame the model left you with.
It's Wan-first, one node, and early. The whole ComfyUI-Event-Equality-Core pack registers exactly one visible node; everything else is internal machinery. Treat it as an experiment you can actually run, not a production tool.
How it works
Under the hood the node runs a cascade: it samples a segment, extracts five tail candidate frames, and (when a pause is enabled) stops the run and shows a detached panel - Source | Tail 1 | Tail 2 | Tail 3 | Tail 4 | Tail 5 | Result. Click the frame with the best pose, face, or motion direction, hit Resume Cascade / Continue, and that frame becomes the source state for the next segment. Same run, no manual file juggling, one stitched MP4 at the end.
Sampling itself follows the Wan 2.2 high/low pattern you already know: a high-noise stage on primary_model (the structure/motion pass, default steps 0→1) and a low-noise refinement stage on secondary_model (default steps 1→4). If you don't wire a secondary_model, it falls back to the primary for the second stage. The high/low terminology maps directly onto Wan's own two-expert setup.
Here's the honest part: the project dresses this up in a lot of "event equality formula" language. In the public default (math_control_mode = Observe Only) that layer mostly records evidence into a report instead of mutating tensors. The author says it themselves: the formula is not a magic quality button. You're getting a convenient cascade loop plus diagnostics, not a new sampling algorithm.
The inputs that matter
The node has a big surface, but most of it hides in LAB/research groups. For your first run, set these:
primary_model,clip,vae- standard Wan wiring. Models are not included, so you need a Wan 2.2 checkpoint, its CLIP, and VAE.source_image_file- the reference image for I2V. It uses ComfyUI's native image upload, so you can pick from your input folder directly.cascade_count(default 2, max 5 in this alpha) andpause_after_cascade_1..4- where the Tail 5 gate appears. Keepcascade_count = 2andpause_after_cascade_1 = truefor your first test.frames_per_cascade(default 49),width/height(default 704×1280),fps,seed.
The default negative prompt is a Chinese Wan-style one; leave it. math_control_mode has 27 options, but only Observe Only, Latent Delta Scale, and Tail Source Reconstruction are billed as public-safe - the rest are research modes that can change output quality.
Outputs
You get status, saved_video_path, saved_report_path, and report as STRINGs, plus tail_frame_0 through tail_frame_4 as IMAGEs you can route to a preview. When save_report is on, a Markdown report lands next to the video with CompletionGate, cascade_progress, seam diagnostics, and more. Read it, but remember CompletionGate = PASS is structural proof, not a quality verdict - always inspect the MP4.
Install
ComfyUI Manager is the easy route - search "Singularity - Tail 5 Continuation Gate" and hit install. Or go manual:
cd ComfyUI/custom_nodes
git clone https://github.com/DIIIUA/ComfyUI-Event-Equality-Core
Then restart ComfyUI. The pack's requirements.txt declares no extra Python dependencies - it runs on ComfyUI's own runtime. One real gotcha the README doesn't advertise: video saving prefers VHS_VideoCombine, i.e. the VideoHelperSuite pack. There's an emergency fallback writer if VHS is missing, but installing VHS through Manager gives you clean MP4 output.
Troubleshooting
- OOM at 704×1280? That's the default and it's heavy. Drop to 416×608 for a fast debugging pass - the README recommends it explicitly.
- The pause panel didn't appear? Check
pause_after_cascade_1is on. The panel stays detached under the node while paused and vanishes once the run finishes - easy to miss. - Weird output? If you flipped
math_control_modeaway fromObserve Only, or enabledstrategy_field_mode,sampler_trace_mode, orauto_calibration_mode, revert them. They're real research modes, not safe defaults. - Fuzzy stitches between segments are what picking a better tail frame is for. The report's
cascade_seam_impulseandtail_next_source_continuityfields tell you whether the boundary jumped.
It's alpha and niche, but the Tail 5 picker is the part that's hard to fake with stock nodes - and it's genuinely the right fix for the 5-second problem.
Inputs (53)
| Name | Type | Default | Description |
|---|---|---|---|
| primary_model | MODEL | — | |
| clip | CLIP | — | |
| vae | VAE | — | |
| source_image_file | COMBO | none | Reference image used as the source state for the cascade. |
| positive_prompt | STRING | Clean model-facing strategy text. Math records must not inject extra prompt prose here. | |
| negative_prompt | STRING | 色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走 | Negative prompt passed to the Wan conditioning route. |
| temporal_texture_lock | BOOLEAN | false | Experimental continuity guard for temporal texture drift. Keep off for baseline comparisons. |
| cascade_count | INT | 21–5 | How many video segments to generate and stitch. |
| pause_after_cascade_1 | BOOLEAN | true | Pause after segment 1 and show the Tail 5 frame picker. |
| pause_after_cascade_2 | BOOLEAN | false | Pause after segment 2 and show the Tail 5 frame picker. |
| pause_after_cascade_3 | BOOLEAN | false | Pause after segment 3 and show the Tail 5 frame picker. |
| pause_after_cascade_4 | BOOLEAN | false | Pause after segment 4 and show the Tail 5 frame picker. |
| frames_per_cascade | INT | 491–4096 | Frames generated per cascade segment. |
| width | INT | 70416–8192 | Output width in pixels. Values align to multiples of 8. |
| height | INT | 128016–8192 | Output height in pixels. Values align to multiples of 8. |
| fps | INT | 161–240 | Saved video frame rate. |
| seed | INT | 1230–18446744073709550000 | Seed used for repeatable fixed-seed comparisons. |
| sampler_name | STRING | euler | Sampler name passed to the internal high/low sampling windows. |
| scheduler | STRING | simple | Scheduler name passed to the internal high/low sampling windows. |
| global_steps | INT | 40–10000 | Total sampler step count for the high/low windows. |
| primary_cfg | FLOAT | 1.00-1000–1000 | CFG used for the high/noise stage. |
| secondary_cfg | FLOAT | 1.00-1000–1000 | CFG used for the low/refinement stage. |
| primary_start_step | INT | 00–10000 | High/noise stage start step. |
| primary_end_step | INT | 10–10000 | High/noise stage end step. |
| secondary_start_step | INT | 10–10000 | Low/refinement stage start step. |
| secondary_end_step | INT | 40–10000 | Low/refinement stage end step. |
| math_control_mode | COMBO | Observe Only | Main math surface. Observe Only records evidence; active modes apply bounded numeric control. |
| high_delta_strength | FLOAT | 1.00000–2 | High/noise stage delta multiplier. 1.0 is neutral. |
| low_delta_strength | FLOAT | 1.00000–2 | Low/refinement stage delta multiplier. 1.0 is neutral. |
| strategy_field_mode | COMBO | OFF | Research StrategyField router. Keep off unless testing semantic pressure surfaces. |
| decode_tile_size | INT | 51264–8192 | VAE decode tile size. |
| decode_overlap | INT | 640–65535 | VAE spatial overlap; runtime clamps impossible values. |
| decode_temporal_size | INT | 321–4096 | Frames decoded per temporal VAE tile. |
| decode_temporal_overlap | INT | 120–65535 | Temporal overlap for video VAE decode. |
| image_upscale_method | COMBO | nearest-exact | Resize method for source image preparation. |
| image_crop | COMBO | wan_native | How the source image is fitted to the Wan frame size. |
| save_video | BOOLEAN | true | Save the stitched cascade video. |
| video_format | COMBO | video/h264-mp4 | Output format for saved video/animation. |
| save_report | BOOLEAN | true | Save the Markdown report with runtime evidence. |
| save_prefix | STRING | Singularity | Filename prefix for saved outputs. |
| sampler_trace_mode | COMBO | OFF | Optional sampler shadow trace diagnostics. |
| sampler_trace_max_steps | INT | 641–65535 | Maximum sampler steps recorded by shadow trace. |
| use_formula_recommendation | BOOLEAN | false | Show formula frame suggestion in Tail 5; manual green selection remains primary. |
| prompt_transcode_mode | COMBO | Report Only | Prompt strategy transform. Transform Prompt builds a semantic map without adding extra prose to the prompt. |
| auto_calibration_mode | COMBO | OFF | Research auto-calibration proposal/apply mode. Keep off for public-safe baseline. |
| bridge_wan_alpha | FLOAT | 0.1000–0.5 | Internal latent memory bridge alpha for Wan latent path. |
| bridge_concat_alpha | FLOAT | 0.0600–0.5 | Internal latent memory bridge alpha for concat/source path. |
| bridge_wan_max_step | FLOAT | 0.4500–2 | Maximum Wan latent bridge step size. |
| bridge_concat_max_step | FLOAT | 0.2800–2 | Maximum concat/source bridge step size. |
| secondary_modelopt | MODEL | — | |
| imageopt | IMAGE | — | |
| maskopt | MASK | — | |
| selected_tail_indexopt | STRING | -1 | — |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| status | STRING | — |
| saved_video_path | STRING | — |
| saved_report_path | STRING | — |
| report | STRING | — |
| tail_frame_0 | IMAGE | — |
| tail_frame_1 | IMAGE | — |
| tail_frame_2 | IMAGE | — |
| tail_frame_3 | IMAGE | — |
| tail_frame_4 | IMAGE | — |