rabadon

overview / rules / promise-off-target

promise-off-target

5 edits this session landed outside the promised areas — the session is drifting from its star.

what it refuses, and what it lets through

Promise: the goal contract enforced IN the session. .rabadon/promise.json declares the project's goal (drift.cpp measures it at session end). An edit on an anti-path is refused; edits outside the promised areas are challenged once per session. No promise, or a broken one: nothing to enforce (fail open).

From the comment in native/gate_pre.h above the code that decides it.

promise-tamper, promise-anti-path and guard-weaken cannot be switched off by disabled[] (sealed_rule): otherwise a supervised session could list the rules protecting the goal contract as ones it need not obey. They answer only to the operator editing the files by hand, which does not pass through this hook. promise-off-target stays switchable: a once-per-session challenge buys no integrity by being locked, and drift stays on the ledger regardless.

From the comment in native/gate_pre.h above the code that decides it.

the refusal, as the agent reads it

rabadon BLOCKED this action. Rule: promise-off-target — 5 edits this session landed outside the promised areas — the session is drifting from its star star: <north_star> — latest off-target file: <file> (fires once per session; if this work is intended, update .rabadon/promise.json areas) Adjust the approach instead of retrying the same action. (only the user can override this: they may add "promise-off-target" 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/gate_pre.h, the rule and the envelope (Judge::refuse) both. 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: promise-off-target — 5 edits this session landed outside the promised areas — the session is drifting from its star star: <north_star> — latest off-target file: <file> (fires once per session; if this work is intended, update .rabadon/promise.json areas) 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": ["promise-off-target"] }

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

in the field

26 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
STOP14
WOULD_BLOCK12

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

rules

guard-weaken · promise-tamper · promise-anti-path