The gapInbox claim and prompt assembly can happen before the user message is appended.

Follow one prompt across six owners.

01Draftbrowser memory
02RPCadmission
03Inboxqueued
04Claimrisk window
05Eventdurable
06Modelprocessing

Classify before replay.

draft restoredRejected

Fix admission, then resend once.

user/message existsDurable

Do not duplicate the prompt.

turn/start onlyGap

Recover an external copy.

effects unknownVerify

Inspect targets before replay.

Seven-step recovery.

  1. Stop retries.
  2. Record Session.
  3. Inspect events.
  4. Find rpcId.
  5. Verify effects.
  6. Recover copy.
  7. Replay once.

Repair the contract, not the toast.

Option APersist before acceptance

Make the receipt durable, including pending and cancelled states.

or
Option BRetain until event

Keep a browser outbox keyed by rpcId until user/message arrives.

Twelve durability gates.

  1. Rejected restores.
  2. New typing wins.
  3. Receipt stays distinct.
  4. Pending is visible.
  5. rpcId reconciles once.
  6. Gap offers recovery.
  7. Reconnect deduplicates.
  8. Session scope holds.
  9. Images clean safely.
  10. Queue and steer match.
  11. Effects are verified.
  12. Durable input persists.