Field notes

2 / 4
Illustrative source and destination path/hash lists are compared. The destination has an extra old.js file, so the full-record comparison must fail. Matching hashes concern integrity, not authorship.

A release manifest should name every published byte

One aggregate digest is useful, but a sorted per-file manifest tells you exactly what changed or went missing.

July 16, 2026 · 3 min · XB Field Notes
A permanent 308 relocation links an old URI to a new URI while retaining POST on both sides.

Redirects and error codes should preserve the story

Check the method, Location header, and cache behavior before choosing a redirect or an error status.

July 14, 2026 · 3 min · XB Field Notes
An illustrative two-column ledger separates HTTP headers, final URL and status from TLS dates and expiry. Body equality requires another check.

Read the public edge in two commands

Two small read-only helpers turn the public endpoint into evidence you can inspect before and after a release.

July 13, 2026 · 4 min · XB Field Notes
HTML, download, and error-page artifact samples point to corresponding public GET bodies. Expected statuses are shown separately as 200, 200, and 404. These are post-selection samples to compare in English and Chinese.

A release is not complete until the public edge agrees

Validate one staged artifact, publish it, then compare representative public responses with those exact bytes.

July 9, 2026 · 3 min · XB Field Notes
Detect, Scope, Fix and Verify appear on a left-to-right chronology, with a separate evidence sheet attached to each phase. Facts, uncertainty and prevention close the record.

A postmortem should leave a fact record

A postmortem is a chronological map from detected symptom to verified fix, backed by the commands that produced each fact.

July 7, 2026 · 3 min · XB Field Notes
Inclusive byte offsets 0 through 15 select exactly 16 bytes from a complete representation of N bytes.

Range requests should prove which bytes were selected

A 206 response is useful only when its boundaries and total size describe the bytes that were returned.

July 6, 2026 · 3 min · XB Field Notes
GET and HEAD request no state change; PUT and DELETE are not safe even though their intended repeat effect is idempotent.

HTTP methods are a promise about side effects

Get the method boundary right once, and OPTIONS, HEAD, and idempotent writes stop being a surprise.

July 2, 2026 · 3 min · XB Field Notes
A cache sends a GET with If-None-Match and illustrative tag W/"release-a" to the origin. A matching response returns 304 so the cache can reuse its stored body; a changed representation returns 200 with a body.

Validators decide whether a cached copy is still the answer

Conditionals are the cache’s second clock; a 304 means the stored copy is still the answer.

June 30, 2026 · 3 min · XB Field Notes