Good revision 0 and bad revision 6 bound unknown ancestry candidates. Child-to-parent arrows connect revisions. Retest the candidate and parent; skipped revisions can leave a set.

git bisect narrows the first bad commit

Bisection answers a precise historical question: within selected history, where does a reproducible observation change from good to bad? It does not identify a root cause merely by naming a commit. The search depends on correct endpoint labels and consistent intermediate decisions. Treat the reported boundary as evidence to inspect, then confirm the behavior on both sides and explain the change that accounts for it. ...

October 24, 2027 · 6 min · XB Field Notes
A curl probe splits into process exit, HTTP status, headers and body; the article fixture can have exit zero with HTTP 404 and the literal body text 'missing'.

curl is your first HTTP probe

A command-line HTTP request gives a small, inspectable view of a service. It can show the response status, headers, body, and timing without a browser’s rendering layer. Start with a concrete question: whether the original URL redirects correctly, whether the final representation is available, or whether a particular method is accepted. Those questions require different probes. One successful curl invocation does not establish that every part of a website works. ...

December 11, 2026 · 5 min · XB Field Notes
Method, selected bytes and cache form a client evidence journey; the same representation selection connects comparisons.

Read a live edge the way a client does

Walk a live origin from method to body to cache, and leave with checks you can reuse.

August 7, 2026 · 8 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
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
The server sends the leaf and needed intermediates; the client builds a path to its own trust anchor and also checks hostname and validity.

A certificate chain is a path you should be able to print

Read the chain the edge actually presents, not just the leaf, before you trust the rollout.

June 8, 2026 · 3 min · XB Field Notes