Record: Project summary and dashboard site — 2026-08-24
Outcome
Repurposed the Site Build feature into a project summary and dashboard site.
Pages generated into site.out/:
- index.html: project summary (purpose, status, how it works, documentation links).
- dashboard.html: live state from beast.lan, substituted from a state file.
Implementation:
- scripts/site-build.sh substitutes KEY placeholders from the state file when present; leftover placeholders render as “unavailable”, so the build stays portable on any host.
- scripts/site-state-fetch.sh gathers live state on beast.lan into dataflow.out/site-state.txt (service state, version, kernel, driver, temperatures, PWM, fetch timestamp).
- site.in/template.html provides nav, styling, and the SITE-CONTENT marker.
- The hello.txt worked example was removed; tests/01-site-build.sh updated.
Deployment target: https://labs.bannister.us/projects/amd-mi25-fan-service/
Published 2026-08-24 via scripts/site-deploy.sh (make deploy): build the pages, run the sensitive-content gate, and rsync site.out/ to the Dreamhost docroot. The homelab deploy (scripts/labs-deploy.sh) excludes this path, so the two deploys never fight.
Decisions
- Dashboard data comes from a fetch script snapshot, not from the build touching the live system.
- The project name for the URL is amd-mi25-fan-service; the parent directory and GitHub repository will be renamed to match.
Verification
- make test passes on beast.lan (all tests).
- Live state fetched on beast.lan: service active, version amd-mi25-fanctl 2026-08-24-master-d4d6ff3 (build 7), kernel 6.8.0-138, driver 6.19.14.31400100, temps 37/40/40 C, PWM 54.
- Dashboard renders the substituted values; summary builds without state.
- Deploy verified 2026-08-24: the index and dashboard serve at the target URL, the dashboard shows live state, and the homelab /projects/ index links here.
- Verified 2026-08-24.
Commits
- (recorded in git history for this task)