Skip to content

Errors and Edge Cases

m4bwav edited this page Nov 4, 2026 · 1 revision

A refusal exits 2. There is no override for a gate except session end --force "<why>".

Outward-facing actions

Posting and deploying refuse whatever the profile says:

$ grw.py guard post
{
 "ok": false,
 "refused": [
  "outward-facing: draft it and hand it to a person, whatever the profile says"
 ],
 "allowed": false
}

A guard the profile denies

$ grw.py guard touch_main
{
 "ok": false,
 "refused": [
  "deny: branch"
 ],
 "allowed": false
}

Handing to a person with no question set

 "refused": [
  "no askwright set: give --why (for a PR or a chat question)"
 ]

Banned words in PR text

lint-text checks a file against the profile's text_bans:

 "refused": [
  "text names a banned term: secret-codename"
 ],

Stopping while work is selectable

session check won't allow a stop while an item can be chosen:

 "may_stop": false,
 "why": [

Finishing without evidence

done needs --evidence and --oracle:

grw.py done: error: the following arguments are required: --evidence, --oracle

Known limits

  • Claims and the state lock do not coordinate across git worktrees, because each worktree has its own ledger copy.
  • The physical-sense check before a review is an instruction, not a gate.
  • wait-human accepts --why with no question set, so it can skip the page.
  • road_warning is advice. claim does not enforce it.

Clone this wiki locally