Branches
Parallel design workflows
Branches
A branch is a parallel design workflow over the same project. Branches let you explore alternatives without disturbing the main design and merge back when an option proves out. The model mirrors git: branches have history, diffs, and merges.
Why branches
Spatial designs are not single-shot. A typical project iterates through dozens of configurations — different cabinet placements, different splitter ratios, different pump sizes. Without branching, every alternative either overwrites the working design or accumulates as a side-by-side copy with no diff history.
Branches make iteration first-class. Open three options as three branches; compare them on the Globe; merge the best one to Main; archive the rest with their full provenance.
Operations
- Branch. Fork from any commit. The new branch starts identical to its parent.
- Commit. Snapshot the current Codex state on a branch. Commits carry a
message, an author, and a timestamp.
- Diff. Compare two commits or two branches. Diffs are spatial — added,
modified, and removed features render directly on the Globe with a side-by-side toggle.
- Merge. Bring one branch's changes into another. Conflicts surface as
Jax-mediated review prompts; you accept, reject, or rewrite each conflicting hunk.
- Blame. For any feature, show the commit that last modified it and the author
who made the change.
- Time-travel. Check out any commit as a read-only view. Useful for design
reviews and audits.
Main
Main is the canonical branch. Every project has exactly one. Promoting a design to baseline is a merge into Main with the approve authority.
Working with Jax across branches
Jax operates on the active branch. Switching branches re-points Jax's working context; the conversation history is preserved per session, not per branch. Ask Jax to "redo this on a new branch" and it will fork, switch, and replay.
Subagents inherit their parent's branch. A spawned subagent cannot mutate Main unless the parent has write on Main.
Limits
- Branches are cheap to create but hold a full snapshot of the Codex state.
Practical projects keep a working set of single-digit branches; archived branches stay queryable but do not count against active editing surfaces.
- Cross-project merges are not supported. A branch always exists within one
project.