Files
management/docs/adr/0012-issues-im-repo-gitlab-als-spiegel.md
T
Thore CimbalandClaude Fable 5 5e46372ea8 docs: rebase onto moved main, renumber session ADRs to 0012/0013
Reality moved after the Gate-3 approval (flagged by the human, verified
read-only): main gained decisions/0011 plus a new AAR, gitops gained two
commits, and the live backlog shows gitops#61 without a milestone - the
first real break of the 100% milestone discipline. Session ADRs
renumbered to avoid the id collision, counts updated (11 old ADRs, 6
AARs), gruppenpruefung gains the group-wide milestone/priority duty
check backed by that real case. Addendum in the design doc records all
of it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 12:00:00 +00:00

89 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
type: adr
id: "0012"
status: accepted
date: 2026-08-11
supersedes: null
superseded_by: null
related:
- "docs/design/2026-08-11-neckbeard-migration.md"
- "decisions/0002-issues-und-management-ins-lab.md"
- "decisions/0005-pm-framework-kanban.md"
---
# ADR-0012: Issues leben im Repo; GitLab wird deterministisch bespiegelt
## Kontext
Die Gruppe führt 111 Issues auf git.lab, davon 71 offen; die Disziplin ist
belegt intakt (F-014: 71/71 mit genau einem Meilenstein, 71/71 mit
Priorität, WIP-Limit gehalten). Neckbeards ADR-0002 macht In-Repo-Issues
zum Default und vertagt die Spiegel-Option C. Der Feldtest zeigt beides:
Die Forge erzwingt sichtbar, was Prosa nicht hält (F-001, F-017 —
Dokumente widersprechen dem Board), und Host-Sessions ohne Lab-Zugang
können GitLab-Issues gar nicht lesen, wohl aber den Gitea-Mirror dieses
Repos. Der alte Grundsatz „Alles Offene ist ein Issue" (altes ADR-0005)
scheiterte nur dort, wo Arbeitspunkte in `hosts/`-Markdown lebten (F-004)
— am zweiten Backlog, nicht am Board.
## Optionen
**A: GitLab bleibt kanonisch, Repo hält nur einen Export.** Tagesablauf
unverändert, Board bleibt Arbeitsfläche. Aber: dauerhafte Ausnahme von
neckbeards ADR-0002 (nach eigener Regel ADR-pflichtig), Issues bleiben
für Host-Sessions unsichtbar und für Agenten nur per API erreichbar, und
die Klasse „Prosa widerspricht Board" (F-001) bleibt strukturell offen —
generierte Dokumente hingen an einem Netzzugriff.
**B: Reine In-Repo-Issues, GitLab-Issues geschlossen.** Sauberste
neckbeard-Form. Aber: das Gruppenboard verliert den Management-Scope,
Meilenstein-Ansichten werden unvollständig, das Refinement liest zwei
Systeme — genau die belegte Disziplin (F-014) würde ihres Werkzeugs
beraubt. Der Report warnt ausdrücklich: nicht per Board-Löschung
migrieren.
**C: Repo kanonisch, GitLab als generierter Spiegel.** Die Issue-Wahrheit
liegt als `docs/issues/NNNN-slug.md` im Repo (grepbar, offline, über den
Gitea-Mirror überall lesbar); ein deterministisches Skript spiegelt
Titel, Status, Meilenstein, Priorität und Fälligkeit nach GitLab, damit
Board-, Meilenstein- und Label-Ansichten weiterarbeiten. Eine
Drift-Prüfung meldet Abweichungen zwischen Board und Repo rot.
## Entscheidung
**Option C, beschränkt auf den Management-Scope.**
- `docs/issues/` wird kanonisch für die Issues des management-Projekts.
Die offenen management-Issues werden aus dem GitLab-Stand importiert
und behalten ihre Nummern (GitLab-iid = Datei-id; keine dritte
Nummernwelt). Alt-IDs wie `CFGMON-01` bleiben im Titel.
- Das Schema trägt die belegten Pflichten: `milestone` (Pflicht, M1M5)
und `priority` (Pflicht, high/medium/low), dazu `due` (Datum statt
„bald"), optional `host`/`area`. Der Status-Enum wird um die
Board-Spalten erweitert (`next`, `waiting` mit benanntem Grund); das
WIP-Limit (max. 2 in-progress) wird eine Validator-Regel.
- Der Spiegel ist **ein** deterministisches Skript (Repo → GitLab),
Standard `--dry-run`; echte Läufe stößt sorb an. Board-Handgriffe
bleiben erlaubt, sind aber nicht kanonisch: Was nicht nachgezogen
wird, meldet die Drift-Prüfung. Die Zusage-Spalten (`next`,
`in-progress`) vergibt weiterhin nur sorb — Prozessregel, nicht
Mechanik.
- **Komponenten-Tracker bleiben unangetastet** (gitops 60 Issues usw.),
bis die jeweilige Komponente selbst adoptiert; das wird als
Folge-Issues angelegt. Bis dahin gilt für Komponenten-Issues GitLab
als Wahrheit — ausgewiesen, nicht verschwiegen.
## Konsequenzen
- Statusänderung = Commit; `git log` ersetzt die Issue-Chronik. STATUS.md
und Roadmap-Zahlen werden generiert statt behauptet (F-001-Klasse
geschlossen).
- Host-Sessions lesen den vollständigen Management-Backlog erstmals von
überall (Gitea-Mirror des Repos).
- GitLab-seitige Änderungen ohne Nachzug sind ab jetzt ein Befund, kein
stiller Zustand — die Drift-Prüfung übernimmt die Alarmfunktion der
roten Pipeline.
- Das geschlossene GitLab-Altbestand-Archiv (40 geschlossene Issues)
wird nicht importiert; es bleibt als Historie auf git.lab, erreichbar
über die bestehenden Verweise.