content/field-notes/ Canonical article sources
site/ Hand-maintained website shell and runtime
templates/ Generated-page templates
scripts/ Build and validation
dist/ Generated deployment artifact (Git-ignored)
.github/workflows/ GitHub Pages deployment
Each field note has a stable internal ID (n01, n02, …). Its human-readable URL slug is metadata, not a directory used as the source identity. Article figures live with the source record and are copied into the deployment artifact during build.
Do not edit dist/. Edit content/, site/, or templates/, then run node scripts/build.mjs.
npm run build also generates site/archive-content.js and site/assets/field-notes/ so the hand-maintained site/ shell can be inspected locally without losing the archive. Both paths are Git-ignored and are never canonical content. GitHub Pages is still deployed from dist/ generated by the build.