diff --git a/CLAUDE.md b/CLAUDE.md index 5398c75..cb7d231 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -530,3 +530,15 @@ Test that before building anything else. Every other system exists to make that - **When a request conflicts with this document, say so.** Do not silently comply. This file is the argument; if it is wrong, change the file first. - **When adding a system, state which side of §2 it falls on.** State or text. If it is both, it is two systems. - **Prefer deleting scope.** The POC's value is answering one question fast. + +### Git workflow + +The standard flow for this project. Claude follows it; the human owns `master`. + +- **Branches.** `master` and `dev` are long-lived. `master` is release; `dev` is integration. All work branches off `dev`. +- **Never commit non-doc changes directly to `master` or `dev`.** Anything that is not purely docs gets its own branch (`feature/…`, `fix/…`, `chore/…`, etc.), branched off `dev`. +- **Doc-only edits may commit directly to `dev`** — no branch required. +- **Never commit to `master`.** Ever. The human merges `dev` → `master` as they see fit. Claude never touches that merge. +- **Merging a working branch → `dev`** happens only after the work is done, smoke-tested, and **the human confirms**. Merge locally with `--no-ff`. +- **After merging to `dev`, delete the working branch locally.** +- **Pushing.** Origin is set. Claude pushes **only `dev`**, and only after a merge. Never push working branches or `master` — the human always pushes `master`.