Rerunning Failed Nodes¶
When a generation didn't land — all 4 candidates have problems, or the node errored entirely — you can rerun just that single node instead of the whole workflow. Cheap, fast, no need to re-do the work that already succeeded.
When you'd rerun¶
| Situation | What to do |
|---|---|
| All 4 candidates have minor issues, same problem | Re-roll the seed (same prompt, new seed) |
| All 4 candidates have the same structural problem | Edit the prompt, then rerun |
| One specific candidate has an AI tell that other 3 don't | Pick the others — no rerun needed |
Node failed entirely (in errors.json) |
Diagnose the error, fix, rerun |
Re-rolling the seed¶
The fastest fix. Same prompt, different random seed, 4 fresh candidates.
You: rerun the image gen for Scene 03 — none of the candidates landed.
Same prompt, different seed.
Claude: [invokes regen-nodes.py on the Scene 03 image node,
produces 4 new candidates, updates the Approve node]
Most workflows have at least one scene that needs a re-roll on first pass. This is normal — generation has variance.
Editing the prompt then rerunning¶
When the problem is the prompt itself — wrong wardrobe color, wrong pose, contradictory instructions — re-rolling won't help. You need to fix the source.
You: Scene 05's image gen — the avatar's wearing a blue shirt but all
4 candidates are in a white shirt. Looking at the prompt, it just
says "casual top." Add explicit "blue cotton t-shirt" to the prompt
and rerun.
Claude: [edits the prompt text in the .nbflow, saves, invokes regen-nodes
on that image node, produces 4 new candidates with blue shirts]
Errors in errors.json¶
If a node errored entirely during the Generation Runner pass, it appears in errors.json next to the output file. Each entry has:
- The node ID
- The error type (
content_policy,timeout,connection refused, etc.) - The attempt count
- The error message
Common error types and the right rerun:
| Error | Cause | Rerun strategy |
|---|---|---|
content_policy |
A word in the prompt tripped a safety filter | Tweak the prompt language, rerun |
timeout |
Single node took too long | Rerun the node — usually succeeds on retry |
connection refused |
G-Labs dropped | Restart G-Labs and rerun the whole workflow |
api_error |
Generic upstream API failure | Rerun; if it persists, check the G-Labs console |
The per-node rerun mechanism¶
Behind the scenes, the rerun is done by regen-nodes.py — a script that takes a .nbflow and a list of node IDs, calls G-Labs for just those nodes, mirrors fresh output to R2, and updates the downstream Approve nodes.
You don't run it manually. Just tell Claude which node(s) you want rerun:
You: rerun nodes 14, 23, and 45 from XYZG3-V0-1.nbflow
Claude: [invokes regen-nodes, reports new candidates per node]
Bulk re-rolls¶
If many scenes need re-rolls (e.g., the whole workflow's first pass was disappointing), it's faster to rerun the entire workflow than to call out 8 separate nodes. The Generation Runner uses cache where possible, so unchanged nodes don't redo work.
You: rerun the entire workflow — most scenes need re-rolls
Claude: [invokes the Generation Runner again on the source .nbflow]
Rerunning vs. bumping V0-N¶
Two related but distinct ideas:
Rerunning- Same
.nbflow, same prompts, fresh generations. Output goes to a new timestamped-generated.nbflownext to the old one. Bumping V0-N- You changed something about the workflow (prompt edit, schema fix). The source
.nbflowgets a new version (V0-N → V0-N+1) and the old version is moved tobackups/. Then you regenerate.
If you're just re-rolling seeds with no prompt change, you don't need to bump V0-N. If you edited a prompt, bump V0-N first, then generate.
Detailed rules in Chapter 3 — Lvl 1-2 Variants.
When you're ready¶
→ Next: Manual B-roll Generation — handling B-roll clips, which run separately from the main .nbflow.