DecisionResult
Output of condition evaluation (Aₜ). The φ layer result.
actions_triggered[] is nested HERE, not at the top level of FullPipelineResult. This is a hard API contract requirement. Do not flatten it.
value is bool for boolean strategies (threshold/percentile/z_score/change/composite). value is str (the matched label) for the equals strategy on categorical input.
reason is populated when z_score, percentile, or change strategies could not evaluate due to insufficient or unavailable history. Auditable and queryable. "insufficient_history" — fewer than the required minimum results available. "history_unavailable" — history query failed; fallback to False. history_count reflects how many historical results were found (0 if the query failed). Set only when reason is also set.
value objectrequired
- boolean
- string
Output type of a condition evaluation.
boolean — produced by threshold, percentile, z_score, change, composite categorical — produced by equals only
Possible values: [boolean, categorical]
timestamp object
- string
- null
actions_triggered object[]
Delivery status of a single action after a decision fires.
triggered — action was invoked and delivery succeeded skipped — fire_on rule not met (e.g. fire_on='true' but decision=False) failed — action was attempted but delivery raised an error would_trigger — dry_run mode; action would have fired but was not invoked
Possible values: [triggered, skipped, failed, would_trigger]
payload_sent object
- object
- null
error object
- ErrorResponse
- null
error objectrequired
The inner error object serialised inside ErrorResponse.
This is the exact shape the API spec requires: { "type": "...", "message": "...", "location": null, "suggestion": null }
Callers must branch on type, never on message.
Canonical error type identifiers. The string value is the wire value.
Rules (from API spec):
- Callers must branch on .type, never on .message.
- Message text is for humans; type is for machines.
- The enum spelling is the ground truth for YAML, HTTP, and Python alike. In particular: z_score (not zscore), not_found (not 404), conflict (not 409).
Possible values: [syntax_error, type_error, semantic_error, reference_error, parameter_error, graph_error, execution_error, execution_timeout, auth_error, not_found, conflict, rate_limit_exceeded, bounds_exceeded, action_binding_failed]
location object
- string
- null
suggestion object
- string
- null
reason object
- string
- null
history_count object
- integer
- null
{
"value": true,
"type": "boolean",
"entity": "string",
"condition_id": "string",
"condition_version": "string",
"timestamp": "string",
"actions_triggered": [
{
"action_id": "string",
"action_version": "string",
"status": "triggered",
"payload_sent": {},
"error": {
"error": {
"type": "syntax_error",
"message": "string",
"location": "string",
"suggestion": "string"
}
}
}
],
"reason": "string",
"history_count": 0
}