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
Visitors should see the old release or the new release, not a file-by-file mixture of both.
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
Build once, inspect the output, then exercise representative public routes before replacing the live directory.
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.