overview / rules / baseline-branch-delete
baseline-branch-deleteDeleting a shared branch removes it for everyone, with every commit reachable only from it, and the remote keeps no reflog to walk back through.
a push that removes a shared branch from the remote: the empty-source refspec (git push origin :main, git push origin :refs/heads/main), --delete and -d. A deletion is not a force-push and does not carry -f, which is how it walked past both the compiled law and the --force|-f deny regex most projects write. It has its own id on purpose: a repo that silenced baseline-force-push because one person rewrites their own trunk has not agreed to that trunk being deleted, and a force-push replaces history other people already have while a deletion removes the branch and every commit reachable only from it, with no remote reflog to walk back through. Deleting a branch you own is ordinary work and passes: git push origin :feature/x, git push --delete origin my-branch. So does deleting a tag (git push origin :refs/tags/nightly) and a branch merely named after one (:main-backup).
From the floor table in docs/guard.md.
Rendered from the strings in native/baseline.h and the envelope in native/gate_pre.h (Judge::refuse). A word in <angle brackets> is filled in from the command at the moment it is refused.
Only the user can switch it off, by id, in the project's guard:
or by pausing supervision with rabadon off, which records the change. Every other rule keeps running.
7 of the 778 records in the published field dataset (field.jsonl, 2026-07-27 to 2026-08-26) carry this id. STOP is a refusal in enforce mode; WOULD_BLOCK is the same verdict recorded in watch mode, where nothing is stopped.
| event | records |
|---|---|
| WOULD_BLOCK | 5 |
| STOP | 2 |
Counted from field.jsonl, the file the field page is built from.