Open Source · Safe retry
A timeout is not a retry instruction.
After dispatch, the next action depends on evidence of the external effect—not merely on whether the caller received a response.
dispatch under one-use authority
↓
response lost / timeout
↓
preserve unresolved effect
↓
reconcile postcondition evidence
↓
confirmed success → do not retry
confirmed no-effect → fresh authority + new attempt
ambiguous → independent/manual verificationOperator flow
node packages/cli/bin/ruleoak.js effect pending
node packages/cli/bin/ruleoak.js effect reconcile --limit 20
node packages/cli/bin/ruleoak.js effect show --id <effect-id>
node packages/cli/bin/ruleoak.js effect retry-plan --id <effect-id>Rules
- Never reuse the original ExecutionLease.
- Reconciliation observes; it does not replay.
- Retry only after no-effect is established and fresh authority is issued.
- Use provider-native idempotency/transaction keys where available.
- Keep unresolved state visible when evidence remains weak.