Generation Tree
Every variant remembers where it came from
After twenty variations, the good one from ten minutes ago is unfindable — iteration history is a flat scroll, or nothing at all. Generation Tree renders the work's real topology: every variant hangs off its parent, branches stay comparable, and any node restores its full state — prompt, seed, settings — in one click. The chat fork, applied to the medium where branching is the actual shape of the work.
Framing
The problem
After twenty variations the good one from ten minutes ago is unfindable — iteration history is a flat scroll, or nothing at all.
The pattern
Render generations as a tree: every variant hangs off its parent, branches stay comparable, and any node restores its full state in one click.
Why chat breaks here
Chat scrollback is a single line while visual iteration branches — the topology of the work does not fit the container.
Risks
Unbounded trees become their own navigation problem — prune, collapse, and name branches, or the map ends up as unfindable as the scroll it replaced.
Avoid when
Single-shot generation with no iteration to track.
Use when
Iteration produces many variants across diverging directions and the good ones must stay findable and restorable.
DOPE evaluation
- Directability
- Any node is a restart point — click to restore its full state and branch from there, no retyping the past
- Observability
- The lineage is the interface: which variant came from which, and where each branch was abandoned, is visible at a glance
- Predictability
- Restoring a node reproduces its exact state — parent, prompt, seed, settings — not an approximation from memory
- Explainability
- Each edge names what changed between parent and child, so the path to the good variant reads as a decision log
In the wild
- ComfyUI · Node graph (Comfy Org) — The generation pipeline as an explicit graph — lineage is the interface. Power-tool register: it shows the topology the pattern wants, at the cost of approachability.
- Midjourney · Vary & remix lineage (Midjourney) — Every vary/remix job links back to its parent job — the lineage exists in the data and job history, but no tree view renders it navigable.
- Figma · Branching (Figma) — Named branches off a main file with review-and-merge — design iteration as a tree, though per-file rather than per-generation.
FAQ
When should I use the Generation Tree pattern?
Iteration produces many variants across diverging directions and the good ones must stay findable and restorable.
When should I avoid the Generation Tree pattern?
Single-shot generation with no iteration to track.
What problem does Generation Tree solve?
After twenty variations the good one from ten minutes ago is unfindable — iteration history is a flat scroll, or nothing at all.
Why is chat the wrong fit for this?
Chat scrollback is a single line while visual iteration branches — the topology of the work does not fit the container.
Related patterns
- Extends: Conversation Branches — The chat fork, applied to visual artifacts — where branching is the actual shape of the work.
- Often paired with: Seed Pinning — Pin the seed inside one branch; the tree keeps every branch findable.
- Alternative to: Output-Level Undo — Linear walk-back through states vs the full topology of every path taken.