Two lanes connect matching Accept and Content-Type media types under Vary: Accept, for one URI.

Content-Type and Vary work together

One URL can return JSON to an API client and plain text to another reader. Content-Type identifies the selected representation; Vary identifies request fields relevant to selecting it. A correct body label cannot prevent a cache from choosing the wrong stored response when the request-matching information is missing. ...

October 12, 2026 · 5 min · XB Field Notes
Tenant, operation, and action key form the fixture’s scoped identity. Business effect and receipt commit together in one database; matching requests with retained records replay the saved result.

Idempotency keys scope one logical action

An idempotency key identifies one logical action only within a service’s defined scope and retention window. Reusing the same text is not a universal exactly-once guarantee. The service must associate that identity with the right principal and operation, coordinate competing attempts, and retain enough authoritative information to recognize the action later. ...

October 12, 2026 · 7 min · XB Field Notes
Two application/json labels lead to different bodies: valid JSON has a check mark; not JSON has a cross. A correct declaration does not validate the bytes.

Content-Type tells the reader what it is

Content-Type describes the representation a sender intends to provide. It does not inspect the body, convert its bytes, or guarantee that every recipient will process it identically. A reliable endpoint keeps its serializer, declared media type, and consumer expectations in agreement, including when an error takes a different path through the server. ...

October 10, 2026 · 4 min · XB Field Notes
Repeating PUT first on /item preserves one stored value while statuses change from 201 to 204. Repeating POST same on /events creates two entries with distinct Locations.

HTTP methods express a contract you must implement

An HTTP method describes the action requested on a target resource. Clients and intermediaries use those semantics when deciding whether to fetch, cache, or retry. Choosing a familiar verb is only the beginning: the application must implement the behavior that the verb promises. Calling a destructive operation GET does not make it safe. A useful API documents its resource model, representation, authorization, and error conditions alongside the method. ...

October 8, 2026 · 5 min · XB Field Notes
Within one reused HTTP/1.1 connection, the long route has three request nodes and the short route has two, both ending at /final.

Redirect chains add requests

A followed redirect makes the client resolve a Location value and issue another request before it reaches the desired representation. Several individually reasonable rules can form a chain: normalize a hostname, add HTTPS, fix a trailing slash, and move an old article. Review the complete path seen by a visitor, because each intermediary becomes another dependency. ...

October 4, 2026 · 5 min · XB Field Notes
One shared classic-script payload feeds three MIME-policy columns: correct JavaScript with nosniff executes, text/plain with nosniff is blocked, and loose text/plain executed in the earlier tested Chrome only.

Security headers need observable browser behavior

Security response headers ask a supporting browser to enforce specific rules. Their value comes from the behavior those rules change, not from the length of a header checklist. A static site still has document loading, scripts or styles, embedding, navigation, and transport boundaries to consider. Select policies that match the actual page and delivery path, then verify both intended restrictions and legitimate functionality. ...

September 30, 2026 · 5 min · XB Field Notes
Strong validators distinguish changed bytes; weak validators may preserve semantic equivalence. A fixed incorrect tag can return false 304 after the object changes.

ETags and conditional requests avoid work

A 304 is useful only when the old representation really remains an acceptable substitute. ETag supplies the origin’s version claim; it does not independently verify that claim. An incorrect tag can make conditional requests efficiently preserve wrong content. Test both unchanged data and meaningful changes before counting reduced transfers as a performance improvement. ...

September 26, 2026 · 5 min · XB Field Notes
A fast HTTP/2 response completes while a slow handler waits on the same TCP connection; a missing TCP byte range blocks later bytes from both streams.

HTTP/2 removes HTTP response-order blocking

Here, removing head-of-line blocking means removing HTTP response-order constraints on a shared connection. HTTP/2 does not remove TCP head-of-line blocking. A later response can finish while an earlier handler waits, but shared transport capacity, connection-level flow control, and application bottlenecks can still couple the streams. ...

September 15, 2026 · 6 min · XB Field Notes