← Back to patterns
Visual & Generative
Emerging

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.

Metaphor

Family Tree

Interaction

Branching Nodes, Click-to-Restore, Side-by-Side Compare

Use case

Image Iteration, Design Exploration, Variant Management

Failure mode

Lost Lineage

Control mechanisms

Lineage Graph · Node Thumbnails · Branch Labels · Restore-Full-State · Two-Node Compare

Reference examples

ComfyUI node graph · Midjourney vary & remix lineage · Figma branching

Interactive Example

The live side-by-side is the comparison.

This prototype already contains the contrast between chat and the pattern response. It stands as the primary comparison surface for this page.

Loading Demo

Preparing the interactive example for this pattern.

The lineage already exists. The scroll simply never draws it.

The chat column stacks seven generations by clock time. Three creative directions — warmer, cooler, more trees — sit interleaved among them, so the warm one with more trees has no address: the fourth? the fifth? Scroll back far enough to find the thumbnail and the seed and settings that made it are gone.

Each generation gets an address on the graph: a parent, an edge naming its single change (+warmer, square crop, denser sky), and a state that restores exactly rather than approximately — prompt, seed #31007, warmth 74, crop wide. Two cmp checkboxes turn a squint into a settings diff, and abandoned branches stay dim on the map instead of gone.

None of this is new information. A vary job already records the job it came from; the graph is thrown away by the renderer, not by the model. What the move costs is curation — an unpruned map is as unfindable as the scroll it replaced — which is why the demo caps the canvas at twelve nodes and hangs a × on every leaf.

Order of arrival is the weakest possible index for work whose real structure is descent.

DOPE Lens

How this pattern improves AI interaction quality.

Observability

The lineage is the interface: which variant came from which, and where each branch was abandoned, is visible at a glance

Directability

Any node is a restart point — click to restore its full state and branch from there, no retyping the past

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

Fit

Where it earns its place.

Use it
when

Iteration produces many variants across diverging directions and the good ones must stay findable and restorable.

Avoid
when

Single-shot generation with no iteration to track.

In the wild

Where this pattern already ships.

The pattern is shipping but still maturing across products. Entries below show how different teams have approached it; expect variation as the space settles.

Research Frame

Why this pattern exists, and where it breaks.

After twenty variations the good one from ten minutes ago is unfindable — iteration history is a flat scroll, or nothing at all.

Render generations as a tree: every variant hangs off its parent, branches stay comparable, and any node restores its full state in one click.

Chat scrollback is a single line while visual iteration branches — the topology of the work does not fit the container.

Unbounded trees become their own navigation problem — prune, collapse, and name branches, or the map ends up as unfindable as the scroll it replaced.

Common questions

What people ask about this pattern.

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

Curated connections, not just neighbors.

Hand-picked relationships — what this pattern pairs with in practice, what it replaces, what it builds on, and what builds on it.

  • Often paired with

    Seed Pinning

    Pin the seed inside one branch; the tree keeps every branch findable.

  • Alternative to

    Output-Level Undo

    Output-Level Undo walks back one linear history with Cmd+Z; Generation Tree keeps every branch and restores any node.

  • Extends

    Conversation Branches

    The chat fork, applied to visual artifacts — where branching is the actual shape of the work.