Framework-Umbau: Backlogs wird management-Repo (ADR-0005, Kanban + Scrum-Elemente)
- decisions/: ADR-Verzeichnis mit Template + 0001-0005 (git.lab-Kanonik, Lab-Cutover, CVE-Meldeweg, Site-to-Site-VPN-Design, Framework-Wahl) - vision/: je eine Vision fuer Community/Tool/Plattform (Entwuerfe) - roadmap.md: Linien, Meilenstein-Kandidaten, Kadenz - hosts/+shared/: offene Punkte -> Issues #1-#12 im management-Projekt (IDs bleiben in den Titeln), Dateien halten Bestand + Historie - README: Framework, Board/status-Labels (WIP-Limit 2), Topologie Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PKhFj1S3UdD6xL2fbWPeYj
This commit is contained in:
co-authored by
Claude Fable 5
parent
0f3f155bc5
commit
fdf30d42e1
@@ -1,131 +1,75 @@
|
||||
# Backlogs
|
||||
# management
|
||||
|
||||
Zentrale Sammlung offener Punkte über alle Hosts und Dienste hinweg. Ein Eintrag
|
||||
landet hier, wenn er bewusst nicht sofort erledigt wurde — damit er nicht in einer
|
||||
Chat-Historie oder einem Kopf verschwindet.
|
||||
Steuerungs-Repo für alles über den einzelnen Projekten: Visionen, Roadmap,
|
||||
Entscheidungen (ADR), Arbeitsverfahren, AARs — und der Bestand der Hosts.
|
||||
Framework: **Kanban-Rückgrat mit leichten Scrum-Elementen**, begründet und
|
||||
im Detail festgelegt in [ADR-0005](decisions/0005-pm-framework-kanban.md).
|
||||
|
||||
*(Bis 2026-08-01 hieß dieses Repo `Backlogs` und führte offene Punkte als
|
||||
Markdown — die leben jetzt als Issues, siehe unten.)*
|
||||
|
||||
## Repo-Topologie (seit 2026-08-01)
|
||||
|
||||
**Kanonisch lebt dieses Repo auf `git.lab`** (`axion1337.chat/Backlogs`, nur im
|
||||
Lab bzw. via VPN erreichbar — das Lab ist die Quelle der Wahrheit).
|
||||
`rohana.axion1337.de/sorb/Backlogs` ist ein **Push-Mirror**: git.lab ü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)).
|
||||
**Kanonisch lebt dieses Repo auf `git.lab`** (`axion1337.chat/management`, nur im
|
||||
Lab bzw. via VPN erreichbar — das Lab ist die Quelle der Wahrheit,
|
||||
[ADR-0002](decisions/0002-issues-und-management-ins-lab.md)).
|
||||
`rohana.axion1337.de/sorb/management` ist ein **Push-Mirror**: git.lab
|
||||
ü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)).
|
||||
|
||||
**Eine bewusste Ausnahme:** Die **Deploy-Übergabe-Issues** laufen weiter auf dem
|
||||
Gitea-Mirror (dortiger Issue-Tracker), weil CFGMON und andere Hosts außerhalb
|
||||
des Labs `git.lab` nicht erreichen — eine Übergabe muss aber von beiden Seiten
|
||||
lesbar/kommentierbar sein.
|
||||
**Eine befristete Ausnahme:** Die **Deploy-Übergabe-Issues** laufen auf dem
|
||||
Gitea-Mirror-Tracker, weil CFGMON und andere Hosts außerhalb des Labs `git.lab`
|
||||
noch nicht erreichen. Abgelöst wird das durch das Site-to-Site-VPN
|
||||
([ADR-0004](decisions/0004-site-to-site-vpn-hetzner-lab.md),
|
||||
[Issue #12](https://git.lab/axion1337.chat/management/-/issues/12)).
|
||||
|
||||
## Aufbau
|
||||
## Struktur
|
||||
|
||||
```
|
||||
hosts/ ein File pro Host, benannt nach dem Hostnamen
|
||||
shared/ Themen, die mehrere Hosts betreffen (DNS-Zone, Mail-Policy)
|
||||
verfahren/ wiederkehrende Abläufe zwischen Personen und Hosts, plus AARs
|
||||
```
|
||||
|
||||
Faustregel für die Einordnung: **Der Eintrag gehört dorthin, wo die Arbeit
|
||||
stattfindet, nicht dorthin, wo das Symptom auftritt.** Ein down-Target in Prometheus
|
||||
auf CFGMON, dessen Ursache ein blockierter Port auf dem Gameserver ist, gehört nach
|
||||
`hosts/game.md` — mit Querverweis von CFGMON.
|
||||
|
||||
## Hosts
|
||||
|
||||
| Host | Adressen | Rolle | Backlog |
|
||||
|---|---|---|---|
|
||||
| **CFGMON** | `188.245.193.243`, `2a01:4f8:c17:93eb::1`, privat `10.0.0.3` | Monitoring-Stack, Gitea, Traefik | [hosts/cfgmon.md](hosts/cfgmon.md) |
|
||||
| **game** | `157.90.155.206` (`game.axion1337.de`) | Pterodactyl / Gameserver | [hosts/game.md](hosts/game.md) |
|
||||
| **matrix** | `49.13.132.245` (`matrix.axion1337.de`) | Matrix-Homeserver | [hosts/matrix.md](hosts/matrix.md) |
|
||||
| **Overmind** | `10.58.73.17` (`git.lab`, **nur im Homelab auflösbar**) | GitLab + CI-Runner (Lab) | [hosts/overmind.md](hosts/overmind.md) |
|
||||
|
||||
## Übergreifend
|
||||
|
||||
| Thema | Backlog |
|
||||
| Pfad | Artefakt |
|
||||
|---|---|
|
||||
| DNS-Zone `axion1337.de` und Mail-Policy (IONOS) | [shared/zone-axion1337.md](shared/zone-axion1337.md) |
|
||||
| `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), [AARs](verfahren/aar/), Werkzeuge |
|
||||
| `hosts/`, `shared/` | **Bestand + Historie** je Host/Thema — offene Punkte sind Issues |
|
||||
|
||||
## Verfahren
|
||||
## Das Backlog: Issues + Board
|
||||
|
||||
`hosts/` und `shared/` halten **offene Punkte**, [verfahren/](verfahren/) hält
|
||||
**wie wir arbeiten** — Abläufe, die zwischen Personen oder über mehrere Hosts
|
||||
hinweg gelten und deshalb an kein einzelnes Projekt-Repo gehören.
|
||||
Alle offenen Punkte sind **Issues in diesem Projekt** (host-/infra-Scope, mit
|
||||
`host:`-Labels; die alten IDs wie `CFGMON-01` bleiben im Titel) bzw. in den
|
||||
Produkt-Projekten der Gruppe (Projekt-Scope). Das
|
||||
**[Gruppen-Board](https://git.lab/groups/axion1337.chat/-/boards)** zeigt alles
|
||||
über die `status:`-Labels:
|
||||
|
||||
| Verfahren | Inhalt |
|
||||
|---|---|
|
||||
| [Deploy-Übergabe](verfahren/deploy-uebergabe.md) | „einer baut, ein anderer rollt aus": Issue-Vorlage, Prüfliste, AAR |
|
||||
| Label | Bedeutung | Policy |
|
||||
|---|---|---|
|
||||
| *(keins)* | Backlog | wird im Refinement gesichtet |
|
||||
| `status:next` | als Nächstes gezogen | die einzige „Zusage" (Pull nach Kapazität) |
|
||||
| `status:doing` | in Arbeit | **WIP-Limit: max. 2** |
|
||||
| `status:wartet` | blockiert | nur mit benanntem Grund im Issue |
|
||||
|
||||
Zur Deploy-Übergabe gehört die Issue-Vorlage
|
||||
`.gitea/ISSUE_TEMPLATE/deploy-uebergabe.yaml` — sie erscheint beim Anlegen eines
|
||||
Issues in diesem Repo als **Deploy-Übergabe**. Die Übergabe-Issues laufen auf dem
|
||||
**Gitea-Mirror** (siehe Repo-Topologie oben: CFGMON erreicht git.lab nicht), weil
|
||||
das Verfahren repo-übergreifend gilt; der fachliche Inhalt bleibt im jeweiligen
|
||||
Projekt-Repo.
|
||||
Genau **ein** `status:`-Label pro Issue. Prioritäten weiter über `priority:*`.
|
||||
|
||||
## Konventionen
|
||||
## Konventionen (unverändert gültig)
|
||||
|
||||
**IDs** sind pro Datei fortlaufend mit einem Präfix, das den Ort benennt:
|
||||
`CFGMON-01`, `GAME-01`, `MATRIX-01`, `ZONE-01` — ein Präfix pro Datei in `hosts/`
|
||||
bzw. `shared/`, keine Liste losgelöst vom tatsächlichen Datei-Bestand. IDs werden
|
||||
**nicht wiederverwendet** — ein erledigter Punkt behält seine Nummer, damit
|
||||
Querverweise und Commit-Messages dauerhaft stimmen. Auch wenn eine ganze Datei
|
||||
entfällt (siehe `hosts/k3s.md`, entfernt 2026-07-30), wird ihr Präfix nicht für
|
||||
etwas anderes wiederverwendet.
|
||||
**IDs** (`CFGMON-01`, `ZONE-01`, …) werden **nie wiederverwendet**; sie leben in
|
||||
Issue-Titeln weiter. Neue host-/infra-Punkte bekommen die nächste freie Nummer
|
||||
ihres Präfixes als Issue.
|
||||
|
||||
Das Präfix für DNS-Themen ist bewusst `ZONE-` und nicht `DNS-`: `DNS-01` ist der
|
||||
Name eines ACME-Challenge-Typs und käme in genau diesen Backlogs ständig als
|
||||
Fachbegriff vor.
|
||||
**Jeder Punkt braucht** eine Beschreibung des tatsächlichen Zustands und einen
|
||||
konkreten nächsten Schritt; nicht selbst Verifiziertes wird als solches markiert
|
||||
(woher stammt die Aussage?). **Zeitkritisches** bekommt ein Datum, nicht „bald".
|
||||
|
||||
**Status:**
|
||||
|
||||
| Wert | Bedeutung |
|
||||
|---|---|
|
||||
| `offen` | noch nicht angefasst |
|
||||
| `in Arbeit` | läuft gerade |
|
||||
| `wartet auf …` | blockiert, mit Angabe worauf |
|
||||
| `erledigt` | fertig, mit Datum — Eintrag bleibt stehen, siehe unten |
|
||||
| `verworfen` | bewusst **nicht** umgesetzt, mit Datum und Begründung — nicht dasselbe wie `erledigt`: es ist nichts passiert, sondern es wurde entschieden, es zu lassen |
|
||||
|
||||
Erledigte **und** verworfene Punkte werden **nicht gelöscht**, sondern nach unten
|
||||
in den Abschnitt „Erledigt" verschoben (verworfene Punkte darin klar als solche
|
||||
kennzeichnen). Der Grund: bei mehreren Hosts ist die Frage „haben wir das damals
|
||||
eigentlich gemacht, und warum so — oder haben wir es bewusst gelassen?" häufiger
|
||||
als die Frage „was ist noch offen".
|
||||
|
||||
**Jeder Eintrag braucht** einen Status, eine Beschreibung des tatsächlichen
|
||||
Zustands, und einen konkreten nächsten Schritt. Wenn eine Aussage nicht direkt
|
||||
verifiziert ist (aus einer Konsole, einer Doku, einer Ableitung statt einer
|
||||
Messung von dem betroffenen System selbst), wird kurz dazugeschrieben, woher sie
|
||||
stammt — eine unbestätigte Vermutung, die wie ein Befund aussieht, kostet beim
|
||||
nächsten Mal mehr Zeit als sie spart.
|
||||
|
||||
**Zeitkritisches** bekommt ein Datum in der Statuszeile, nicht nur „bald".
|
||||
|
||||
**Gegenstücke in anderen Host-Dateien** (z. B. ein Punkt, der von zwei Seiten
|
||||
beschrieben wird, wie ein Push von `matrix` auf einen offenen Port bei `CFGMON`)
|
||||
werden beim Schließen einer Seite **auf der anderen Seite mitaktualisiert**, nicht
|
||||
nur verlinkt und stehen gelassen — sonst bleibt eine Seite unbemerkt veraltet.
|
||||
**Erledigtes und Verworfenes** bleibt sichtbar: Issues werden geschlossen (nicht
|
||||
gelöscht), `verworfen` wird im Schlusskommentar begründet — der Unterschied
|
||||
zwischen „gemacht" und „bewusst gelassen" ist die häufigste Rückfrage.
|
||||
|
||||
## Verhältnis zu den Projekt-Repos
|
||||
|
||||
Dieses Repo hält die offenen Punkte. Die **Konfiguration** liegt weiter in den
|
||||
jeweiligen Projekt-Repos, z. B. `sorb/threadnet-operating` für den
|
||||
Monitoring-Stack auf CFGMON. Damit nichts doppelt geführt wird, verweisen die
|
||||
Projekt-Repos hierher statt eigene Backlog-Dateien zu pflegen.
|
||||
|
||||
## Verhältnis zu Projekt-Issues
|
||||
|
||||
Die Projekt-Repos führen ihren eigenen Feature-/Fix-Backlog als Issues — **seit
|
||||
2026-08-01 auf git.lab** (Migration per gitops#48, alte Gitea-Issues tragen einen
|
||||
Verweis auf ihr GitLab-Gegenstück). Das bleibt dort, wird hier **nicht**
|
||||
dupliziert. Faustregel für die Abgrenzung:
|
||||
|
||||
- **Reiner Projekt-Scope** (eine Funktion in einem Repo, ein Bug in einem Service):
|
||||
Issue im jeweiligen Projekt auf git.lab, kein Eintrag hier.
|
||||
- **Host-/Infrastruktur-Scope** (betrifft einen Host direkt, oder eine Entscheidung
|
||||
über mehrere Hosts/Repos hinweg, z. B. wo ein CI-Runner laufen soll): Eintrag
|
||||
hier, mit Verweis auf betroffene Issues statt deren Inhalt zu wiederholen.
|
||||
- **Beides zugleich** (ein Host-Thema hat ein konkretes Gegenstück als Issue, z. B.
|
||||
ein fehlender Gitea-Runner blockiert CI in mehreren Repos): kurzer Eintrag hier
|
||||
mit Link zum führenden Issue, statt den Issue-Inhalt hierher zu kopieren.
|
||||
Konfiguration lebt in den Projekt-Repos (z. B. `threadnet-operating` für den
|
||||
CFGMON-Stack), reine Projekt-Bugs/-Features in deren Issues auf git.lab.
|
||||
Hierher gehört, was mehrere Hosts/Repos betrifft oder eine Entscheidung ist.
|
||||
Ein Punkt, der von zwei Seiten beschrieben wird, verlinkt die andere Seite und
|
||||
wird beim Schließen **dort mitaktualisiert**.
|
||||
|
||||
Reference in New Issue
Block a user