The one rule that matters
Available
Why two fields
Section titled “Why two fields”A single execution contains two independent things:
| Question | Field |
|---|---|
| Did the agent finish its work? | status |
| Did an effect occur in the outside world? | operations[].status |
They are not linked. The agent can reply successfully while the SMS never went out — and that is a normal outcome, not an error.
{ "status": "completed", "operations": [ { "capability_id": "notification.send_sms", "status": "UNKNOWN" } ]}In the response above: the agent replied, but whether the SMS arrived is unknown.
How this happens
Section titled “How this happens”If the connector times out, the error is returned to the model. The model
still writes its answer — it has to say something to the user. The
operation stays UNKNOWN in the Ledger and reconciliation resolves it
later.
Operation statuses
Section titled “Operation statuses”| Status | Meaning | What you do |
|---|---|---|
VERIFIED |
✅ Confirmed against the source. The only meaning of “done” | Continue |
ACKNOWLEDGED |
The connector replied — transport, not outcome | Wait |
UNKNOWN |
⚠ Outcome unknown | ⛔ Do not retry. Wait |
MANUAL_REVIEW |
Held for a human | Resolved in the console |
FAILED |
Explicit rejection — an effect is impossible | Safe to retry |
Right and wrong code
Section titled “Right and wrong code”Wrong — the most common mistake:
n = dx.run(...)if n.status == "completed": print("SMS sent!") # ⛔ may be a LIERight:
n = dx.run(...)
if n.verified: print("SMS delivered") # ✅ confirmed against the sourceelif n.unknown: print("Outcome unknown — wait, do not resend")else: print("Did not happen")Why it is built this way
Section titled “Why it is built this way”Many platforms treat HTTP 200 as “done”. That is wrong:
- the connector accepted the request — that is transport;
- the provider processed it — that is a different thing;
- the effect actually occurred — that is a third thing.
Davirix marks only the third as VERIFIED, and proves it by reading
back from the source. Without a read-back it stays ACKNOWLEDGED — and
that is an honest answer.
- Status reference — 12 execution and 9 operation states
- Idempotency — how you are protected from duplicates
- First execution in 5 minutes