AMBIGUOUS. The agent’s
retry is refused, an alert fires, and someone has to look. This recipe makes two such effects,
resolves one each way, and shows what the evidence says afterwards.
The policy
runnable
The code
runnable file=main.py
What the agent sees
--failed was retried and committed on its own; its record no
longer names a resolver, because the retry was the agent’s action, not the human’s. The DNS
update, resolved --committed, refuses its retry as a duplicate.
The receipt
runnable
ctrlrun effects --state ambiguous, then
ctrlrun resolve dns:example.com:api --committed and ctrlrun resolve refund:txn_7 --failed,
and ctrlrun inspect <action_id> shows the EFFECT_RESOLVED event with resolved_by.
When an AMBIGUOUS appears
This recipe is what to do. Two rules: never resolve from memory or from a cache, ask the remote; and resolve--failed only when the remote is authoritative for the absence, because
--failed licenses a second execution.
Next
- Reconcile against the remote: the same answer from a hook.
- Resolve an AMBIGUOUS effect · Get started · Why.