ctrlrun.AuthorityDenied — class, defined at src/ctrlrun/errors.py:40
ActionDenied, because an authority denial is the action being denied and
an agent loop’s existing except ActionDenied should keep working. reason is one of the
closed set in §4.3 — no_authority, authority_constraint, authority_expired,
authority_escalation, authority_revoked, authority_unreadable — never a grant id: a
grant may legally be named no_authority, and evidence that can be spoofed by naming a
grant is not evidence. The id travels in grant_id.