oficina / docs Public

Finishing a branch: push and open the discussion, then squash-merge

Paul's standing rule, recorded so it is not re-decided per branch.

The order is the point rather than the ceremony. A squash merge
deliberately flattens the commit history that carried the branch's
reasoning -- the rulings, the reversals, the things that turned out to be
wrong twice. The discussion is where that survives. If it does not exist
before the merge, the reasoning is not scattered, it is gone.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011F5CivVm4CmL9ByfSSAaXA
Paul Campbell pushed by paul@keymail.dev 6d4d9401fbedfbe6a3d8d7d0bbdab22fd12a1c76 parent 8a011f9
1 file changed, +11 −0
  • AGENTS.md +11 −0

CI passed — run details

diff --git a/AGENTS.md b/AGENTS.md
index cc307d9..3c0c68a 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -95,6 +95,17 @@ directions, and the Go build and tests. `amadan ci status -branch <n>`
exit 0 is the merge gate; exit 2 is pending and exit 3 means nothing ran,
and neither is green.
+**Finishing a branch is always the same two steps, in this order** (Paul's
+rule, 2026-08-30): **push and open the branch discussion, then squash-merge
+to `main`.** Never merge without the discussion existing first, and never
+merge locally instead of pushing.
+
+The order is the point rather than the ceremony. A squash merge deliberately
+flattens the commit history that carried the branch's reasoning — the
+rulings, the reversals, the things that turned out to be wrong twice. The
+discussion is where that survives. If it does not exist before the merge,
+the reasoning is not scattered, it is gone.
+
## Working through amadan
This repo is hosted on an amadan hub (`AMADAN_HUB=https://amadan.net`),