The example is an append to a shared notebook. A lost answer can hide a committed note. Request arrival, database commit, and response receipt are different observations; none should be inferred merely from the preceding one.
sequenceDiagram
participant C as Client
participant S as Server
participant D as Database
C->>S: Append note with operation key
S->>D: Commit note and operation receipt
D-->>S: Commit completed
Note over S,C: Response does not arrive before the client deadline
C->>S: Recover using the original operation identity
S->>D: Read matching receipt under current access policy
D-->>S: Original application result
S-->>C: Result correlated to the new request
| Observation | What it supports | What it does not establish |
|---|---|---|
| Client timeout | No answer received within the waiting limit | Whether the note committed |
| Handler entry log | Request reached that handler | Commit or successful tool execution |
| Matching committed receipt | Recorded outcome for that operation | Every external side effect succeeded |
| Missing receipt | No matching record visible to that lookup | No concurrent attempt can commit later |
| Matching note text | That text exists | Which intended operation created it |
| Identifier | Question it answers |
|---|---|
JSON-RPC id | Which request does this response answer? |
| Resource handle | Which notebook does this call target? |
| Application operation key | Which intended append is being submitted again? |
Preserve the original operation key and payload when following a documented retry contract. Check its retention window and current access rules. A payload conflict or expired operation key is not repaired by quietly generating a new key. A new key may describe a second action. Bound retry attempts and keep an unresolved outcome visible to the user.
This is a diagnostic reference, not a runnable lab dependency. Checked 2026-09-09 against HTTP retry semantics and JSON-RPC correlation.
Lesson 2.1 · A timeout does not tell you whether the write happened
The sheet is the diagnosis. The course is the fix.
Lesson 2.4 makes a repeated business operation detectable with an atomic receipt, then fires duplicates, conflicting payloads and concurrent attempts at it in lab 2. Every lab runs on your machine with Docker Compose, and each one ships tests that break the code on purpose so you see them catch it.
Free · four printable pages
The 2026-07-28 migration cheatsheet
Every breaking change next to what replaces it, the error codes and the deprecation clock. We'll email it to you.
More free sheets#
- Your MCP server fails on one replica. Start with the request. Lesson 1.1
- One MCP request, field by field. Lesson 1.2
- Was it the transport, the protocol or the tool? Lesson 1.3
- The tool answered. The approval never came. Lesson 3.1
- Health check green, MCP tool still failing. Lesson 8.1
- What MCP 2026-07-28 breaks, and what's only deprecated. Lesson 9.1