# Reproduce a failure on a branch

A useful reproduction includes the exact package pins, synthetic seed, handler, app assertion and clock. A branch preserves vendor history; application cookies, in-memory sessions and files outside declared World services are separate state.

## Make a repeatable starting point

Walk [Branch a World](./branch-a-world.md) in an empty directory. It creates a baseline customer through the real SDK, branches that history, changes the customer's name and asserts the reproduced failure. Returning to the baseline proves that its customer is unchanged. The page includes exact packages, files, commands and expected assertions.

For an actual failure, run your failing assertion on the variant. Save handlers in project-owned `.volter/handlers/`, as [shape a test](./shape-the-world-for-a-test.md) shows. A branch does not snapshot process-local once-handler counters; restarting a twin rearms them. Reset/reseed before each reproduction if the failure needs an empty store; a branch over existing history intentionally includes that history.

## Return without erasing evidence

Stop app consumers before switching branches:

```console
$ npx volter world checkout baseline
$ npx volter world down
```

`checkout` stops the current branch and resumes the named one. The failure branch retains its changes. Keep the parent available while another branch references its position. Do not purge it to free space. [Branch a World](./branch-a-world.md) owns the complete branch, as-of and replay commands.

Share the source example and assertion first; a teammate can rebuild synthetic data without a platform account. To share recorded World history, use [team onboarding](./team-onboarding.md) and the existing push workflow. Review real records before sharing a clone or refreshed World.
