Retryability is marked by presence, not by a boolean
The absence of the marker is load-bearing: the retry gate tests for the literal value true, so anything else (including an explicit false) means do not retry.
The rule
Normative: this is the rule
- An error output that came from a retryable failure carries
error_retryableset totrue. - An error output from a non-retryable failure omits the key entirely rather than setting it to
false. - Retry applies only where the value is literally
true.
What it means
Retryability is not a boolean field with a default; it is a key that either
exists or does not. A retry gate that treats it like an ordinary flag —
false as an authoritative "no", any truthy value as a "yes" — reads this
backwards. The gate here checks the value against the literal true and
nothing else, so writing false on purpose changes nothing: the failure
still does not retry, exactly as an absent key does not.
Example
The same node failing twice, once in a way the runtime marks retryable and once in a way it does not.
{"error_retryable": true}{}Rule identifiers are permanent and are never renumbered. Each implementation publishes its own standing against these rules; this specification does not.spec 1.0-draft · ERR-2 · changed in spec 1.0