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.

Browse all patterns