ctx_id,message,datadata.decision,data.reason_codes,data.reasonsdata.policy_selection_reason_code,data.policy,data.trace_hashdata.idempotency_key
Contract Invariants (v1)
- Required response fields:
ctx_id,message,data,data.decision,data.reason_codes,data.reasons,data.policy_selection_reason_code,data.policy,data.trace_hash,data.idempotency_key. data.decisionenum values are onlyapprovedordenied.messageis human-readable (best-effort). Integrations should branch ondata.*fields, not message text.data.reason_codesanddata.reasonsmay be empty arrays whendata.decisionisapproved.- When
data.decisionisdenied, at least onedata.reason_codesentry is present. data.trace_hashis stable across v1.x for the same canonicalized input and policy context.- Canonicalization rule: Kernite deterministically canonicalizes all hash-participating arrays (for example sorted
reason_codesand canonical policy-match entries used for hashing). Order-only differences inselected_policiesandrulesmust not changedata.trace_hash.
Conformance Sources
- Execute vectors:
/conformance/execute-vectors - Reason code semantics:
/conformance/reason-codes