Commit graph

91 commits

Author SHA1 Message Date
sjat
4153c8d1d9 feat(rack): draw shelf-mounted tower heights in the elevation
All checks were successful
Build docs site / build (push) Successful in 50s
Build slides / build (push) Successful in 1m11s
Add an optional `chassis_u` field for shelf-mounted devices (their height
in U where they stand on the shelf) and render it:
- gen_rack draws each tower chassis_u U's tall, rising above the 1U shelf
  line; rail-mounted devices now paint on top so a PDU within a tower's
  span (e.g. pdu03 over srv05/06) stays visible
- occupancy table shows each tower's real U-span (e.g. srv01 U37-U46)
- validate_item checks chassis_u is a positive integer; absent chassis_u
  renders byte-identically to before
- set chassis_u for srv01-07 (10/8/6/6/7/7/6U); document the field in the
  editing guide; regenerate rack01 artifacts

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 22:11:19 +02:00
sjat
4dc975062a docs(hardware): reconcile rack01 to as-mounted layout and document cabling
All checks were successful
Build docs site / build (push) Successful in 49s
Build slides / build (push) Successful in 1m11s
Rebuild rack01 from the physically remounted hardware:
- Correct stale positions/ports/outlets for pp01, pp02, sw01, pdu01-04
- Model shelves as 1U trays (towers stand above without consuming rack U's);
  add shf02 and empty half-depth shf03/shf04
- Add ups01/ups02; reseat nas01/02 and sw02-05; move srv04-07 onto shf02
- Add `wan` hardware kind; add WAN demarcation hosts wan01 (active) and
  wan02 (staging)
- Document full live network wiring: srv01-07 -> pp02 -> sw01 (LAN) and
  srv01 eth0 -> pp02 -> pp01 -> wan01 (WAN); keep non-active lines
  (wan2, working-table patches, sw01 mgmt) in notes only
- Regenerate hardware index + rack01 elevation/network/power artifacts

Also includes the in-progress generator updates (gen_rack.py, gen_overview.py,
Makefile, tests) that the regenerated artifacts depend on.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 21:31:48 +02:00
sjat
8f4047cdd7 fix(hardware): add missing source files for 9 racked devices
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m10s
Camilla's "added all devices to rack" commit committed the regenerated
index/rack artifacts but not the new per-device source files, so CI's
drift check failed (regeneration dropped 9 devices that had no source).

Recreate the source files for sw02-sw05, pp02, srv06-srv07 and nas01-nas02
from the committed artifacts (placement, power feeds, network links, and
cluster:tappaas on the servers; specs left as '?' placeholders, optional
port counts omitted). Regeneration is now drift-clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 22:41:30 +02:00
Camila Baruĥ
4a6f8f07a8 added all devices to rack
Some checks failed
Build slides / build (push) Successful in 1m15s
Build docs site / build (push) Failing after 42s
2026-06-29 22:27:52 +02:00
Camila Baruĥ
dac2ad51ae added Rear/Front rack_u for pdu*
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m10s
2026-06-29 21:54:07 +02:00
Camila Baruĥ
271e24c389 test
All checks were successful
Build docs site / build (push) Successful in 49s
Build slides / build (push) Successful in 1m11s
2026-06-29 21:48:44 +02:00
Camila Baruĥ
fbd99be414 test 2026-06-29 21:48:09 +02:00
sjat
9d7b4684c4 docs: publish hardware naming scheme and link it from the editing guide
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m11s
Move the naming-scheme spec from notes/dev/specs/ into docs/guides/ so it
publishes to docs.makerfloss.eu, add it under the Hardware nav, and link it
from the editing guide. Repoint the stale references in CLAUDE.md and the
migration plan to the new path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 21:40:09 +02:00
sjat
95399640d1 docs: add hardware-docs editing guide and link it in nav
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m9s
Add docs/guides/editing-hardware-docs.md covering the frontmatter schema,
rack/shelf/PDU/power/network fields, the `make docs-index` workflow and
CI drift gate, plus dos and don'ts. Kept under docs/guides/ so the
hardware generators don't parse it as a host file. Linked under the
Hardware nav section so it publishes to docs.makerfloss.eu.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 21:32:32 +02:00
sjat
ebe193d9d8 docs(hardware): update srv01-03 notes
All checks were successful
Build docs site / build (push) Successful in 48s
Build slides / build (push) Successful in 1m12s
Mark srv02/srv03 as TaPPaaS nodes 2/3 and clear the completed
BIOS/UEFI todo items on srv01.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 21:19:24 +02:00
sjat
5b3251f848 fix(hardware): set pdu03/pdu04 to rack01 and regenerate indices
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>
2026-06-29 21:19:20 +02:00
Camila Baruĥ
7cad66b466 Changed PDU values
Some checks failed
Build docs site / build (push) Failing after 53s
Build slides / build (push) Successful in 1m14s
2026-06-29 21:09:20 +02:00
sjat
3a0f062f37 slides: fix TaPPaaS deck overflow + stray tag
All checks were successful
Build docs site / build (push) Successful in 53s
Build slides / build (push) Successful in 1m12s
Shrink global font and tighten spacing so dense slides fit; split the
phasing slide into VPS-edge (1-3) and internal/later (4-5). Remove a
stray </content> line that leaked into the source. Verified all 13
slides fit via per-slide PNG render.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 10:59:46 +02:00
sjat
125d1d67e9 slides: TaPPaaS VPS publishing (technical review)
All checks were successful
Build docs site / build (push) Successful in 54s
Build slides / build (push) Successful in 1m12s
Marp deck for the split-horizon DNS + public exposure design: reuses the
mf01 pattern (TLS at VPS, plain HTTP over wg1 to TaPPaaS Caddy). Two
Mermaid request-flow diagrams, decisions, phasing, isolation, risks.
Publishes to slides.makerfloss.eu on CI.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 10:11:53 +02:00
sjat
a6033e2038 fix(rack): centre 0U rail labels across the bar (dominant-baseline)
All checks were successful
Build docs site / build (push) Successful in 52s
Build slides / build (push) Successful in 1m11s
2026-06-24 19:07:10 +02:00
sjat
d3d5e9c69e feat(rack): colour and link mermaid power/network nodes by kind 2026-06-24 18:43:52 +02:00
sjat
08862fde51 feat(rack): add elevation legend, both-gutter U-numbers, column frames
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 18:39:56 +02:00
sjat
8d39fbcdf5 feat(rack): inline interactive elevation with links, tooltips, status borders 2026-06-24 18:34:06 +02:00
sjat
c24978436d feat(rack): place TaPPaaS nodes on shelf shf01 (provisional)
All checks were successful
Build docs site / build (push) Successful in 50s
Build slides / build (push) Successful in 1m9s
2026-06-24 17:51:52 +02:00
sjat
fd21d4807d refactor(hardware): rename mf00-mf04 to srv01-srv05, add cluster field
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 16:23:23 +02:00
sjat
e54cbb3f0f feat(rack): populate provisional network topology (sw01, pp01, links)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 15:09:02 +02:00
sjat
5c3dab55a4 feat(rack): enable mermaid, populate provisional power data
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 14:41:46 +02:00
sjat
9253d1ca0d docs(services): regenerate index after moving coursemanagement out of docs
All checks were successful
Build docs site / build (push) Successful in 51s
Build slides / build (push) Successful in 1m9s
The service note was moved to notes/coursemanagement.md but the generated
index still listed it, which fails the CI drift check.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-24 14:19:11 +02:00
sjat
4f13962812 Moved a note out of docs
Some checks failed
Build docs site / build (push) Failing after 51s
Build slides / build (push) Successful in 1m13s
2026-06-24 14:15:27 +02:00
sjat
b0c933011b fix(services): commit regenerated services index after coursemanagement fix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 13:56:15 +02:00
sjat
15666e0470 feat(rack): populate rack01 and wire gen_rack into make targets
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>
2026-06-24 13:56:09 +02:00
sjat
6b06550447 docs(hardware): record DDR4-2666 RAM type for mf01/mf02, fix mf00 status
Some checks failed
Build docs site / build (push) Failing after 45s
Build slides / build (push) Successful in 1m13s
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>
2026-06-15 20:42:13 +02:00
22749de762 first cut of a VPN presentation
Some checks failed
Build docs site / build (push) Failing after 40s
Build slides / build (push) Successful in 1m6s
2026-06-01 16:10:26 +02:00
sjat
df4637e269 test: deliberately break CI to verify ntfy alert (will revert)
Some checks failed
Build docs site / build (push) Failing after 39s
Build slides / build (push) Successful in 1m2s
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 11:46:44 +02:00
sjat
7b59a9c1b8 docs(hardware): drop the model field
All checks were successful
Build docs site / build (push) Successful in 43s
Build slides / build (push) Successful in 1m6s
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>
2026-05-27 10:37:04 +02:00
sjat
c0b6986984 Updated notes on mf00
All checks were successful
Build docs site / build (push) Successful in 43s
Build slides / build (push) Successful in 1m1s
2026-05-27 10:35:04 +02:00
sjat
41c4834dbd fix(docs-ci): unblock build by tolerating "?" placeholders in hardware frontmatter
All checks were successful
Build docs site / build (push) Successful in 46s
Build slides / build (push) Successful in 1m7s
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>
2026-05-27 10:31:46 +02:00
sjat
c50a3b5acf Updated hardware descriptions to custom instead of case manufactorers
Some checks failed
Build docs site / build (push) Failing after 28s
Build slides / build (push) Successful in 48s
2026-05-20 09:18:48 +02:00
sjat
69d1f16a69 Added mf04 - an old stationary. Details needs updating.
Some checks failed
Build docs site / build (push) Failing after 28s
Build slides / build (push) Successful in 48s
2026-05-19 17:43:18 +02:00
sjat
10d37f6ad2 Upgraded mf02 to 16gb ram
Some checks failed
Build docs site / build (push) Failing after 34s
Build slides / build (push) Successful in 57s
2026-05-19 17:29:39 +02:00
sjat
9017a91ae2 docs(index): list Services alongside Hardware on the home page
All checks were successful
Build docs site / build (push) Successful in 30s
Build slides / build (push) Successful in 49s
Sidebar nav had Services after the previous commit, but the home page
body still only mentioned Hardware and House rules. Add a matching
bullet so visitors land somewhere obvious.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 17:54:24 +02:00
sjat
1288f3972b Updated forgejo text
All checks were successful
Build docs site / build (push) Successful in 31s
Build slides / build (push) Successful in 49s
2026-05-18 17:52:31 +02:00
sjat
c743416ded feat(docs): add services category alongside hardware
All checks were successful
Build docs site / build (push) Successful in 32s
Build slides / build (push) Successful in 52s
Mirror the auto-indexed per-host pattern for a new docs/services/
category, seeded with the six things currently deployed on or around
makerfloss.eu: docs, slides, forgejo, gandi-dns, marp, mermaid.

Generator/hook generalisation:
- scripts/gen_overview.py: replace the hardcoded `hostname` check
  with a configurable `key_field` (default: hostname). Add a generic
  `key-link` column kind (replaces the old `hostname-link`) and a
  `url-link` kind that renders the value as a clickable link.
- scripts/overview_config.yml: declare hardware's key_field, then add
  a `services` block (key_field=name, its own kind/status enums,
  grouped by kind for the index table).
- scripts/mkdocs_hooks.py: route by `page.file.src_uri` so each
  hardware/* page gets a "Specs" table and each services/* page gets
  a "Service" table; both share the helpers in gen_overview.

Wiring:
- Makefile: docs-index and docs-check now regenerate and drift-check
  both indices.
- .forgejo/workflows/docs.yml: same on the CI runner.
- mkdocs.yml: add Services to nav.
- README.md, CLAUDE.md: list services/ in the repo-layout block.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 17:48:15 +02:00
sjat
16f56fd961 docs: standardise filenames to ASCII kebab-case + ISO date prefix
All checks were successful
Build docs site / build (push) Successful in 30s
Build slides / build (push) Successful in 48s
Adopt one filename convention everywhere except hardware host pages
(those are pinned to their hostnames by the index validator):

  - ASCII lowercase
  - kebab-case word separator
  - dated docs: YYYY-MM-DD-label.md (hyphen between date and label)
  - English regardless of content language

Renames:
  docs/makerFLOSS_house_rules.md                        -> docs/house-rules.md
  docs/infrastruktur/                                   -> docs/infrastructure/
  docs/infrastructure/vps-og-dns.md                     -> docs/infrastructure/vps-and-dns.md
  docs/presentations/2026-05-11_messaging.md            -> docs/presentations/2026-05-11-messaging.md
  docs/presentations/2026-05-11_SoMe-taxonomi.md        -> docs/presentations/2026-05-11-social-media-taxonomy.md
  notes/todo/2026-04-14_todo.md                         -> notes/todo/2026-04-14-todo.md
  notes/todo/OM_services.md                             -> notes/todo/om-services.md
  notes/todo/indkøbsliste.md                            -> notes/todo/wishlist.md
  notes/communications/2026-03-16_facebookpost.md       -> notes/communications/2026-03-16-facebook-post.md

Other touches:
- Document the convention in CLAUDE.md under Working Norms.
- Refresh the stale Repository Structure block in CLAUDE.md to reflect
  the docs/ vs notes/ split introduced in f6d589e.
- Update the House rules link in docs/index.md and the nav entry in
  mkdocs.yml to the new house-rules.md path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 17:07:26 +02:00
sjat
f6d589edec docs: split published site (docs/) from internal notes (notes/)
All checks were successful
Build docs site / build (push) Successful in 31s
Build slides / build (push) Successful in 49s
The docs/ tree previously conflated published-site content (3 pages
were in mkdocs.yml nav) with working notes (~18 files that just sat
in the repo). Restructure so each tree means one thing:

- docs/         everything here is built and shipped to docs.makerfloss.eu.
                Adds docs/presentations/ for the two Marp decks
                previously living under docs/møder/.
- notes/        repo-only working material, not built. Contains
                meetings/, todo/, dev/ (was docs/superpowers/), and
                communications/ (the launch Facebook post).
- sandbox/      test-mermaid.md, the Marp/Mermaid pipeline sandbox.

Other touches:
- Drop "_noter" suffix on meeting filenames; drop "_presentation"
  from the messaging deck's basename for symmetry with SoMe-taxonomi.
- Update CLAUDE.md and docs/index.md path references.
- Drop the now-redundant --exclude-dir=superpowers from
  build-slides.sh since superpowers/ is no longer under docs/.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 16:53:27 +02:00
sjat
f401f98d47 docs(todo): refresh OM_services and indkøbsliste
All checks were successful
Build docs site / build (push) Successful in 31s
Build slides / build (push) Successful in 51s
- Add 'touch display med kalender etc.' to the OM services wishlist.
- Reset indkøbsliste into an empty wish/get list ('Ønske/skaffe-liste').

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 16:21:31 +02:00
sjat
9310396fac docs: streamline todos and remove fit-test sandboxes
- Delete two stale single-meeting todos: 2026-03-16_todo.md and 2026-05-05.md.
- Rename `2026-04-14 TODO.md` -> `2026-04-14_todo.md` to match the
  underscore convention used by the other dated files, and update the
  CLAUDE.md reference.
- Remove the two Marp/CSS fit-test sandboxes (labdesign-fit-test.md
  and 2026-05-11_messaging-presentation-fit-test.md); the responsive
  experiments were never folded back into the canonical decks.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 16:21:26 +02:00
sjat
b9722f082f feat(docs): render Specs table on each hardware host page
All checks were successful
Build docs site / build (push) Successful in 30s
Build slides / build (push) Successful in 51s
- 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>
2026-05-18 15:24:56 +02:00
sjat
03b2430e7a fix(docs-ci): unblock hardware index regeneration
All checks were successful
Build docs site / build (push) Successful in 31s
Build slides / build (push) Successful in 54s
- 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>
2026-05-18 15:14:46 +02:00
sjat
70cb6759bd Added hardware docs.
Some checks failed
Build docs site / build (push) Failing after 32s
Build slides / build (push) Successful in 56s
2026-05-18 15:07:30 +02:00
sjat
da19ce1bef Revert "fix(docs-ci): install nodejs in python image — actions/checkout needs node"
This reverts commit 3fe690edf0.
2026-05-17 21:17:41 +02:00
Claude
3fe690edf0 fix(docs-ci): install nodejs in python image — actions/checkout needs node
Some checks failed
Build docs site / build (push) Successful in 30s
Build slides / build (push) Has been cancelled
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 21:17:06 +02:00
sjat
e5c8e86708 Revert "fix(docs-ci): install nodejs in python image — actions/checkout needs node"
This reverts commit d51d68abca.
2026-05-17 21:17:06 +02:00
Claude
d51d68abca fix(docs-ci): install nodejs in python image — actions/checkout needs node
All checks were successful
Build docs site / build (push) Successful in 31s
Build slides / build (push) Successful in 53s
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 21:12:42 +02:00
sjat
6b1a61461b feat(docs): MkDocs Material site + auto-generated hardware overview
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>
2026-05-17 21:10:58 +02:00