Summary: Make Codex/Grok send outcomes machine-readable across rejection, acceptance, post-acceptance interaction failure, and transport ambiguity.
Why: turn IDs and receipts are discarded on some errors; disconnect after turn/start can mean delivery unknown, causing duplicate retries. gbot_send always renders “Sent” and approval handling is connection-wide.
Acceptance criteria: define delivery vs execution states; preserve IDs on all errors; classify post-write loss as unknown; validate acknowledgments; add stable correlation IDs using existing clientNonce/replyToId; scope callbacks; never change approval policy automatically; test lost responses, delayed/unrelated interactions, and malformed acknowledgments.
Parent: #24
Source: GPT-6 Pro post-land review of #27/#28 — https://chatgpt.com/c/6aa89f23-6920-83ea-b98a-a1f155a1ae3f
Summary: Make Codex/Grok send outcomes machine-readable across rejection, acceptance, post-acceptance interaction failure, and transport ambiguity.
Why: turn IDs and receipts are discarded on some errors; disconnect after turn/start can mean delivery unknown, causing duplicate retries. gbot_send always renders “Sent” and approval handling is connection-wide.
Acceptance criteria: define delivery vs execution states; preserve IDs on all errors; classify post-write loss as unknown; validate acknowledgments; add stable correlation IDs using existing clientNonce/replyToId; scope callbacks; never change approval policy automatically; test lost responses, delayed/unrelated interactions, and malformed acknowledgments.
Parent: #24
Source: GPT-6 Pro post-land review of #27/#28 — https://chatgpt.com/c/6aa89f23-6920-83ea-b98a-a1f155a1ae3f