The command did what it says. data holds the result.
Use data. Look at warnings.
error
1 or 2
It failed, and the CLI knows the node did not act on it (nothing was sent, the node refused, or it was a read).
Branch on error.code. Safe to fix and retry.
uncertain
1
A request was (or may have been) published and the CLI cannot prove what happened, or the node accepted it and the local write failed.
Do not retry blindly. Check the order first. See Recovering.
uncertain only exists for commands that publish a write (order new, the takes, the
invoices, the trade steps) and for order sync’s partial local save. Pure reads
(order list, order info, message list, schema) are ok or error only: they are
safe to repeat.
Here persistence on an uncertain outcome with daemon_acceptance: unknown is about the
trade index: it is recorded before the request is published and stays spent whenever the request may have been
published, so the next attempt uses a fresh key. An index that cannot be recorded stops the
command with store_unwritable before anything is sent. With order_not_saved,
persistence: failed is about the order row, which could not be saved.
For the trade steps (fiat-sent, release, cancel) an uncertain outcome shows
applied instead when the maker of a range order sent a key for the child order: its trade
index was recorded before publishing. An index that cannot be recorded stops the step with
store_unwritable before anything is sent.
Most of the time status + error.code is enough. Stages answer two finer questions:
“Could the node have acted?” — publication is published or unknown.
“Is my local store in step?” — persistence is failed ⇒ the node moved on but the
local row did not; follow the warning or error advice (often: order info, order sync).