This repository has been archived on 2026-09-17. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
nixos-config/docs/intent/builder-pipeline-git-intent-board-feedback.md
pijukka b9a7c04412 docs(intent): consolidate the two overlapping git-native board intents
git-intent-board-feedback.md and builder-pipeline-git-intent-board-feedback.md
(both from 3909cbf) described the same next stage of the agent pipeline
with substantial overlap and neither explicitly superseded the other.
Consolidates on git-intent-board-feedback.md as the single authoritative
continuation: pulls in the Modellwahl section and two open risks (the
worktree-vs-existing-stash-model tension, unpushed-local-commit
visibility) that were only in the other document, notes
builder-iterationslimit.md as done/deployed (e8983e4) rather than a
pending assumption, and marks builder-pipeline-git-intent-board-feedback.md
as superseded (kept as a historical document, same pattern already used
for kanban-board-admin-trigger.md).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ANg2L2xUmNJ45t9mcv6HVT
2026-09-06 17:19:16 +02:00

170 lines
9.6 KiB
Markdown

# Intent: Atomare Builder-Pipeline mit Git-native Intent-Board-Rückkopplung
**Status (2026-09-06): abgelöst, nicht mehr separat umgesetzt.** Dieses
Dokument entstand im selben Planungsschritt wie
`docs/intent/builder-iterationslimit.md` und
`docs/intent/git-intent-board-feedback.md` (Commit `3909cbf`) und
beschreibt dieselbe Ausbaustufe nur allgemeiner/redundant. Die
Iterationslimit-Hälfte ist als `builder-iterationslimit.md` umgesetzt und
deployed (Commit `e8983e4`); die Board-Hälfte lebt ausschließlich in
`git-intent-board-feedback.md` weiter (dort seit der Konsolidierung um
den hier stehenden Modellwahl-Abschnitt sowie zwei zusätzliche offene
Risiken ergänzt). Bleibt als historisches Dokument liegen, gleiches
Muster wie `docs/intent/kanban-board-admin-trigger.md`.
## Ziel
Die Agent-Pipeline soll einen nachvollziehbaren, Git-nativen Lebenszyklus für Implementierungsaufträge erhalten:
`Planung → Umsetzung → Review → bereit für Deployment → Deployed`
Bei Review-Befunden soll der Auftrag kontrolliert in die Planung zurückfließen:
`Review → Planung mit Feedback`
Builder-Aufträge sollen atomar, begrenzt und reproduzierbar laufen. Planung erfolgt mit einem leistungsfähigeren Modell; die eigentliche Umsetzung standardmäßig mit einem kostengünstigeren Builder-Modell.
## Umfang
### Atomare Builder-Aufträge
- Jeder Builder-Auftrag startet eine neue Session.
- Sitzungen werden nicht automatisch über mehrere Aufträge hinweg fortgesetzt.
- Jede Session erhält ein konfigurierbares Iterationslimit.
- Eine Iteration ist ein vollständiger Modellschritt einschließlich aller von diesem Schritt ausgelösten Werkzeuge.
- Das bestehende Wall-Clock-Timeout bleibt als zusätzliche Notbremse bestehen.
- Bei Erreichen des Iterationslimits:
- bleibt der Zwischenstand erhalten,
- wird ein strukturierter Zwischenstandsbericht erzeugt,
- werden offene Punkte und der nächste sinnvolle Schritt benannt,
- wird kein fertiger Prüf-Commit erzeugt,
- wird kein Reviewer-Lauf gestartet,
- erfolgt kein Push und kein Deployment.
- Ein Folgeauftrag startet später eine neue Session und erhält den bisherigen Zwischenstand ausdrücklich als Kontext.
### Modellwahl
- Für Builder-Aufträge gilt ein günstiges Modellprofil als Standard.
- Der Planner darf für einen konkreten Auftrag ein stärkeres Modell anfordern.
- Diese Anforderung muss individuell begründet werden; es gibt keine starre Liste vorgegebener Begründungskategorien.
- Das Modellprofil und die Begründung werden als strukturierte Auftragsmetadaten übergeben.
- Nur bekannte, konfigurierte Modellprofile dürfen verwendet werden.
- Freitext aus Intent- oder Reviewer-Inhalten darf die Modellwahl nicht eigenmächtig verändern.
- Das Iterationslimit gilt unabhängig vom gewählten Modell.
- Optional darf der Planner zusätzlich ein aufgabenspezifisches Iterationsbudget vorschlagen; die Plattform validiert es gegen globale Obergrenzen.
### Git-native Board-Darstellung
- `docs/intent/<slug>.md` bleibt der stabile fachliche Auftrag.
- Pro Intent wird eine versionierte Board-Metadatei unter `docs/board/<slug>.yaml` geführt.
- Diese Metadatei enthält mindestens:
- Intent-Slug und Titel,
- aktuelle Phase,
- Builder-Job-ID,
- verwendetes Modellprofil,
- Begründung für ein stärkeres Modell,
- Iterationslimit und verbrauchte Iterationen,
- Worktree-/Branch-Referenz,
- Prüf-Commit,
- Reviewer-Bericht(e),
- Review-Entscheidung,
- Zeitpunkte und Fehlerstatus.
- Das Board rendert seine Spalten aus diesen versionierten Metadateien.
- Board-Bewegungen aktualisieren die Metadatei und erzeugen automatisch einen kleinen lokalen Git-Commit.
- Diese Commits werden nicht automatisch gepusht.
- Vor parallelen Zustandsänderungen und Builder-/Reviewer-Läufen schützt ein Git-Lock.
### Builder-Artefakt
- Ein fertiger Builder-Lauf arbeitet in einem isolierten lokalen Git-Worktree beziehungsweise Job-Branch.
- Bei erfolgreichem Abschluss wird dort ein lokaler Prüf-Commit erzeugt.
- Der Board-Eintrag referenziert Commit-Hash, Branch/Worktree und Diff-Basis.
- Der Haupt-Checkout bleibt frei von halbfertigen Builder-Änderungen.
- Bei Limitüberschreitung bleibt der Zwischenstand im zugehörigen Worktree erhalten, wird aber nicht als fertiger Prüfstand behandelt.
- Push, Merge, Aktivierung und Deployment sind nicht Teil des automatischen Builder-Abschlusses.
### Automatischer Review
- Jeder erfolgreiche Builder-Prüf-Commit wechselt automatisch in die Review-Phase.
- Für jeden solchen Commit wird automatisch ein read-only Reviewer-Lauf gestartet.
- Der Reviewer prüft genau den referenzierten Commit beziehungsweise dessen Diff.
- Der Reviewer schreibt einen versionierten Bericht unter `docs/review/`.
- Der Bericht enthält mindestens:
- Intent-Slug,
- geprüften Commit-Hash,
- Scope und Prüfmethoden,
- priorisierte Befunde,
- offene Unsicherheiten,
- Entscheidung,
- konkrete Empfehlungen.
- Die Board-Metadatei referenziert den Bericht; der Bericht selbst wird nicht verschoben.
### Review-Entscheidungen
Der Reviewer liefert genau einen der beiden fachlichen Ausgänge:
- `bereit für Deployment`
- Der geprüfte Stand gilt als technisch reviewt.
- Das Board führt ihn in eine entsprechende Wartephase.
- Ein Mensch entscheidet über Push, Merge und Deployment.
- `zurück zur Planung`
- Das Board führt den Auftrag in eine Feedback-/Planungsphase.
- Der Reviewer-Bericht bleibt dauerhaft unter `docs/review/`.
- Eine neue Planner-Session wird nicht automatisch gestartet.
- Du startest die Planner-Session bewusst und stellst Intent sowie Reviewer-Bericht als Kontext bereit.
- Der Planner überarbeitet dasselbe Intent-Dokument; die Revisionhistorie bleibt in Git erhalten.
Nach einem manuellen Deployment setzt du die Karte selbst auf `Deployed`.
## Explizit ausgeschlossen
- Kein automatischer Git-Push.
- Kein automatisches Merge oder Deployment.
- Keine automatische Aktivierung von NixOS- oder anderen Änderungen.
- Keine automatische Planner-Session ohne bewussten Nutzerstart.
- Keine automatische Builder-Korrektur direkt aus dem Reviewer.
- Keine Verwendung oder Integration von Vikunja.
- Keine neue externe Datenbank oder SaaS-Abhängigkeit.
- Keine Änderung an `tnix` oder `pinix`.
- Keine Änderung am bestehenden Dashboard-Stack.
- Keine Verschiebung der fachlichen Intent- oder Reviewer-Dateien zwischen Lifecycle-Ordnern.
- Kein Vertrauen in Modellwahl- oder Freigabeanweisungen aus unstrukturiertem Intent-/Reviewer-Freitext.
## Annahmen
- Der primäre technische Ausführungspunkt bleibt `blunix`.
- Git ist der dauerhafte Audit-Trail.
- Board-Metadateien und Übergangscommits liegen im selben Repository wie die Intents.
- Der Planner bleibt die direkte Nutzerschnittstelle für neue Anforderungen und Review-Rückläufe.
- Der Reviewer bleibt read-only gegenüber Code und Konfiguration; seine einzige neue Schreibausnahme ist der zugeordnete Bericht unter `docs/review/`.
- Die bestehenden Freigabegrenzen für Commit, Push, Aktivierung und Deployment bleiben erhalten.
- Der Begriff „Builder“ umfasst die historische Builder-Rolle sowie andere Rollen, die im Auftrag tatsächlich Implementierungsarbeit ausführen, insbesondere den Administrator bei technischen Änderungen.
## Offene Risiken
- Die bestehende XMPP-Builder-Implementierung verwendet derzeit wiederaufgenommene Sitzungen und muss auf atomare Aufträge umgestellt werden.
- Die aktuelle Builder-Implementierung committen und pusht Änderungen teilweise außerhalb der Codex-Sandbox; dieser Ablauf muss vom neuen lokalen Worktree-/Prüf-Commit-Vertrag abgegrenzt werden.
- Die Codex-JSON-Ereignisse müssen zuverlässig gezählt werden, damit ein Iterationslimit auch bei langen Tool-Aufrufen greift.
- Ein abgebrochener Worktree braucht Aufräum-, Wiederaufnahme- und Verwerfungsregeln.
- Automatische lokale Git-Commits des Boards benötigen eine technische Identität, Locking und Konfliktbehandlung.
- Reviewer-Berichte für normale Diff-Reviews sind heute nicht durchgehend als Datei-Artefakte vorgesehen; Rollenvertrag, Katalog, Settings und Tests müssen konsistent erweitert werden.
- Ein fehlerhafter Board-Commit darf keinen falschen Phasenübergang oder doppelten Builder-/Reviewer-Lauf auslösen.
- Ein lokaler Commit ohne Push kann auf anderen Checkouts unsichtbar bleiben; der manuelle Veröffentlichungsweg muss deshalb klar dokumentiert werden.
- Die konkreten Standardwerte für Iterationslimit, Wall-Clock-Timeout und globale Obergrenzen sind noch festzulegen.
## Erfolgskriterien
- Jeder Builder-Auftrag startet nachweislich eine neue Session.
- Ein Builder-Auftrag kann sein Iterationslimit nicht überschreiten.
- Ein Limitabbruch hinterlässt einen nutzbaren Zwischenstand ohne fertigen Prüf-Commit.
- Ein erfolgreicher Lauf erzeugt einen isolierten lokalen Prüf-Commit mit eindeutiger Intent-Referenz.
- Das Board aktualisiert seinen Zustand ausschließlich über versionierte Metadateien und lokale Git-Commits.
- Kein Board-Übergang pusht oder deployed automatisch.
- Jeder erfolgreiche Builder-Commit startet automatisch genau einen Reviewer-Lauf.
- Jeder Reviewer-Lauf erzeugt einen Bericht unter `docs/review/`, der Intent und Commit eindeutig referenziert.
- Ein positiver Review führt zu `bereit für Deployment`.
- Ein negativer Review führt zu `zurück zur Planung` und macht den Bericht im Planner-Kontext verfügbar.
- Eine neue Planner-Session wird nur durch deinen bewussten Start ausgelöst.
- Ein manueller Deployment-Schritt kann anschließend auf `Deployed` setzen.
- Der Ablauf funktioniert ohne Vikunja, ohne neue externe Datenbank und ohne Änderungen an `tnix` oder `pinix`.
- Rollenverträge, Katalog, Settings und Regressionstests beschreiben denselben Ablauf konsistent.