# Branch (/academy/branch)



A branch is a spare workbench.

`main` is the demo table. Judges walk up to it. You do not try the wild [auth](/academy/auth) rewrite on the demo table. You drag a second bench out of the same [Git](/academy/git) shop, copy the current project onto it, and make the mess there.

Name the bench after the job: `fix-cors`, not `asdf`. Future you is standing in this room too.

**The demo table stays plated**

You [commit](/academy/commit) on the spare bench. You break things on purpose. `main` does not move. When the experiment works, you [merge](/academy/merge) the bench back — or you file a [pull request](/academy/pull-request) so someone (often tomorrow-you) looks first.

If the experiment is a disaster, you fold the bench and throw the wood out. The demo table never knew.

This is also how two people share one repo without elbowing the same file at the same second. Each person gets a bench. The table stays for the show. An agent via [MCP](/academy/mcp) should get a bench too. Do not let it sand the table during judging.

**Name it like a ticket, not a mood**

`add-stripe-webhook` reads in the log. `please-work` does not. The CLI scaffold from `npx create-hackhaton-space-stack@latest` lands you on `main`. Branch before the first "quick" rewrite.

A merge conflict is not a fire alarm. It is Git asking which bench's version of one line wins. You pick. You move.

**What this unlocks**

A demo that still boots while you try the dumb idea.

Experiment on a bench. Keep the table clean.
