The gapInbox claim and prompt assembly can happen before the user message is appended.
Follow one prompt across six owners.
Classify before replay.
draft restoredRejectedFix admission, then resend once.
user/message existsDurableDo not duplicate the prompt.
turn/start onlyGapRecover an external copy.
effects unknownVerifyInspect targets before replay.
Seven-step recovery.
- Stop retries.
- Record Session.
- Inspect events.
- Find rpcId.
- Verify effects.
- Recover copy.
- Replay once.
Repair the contract, not the toast.
Make the receipt durable, including pending and cancelled states.
Keep a browser outbox keyed by rpcId until user/message arrives.
Twelve durability gates.
- Rejected restores.
- New typing wins.
- Receipt stays distinct.
- Pending is visible.
- rpcId reconciles once.
- Gap offers recovery.
- Reconnect deduplicates.
- Session scope holds.
- Images clean safely.
- Queue and steer match.
- Effects are verified.
- Durable input persists.