From d340e06dadec885e4743fdfeb5260b5fa128addb Mon Sep 17 00:00:00 2001 From: Phillip Tarrant Date: Thu, 9 Jul 2026 11:27:04 -0500 Subject: [PATCH] =?UTF-8?q?docs:=20add=20git=20workflow=20to=20working=20a?= =?UTF-8?q?greement=20(=C2=A718)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Long-lived master + dev; all non-doc work on branches off dev; doc-only edits go straight to dev; human owns the dev->master merge and pushes master; Claude pushes only dev, only after a --no-ff merge. Co-Authored-By: Claude Opus 4.8 (1M context) --- CLAUDE.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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`.