How Kairo separates a response ending from an action succeeding—and preserves machine facts through repair, containment, cancellation, interruption, and settlement.
A request could execute a tool, receive a failure, and still end in fluent bounded prose. Earlier lifecycle representations let “the response completed” stand in for “the request completed successfully.” Later recovery phases could also replace the response candidate and accidentally replace the job’s action summary. That was a correctness defect: prose and terminal lifecycle state could both conceal an observed failure.
| Dimension | Question answered | Representative values |
|---|---|---|
| Response completion | Did the conversational turn reach an ending? | completed, contained, cancelled |
| Requested action | What happened to the operation the user requested? | succeeded, failed, indeterminate, not_applicable |
| Verification | Was the relevant claim or effect established? | pass, fail, indeterminate |
| Review | Did the reviewer accept the candidate under the evidence? | pass, fail, indeterminate, revise |
| Durability | Was persistence confirmed by an authoritative receipt? | confirmed, failed, indeterminate |
response_completion = completedrequested_action_outcome = failedverification_state = failreview_state = failoutcome = boundedThe final-answer model receives a compact, delimited block derived from current-turn machine state rather than reconstructing truth from natural-language tool output. It can explain, apologize, suggest an alternative, or close naturally. It cannot upgrade a failed action into “saved,” an indeterminate write into “stored,” or missing evidence into confirmed absence.
A deterministic contradiction boundary checks claim shape against the typed state. It is state-sensitive and context-sensitive: “I saved that” conflicts with a failed write, while “I couldn’t confirm that it was saved” does not. Quotation, negation, hypothetical discussion, and truthful descriptions of earlier failures are not treated as present assertions.
Cancellation and interruption obey the same rule. Once ToolFinished establishes a terminal action outcome, no later response disposition may rewrite it to not_applicable.
This machinery is not a universal hallucination detector and does not govern ordinary style. It protects facts the runtime already knows: action outcome, evidence availability, persistence receipts, retrieval status, and related current-turn state. A completed conversation still does not prove successful action, and a passing verifier does not confer facts outside the evidence it reviewed.