Camilla's "Changed PDU values" commit added pdu03/pdu04 frontmatter but
left the auto-generated docs/hardware/index.md stale, failing the CI
drift check. Correct both PDUs from the placeholder racks rack33/rack11
to rack01 (where all current hardware lives) and regenerate the hardware
index and rack01 elevation via `make docs-index`.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add rack placement frontmatter to mf00–mf04, fix pre-existing schema
error in docs/services/coursemanagement.md (missing kind/name fields),
extend Makefile docs-index and docs-check targets to also run gen_rack,
add test target, generate rack01.md and rack01-elevation.svg.
Positions are provisional placeholders to prove the pipeline; correct when mounting.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add ram_type (DDR4-2666 non-ECC UDIMM) to mf01 and mf02 frontmatter, and
set mf00's placeholder status to staging so the overview index regenerates.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Removed from per-host frontmatter, the index column, and the Specs table.
Model values kept churning (case manufacturer vs. "custom") without adding
useful information.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mf00.md used bare ? in YAML (a complex-key indicator), breaking gen_overview.py.
Quoted the placeholders and taught fmt_cpu/fmt_ram/fmt_storage/fmt_nic to render
string values literally so unknown specs show as "?" in both the per-host Specs
table and the hardware index. Also regenerates docs/hardware/index.md to clear
the accumulated drift (mf02 16 GB, mf04 entry, mf00 custom).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add scripts/mkdocs_hooks.py: on_page_markdown hook that prepends
`# {hostname}` + a Specs table built from the YAML frontmatter.
Reuses fmt_cpu/fmt_ram/fmt_storage/fmt_nic from gen_overview.py so
the host page and the index table stay in sync.
- Wire the hook into mkdocs.yml.
- Demote `# Notes` / `# ToDo` to `##` in the five host source files so
each rendered page has a single H1.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Add `staging` to allowed status enum so mfXX hosts validate.
- fmt_nic and fmt_storage now accept lists (mf00 has 3 NICs and 4 drives).
- Rename makerfloss.md -> makerfloss.eu.md so filename matches the FQDN.
- Regenerate docs/hardware/index.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bootstraps an MkDocs Material documentation site (rendered to
docs.makerfloss.eu by the Forgejo Actions runner). The first feature
is an auto-generated hardware overview built from per-host YAML
frontmatter blocks under docs/hardware/.
- mkdocs.yml, requirements.txt: MkDocs Material 9.5 + pyyaml
- Makefile: docs-index | docs-build | docs-serve | docs-check
- scripts/gen_overview.py: stdlib + pyyaml generator, deterministic and
offline. Reads scripts/overview_config.yml — category-driven so
services/vms can plug in later without touching the script.
- scripts/overview_config.yml: hardware schema and index layout
- docs/hardware/{makerfloss,fisi,tembo}.md: 3 sample entries
- docs/hardware/index.md: GENERATED, committed (CI fails on drift)
- docs/index.md: site landing page
- .forgejo/workflows/docs.yml: drift-check + mkdocs build --strict +
rsync site/ to /srv/docs-makerfloss/html on push to main
- .gitignore: site/, .venv, __pycache__
Schema:
- hostname, kind, status (required; kind/status are enums)
- model, location, cpu, cpu_cores, cpu_threads, ram_gb, storage_gb,
storage_type (enum), storage_notes, nic_gbps (all optional)
- Filename stem MUST equal hostname (enforced by generator)
- Extra optional fields are accepted silently and live on the per-page
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>