Build, publish, observe, and restore a small service without losing the last known-good state.
Use this path when the question is not only “does it work?” but also “what evidence lets us replace it or recover it?” The notes keep artifact boundaries, rollback windows, and routine maintenance visible.
The advantage of small systems
Small does not mean unfinished; it means each boundary has a clear job and a visible owner.
A static server should have one obvious root
One root, one file_server, and a small header policy make a static deployment easy to inspect.
A release checklist for a static site
Verify the artifact before replacing the live directory, and keep the checks close to the release command.
Publish a static site by switching complete directories
Staging avoids file-by-file overwrites, but this two-step switch briefly removes the live path and still requires compatible assets for older pages.
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.
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.
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.
DNS changes need a cache-aware rollback window
Prepare the TTL ahead of time, observe authoritative and recursive answers, and keep both endpoints valid through the cache window.