admin is never granted by an agent. The hazard is the one this recipe
shows last: a human approves reader and the agent, re-planning or told to by a ticket’s
text, tries to execute admin with that approval.
The policy
runnable
The code
runnable file=main.py
What the agent sees
admin is refused by the policy before the approval is even considered. Had the policy allowed
it with approval, the approval for editor would still not have matched: it is bound to the
hash of editor, and admin hashes differently.
The receipt
runnable
When an AMBIGUOUS appears
An IAM call that timed out may have bound the role. Read the binding back from the provider, thenctrlrun resolve grant:ana@example.com:editor --committed or --failed. Granting a role
twice is usually idempotent at the provider, but the receipt should say what happened, not what
was assumed.