rabadon

overview / rules / baseline-force-push

baseline-force-push

A force-push to a shared branch rewrites history other people already have.

what it refuses, and what it lets through

a force-push to a shared branch (main, master, trunk, develop) — --force, -f, a bundled short cluster carrying f (-fq) and the +refspec form alike. --force-with-lease is the safe form and passes. Pushing --force to your own branch passes.

From the floor table in docs/guard.md.

the refusal, as the agent reads it

rabadon BLOCKED this action. Rule: baseline-force-push — a force-push to a shared branch rewrites history other people already have git push <flag> writes every branch, and '<branch>' is one of them — name the branch you mean, or push to your own branch Adjust the approach instead of retrying the same action. (only the user can override this: they may add "baseline-force-push" to disabled[] in .rabadon/guard.json or run `rabadon off`. If this rule looks wrong for the task, stop and ask the user; do not switch supervision off yourself.)
rabadon BLOCKED this action. Rule: baseline-force-push — a force-push to a shared branch rewrites history other people already have force-push to shared branch '<branch>' — use --force-with-lease, or push to your own branch Adjust the approach instead of retrying the same action. (only the user can override this: they may add "baseline-force-push" to disabled[] in .rabadon/guard.json or run `rabadon off`. If this rule looks wrong for the task, stop and ask the user; do not switch supervision off yourself.)
rabadon BLOCKED this action. Rule: baseline-force-push — a mirror push makes the remote identical to this repo's refs, force-updating what is here and removing what is only there git push --mirror from a repo whose refs cannot be read or hold no branch — it would empty the remote; name the branch you mean, or silence baseline-force-push by id Adjust the approach instead of retrying the same action. (only the user can override this: they may add "baseline-force-push" to disabled[] in .rabadon/guard.json or run `rabadon off`. If this rule looks wrong for the task, stop and ask the user; do not switch supervision off yourself.)

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.

in watch mode the same verdict is recorded, and nothing is stopped

rabadon (watch) would have blocked this. Rule: baseline-force-push — a force-push to a shared branch rewrites history other people already have git push <flag> writes every branch, and '<branch>' is one of them — name the branch you mean, or push to your own branch Nothing was stopped. `rabadon on` makes this a real refusal.

switching it off

Only the user can switch it off, by id, in the project's guard:

{ "disabled": ["baseline-force-push"] }

or by pausing supervision with rabadon off, which records the change. Every other rule keeps running.

in the field

20 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.

eventrecords
WOULD_BLOCK19
STOP1

Counted from field.jsonl, the file the field page is built from.

rules

baseline-branch-delete

commands

rabadon on | off | status | toggle