A terminal line of HTTP status and headers beside a dimmed status dashboard.

Readable evidence before dashboards

Prefer a verifiable sentence over a colored panel when the claim has to survive an audit.

August 18, 2026 · 3 min · XB Field Notes
Two clocks labelled freshness and validation with an ETag between them.

Cache validation is two clocks, not one freshness setting

A cache is only as coherent as the pair of conditions your headers make explicit.

August 14, 2026 · 4 min · XB Field Notes
A browser window with no script lane, CSP listing script-src 'none'.

The zero-JavaScript static site is a defensible choice

No script-src is not a gap — it is a boundary with a measurable contract.

August 13, 2026 · 3 min · XB Field Notes
A release clipboard with four completed verification checks.

A release checklist for a static site

Verify the artifact before replacing the live directory, and keep the checks close to the release command.

July 30, 2026 · 2 min · XB Field Notes
Transport, browser policy, and resource graph shown as security layers.

Security headers should describe the actual page

Start with a narrow policy, then expand it only when a documented feature needs another resource.

July 23, 2026 · 2 min · XB Field Notes
Build, check, publish, and observe stages leading to the public edge.

A release is not complete until the public edge agrees

Build once, inspect the output, then exercise representative public routes before replacing the live directory.

July 9, 2026 · 2 min · XB Field Notes
A file representation passing through a media-type label before reaching a browser.

Content-Type should describe the bytes you actually send

A filename is only a hint; the response header is the browser-facing contract for the representation.

June 11, 2026 · 2 min · XB Field Notes
A content source becomes a published HTML artifact independent of later source edits.

Why a small site can stay static

A static origin is a boundary you can name, cache, and roll back.

June 8, 2026 · 4 min · XB Field Notes