The design doc closes with its AAR (planned/actual/why/learnings, the six acceptance criteria checked off 6/6, the session's shakiest calls named) and moves to docs/design/done/ with status done. Harvest: a stolpersteine wiki page distilled from the AAR (hex is not a git SHA, TZ on the git process, python floor, anonymous Gitea negatives, negative tests, directory links), and the neckbeard feedback list becomes issue 0040 - a deliberate separate act, per the design's non-goals. Operational follow-up is issues 0041 (refine imported wartegrund) and 0042 (go-live: push, first mirror run, CI schedule, milestone for gitops#61). Final chain green: validate 0/0 over 36 open issues, gen_status --check current, drift 0, prosa 0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
4.1 KiB
type, id, status, date, supersedes, superseded_by, related
| type | id | status | date | supersedes | superseded_by | related | |||
|---|---|---|---|---|---|---|---|---|---|
| adr | 0012 | accepted | 2026-08-11 | null | null |
|
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 wieCFGMON-01bleiben im Titel.- Das Schema trägt die belegten Pflichten:
milestone(Pflicht, M1–M5) undpriority(Pflicht, high/medium/low), dazudue(Datum statt „bald"), optionalhost/area. Der Status-Enum wird um die Board-Spalten erweitert (next,waitingmit 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 logersetzt 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.