diff --git a/AGENTS.md b/AGENTS.md index dffd4cf..9f98b43 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -129,7 +129,7 @@ Ohne Lab-Zugang: dieses Repo ist als Push-Mirror unter nicht an der Lab-Verfügbarkeit hängen. - **Nie direkt zu Gitea pushen** (der Mirror überschreibt per Force). Landet doch ein Commit dort: Kanonisierungs-Verfahren in - [verfahren/deploy-uebergabe.md](verfahren/deploy-uebergabe.md). + [verfahren/deploy-uebergabe.md](docs/wiki/deployment/deploy-uebergabe.md). - Einzige bewusste Ausnahme: der TURN-Rotations-CronJob schreibt nach Gitea; der tägliche CI-Job `canonize_rotation` holt es zurück. Seine rote Pipeline **ist** der Alarm — es gibt bewusst keinen zweiten Meldeweg. @@ -165,7 +165,7 @@ Ohne Lab-Zugang: dieses Repo ist als Push-Mirror unter kanonische Autor-Identität. Historien-Rewrites nur mit alt→neu-Zuordnung ([ADR-0009](docs/adr/0009-commit-konventionen-und-historien-anonymisierung.md), - Tabelle: [shared/commit-zuordnung-2026-08-07.md](shared/commit-zuordnung-2026-08-07.md)). + Tabelle: [shared/commit-zuordnung-2026-08-07.md](docs/sources/migration/commit-zuordnung-2026-08-07.md)). - ⚠️ Das schützt nur die Git-Historie; Plattform-Zeitstempel (Push, Issues, Pipelines, Pakete) tragen die echte Uhrzeit (ADR-0009). diff --git a/README.md b/README.md index 93bbcb7..a136d1f 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Lab bzw. via VPN erreichbar — das Lab ist die Quelle der Wahrheit, überschreibt ihn bei jedem Push per Force. Deshalb **nie direkt zu Gitea pushen** — solche Commits gehen beim nächsten Mirror-Lauf verloren (Rettung: `.patch` von Gitea ziehen + `git am`, siehe -[Kanonisierung](verfahren/deploy-uebergabe.md)). +[Kanonisierung](docs/wiki/deployment/deploy-uebergabe.md)). **Keine Ausnahmen mehr.** Die **Deploy-Übergabe-Issues** liefen bis 2026-08-02 auf dem Gitea-Tracker, weil Hosts außerhalb des Labs `git.lab` nicht erreichten. Mit dem @@ -34,8 +34,8 @@ GitLab-Issue-Template. **Alle Issues leben auf git.lab.** | `vision/` | Eine Vision je Linie: Community (axion1337.chat), Tool (ThreadNet), Plattform (Homelab) | | `roadmap.md` | Linien, Meilenstein-Kandidaten, Kadenz — GitLab-Milestones halten den Stand | | `decisions/` | ADRs — Pflicht bei Architekturentscheidungen **und dauerhaften Ausnahmen** | -| `verfahren/` | Wie wir arbeiten: [Deploy-Übergabe/DoD](verfahren/deploy-uebergabe.md), [Refinement & Retro](verfahren/refinement.md), AARs (`verfahren/aar/`), Werkzeuge | -| `hosts/`, `shared/` | **Bestand + Historie** je Host/Thema — u. a. [Branding](shared/branding.md) (Marke, Paletten, wo welches Theme eingestellt ist); offene Punkte sind Issues | +| `verfahren/` | Wie wir arbeiten: [Deploy-Übergabe/DoD](docs/wiki/deployment/deploy-uebergabe.md), [Refinement & Retro](docs/wiki/admin/refinement.md), AARs (`docs/aar/`), Werkzeuge | +| `hosts/`, `shared/` | **Bestand + Historie** je Host/Thema — u. a. [Branding](docs/wiki/architecture/branding.md) (Marke, Paletten, wo welches Theme eingestellt ist); offene Punkte sind Issues | Gelesen wird das alles auch gebündelt unter **[axionwiki.lab](https://axionwiki.lab)** — dort stehen Plattform-Wiki, Homelab-Doku und dieses Repo nebeneinander diff --git a/STATUS.md b/STATUS.md index 956430a..af5743c 100644 --- a/STATUS.md +++ b/STATUS.md @@ -30,6 +30,7 @@ _none open_ | [0012](docs/adr/0012-issues-im-repo-gitlab-als-spiegel.md) | accepted | ADR-0012: Issues leben im Repo; GitLab wird deterministisch bespiegelt | | [0013](docs/adr/0013-gruppenregeln-kanonisch-mit-pruefung.md) | accepted | ADR-0013: Gruppenregeln kanonisch im management-Repo, Komponenten zeigen und werden geprüft | -## Open AARs (0) +## Open AARs (2) -_none — nothing awaiting harvest_ +- [AAR — Refinement, Betrieb voranbringen, Git-Historie anonymisiert](docs/aar/2026-08-09-refinement-und-betrieb.md) +- [AAR — `@apo` konnte nicht telefonieren: fehlende Synapse-`profiles`-Zeile](docs/aar/2026-08-11-apo-calls-profile-zeile.md) diff --git a/verfahren/aar/2026-08-01-cve-pipeline-gitops47.md b/docs/aar/2026-08-01-cve-pipeline-gitops47.md similarity index 97% rename from verfahren/aar/2026-08-01-cve-pipeline-gitops47.md rename to docs/aar/2026-08-01-cve-pipeline-gitops47.md index bcdefa4..d6bb394 100644 --- a/verfahren/aar/2026-08-01-cve-pipeline-gitops47.md +++ b/docs/aar/2026-08-01-cve-pipeline-gitops47.md @@ -1,3 +1,10 @@ +--- +type: aar +status: harvested +date: 2026-08-01 +related: [] +--- + # AAR — CVE-Pipeline `gitops#47` **Datum:** 2026-08-01 · **Host/Stack:** CFGMON, `/opt/threadnet-operating/monitoring` @@ -51,7 +58,7 @@ Befund 2 wurde nur sichtbar, weil die Config **im Container** geprüft wurde aus, `up -d` meldete `Running`, und ein SIGHUP-Reload lud klaglos den alten Inhalt. Diese beiden Punkte sind als Verfahren festgehalten: -[../deploy-uebergabe.md](../deploy-uebergabe.md). +[../deploy-uebergabe.md](../wiki/deployment/deploy-uebergabe.md). ## 5. Offen diff --git a/verfahren/aar/2026-08-01-labnet02-cfgmon.md b/docs/aar/2026-08-01-labnet02-cfgmon.md similarity index 98% rename from verfahren/aar/2026-08-01-labnet02-cfgmon.md rename to docs/aar/2026-08-01-labnet02-cfgmon.md index c420e98..ffa9945 100644 --- a/verfahren/aar/2026-08-01-labnet02-cfgmon.md +++ b/docs/aar/2026-08-01-labnet02-cfgmon.md @@ -1,3 +1,10 @@ +--- +type: aar +status: harvested +date: 2026-08-01 +related: [] +--- + # AAR — LABNET-02, CFGMON-Seite (Übergabe `sorb/management#2`) **Datum:** 2026-08-01 · **Host/Stack:** CFGMON, WireGuard-Client gegen UDM @@ -56,7 +63,7 @@ wurde statt der Briefing-Annahme zu folgen. `ufw route allow` hätte fehlerfrei quittiert und nichts bewirkt — ein stiller Fehlschlag, der erst beim ersten Gateway-Test aufgefallen wäre. -Beides sind die Punkte 1 und 2 aus [../deploy-uebergabe.md](../deploy-uebergabe.md) +Beides sind die Punkte 1 und 2 aus [../deploy-uebergabe.md](../wiki/deployment/deploy-uebergabe.md) in der Praxis: Mengengerüst bzw. Verifikation dort, wo der Dienst liest. ## 5. Offen diff --git a/verfahren/aar/2026-08-01-labnet02-lab.md b/docs/aar/2026-08-01-labnet02-lab.md similarity index 98% rename from verfahren/aar/2026-08-01-labnet02-lab.md rename to docs/aar/2026-08-01-labnet02-lab.md index 68e2224..4195f96 100644 --- a/verfahren/aar/2026-08-01-labnet02-lab.md +++ b/docs/aar/2026-08-01-labnet02-lab.md @@ -1,3 +1,10 @@ +--- +type: aar +status: harvested +date: 2026-08-01 +related: [] +--- + # AAR — LABNET-02, Lab-Seite (UDM/UniFi, Einzäunung und Abnahme) **Datum:** 2026-08-01 · **Host/Stack:** MorninglightMountain (UDM Pro), UniFi Policy Engine diff --git a/verfahren/aar/2026-08-02-wiki-und-desktop-clients.md b/docs/aar/2026-08-02-wiki-und-desktop-clients.md similarity index 98% rename from verfahren/aar/2026-08-02-wiki-und-desktop-clients.md rename to docs/aar/2026-08-02-wiki-und-desktop-clients.md index dc191a9..cc7487b 100644 --- a/verfahren/aar/2026-08-02-wiki-und-desktop-clients.md +++ b/docs/aar/2026-08-02-wiki-und-desktop-clients.md @@ -1,3 +1,10 @@ +--- +type: aar +status: harvested +date: 2026-08-02 +related: [] +--- + # AAR — Wiki-Rollout, Themes und Desktop-Clients (Nacht 2026-08-01/02) **Datum:** 2026-08-01 22:00 – 2026-08-02 09:30 · **Beteiligt:** sorb + Mac-Session @@ -132,7 +139,7 @@ erfundene Palette kein Symptom, auf das man stoßen könnte. in den Skill-Beschreibungen **nicht verlässlich** — „Warm Sand · backgrounds" findet sich bei einem Theme, dessen Showcase-Seite dunkel ist. Belastbar ist nur `theme-showcase.pdf`: Seiten rendern, Hintergrundfarbe messen. Werte und Fallen -stehen in [`shared/branding.md`](../../shared/branding.md). +stehen in [`shared/branding.md`](../wiki/architecture/branding.md). **Bestätigung des Musters aus Abschnitt 4.** Auch das war kein Analysefehler, sondern eine **ungeprüfte Änderung** — dieselbe Wurzel wie Healthcheck, toter diff --git a/verfahren/aar/2026-08-09-refinement-und-betrieb.md b/docs/aar/2026-08-09-refinement-und-betrieb.md similarity index 99% rename from verfahren/aar/2026-08-09-refinement-und-betrieb.md rename to docs/aar/2026-08-09-refinement-und-betrieb.md index 7bea6e8..04f85a7 100644 --- a/verfahren/aar/2026-08-09-refinement-und-betrieb.md +++ b/docs/aar/2026-08-09-refinement-und-betrieb.md @@ -1,3 +1,10 @@ +--- +type: aar +status: open +date: 2026-08-09 +related: [] +--- + # AAR — Refinement, Betrieb voranbringen, Git-Historie anonymisiert **Datum:** 2026-08-09 · **Host/Stack:** git.lab, Gitea, K3s-Cluster (Authentik, diff --git a/verfahren/aar/2026-08-11-apo-calls-profile-zeile.md b/docs/aar/2026-08-11-apo-calls-profile-zeile.md similarity index 99% rename from verfahren/aar/2026-08-11-apo-calls-profile-zeile.md rename to docs/aar/2026-08-11-apo-calls-profile-zeile.md index f3c0ac7..beff53b 100644 --- a/verfahren/aar/2026-08-11-apo-calls-profile-zeile.md +++ b/docs/aar/2026-08-11-apo-calls-profile-zeile.md @@ -1,3 +1,10 @@ +--- +type: aar +status: open +date: 2026-08-11 +related: [] +--- + # AAR — `@apo` konnte nicht telefonieren: fehlende Synapse-`profiles`-Zeile **Datum:** 2026-08-11 · **Beteiligt:** sorb + Mac-Session · **Stack:** Synapse, diff --git a/docs/adr/0004-site-to-site-vpn-hetzner-lab.md b/docs/adr/0004-site-to-site-vpn-hetzner-lab.md index 6fccbb6..c76980b 100644 --- a/docs/adr/0004-site-to-site-vpn-hetzner-lab.md +++ b/docs/adr/0004-site-to-site-vpn-hetzner-lab.md @@ -73,4 +73,4 @@ Client". Die Richtung wurde deshalb gedreht: - Tunnel dauerhaft an: widerspricht dem Bedarfsfall-Prinzip ohne echten Gewinn. - git.lab öffentlich exponieren: größte Angriffsfläche, klar verworfen. - Eigene UniFi-Zone für den Tunnel: technisch nicht möglich (VPN-Server bleiben in der - VPN-Zone), siehe [AAR Lab-Seite](../../verfahren/aar/2026-08-01-labnet02-lab.md). + VPN-Zone), siehe [AAR Lab-Seite](../aar/2026-08-01-labnet02-lab.md). diff --git a/docs/adr/0008-agenten-sessions-root-aequivalent.md b/docs/adr/0008-agenten-sessions-root-aequivalent.md index 2242b56..bbb02cb 100644 --- a/docs/adr/0008-agenten-sessions-root-aequivalent.md +++ b/docs/adr/0008-agenten-sessions-root-aequivalent.md @@ -29,7 +29,7 @@ Konfigurationsfehler — aber es hat zwei Folgen, die benannt gehören: docker-Gruppe geschieht, ist im Nachhinein nicht aus den üblichen Protokollen rekonstruierbar. -Aufgedeckt im [CFGMON-AAR](../../verfahren/aar/2026-08-01-labnet02-cfgmon.md) +Aufgedeckt im [CFGMON-AAR](../aar/2026-08-01-labnet02-cfgmon.md) (Befund 3, MEDIUM), erfasst als [#14](https://git.lab/axion1337.chat/management/-/issues/14). diff --git a/docs/adr/0009-commit-konventionen-und-historien-anonymisierung.md b/docs/adr/0009-commit-konventionen-und-historien-anonymisierung.md index 70c77ea..e27a0f8 100644 --- a/docs/adr/0009-commit-konventionen-und-historien-anonymisierung.md +++ b/docs/adr/0009-commit-konventionen-und-historien-anonymisierung.md @@ -12,7 +12,7 @@ related: [] **Status:** akzeptiert · **Datum:** 2026-08-07 (Regel) / 2026-08-09 (Durchführung) · **Entscheider:** sorb -> Nachgetragen am 2026-08-09 in der [Retro](../../verfahren/retro/2026-08-09.md). Die +> Nachgetragen am 2026-08-09 in der [Retro](../sources/protokolle/retro-2026-08-09.md). Die > Entscheidung war getroffen und ausgeführt, bevor sie als ADR vorlag — das ist > genau der Fehler, den die ADR-Pflicht verhindern soll, und wird hier benannt > statt geglättet. @@ -61,7 +61,7 @@ Uhrzeit verschwindet. - **Alle SHAs im Bereich sind neu.** Verweise in Issues, Doku und Commit-Texten zeigen ins Leere. Die Doku wurde nachgezogen (12 Stellen); für alles andere gibt es die dauerhafte Zuordnungstabelle - [`shared/commit-zuordnung-2026-08-07.md`](../../shared/commit-zuordnung-2026-08-07.md). + [`shared/commit-zuordnung-2026-08-07.md`](../sources/migration/commit-zuordnung-2026-08-07.md). - **Issue-Kommentare wurden bewusst NICHT umgeschrieben.** Eine Tabelle nachzuschlagen ist zumutbar; nachträglich zu ändern, was jemand geschrieben hat, beschädigt dieselbe Nachvollziehbarkeit ein zweites Mal. diff --git a/docs/design/2026-08-11-neckbeard-migration.md b/docs/design/2026-08-11-neckbeard-migration.md index 4f97b9d..201e241 100644 --- a/docs/design/2026-08-11-neckbeard-migration.md +++ b/docs/design/2026-08-11-neckbeard-migration.md @@ -137,8 +137,8 @@ bleibt GitLab/Obsidian/Editor. Mockups entfallen. Alt-Ansatz: `CLAUDE.md`, `roadmap.md`, `decisions/README.md` und die tragenden Entscheidungen 0001, 0002, 0005, 0009, 0010, -[verfahren/refinement.md](../../verfahren/refinement.md), -[verfahren/stillstandspruefung.md](../../verfahren/stillstandspruefung.md), +[verfahren/refinement.md](../wiki/admin/refinement.md), +[verfahren/stillstandspruefung.md](../wiki/admin/stillstandspruefung.md), `.gitlab-ci.yml`, Auszüge aus `hosts/`. Neckbeard v0.1.1: AGENTS.md, WORKFLOW.md, ADR-0001…0004/0006, `schema.yaml`, `validate.py`, `gen_status.py`, Schöpfungs-AAR, `docs/wiki/index.md`. Session-1-Daten diff --git a/shared/commit-zuordnung-2026-08-07.md b/docs/sources/migration/commit-zuordnung-2026-08-07.md similarity index 100% rename from shared/commit-zuordnung-2026-08-07.md rename to docs/sources/migration/commit-zuordnung-2026-08-07.md diff --git a/verfahren/issue-migration/README.md b/docs/sources/migration/issue-migration/README.md similarity index 100% rename from verfahren/issue-migration/README.md rename to docs/sources/migration/issue-migration/README.md diff --git a/verfahren/retro/2026-08-09.md b/docs/sources/protokolle/retro-2026-08-09.md similarity index 100% rename from verfahren/retro/2026-08-09.md rename to docs/sources/protokolle/retro-2026-08-09.md diff --git a/hosts/cfgmon.md b/docs/wiki/admin/cfgmon.md similarity index 94% rename from hosts/cfgmon.md rename to docs/wiki/admin/cfgmon.md index 7eaba6c..4533af0 100644 --- a/hosts/cfgmon.md +++ b/docs/wiki/admin/cfgmon.md @@ -1,3 +1,9 @@ +--- +type: wiki-page +area: admin +related: [] +--- + # CFGMON Monitoring-Stack, Gitea und der Reverse Proxy für alles Öffentliche. @@ -136,14 +142,14 @@ Gitea selbst, gitops-Repo als Flux-Source, Issues/Wiki/dieses Repo, der API-Token für Issue-Verwaltung, das Gitea-Backup-Script (CFGMON-09). *(Stand der Analyse 2026-07-31. Issues und dieses Repo sind seitdem doch -umgezogen — [ADR-0002](../docs/adr/0002-issues-und-management-ins-lab.md) —, +umgezogen — [ADR-0002](../../adr/0002-issues-und-management-ins-lab.md) —, das Repo dabei von `Backlogs` zu `management` umgewidmet -[ADR-0005](../docs/adr/0005-pm-framework-kanban.md). „Nicht rückbaubar" galt für +[ADR-0005](../../adr/0005-pm-framework-kanban.md). „Nicht rückbaubar" galt für den damaligen Rückbau der Gitea-CI, nicht auf Dauer.)* Betroffene Issues (werden bei der GitLab-Migrations-Planung umformuliert): -[ThreadNet-Web#2](https://rohana.axion1337.de/sorb/ThreadNet-Web/issues/2), -[threadnet-call#1](https://rohana.axion1337.de/sorb/threadnet-call/issues/1). +`ThreadNet-Web#2` (Gitea-Zählung, Tracker stillgelegt — verbindlich: Migrations-Fußtext im GitLab-Issue), +`threadnet-call#1` (Gitea-Zählung, Tracker stillgelegt). **Nächster Schritt:** die drei manuellen Schritte oben, dann → erledigt. @@ -151,7 +157,7 @@ Betroffene Issues (werden bei der GitLab-Migrations-Planung umformuliert): **Status:** entschieden (2026-08-01, sorb) — **gleicher Bot (`@alerts`), eigener Raum** `!YRJvcEbVXtRlUIkNld:axion1337.chat`. Umsetzungsplan inkl. CVE-Metriken/Grafana/ -Alertmanager-Routing: [gitops#47](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/47). +Alertmanager-Routing: [gitops#45 auf git.lab](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/45) (ehemals Gitea-gitops#47, Tracker stillgelegt). release-watch ist bereits auf den Raum vorbereitet (Env `MATRIX_RELEASE_ROOM_ID`, Fallback Alerts-Raum). ⬜ Rest: `@alerts` in den Raum **einladen** (Join wurde als restricted abgelehnt — sorb), dann Deploy. @@ -173,7 +179,7 @@ neuen Absender bauen. ## CFGMON-12 — Gitea-Projektmetadaten nach GitLab umziehen/integrieren -**Status:** abgelöst durch [gitops#48](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/48) (2026-08-01, sorb: HOHE Priorität — vollständige Issue-Migration + zentrale Gruppen-Roadmap; Plan-Skizze und die offene Erreichbarkeits-Entscheidung git.lab-only vs. extern stehen dort) +**Status:** abgelöst durch [gitops#46 auf git.lab](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/46) (ehemals Gitea-gitops#48, Tracker stillgelegt) (2026-08-01, sorb: HOHE Priorität — vollständige Issue-Migration + zentrale Gruppen-Roadmap; Plan-Skizze und die offene Erreichbarkeits-Entscheidung git.lab-only vs. extern stehen dort) ✅ **Umgesetzt am 2026-08-01/02**: Die Migration ist durch — 62 Issues liegen auf git.lab, die Gitea-Issues sind geschlossen und tragen einen Migrations-Fußtext. @@ -231,7 +237,7 @@ ohne Swap, trägt daneben Gitea/Traefik/Monitoring) kann das strukturell nicht l **Verworfen statt gefixt**: Limit-Anhebung/Swap wird bewusst nicht weiterverfolgt — Build-CI zieht ins Homelab-GitLab um (siehe [CFGMON-11](#cfgmon-11--gitea-ci-rückbau-nach-gitlab-umzug)), CFGMON bleibt bei leichten -Jobs. Issue-Seite: [threadnet-call#1](https://rohana.axion1337.de/sorb/threadnet-call/issues/1). +Jobs. Issue-Seite: `threadnet-call#1` (Gitea-Zählung, Tracker stillgelegt). ### CFGMON-02 — Traefik, Gitea, cAdvisor und Runner unter IaC gebracht · erledigt 2026-07-30 @@ -295,5 +301,5 @@ existiert und wo einer laufen sollte, noch offen sei. Beides falsch — ein Runn (`builder-1`) läuft bereits, auf CFGMON, als Teil von `thread-net-git`s `rework/stack`- Branch, mit gezielt für Electron-Builds eingerichteten Labels. Details siehe [CFGMON-02](#cfgmon-02--traefik-gitea-cadvisor-und-runner-unter-iac-gebracht--erledigt-2026-07-30) — hier -nicht dupliziert. [gitops#33](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/33) +nicht dupliziert. `gitops#33` (Gitea-Zählung, Tracker stillgelegt) (dieselbe falsche Prämisse) entsprechend korrigiert/geschlossen. diff --git a/hosts/game.md b/docs/wiki/admin/game.md similarity index 98% rename from hosts/game.md rename to docs/wiki/admin/game.md index 98c389f..4c1e3f9 100644 --- a/hosts/game.md +++ b/docs/wiki/admin/game.md @@ -1,3 +1,9 @@ +--- +type: wiki-page +area: admin +related: [] +--- + # game Pterodactyl- / Gameserver-Host. diff --git a/hosts/matrix.md b/docs/wiki/admin/matrix.md similarity index 97% rename from hosts/matrix.md rename to docs/wiki/admin/matrix.md index 15d668e..f35283f 100644 --- a/hosts/matrix.md +++ b/docs/wiki/admin/matrix.md @@ -1,3 +1,9 @@ +--- +type: wiki-page +area: admin +related: [] +--- + # matrix Matrix-Homeserver (Element Server Suite / Synapse) + K3s-Single-Node-Cluster, GitOps-verwaltet. @@ -49,7 +55,7 @@ Firewall-Drift; extern war 9100 nie freigegeben (und soll es nicht sein). **Fix (gitops `228807f`, Weg A aus gitops#45):** HelmRelease + Alloy-Scrape entfernt, Flux hat gepruned — DaemonSet/Service/Pod sind weg, Host-Metriken kommen unverändert vom systemd-Exporter. Volle Diagnose: -[gitops#45](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/45). +`gitops#45` (Gitea-Zählung, Tracker stillgelegt — verbindlich: Migrations-Fußtext im GitLab-Issue).
Ursprünglicher Befund (CFGMON-Session, vor der Host-Prüfung) @@ -171,7 +177,7 @@ laufen ausschließlich über Authentik (OIDC, `auth.axion1337.chat`) und Einladu Der komplette IONOS-Mail-Satz auf `matrix.axion1337.de` ist damit **funktional unnötig** — dieselbe Härtung wie bei `selendis` anwenden (Null-MX, `v=spf1 -all`, `_dmarc p=reject`), `autodiscover.matrix` kann ebenfalls weg. Damit ist auch -[ZONE-02](../shared/zone-axion1337.md) an dieser Stelle entblockt. +[ZONE-02](../architecture/zone-axion1337.md) an dieser Stelle entblockt. **Separat davon** (andere Domain-Ebene, kein Widerspruch): auf diesem Host läuft seit 2026-07-30 ein eigener Mailversand für Host-Wartungsbenachrichtigungen @@ -198,7 +204,7 @@ nichts mehr zu tun. Ob Prometheus/Loki auf CFGMON zusätzlich öffentlich erreic Neuer, eigenständiger Mechanismus auf diesem Host, außerhalb von Flux/GitOps (Details: `docs/deployment-guides/07-host-maintenance-notifications.md` im gitops-Repo, -[Issue #24](https://rohana.axion1337.de/sorb/axion1337.chat-gitops/issues/24)): +`gitops#24` (Gitea-Zählung, Tracker stillgelegt)): `unattended-upgrades` war bereits aktiv, neu ergänzt ist ein systemd-Timer (`maintenance-notify.timer`, fest 05:00 Uhr, vor dem 06:00-07:00-Update-Fenster), der bei anstehenden Paket-Updates per Mail **und** Matrix (Thread-Reply im `wartung`-Raum) diff --git a/hosts/overmind.md b/docs/wiki/admin/overmind.md similarity index 97% rename from hosts/overmind.md rename to docs/wiki/admin/overmind.md index c204ca6..ad11a6a 100644 --- a/hosts/overmind.md +++ b/docs/wiki/admin/overmind.md @@ -1,3 +1,9 @@ +--- +type: wiki-page +area: admin +related: [] +--- + # Overmind Homelab-Host: GitLab (Dokploy-verwaltet) + CI-Runner. **Nur im Lab erreichbar** — @@ -36,14 +42,14 @@ ein gleichnamiges Repo mit anderem Stand. Gitea bleibt: Flux-Source (via Mirror beliefert), Registry, Packages. **Issues nicht mehr** — die sind am 2026-08-01/02 nach git.lab gewandert -([ADR-0002](../docs/adr/0002-issues-und-management-ins-lab.md)). Die letzte Ausnahme, +([ADR-0002](../../adr/0002-issues-und-management-ins-lab.md)). Die letzte Ausnahme, die Deploy-Übergabe-Issues auf dem Gitea-Tracker `sorb/management`, ist am 2026-08-02 mit LABNET-03 zurückgebaut: beide umgezogen (#25, #26), der Tracker ist leer. **Ohne Ausnahme: Issues leben auf git.lab.** *(Bis 2026-08-01 stand hier „Backlogs (dieses Repo, ungespiegelt)" — das Repo heißt seit der Umwidmung zum Management-Repo `management` und wird seither gespiegelt, -[ADR-0005](../docs/adr/0005-pm-framework-kanban.md).)* +[ADR-0005](../../adr/0005-pm-framework-kanban.md).)* ## OVERMIND-01 — GitLab-Container-Registry aktivieren, Images nach Konsument sortieren diff --git a/verfahren/refinement.md b/docs/wiki/admin/refinement.md similarity index 88% rename from verfahren/refinement.md rename to docs/wiki/admin/refinement.md index 741b3a1..255e51a 100644 --- a/verfahren/refinement.md +++ b/docs/wiki/admin/refinement.md @@ -1,7 +1,13 @@ +--- +type: wiki-page +area: admin +related: [] +--- + # Refinement und Retro — die Termine des Frameworks Kanban braucht wenige, aber verlässliche Termine, sonst verkommt das Board zur -Ablage. Festgelegt in [ADR-0005](../docs/adr/0005-pm-framework-kanban.md); hier +Ablage. Festgelegt in [ADR-0005](../../adr/0005-pm-framework-kanban.md); hier steht, wie sie ablaufen. ## Termine (festgelegt im Struktur-Workshop, 2026-08-06) @@ -48,13 +54,13 @@ Drei Fragen, mehr nicht: Grundlage sind die AARs des Monats — sie sind die Retro-Vorbereitung, nicht ihr Ersatz. -Ergebnisse werden unter [`retro/`](retro/) abgelegt, eine Datei je Termin. Die -erste: [2026-08-09](retro/2026-08-09.md). +Ergebnisse werden unter [`docs/sources/protokolle/`](../../sources/protokolle/retro-2026-08-09.md) abgelegt, eine Datei je Termin. Die +erste: [2026-08-09](../../sources/protokolle/retro-2026-08-09.md). ## AAR (anlassbezogen) Nach jedem Deploy mit Übergabe und nach jedem Incident, Vorlage in -[aar-vorlage.md](aar-vorlage.md). Ein AAR ist keine Chronik, sondern ein +[docs/aar/template.md](../../aar/template.md). Ein AAR ist keine Chronik, sondern ein Wissensspeicher: Was war das Ergebnis, welche Befunde, was hat die Eingrenzung ermöglicht, welche Lehren, was bleibt offen. **Offene Punkte aus einem AAR werden im selben Zug zu Issues** — sonst versacken sie in der Prosa (real passiert am @@ -85,10 +91,10 @@ wertlos. Mehrere Claude-Sessions arbeiten parallel (Mac-Session, Host-Sessions auf CFGMON und Overmind). Für sie gilt: -- Die **kanonischen Arbeitskonventionen** stehen in [`CLAUDE.md`](../CLAUDE.md) und +- Die **kanonischen Arbeitskonventionen** stehen in [`CLAUDE.md`](../../../AGENTS.md) und sind über den Gitea-Mirror von überall lesbar. - Arbeit zwischen Sessions läuft über das - [Deploy-Übergabe-Verfahren](deploy-uebergabe.md) — Auftrag, Meldung, Protokoll + [Deploy-Übergabe-Verfahren](../deployment/deploy-uebergabe.md) — Auftrag, Meldung, Protokoll im Issue, nicht im Chat. - Was eine Session lernt, gehört ins Repo (AAR/ADR/Doku), nicht nur in ihr Gedächtnis — Sessions gehen verloren, Repos nicht. diff --git a/verfahren/stillstandspruefung.md b/docs/wiki/admin/stillstandspruefung.md similarity index 96% rename from verfahren/stillstandspruefung.md rename to docs/wiki/admin/stillstandspruefung.md index f01be79..1a8e76d 100644 --- a/verfahren/stillstandspruefung.md +++ b/docs/wiki/admin/stillstandspruefung.md @@ -1,7 +1,13 @@ +--- +type: wiki-page +area: admin +related: [] +--- + # Stillstandsprüfung Sucht Dinge, die **leise aufgehört haben zu funktionieren**. Beschlossen in der -[Retro 2026-08-09](retro/2026-08-09.md). +[Retro 2026-08-09](../../sources/protokolle/retro-2026-08-09.md). ## Warum es sie gibt diff --git a/verfahren/textbloecke.md b/docs/wiki/admin/textbloecke.md similarity index 95% rename from verfahren/textbloecke.md rename to docs/wiki/admin/textbloecke.md index 765d39b..fe62c4f 100644 --- a/verfahren/textbloecke.md +++ b/docs/wiki/admin/textbloecke.md @@ -1,8 +1,14 @@ +--- +type: wiki-page +area: admin +related: [] +--- + # Textbausteine für Sessions Kurze, kopierbare Blöcke, die man einer Claude-/Agenten-Session voranstellt. -Die Konventionen stehen kanonisch in [`CLAUDE.md`](../CLAUDE.md) — aber eine +Die Konventionen stehen kanonisch in [`CLAUDE.md`](../../../AGENTS.md) — aber eine Session liest sie nur, wenn sie dazu aufgefordert wird. Diese Bausteine sind die Aufforderung. @@ -69,7 +75,7 @@ Wo nichts zutrifft: "-" eintragen, nicht das Feld löschen. > **Dieser Baustein ist zugleich unsere Definition of Done für Änderungen ohne > Deploy** (festgelegt 2026-08-06). Für Deployments gilt weiterhin das -> [Übergabe-Verfahren](deploy-uebergabe.md) — das ist die längere DoD. +> [Übergabe-Verfahren](../deployment/deploy-uebergabe.md) — das ist die längere DoD. > > Bewusst kein eigenes DoD-Dokument: Es wäre die dritte Fassung derselben Regeln > und damit die dritte, die driften kann. diff --git a/shared/branding.md b/docs/wiki/architecture/branding.md similarity index 98% rename from shared/branding.md rename to docs/wiki/architecture/branding.md index 18f82cd..9d45725 100644 --- a/shared/branding.md +++ b/docs/wiki/architecture/branding.md @@ -1,3 +1,9 @@ +--- +type: wiki-page +area: architecture +related: [] +--- + # Branding: Marke, Farben, Bildsprache Übergreifend, weil dieselben Farben in mehreren Oberflächen eingestellt werden @@ -7,7 +13,7 @@ trennen lässt: **Bestand** (welche Farbe wo eingetragen ist) und **Historie** Hier im `management`-Repo, weil es als einziges der beteiligten Repos **gespiegelt** ist und jede Werkzeugentscheidung überlebt: Wird das -BookStack-Experiment nach [ADR-0007](../docs/adr/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md) +BookStack-Experiment nach [ADR-0007](../../adr/0007-wiki-oberflaeche-docusaurus-vs-bookstack.md) abgeräumt oder ein Client ersetzt, bleiben Marke und Paletten bestehen. ## Bildmarke @@ -20,7 +26,7 @@ Windows und Linux, Web-Icons. ⚠️ Beim Ableiten den **transparenten Rand wegschneiden** und mit `resize()` skalieren, nicht mit `thumbnail()` — Letzteres verkleinert nur und lässt das Motiv in großen Icons als Briefmarke zurück (real passiert, siehe -[AAR 2026-08-02](../verfahren/aar/2026-08-02-wiki-und-desktop-clients.md)). +[AAR 2026-08-02](../../aar/2026-08-02-wiki-und-desktop-clients.md)). ⚠️ **Und danach mittig setzen — das ist ein zweiter, eigener Schritt.** Beim ersten Anlauf wurde nur beschnitten und skaliert: Das Motiv füllte 81 % der Breite, saß diff --git a/shared/lab-netzwerk.md b/docs/wiki/architecture/lab-netzwerk.md similarity index 94% rename from shared/lab-netzwerk.md rename to docs/wiki/architecture/lab-netzwerk.md index f56bb4e..99031f4 100644 --- a/shared/lab-netzwerk.md +++ b/docs/wiki/architecture/lab-netzwerk.md @@ -1,7 +1,13 @@ +--- +type: wiki-page +area: architecture +related: [] +--- + # Lab-Netzwerk (Heimnetz: Fritzbox + UDM Pro) Themen rund um das Homelab-Netz selbst — Router-Kaskade, VLANs, VPN-Zugänge. -Hosts im Lab: Overmind (git.lab, [hosts/overmind.md](../hosts/overmind.md)), +Hosts im Lab: Overmind (git.lab, [hosts/overmind.md](../admin/overmind.md)), der Mac. Kaskade: **Fritzbox (WAN) → UDM Pro**, kein Doppel-NAT, statische Route in der Fritzbox für das Lab-VLAN. @@ -17,7 +23,7 @@ Route in der Fritzbox für das Lab-VLAN. | Zugang | Server | Port | Tunnelnetz | Zweck | |---|---|---|---|---| | Roadwarrior „Thore" | UDM | 51840 | 10.58.74.0/24 | Handy/MacBook ins Lab (LABNET-01) | -| Site-to-Site „Matrix" | UDM | 51841 | 10.58.75.0/24 | Hetzner-Netz 10.0.0.0/24 ↔ Lab (LABNET-02, [ADR-0004](../docs/adr/0004-site-to-site-vpn-hetzner-lab.md)) | +| Site-to-Site „Matrix" | UDM | 51841 | 10.58.75.0/24 | Hetzner-Netz 10.0.0.0/24 ↔ Lab (LABNET-02, [ADR-0004](../../adr/0004-site-to-site-vpn-hetzner-lab.md)) | ### Verhältnis zu `homelab/docs` @@ -28,7 +34,7 @@ Soll-Konfiguration ist führt die **Historie**: was wann warum geändert wurde und mit welchem Issue. Der Grund für die Doppelung ist der Mirror-Geltungsbereich aus der -[CLAUDE.md](../CLAUDE.md): Die Gruppe `homelab` hat bewusst **keine Mirrors** und +[CLAUDE.md](../../../AGENTS.md): Die Gruppe `homelab` hat bewusst **keine Mirrors** und ist von außerhalb des Labs nicht lesbar. Wer ohne Tunnel nachsehen muss, welcher Tunnel überhaupt auf welchem Port liegt, findet es nur hier. Deshalb hält dieses Dokument einen Kurzüberblick vor — Ports, Tunnelnetze, Zweck — und nichts @@ -113,7 +119,7 @@ Zum Netz/VPN ist **nichts mehr offen** (Stand 2026-08-02): | Issue | Thema | Stand | |---|---|---| | [#11](https://git.lab/axion1337.chat/management/-/issues/11) | LABNET-01-Rest — MacBook-WireGuard-Profil | geschlossen | -| [#12](https://git.lab/axion1337.chat/management/-/issues/12) | LABNET-02 — Site-to-Site-VPN (Design: [ADR-0004](../docs/adr/0004-site-to-site-vpn-hetzner-lab.md)) | geschlossen, Testreihe 1–7 protokolliert | +| [#12](https://git.lab/axion1337.chat/management/-/issues/12) | LABNET-02 — Site-to-Site-VPN (Design: [ADR-0004](../../adr/0004-site-to-site-vpn-hetzner-lab.md)) | geschlossen, Testreihe 1–7 protokolliert | | [#16](https://git.lab/axion1337.chat/management/-/issues/16) | LABNET-04 — Feinschliff UniFi-Regeln | geschlossen | Zwei Punkte tragen zwar LABNET im Text, gehören aber **nicht** zum VPN-Thema und diff --git a/docs/wiki/architecture/mirror-topologie.md b/docs/wiki/architecture/mirror-topologie.md new file mode 100644 index 0000000..20ab6b2 --- /dev/null +++ b/docs/wiki/architecture/mirror-topologie.md @@ -0,0 +1,64 @@ +--- +type: wiki-page +area: architecture +related: + - "docs/adr/0001-gitlab-kanonisch-push-mirror.md" + - "docs/adr/0002-issues-und-management-ins-lab.md" + - "docs/adr/0004-site-to-site-vpn-hetzner-lab.md" + - "docs/adr/0006-wikis-konsolidieren-docusaurus.md" +--- + +# Mirror-Topologie: Das Lab ist die Quelle der Wahrheit + +Begründungsprosa übernommen aus der alten `CLAUDE.md` (Abschnitt +„Projektrealitäten", Wortlaut in der git-Historie vor der +neckbeard-Migration); die verbindlichen Regeln stehen in `AGENTS.md` §6 +und den verlinkten ADRs. Erhalten per Feldtest-Befund F-013: Diese +Begründung samt Gegenargument und Rettungspfad ist der Wert — sie +erklärt, warum die Topologie so aussieht und so bleiben soll. + +- Kanonische Repos liegen auf `git.lab/axion1337.chat/*` (nur im + Lab/VPN auflösbar). Gitea/rohana wird per **Push-Mirror** beliefert + und bleibt Flux-Source, Container-/npm-Registry und Release-Download + ([ADR-0001](../../adr/0001-gitlab-kanonisch-push-mirror.md)). +- **Warum überhaupt zwei Orte — und warum das kein Altbestand ist:** + Auf git.lab liegen die *Baupläne*, auf Gitea eine Kopie, die der + Cluster **ohne verfügbares Lab** erreicht. Der Hetzner-Cluster muss + sich bauen und neu ausrollen lassen, wenn das Homelab aus ist, im + Umbau steckt oder niemand zu Hause ist — er darf deshalb nicht von + einem Host abhängen, der nur im Lab antwortet. + ⚠️ **Die Flux-Quelle nicht „geradeziehen"** auf git.lab: Das sähe + aufgeräumter aus und würde die Verfügbarkeit der Produktion an das + Lab koppeln — genau das, was die Trennung verhindert. +- **Gespiegelt wird nur die Gruppe `axion1337.chat`** (die Produkt-Repos + und `management`). Die Gruppe **`homelab`** (`docs`, `wiki`, + `wiki-bookstack`) hat bewusst **keine Mirrors**: Sie beschreibt und + konfiguriert ausschließlich Lab-Infrastruktur, und seit dem + Site-to-Site-VPN ([ADR-0004](../../adr/0004-site-to-site-vpn-hetzner-lab.md)) + erreichen auch Host-Sessions git.lab direkt — Tunnel einschalten + genügt. Betriebslehren, die von außen lesbar sein müssen, gehören + deshalb in die **AARs** unter `docs/aar/` (dieses Repo ist + gespiegelt), nicht nur in die READMEs der Lab-Repos. +- Landet doch ein Commit auf Gitea (z. B. aus einer Host-Session ohne + Lab-Route): **Kanonisierungs-Verfahren** in + [deploy-uebergabe](../deployment/deploy-uebergabe.md) — `.patch` von + Gitea ziehen, `git am` (erhält Autorschaft), Push über git.lab. +- ⚠️ gitops-Issue-Nummern haben sich beim Gitea-Umzug verschoben (Gitea + zählte PRs mit; z. B. Gitea#48 → GitLab#46) — alte „gitops#N"-Verweise + meinen die Gitea-Nummer; verbindlich ist der Migrations-Fußtext im + Issue ([ADR-0002](../../adr/0002-issues-und-management-ins-lab.md)). +- **Ausnahme** (bewusst entschieden, nur noch eine): der + TURN-Rotations-CronJob schreibt weiter nach Gitea, weil er im Cluster + läuft und git.lab nicht erreicht. **Die Rotation nicht von Hand + nachziehen und den PR nie auf Gitea mergen** — das erledigt seit + 2026-08-02 der geplante CI-Job `canonize_rotation` im gitops-Repo + täglich von git.lab aus. Scheitert er, bleibt die Pipeline rot; diese + rote Pipeline **ist** der Alarm, einen zusätzlichen Termin gibt es + bewusst nicht. +- **Dokumentation** ([ADR-0006](../../adr/0006-wikis-konsolidieren-docusaurus.md)): + Das gitops-Wiki liegt seit 2026-08-02 auf git.lab (*Wiki*-Reiter im + Projekt); ⚠️ der `wiki`-**Branch** im gitops-Repo ist ein überholter + Mai-Abzug von `docs/` und nicht die gepflegte Fassung. Alle Quellen + zusammen erscheinen unter **axionwiki.lab** + ([`homelab/wiki`](https://git.lab/homelab/wiki), Docusaurus) — + Inhalte werden beim Bau geholt, **Änderungen gehören ins Quell-Repo**. diff --git a/shared/zone-axion1337.md b/docs/wiki/architecture/zone-axion1337.md similarity index 99% rename from shared/zone-axion1337.md rename to docs/wiki/architecture/zone-axion1337.md index 0df9b0d..0cb80fe 100644 --- a/shared/zone-axion1337.md +++ b/docs/wiki/architecture/zone-axion1337.md @@ -1,3 +1,9 @@ +--- +type: wiki-page +area: architecture +related: [] +--- + # DNS-Zone `axion1337.de` und Mail-Policy Übergreifend, weil die Zone alle Hosts abdeckt und die Mail-Policy sich nicht pro diff --git a/verfahren/deploy-uebergabe.md b/docs/wiki/deployment/deploy-uebergabe.md similarity index 92% rename from verfahren/deploy-uebergabe.md rename to docs/wiki/deployment/deploy-uebergabe.md index bba8a79..dabda43 100644 --- a/verfahren/deploy-uebergabe.md +++ b/docs/wiki/deployment/deploy-uebergabe.md @@ -1,10 +1,16 @@ +--- +type: wiki-page +area: deployment +related: [] +--- + # Verfahren: Deploy-Übergabe Für die Konstellation „einer baut, ein anderer rollt aus". Zweck ist nicht mehr Prozess, sondern **weniger Rückfragen und weniger stille Fehlschläge**. Eingeführt am 2026-08-01 nach dem Deploy der CVE-Pipeline (`gitops#47`), siehe -[aar/2026-08-01-cve-pipeline-gitops47.md](aar/2026-08-01-cve-pipeline-gitops47.md). +[aar/2026-08-01-cve-pipeline-gitops47.md](../../aar/2026-08-01-cve-pipeline-gitops47.md). ## Ablauf @@ -12,8 +18,8 @@ Eingeführt am 2026-08-01 nach dem Deploy der CVE-Pipeline (`gitops#47`), siehe (`.gitlab/issue_templates/Deploy-Übergabe.md`, im Feld *Description template*). 2. Wer ausrollt, arbeitet die Prüfliste unten ab und deployt. 3. Wer ausrollt, hängt den **AAR** als Kommentar an dasselbe Issue - (Vorlage: [aar-vorlage.md](aar-vorlage.md)). Bei Befunden ab MEDIUM - zusätzlich als Datei unter [aar/](aar/). + (Vorlage: [docs/aar/template.md](../../aar/template.md)). Bei Befunden ab MEDIUM + zusätzlich als Datei unter `docs/aar/`. ## Die vier Punkte, die den Unterschied machen @@ -63,6 +69,7 @@ committet und dokumentiert, sonst ist sie in zwei Wochen ein Rätsel. ## Prüfliste für den Ausrollenden + - [ ] Diff gelesen, nicht nur die Beschreibung - [ ] Mengengerüst plausibel? Bei Zweifel an einer Stichprobe selbst messen - [ ] Configs mit den jeweiligen Werkzeugen validiert (`promtool`, `amtool`, diff --git a/docs/wiki/index.md b/docs/wiki/index.md new file mode 100644 index 0000000..780cfce --- /dev/null +++ b/docs/wiki/index.md @@ -0,0 +1,41 @@ +--- +type: wiki-page +area: index +related: [] +--- + +# Wiki-Index + +Areas sind Ordner; leere Ordner werden nie angelegt — Struktur entsteht +mit Inhalt. Projektfassung des neckbeard-Index (Original: +`docs/sources/upstream/neckbeard-v0.1.1/`), erweitert um die Area +`vision` (Alt-Wert „eine Datei je Linie", ADR-0005). + +## Areas + +| Area | Enthält | Stand | +|---|---|---| +| `admin/` | Betrieb: [cfgmon](admin/cfgmon.md) · [game](admin/game.md) · [matrix](admin/matrix.md) · [overmind](admin/overmind.md) · [Refinement & Retro](admin/refinement.md) · [Stillstandsprüfung](admin/stillstandspruefung.md) · [Textbausteine](admin/textbloecke.md) | belegt | +| `deployment/` | [Deploy-Übergabe](deployment/deploy-uebergabe.md) (Definition of Done, Kanonisierungs-Verfahren) | belegt | +| `architecture/` | [Mirror-Topologie](architecture/mirror-topologie.md) · [Lab-Netz](architecture/lab-netzwerk.md) · [DNS-Zone](architecture/zone-axion1337.md) · [Branding](architecture/branding.md) | belegt | +| `vision/` | Eine Datei je Linie: [axion1337.chat](vision/axion1337-chat.md) · [Homelab](vision/homelab.md) · [ThreadNet](vision/threadnet.md) | belegt | +| `user-guide/` | Für Nicht-Owner | entfällt — Gate 0: Publikum ist Owner + Sessions | +| `requirements/` | Eigenständige Anforderungssicht | nur bei echtem Bedarf | +| `faq/`, `stolpersteine/` | Nur aus AARs und geschlossenen Issues geerntet — nie auf Vorrat | leer, entsteht im Refinement | + +## Seitenregeln + +- Jede Seite trägt Frontmatter per `schema.yaml` (`type: wiki-page`, + `area`, `related`, ggf. `sources`). +- `sources` zitiert, worauf die Seite fußt — Dateien unter + `docs/sources/` (unveränderlich, agentenschreibgeschützt) oder + externe URLs. +- Nur Standard-Markdown-Links, Diagramme als Mermaid (ADR-0003 + upstream); keine Wikilinks. +- **Aufgaben gehören nicht ins Wiki:** offene Arbeitspunkte sind Issues + (`docs/issues/`), Wiki-Seiten verweisen höchstens darauf + (Lehre F-004; Prüfung: `scripts/pruefe_prosa.py`). +- Widersprüche werden aufgelöst oder ausdrücklich als Konflikt markiert + — nie stillschweigend nebeneinander stehen gelassen. +- Kein „Stand:"-Etikett in Seitenkörpern — `git log` beantwortet das + (Lehre F-010). diff --git a/vision/axion1337-chat.md b/docs/wiki/vision/axion1337-chat.md similarity index 97% rename from vision/axion1337-chat.md rename to docs/wiki/vision/axion1337-chat.md index 4e23672..be65b5d 100644 --- a/vision/axion1337-chat.md +++ b/docs/wiki/vision/axion1337-chat.md @@ -1,3 +1,9 @@ +--- +type: wiki-page +area: vision +related: [] +--- + # Vision: aXion1337.chat — die Community > **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17). diff --git a/vision/homelab.md b/docs/wiki/vision/homelab.md similarity index 96% rename from vision/homelab.md rename to docs/wiki/vision/homelab.md index 16ce464..e0bdfba 100644 --- a/vision/homelab.md +++ b/docs/wiki/vision/homelab.md @@ -1,3 +1,9 @@ +--- +type: wiki-page +area: vision +related: [] +--- + # Vision: Homelab — die Plattform > **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17). diff --git a/vision/threadnet.md b/docs/wiki/vision/threadnet.md similarity index 97% rename from vision/threadnet.md rename to docs/wiki/vision/threadnet.md index 9a4b2a0..bcbfdbb 100644 --- a/vision/threadnet.md +++ b/docs/wiki/vision/threadnet.md @@ -1,3 +1,9 @@ +--- +type: wiki-page +area: vision +related: [] +--- + # Vision: ThreadNet — das Tool > **Getragene Fassung** — geschärft im Struktur-Workshop am 2026-08-06 (#17). diff --git a/roadmap.md b/roadmap.md index e7a7891..d000876 100644 --- a/roadmap.md +++ b/roadmap.md @@ -63,12 +63,12 @@ ### Community (axion1337.chat) -- Rebranding-Runde (bewusst vertagt; Leitplanke in `vision/axion1337-chat.md`). +- Rebranding-Runde (bewusst vertagt; Leitplanke in `docs/wiki/vision/axion1337-chat.md`). - Vision-Verfeinerung im ersten Refinement. ## Kadenz -Ablauf und Timeboxes: [verfahren/refinement.md](verfahren/refinement.md). +Ablauf und Timeboxes: [verfahren/refinement.md](docs/wiki/admin/refinement.md). - **Refinement** (gemeinsame Session, ~wöchentlich, 30–45 min): Board von rechts nach links, WIP-Limit prüfen, nachziehen, Entscheidungsvorlagen. @@ -80,7 +80,7 @@ Ablauf und Timeboxes: [verfahren/refinement.md](verfahren/refinement.md). am 2026-08-06 — Visionen geschärft, M1–M4 angelegt, Board gesichtet, Kadenz und Arbeitsteilung festgelegt. Daraus entstanden ADR-0008 (Agenten-Sessions laufen root-äquivalent), die Textbausteine in -[verfahren/textbloecke.md](verfahren/textbloecke.md) und die feste Kadenz +[verfahren/textbloecke.md](docs/wiki/admin/textbloecke.md) und die feste Kadenz (Refinement sonntags, Retro am ersten des Monats). Seither gilt zusätzlich: **Der Titel trägt keine Priorität**, und **jedes Issue diff --git a/scripts/pruefe_prosa.py b/scripts/pruefe_prosa.py new file mode 100644 index 0000000..0e95389 --- /dev/null +++ b/scripts/pruefe_prosa.py @@ -0,0 +1,133 @@ +#!/usr/bin/env python3 +"""pruefe_prosa.py — deterministische Prosa-Prüfungen (offline). + +Drei Prüfungen, jede aus einem realen Feldtest-Befund (Design +2026-08-11, Muster C und D; Prüfungen nur aus realen Fällen): + +(a) SHA-Zitate auflösen (F-012: sechs verwaiste Zitate, niemand konnte + sie prüfen). Kandidaten sind Hex-Wörter (7–40 Zeichen, mindestens + je ein Buchstabe und eine Ziffer) in Wurzel-*.md und docs/**, ohne + docs/sources/ (die Zuordnungstabelle IST das Mapping). Auflösung: + 1. Objekt existiert in diesem Repo (`git cat-file -e`), + 2. SHA steht in der Zuordnungstabelle (alt→neu, ADR-0009), + 3. Objekt existiert in einem Klon unter $NB_KOMPONENTEN (optional). + Unauflösbar MIT gesetztem NB_KOMPONENTEN → FEHLER; ohne → als + UNGEPRÜFT gelistet (sichtbar, kein stiller Skip). + +(b) Aufgabenmarker im Wiki (F-004: fünf Arbeitspunkte lebten nur in + hosts/-Prosa, unsichtbar für das Board). Ein Absatz in docs/wiki/** + mit Marker (Nächster Schritt / Offen: / TODO / offene Checkbox) + muss einen Issue-Verweis tragen (#N, docs/issues/, /issues/-URL), + sonst FEHLER. Bewusste Nicht-Aufgaben (z. B. Checklisten eines + Verfahrens) tragen im selben Absatz das sichtbare Pragma + ``. + +(c) Sperrliste stillgelegter Ziele (F-005: lebendes Dokument routete + auf den toten Gitea-Tracker). Treffer → FEHLER. + +Usage: python scripts/pruefe_prosa.py [repo-root] +""" +from __future__ import annotations + +import os +import re +import subprocess +import sys +from pathlib import Path + +SHA_RE = re.compile(r"\b[0-9a-f]{7,40}\b") +MARKER_RE = re.compile(r"Nächste[r]? Schritt|(?:^|\*\*)Offen:|TODO\b|^\s*[-*] \[ \]", + re.M) +ISSUE_REF_RE = re.compile(r"#\d+|docs/issues/|/issues/\d+") +# F-005/ADR-0002: die Gitea-Tracker ALLER gespiegelten Repos sind seit dem +# Umzug tot; verbindlich sind die git.lab-Issues (Zuordnung: Migrations- +# Fußtext im jeweiligen GitLab-Issue). +SPERRLISTE = [re.compile(r"rohana\.axion1337\.de/sorb/[^)\s]*/issues/")] +ZUORDNUNG = "docs/sources/migration/commit-zuordnung-2026-08-07.md" +# Kuratierte Ausnahmen: SHAGrund — nur für Zitate, deren Ziel +# nachweislich und dokumentiert nicht mehr existiert (oder außerhalb +# des Prüfbereichs liegt). Neue Einträge brauchen einen Grund. +AUSNAHMEN = "scripts/sha_ausnahmen.tsv" + + +def kandidaten(root: Path): + for pattern in ("*.md", "docs/**/*.md"): + for p in sorted(root.glob(pattern)): + rel = p.relative_to(root).as_posix() + if rel.startswith("docs/sources/") or p.name == "template.md": + continue + yield p, rel + + +def obj_existiert(repo: Path, sha: str) -> bool: + r = subprocess.run(["git", "-C", str(repo), "cat-file", "-e", + f"{sha}^{{object}}"], capture_output=True) + return r.returncode == 0 + + +def main() -> int: + root = Path(sys.argv[1]) if len(sys.argv) > 1 else Path.cwd() + fehler: list[str] = [] + ungeprueft: list[str] = [] + + zuordnung = "" + zp = root / ZUORDNUNG + if zp.is_file(): + zuordnung = zp.read_text(encoding="utf-8") + ausnahmen: set[str] = set() + ap = root / AUSNAHMEN + if ap.is_file(): + for zeile in ap.read_text(encoding="utf-8").splitlines(): + if zeile.strip() and not zeile.startswith("#"): + ausnahmen.add(zeile.split("\t")[0].strip()) + + klone_dir = os.environ.get("NB_KOMPONENTEN", "") + klone = [d for d in Path(klone_dir).iterdir() + if (d / ".git").exists()] if klone_dir else [] + + for p, rel in kandidaten(root): + text = p.read_text(encoding="utf-8") + + # (c) Sperrliste + for muster in SPERRLISTE: + for treffer in set(muster.findall(text)): + fehler.append(f"{rel}: Verweis auf stillgelegtes Ziel " + f"({treffer})") + + # (a) SHA-Zitate + for sha in set(SHA_RE.findall(text)): + if sha.isdigit() or not any(c.isdigit() for c in sha) \ + or not any(c in "abcdef" for c in sha): + continue + if sha in ausnahmen: + continue + if obj_existiert(root, sha) or sha in zuordnung: + continue + if any(obj_existiert(k, sha) for k in klone): + continue + if klone: + fehler.append(f"{rel}: SHA-Zitat unauflösbar: {sha}") + else: + ungeprueft.append(f"{rel}: {sha} (kein NB_KOMPONENTEN)") + + # (b) Aufgabenmarker, nur Wiki + if rel.startswith("docs/wiki/"): + for absatz in re.split(r"\n\s*\n", text): + if "pruefe-prosa:ok" in absatz: + continue + if MARKER_RE.search(absatz) and not ISSUE_REF_RE.search(absatz): + zeile = absatz.strip().splitlines()[0][:70] + fehler.append(f"{rel}: Aufgabenprosa ohne " + f"Issue-Verweis: „{zeile}…“") + + for f in fehler: + print(f"FEHLER {f}") + for u in ungeprueft: + print(f"UNGEPRÜFT {u}") + print(f"pruefe_prosa: {len(fehler)} Fehler, " + f"{len(ungeprueft)} ungeprüfte SHA-Zitate") + return 1 if fehler else 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/sha_ausnahmen.tsv b/scripts/sha_ausnahmen.tsv new file mode 100644 index 0000000..df82ab9 --- /dev/null +++ b/scripts/sha_ausnahmen.tsv @@ -0,0 +1,8 @@ +# SHAGrund — kuratierte Ausnahmen für pruefe_prosa.py (a). +dfe04c4a Gitea-Direktpush, vom Mirror force-überschrieben; Text dokumentiert das (deploy-uebergabe, cfgmon) +dfe04c4 Kurzform desselben überschriebenen Commits (dfe04c4→6ffab68) +2b715ca Gitea-Direktpush, überschrieben (2b715ca→0bd77e2); Text dokumentiert das +7645a2b Commit im vendor/windows-Repo — außerhalb des Prüfbereichs (Windows-Build-VM, overmind) +5bc25447 Image-Tag aus vendor/windows-CI — außerhalb des Prüfbereichs (overmind) +2fafe38b Authentik-uid, kein Git-SHA (AAR 2026-08-11, MAS-subject) +823a08cac6b03a47d7e2f661200a49ac6e09d38d neckbeard-v0.1.1-Referenz — externes Repo, nicht im Komponenten-Prüfbereich diff --git a/verfahren/README.md b/verfahren/README.md deleted file mode 100644 index 914e1c7..0000000 --- a/verfahren/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Verfahren - -Wiederkehrende Abläufe zwischen Personen und Hosts — dort festgehalten, wo sie -nicht an einem einzelnen Projekt-Repo hängen. - -| Datei | Inhalt | -|---|---| -| [deploy-uebergabe.md](deploy-uebergabe.md) | Ablauf und Prüfliste für „einer baut, ein anderer rollt aus" | -| [aar-vorlage.md](aar-vorlage.md) | Vorlage für den After Action Report nach einem Deploy | -| [aar/](aar/) | Abgelegte AARs, benannt `JJJJ-MM-TT-.md` | - -[`textbloecke.md`](textbloecke.md) hält kurze, kopierbare Blöcke, die man einer -Session voranstellt — sie verweisen auf die Konventionen, statt sie zu wiederholen. -**Baustein 4 (Abschluss) ist zugleich die Definition of Done für Änderungen ohne -Deploy**; für Deployments gilt [deploy-uebergabe.md](deploy-uebergabe.md). - -Die zugehörige Issue-Vorlage liegt unter -`.gitlab/issue_templates/Deploy-Übergabe.md` und erscheint beim Anlegen eines -Issues in diesem Repo im Auswahlfeld *Description template* als -**Deploy-Übergabe**. - -Abgrenzung zum Rest des Repos: `hosts/` und `shared/` halten **offene Punkte**, -dieses Verzeichnis hält **wie wir arbeiten**. Ein Verfahren wird hier nur -aufgenommen, wenn es mindestens einmal an einem echten Vorfall gescheitert -oder bewährt ist — der auslösende AAR wird jeweils verlinkt. diff --git a/verfahren/aar-vorlage.md b/verfahren/aar-vorlage.md deleted file mode 100644 index e501dc5..0000000 --- a/verfahren/aar-vorlage.md +++ /dev/null @@ -1,45 +0,0 @@ -# AAR — - -**Datum:** JJJJ-MM-TT · **Host/Stack:** … · **Auftrag:** … - -## 1. Ergebnis - -Was ist live und verifiziert. Was ist bewusst **nicht** live, und warum. -Diese Trennung steht ganz oben — sie ist die einzige Angabe, die jemand -braucht, der nur eine Zeile liest. - -## 2. Befunde - -| # | Befund | Schwere | Status | -|---|---|---|---| -| 1 | … | HIGH / MEDIUM / LOW | abgefangen / behoben / notiert · Issue | - -Schwere nach Auswirkung, nicht nach Aufwand. Zu jedem Befund gehört, **wie er -sichtbar wurde** — falls das nicht offensichtlich ist, siehe Abschnitt 4. - -## 3. Verdachtsfälle mit Entwarnung - -Was geprüft und **nicht** bestätigt wurde, mit dem Messwert. Genauso wichtig -wie die Befunde: verhindert, dass dieselbe Vermutung beim nächsten Mal erneut -Zeit kostet. - -## 4. Was die Befunde ermöglicht hat - -Die Methode, nicht die Chronologie. Wenn ein Befund nur durch eine bestimmte -Prüfung sichtbar wurde, gehört genau die hierher — das ist der Teil, der beim -nächsten Deploy wiederverwendbar ist. - -## 5. Offen - -Was bleibt, wer entscheidet, was blockiert. Mit Issue-Referenz statt -wiederholtem Inhalt. - ---- - -Regeln: - -- Nicht verifizierte Aussagen als solche kennzeichnen — eine Vermutung, die wie - ein Befund aussieht, kostet später mehr Zeit als sie spart (Konvention aus - der [README](../README.md)). -- Zahlen statt Adjektive. „Viele Alarme" ist keine Angabe, „126 CRITICAL" ist eine. -- Kurz. Ein AAR, der nicht gelesen wird, hat keinen Wert.