Lernziele
Nach diesem Kapitel kannst du:
- Den ganzen Weg gehen: ein Feature von der Idee über Spec, Freigabe, Plan, Build, Quality Gate und Abnahme bis zum Release mit der Fabrik umsetzen.
- Verantwortung zuordnen: für jeden Schritt sagen, was du entscheidest, was die Fabrik automatisch tut und wo ein Mensch bewusst anhält.
- Anti-Patterns erkennen: typische Fehler im Umgang mit Agenten benennen und vermeiden.
- Mit Checklisten arbeiten: vor dem ersten Run, vor der Spec-Freigabe, vor der Merge-Freigabe und nach dem Release.
- Rollen im Team besetzen: wer schreibt Specs, wer gibt frei, wer betreibt die Instanz.
- Deinen Lernweg fortsetzen: wissen, wo du nachschlägst und was du als Nächstes übst.
11.1 Der Loop im Überblick
Die vorherigen Kapitel haben jeden Baustein einzeln erklärt. Im Alltag greifen sie ineinander. Das Leitbild der Fabrik fasst es in drei Sätzen: Du beschreibst. Die Fabrik baut. Du genehmigst. Dazwischen liegt ein Kreislauf, den du für jedes Feature wieder durchläufst:
Idee
→ Spec (Ziel, Nicht-Ziele, Akzeptanzkriterien mit IDs)
→ Spec-Freigabe (Mensch, ab MAINTAINER)
→ Plan-Run (plans/*.md mit Spec:/AC:-Bezug)
→ Backlog-Item aktivieren
→ Build-Run auf eigenem Branch
→ Validierung (Build) → ggf. Korrekturschleife
→ Quality Gate (Reviewer, inkl. Akzeptanzkriterien)
→ Freigabe vor Merge / Pull Request
→ Warum-Trace prüfen, Memory pflegen
→ Meilenstein-Release
→ nächste Idee
Zwei Dinge sind an diesem Kreislauf wichtig. Erstens: Es gibt bewusste Haltestellen, an denen ein Mensch entscheidet — die Spec-Freigabe, die Freigabe vor der Ausführung (ohne Approval-Policy der Default) und die Freigabe vor dem Merge (per Approval-Policy oder Compliance-Profil einzurichten). Zweitens: Zwischen den Haltestellen arbeitet die Fabrik selbstständig, einschließlich Korrekturen. Du musst einem Agenten nicht beim Tippen zusehen; du musst die Haltestellen ernst nehmen.
softwarefabrik.spec.enabled und bei aktivem Lizenzsystem Tier Professional oder Enterprise), das Projekt steht im Spec-Modus STRENG, am Projekt ist eine Git-Remote-URL gesetzt und unter /integrations ein GitHub-Token hinterlegt. Ohne Remote funktioniert alles genauso, nur dass statt eines Pull Requests lokal gemerged wird. Zum Üben ohne Kosten nimmst du den mock-Adapter.
11.2 Schritt 1: Die Idee schärfen
Unser Beispielprojekt ist MaintHub, das Wartungsauftrags-Portal aus dem Benutzerhandbuch: Spring-Boot-Backend mit REST-API unter /api/v1, React-Frontend, Rollen ADMIN und DISPONENT, hexagonale Architektur. Das Projekt existiert bereits, ein paar Build-Runs haben Auftrags-CRUD und Auftragsliste erzeugt.
Die Fachabteilung meldet sich: „Disponenten sollen Aufträge stornieren können.“ Das ist eine typische Idee — kurz, plausibel und voller ungeklärter Fragen:
- Darf jeder Auftrag storniert werden, auch ein bereits abgeschlossener?
- Wird ein stornierter Auftrag gelöscht oder bleibt er mit Status sichtbar?
- Braucht es einen Grund? Wer sieht ihn?
- Was passiert, wenn zwei Disponenten gleichzeitig stornieren?
- Darf ein Techniker stornieren?
Gibst du diese Idee unverändert als Run-Ziel an einen Agenten, beantwortet er jede dieser Fragen — still, nach eigenem Ermessen, an irgendeiner Stelle im Code. Die Engineering-Guardrails der Fabrik verlangen zwar, dass der Agent seine Annahmen offenlegt und die konservativste Interpretation wählt, aber das ersetzt keine fachliche Entscheidung. Deshalb ist der erste Schritt nicht der Run, sondern das Gespräch: Du klärst die Fragen mit der Fachabteilung oder notierst sie als offene Fragen.
Was du tust
- Fachliche Fragen sammeln und beantworten lassen.
- Festhalten, was ausdrücklich nicht dazugehört (z. B. „kein Wiederherstellen stornierter Aufträge in diesem Schritt“).
- Prüfen, ob die Idee in einen Lauf passt oder in mehrere Backlog-Items zerfällt.
11.3 Schritt 2: Die Spec schreiben
Aus den Antworten entsteht die Spec. Kapitel 4 hat Aufbau, EARS-Schablonen und typische Fehler ausführlich behandelt; hier nur das Ergebnis, kompakt:
---
id: SPEC-007
titel: Auftrag stornieren
version: 1
status: DRAFT
owner: Fachbereich Disposition
contracts: []
ersetzt: null
---
# SPEC-007 — Auftrag stornieren
## Ziel
Disponenten können offene Wartungsaufträge mit Begründung stornieren,
damit Fehlerfassungen und abgesagte Termine sauber aus der Planung
verschwinden, ohne die Historie zu verlieren.
## Nicht-Ziele
- Kein Wiederherstellen stornierter Aufträge.
- Keine Benachrichtigung von Technikern (eigene Spec).
## Akzeptanzkriterien
- **AC-007-01** — Wenn ein Nutzer mit Rolle DISPONENT einen Auftrag im
Status OFFEN mit einem Grund von 10 bis 500 Zeichen storniert, dann soll
das System den Status auf STORNIERT setzen und Grund, Nutzer und
Zeitpunkt speichern.
- **AC-007-02** — Falls der Auftrag nicht im Status OFFEN ist, dann soll das
System die Stornierung mit HTTP 409 ablehnen und den Status unverändert
lassen.
- **AC-007-03** — Falls der Grund fehlt, kürzer als 10 oder länger als 500
Zeichen ist, dann soll das System die Stornierung mit HTTP 400 und einer
verständlichen Meldung ablehnen.
- **AC-007-04** — Falls ein Nutzer ohne Rolle DISPONENT oder ADMIN
storniert, dann soll das System mit HTTP 403 ablehnen.
- **AC-007-05** — Das System soll stornierte Aufträge in der Auftragsliste
standardmäßig ausblenden und über einen Filter anzeigen.
## Randfälle
- Zwei gleichzeitige Stornierungen desselben Auftrags: genau eine gewinnt,
die zweite erhält 409.
## Offene Fragen
- (keine)
Beachte, was diese Spec leistet: Jedes Kriterium beschreibt Verhalten, nicht Implementierung. Grenzen sind konkret (10 bis 500 Zeichen, HTTP-Codes). Die Nicht-Ziele verhindern, dass der Agent „hilfsweise“ eine Wiederherstellung oder E-Mail-Benachrichtigung baut. Der Randfall mit der Gleichzeitigkeit ist notiert; du könntest ihn auch zu einem eigenen AC machen, wenn er abgenommen werden soll.
In der Fabrik
Spec anlegen und freigeben
- Auf der Projektseite die Schaltfläche Specs öffnen (
/projects/{id}/specs). Dort steht auch der Spec-Modus des Projekts (AUS/LEICHT/STRENG); jede Änderung des Modus wird alsPROJECT_SPEC_MODUS_SETauditiert. - Neue Spec aus der Vorlage anlegen (ab Rolle
DEVELOPER). Die Fabrik vergibt die nächste Nummer und speichert die Fassung als Version 1 im StatusDRAFT. Jede Bearbeitung erzeugt eine neue Entwurfsfassung; nichts wird überschrieben. - Optional statt Handarbeit (seit v0.38.0): einen Spec-Run starten, der die Idee zu einer Spec schärft, Lücken und Randfälle aufdeckt und offene Fragen stellt. Der Run endet dann im Status
WAITING_FOR_INPUT, du beantwortest die Fragen auf der Spec-Detailseite, und mit „Fortsetzen (Folge-Durchlauf)“ startet ein neuer, verknüpfter Spec-Run, der eine neueDRAFT-Fassung erzeugt. Ein Spec-Run gibt nie selbst frei. - Eine zweite Person ab Rolle
MAINTAINERliest die Spec und gibt sie frei. Die Fabrik prüft Pflichtabschnitte (Ziel, Nicht-Ziele, Akzeptanzkriterien), ID-SchemaAC-<nnn>-<nn>und Eindeutigkeit; Fehler erscheinen als verständliche Validierungsmeldung. - Mit der Freigabe wird die Fassung
APPROVEDund unveränderlich, eine ältere freigegebene Fassung derselben Spec wirdSUPERSEDED. In der Audit-Kette stehtSPEC_APPROVEDmit Spec-ID, Version und Inhalts-Hash, und der Akzeptanzkriterien-Block wird als VertragSPEC-007-acunter Verträge abgelegt.
Die Detailseite einer Spec zeigt alle Fassungen, die Freigabe-Historie und einen Vergleich zweier Fassungen auf Ebene der Akzeptanzkriterien (neu, entfernt, geändert).
11.4 Schritt 3: Planen und das Backlog füllen
Fünf Akzeptanzkriterien klingen überschaubar, betreffen aber Domäne, Persistenz (neue Spalten oder eine Migration), REST-Schnittstelle, Berechtigungen und Frontend. Statt alles in einen Lauf zu packen, lässt du die Fabrik planen. Ein Plan-Run ändert keinen Produktivcode; er schreibt Vorschläge als Markdown unter plans/.
Ein guter Plan für dieses Feature könnte so aussehen:
| Plan | Inhalt | AC | Hängt ab von |
|---|---|---|---|
plans/0012-storno-backend.md | Domänenmodell, Statusübergang, Migration, REST-Endpunkt mit Validierung und Berechtigung, Tests | AC-007-01 bis AC-007-04 | — |
plans/0013-storno-frontend.md | Storno-Dialog mit Grundfeld, Filter „stornierte anzeigen“ in der Auftragsliste | AC-007-05 (und Fehlermeldungen aus AC-007-02/03) | 0012 |
Jede Plan-Datei nennt ihren Spec-Bezug in zwei Zeilen — genau so, wie Kapitel 5 es beschrieben hat:
Spec: SPEC-007
AC: AC-007-01, AC-007-02, AC-007-03, AC-007-04
In der Fabrik
Plan-Run, Backlog und Aktivierung
- Unter Backlog / Pläne (
/projects/{id}/backlog) einen Plan-Run starten. Im Spec-ModusLEICHToderSTRENGverlangt die Plan-Direktive je Plan die ZeilenSpec:undAC:und zählt dem Agenten die verfügbaren Specs mit Freigabestand auf. - Nach dem Plan-Run indexiert die Fabrik die Dateien als Backlog-Items. Inhalt lebt im Repo (
plans/), Status und Reihenfolge in der Datenbank. - Im Backlog prüfst du den Spec-Bezug je Item. Die Fabrik warnt, wenn die Spec fehlt, nicht freigegeben ist oder AC-IDs unbekannt sind. Im Modus
STRENGlässt sich ein solches Item nicht aktivieren. - Abhängigkeiten setzen: Item 0013 bekommt 0012 als Blocker. Ein Item ist erst aktivierbar, wenn alle seine Blocker
DONEsind; blockierte Items erscheinen ausgegraut. - Unpassende Pläne lehnst du ab, statt sie liegen zu lassen — ein sauberes Backlog ist Kontext für den nächsten Plan-Run.
- Item 0012 aktivieren: Die Fabrik startet einen Build-Run, dessen Ziel der Plan ist, auf dem bestehenden Code.
DONE, wenn sein Build-Run gemerged ist — nicht schon, wenn Code geschrieben wurde. Im PR-Modus gilt das nur mit aktivierter PR-Rückkopplung (git.pr-feedback.enabled); sonst zählt schon das Eröffnen des PR. Das verhindert, dass ein Nachfolger auf einem Stand aufbaut, der nie im Base-Branch ankam.
11.5 Schritt 4: Bauen
Jetzt arbeitet der Agent. Für dich ist das die Phase, in der du am wenigsten tun musst — und in der es am meisten Versuchung gibt, einzugreifen. Widerstehe ihr. Was du stattdessen tust:
- Live-Logs überfliegen, nicht jede Zeile lesen. Auffällig sind Schleifen (der Agent liest immer wieder dieselbe Datei), Werkzeugfehler und Hinweise auf fehlenden Kontext.
- Nicht parallel im selben Workspace arbeiten. Pro Workspace schreibt immer nur ein Agent; deine eigenen Änderungen gehören in einen eigenen Branch oder warten.
- Bei echten Fehlentwicklungen abbrechen statt zuzusehen — und dann den Auftrag verbessern, nicht denselben Lauf neu starten.
Wenn der Build rot wird, ist das kein Grund zur Sorge. Genau dafür gibt es die Korrekturschleife: Die Fabrik gibt dem Agenten die Build-Ausgabe als neue Information und lässt ihn nachbessern. Erst wenn das wiederholt nicht gelingt, bist du gefragt.
In der Fabrik
Was während des Build-Runs passiert
| Phase | Was die Fabrik tut |
|---|---|
| Vorbereitung | Base-Branch auf den Remote-Stand vorspulen, eigenen Branch sdlc/run-<id8> anlegen, Artefakte (PROJECT.md, INSTRUCTIONS.md, AGENTS.md mit Guardrails und Spec-Index, MEMORY.md, specs/SPEC-007-…/spec.md) schreiben und committen |
| Bindung | Die zum Start freigegebene Fassung von SPEC-007 binden und als RUN_SPEC_GEBUNDEN mit spec=…;version=…;hash=…;ac=… attestieren; Modellauflösung als RUN_MODELL_AUFGELOEST, Guardrails als RUN_GUARDRAILS_ANGEWENDET |
| Freigabe vor Ausführung | Ohne aktive Approval-Policy der Default (run.approval-vor-merge, an), sonst je nach Policy: Run wartet in WAITING_FOR_APPROVAL |
| Ausführung | Agent arbeitet; sein Auftrag enthält hinter den Guardrails die gebundenen Akzeptanzkriterien (ID und Text) — für jeden Adapter gleich. Live-Logs per Server-Sent-Events |
| Validierung | Build-Gate (für Java-Stacks mvn verify); bei Rot automatische Korrektur mit dem Build-Feedback auf demselben Branch, insgesamt höchstens zwei Korrekturläufe je Run, danach NEEDS_CORRECTION |
| Quality Gate | Reviewer prüfen den Diff (siehe 11.6) |
| Freigabe vor Merge | Wenn eine Approval-Policy oder pflichtFreigabePhasen die Phase VALIDATION verlangt, wartet der validierte Stand auf eine Freigabe, bevor gemerged oder ein PR eröffnet wird |
| Abschluss | Fabrik-Commit mit Trailern Spec: SPEC-007 und Implements: AC-007-01 … ; mit Remote und Token Push und Pull Request (PR-Body nennt Spec und AC-IDs), sonst lokaler Merge |
Ändert der Agent während des Laufs die Datei unter specs/ — etwa weil er einen Widerspruch bemerkt —, übernimmt die Fabrik das nach dem Build als neue DRAFT-Fassung. Freigegeben wird dadurch nichts; ein Mensch muss den Entwurf ansehen. Ein Merge-Konflikt bricht den Run nicht ab, sondern geht mit den Konfliktdateien als Arbeitsanweisung in die Korrekturschleife.
11.6 Schritt 5: Das Quality Gate lesen
Ein grüner Build sagt: Der Code kompiliert, die vorhandenen Tests laufen. Er sagt nicht, ob der Code sicher ist, die Architektur einhält oder das Richtige tut. Dafür gibt es das Quality Gate. Im Alltag liest du sein Ergebnis wie einen Review-Kommentar einer erfahrenen Kollegin — mit derselben Mischung aus Vertrauen und Prüfung.
Was du prüfst
- Das Verdict:
PASSED,WARNING,FAILED,SKIPPEDoderERROR.ERRORheißt: Ein Reviewer ist abgestürzt. Das ist nie ein stiller Pass, sondern ein Grund nachzusehen. - Die Befunde nach Kategorie: Sicherheitsbefunde (z. B. SQL-Konkatenation, hartcodierte Schlüssel) und Architekturbefunde (z. B. eine geänderte bestehende Flyway-Migration) wiegen schwer.
- Die AC-Abdeckung (seit v0.38.0 automatisch geprüft vom Reviewer
spec-conformance): Für jedes gebundene Kriterium muss mindestens ein Test existieren, der die AC-ID referenziert (Testname, Annotation wie@Spec("AC-007-02")oder Kommentar). Fehlt einer, ist das Kriterium nicht belegt. - Ungedecktes Verhalten: Geänderte Produktivdateien, die keinem Kriterium zugeordnet sind, verdienen einen Blick — vielleicht hat der Agent „hilfsweise“ etwas mitgebaut, das in den Nicht-Zielen steht.
In der Fabrik
Gate-Modi und Reviewer im Beispiel
Das Gate-Ergebnis findest du auf der Run-Detailseite bzw. unter /runs/{id}/quality-gate. Im Modus advisory (Default) werden Befunde angezeigt, blockieren aber nicht; im Modus blocking löst ein FAILED oder ERROR die Korrekturschleife aus. Für ein Feature mit Berechtigungsprüfung wie die Stornierung ist blocking die richtige Wahl.
Neben den sechs bekannten Reviewern (claude-review, aider-review, security-reviewer, architecture-reviewer, hallucination-reviewer, dependency-scan) prüft bei Runs mit Spec-Bezug der regelbasierte Reviewer spec-conformance (Kategorie REQUIREMENTS, ohne Agent-CLI): ob jedes gebundene AC durch mindestens einen Test referenziert wird, ob Tests auf AC-IDs verweisen, die es in der gebundenen Fassung nicht gibt, und ob Produktivdateien ohne AC-Zuordnung geändert wurden. Im Spec-Modus STRENG ist er Pflicht-Reviewer, fehlende AC-Abdeckung ist CRITICAL, und das Gate läuft blockierend, auch wenn der globale Gate-Modus advisory ist; im Modus LEICHT sind seine Befunde beratend.
Typischer Fall im Beispiel: Der Agent hat AC-007-01 bis 03 sauber getestet, aber für AC-007-04 (403 ohne Rolle) keinen Test geschrieben, weil die Berechtigung „über die Security-Konfiguration ohnehin greift“. Das Gate meldet AC-007-04 als nicht belegt, die Korrekturschleife bekommt diesen Befund als neue Information, und der zweite Versuch liefert den fehlenden Negativtest.
@Test
@Spec("AC-007-04")
void stornierung_ohne_disponentenrolle_wird_mit_403_abgelehnt() {
// Given: Auftrag OFFEN, Nutzer ohne Rolle DISPONENT oder ADMIN
// When: POST /api/v1/auftraege/{id}/stornierung mit gültigem Grund
// Then: HTTP 403, Status bleibt OFFEN
}
11.7 Schritt 6: Abnahme und Freigabe vor dem Merge
Das Gate ist grün. Jetzt kommt die Haltestelle, die am häufigsten unterschätzt wird: die menschliche Freigabe vor dem Merge. Sie entsteht nicht von selbst: Richte sie über eine Approval-Policy (/policies) oder ein Compliance-Profil mit Pflichtfreigabe VALIDATION ein; ohne sie wird nach grünem Gate direkt gemerged bzw. der PR eröffnet, und dein Review findet im PR statt. Sie ist kein Formalakt. Mit deiner Freigabe übernimmst du die Verantwortung für den Code — so, wie du sie bei einem Pull Request einer Kollegin übernehmen würdest.
Wie du einen Agenten-Diff liest
- Erst die Spec, dann den Diff. Lies die Akzeptanzkriterien noch einmal, bevor du Code ansiehst. So prüfst du gegen den Auftrag, nicht gegen dein Gefühl.
- Tests zuerst. Prüfe, ob die Tests das Verhalten der Kriterien wirklich festhalten. Ein Test, der nur „kein Fehler“ prüft, belegt nichts. Achte auf Negativ- und Grenzfälle (9 und 501 Zeichen beim Grund).
- Dann die Produktivänderungen. Jede geänderte Zeile sollte sich auf ein Kriterium zurückführen lassen. Großflächige Umformatierungen, „Aufräumarbeiten“ in fremden Klassen oder neue Abhängigkeiten sind Warnzeichen.
- Die Entscheidungsnotizen des Agenten lesen. Die Guardrails verlangen, dass er Annahmen und Abweichungen offenlegt. Steht dort etwas, das die Fachlichkeit berührt, gehört es zurück in die Spec.
- Migrationen und Sicherheit besonders genau. Datenbankänderungen sind schwer rückgängig zu machen; Berechtigungsfehler sind die teuersten Fehler.
In der Fabrik
Freigabe, Pull Request und Warum-Trace
- Freigabe: Auf der Run-Detailseite siehst du im Status
WAITING_FOR_APPROVALeinen Inline-Diff der Workspace-Änderungen (bis 256 KB) und gibst per Freigeben und fortsetzen frei. Freigeben darf ab RolleMAINTAINER; mitrun.approval-segregationdarf der Auslöser des Runs nicht selbst freigeben. Jede Entscheidung wird alsapproval_decisionund attestiertes Audit-Ereignis festgehalten. Optional trägst du den eigenen Prüfaufwand in Minuten ein — er fließt als Selbstauskunft in die Kennzahlen. - Pull Request: Mit Remote und Token pusht die Fabrik den Branch und öffnet einen PR, dessen Body Spec und AC-IDs nennt. Ist die PR-Rückkopplung aktiv (
git.pr-feedback.enabled, Default aus), wartet der Run inWAITING_FOR_PRauf grüne CI und Merge; rote CI startet ebenfalls eine Korrektur. - Warum-Trace: Unter
/runs/{id}/traceprüfst du nach dem Abschluss, ob alles so lief wie gedacht: gebundene Spec-Fassung (Version, Hash, AC-IDs), Modell und Quelle der Modellwahl, Policy-Version, Freigaben mit Namen, Gate-Ergebnis, Plan-Herkunft und Kosten. - Memory: Unter Memory am Projekt hältst du fest, was du gelernt hast — etwa „Statusübergänge immer mit optimistischem Locking absichern“. Der Eintrag landet vor jedem Folge-Run als
MEMORY.mdim Workspace.
Danach aktivierst du Item 0013 (Frontend). Es baut jetzt auf dem gemergten Backend auf, weil der Workspace dem Projekt gehört, nicht dem Run.
11.8 Schritt 7: Release und der nächste Durchlauf
Beide Items sind DONE. Für die Fachabteilung zählt erst die ausgelieferte Version. Ein Release bündelt abgeschlossene Arbeit, dokumentiert sie und markiert den Stand im Repository. Danach beginnt der Kreislauf von vorn — entweder mit der nächsten Idee oder mit einer Änderung an der Spec, weil die Fachabteilung nach den ersten Wochen doch einen Grundkatalog statt Freitext möchte.
Gerade dieser zweite Fall zeigt den Wert der Spec: Du änderst SPEC-007, eine neue Fassung entsteht, und der Vergleich auf der Spec-Detailseite zeigt schon heute, welche Kriterien neu, entfernt oder geändert sind. Seit v0.38.0 markiert die Fabrik nach der Freigabe zusätzlich offene Backlog-Items, die an ein geändertes oder entferntes Kriterium gebunden sind, als veraltet, setzt daran gebundene Workflow-Tasks auf WAITING_FOR_REPLAN und schreibt den Vergleich als SPEC_DRIFT in die Audit-Kette. Statt „irgendwas hat sich geändert“ hast du eine präzise Liste.
In der Fabrik
Meilenstein-Release, Routinen und Auto-Folgevorschläge
- Meilenstein: Unter
/projects/{id}/milestonesgruppierst du Backlog-Items zu einem Meilenstein mit Name und Zielversion. Der Release erzeugt einenCHANGELOG.md-Abschnitt im Projekt aus denDONE-Items, setzt einen Git-Tagv<version>und — mit gesetzter GitHub-Remote und Token — ein GitHub-Release. - Auto-Folgevorschläge: Mit
run.auto-followup-planstößt ein erfolgreicher Build-Run automatisch einen Plan-Run an; der Loop Plan → Build → Plan schließt sich selbst. - Routinen: Unter
/projects/{id}/routineslegst du zeitgesteuerte Plan- oder Build-Runs an. Zusammen mit den Folgevorschlägen läuft der Loop ohne manuellen Anstoß weiter — die Freigabepunkte bleiben die bewussten Haltestellen.
blocking steht.
11.9 Anti-Patterns: so bitte nicht
Die folgenden Muster begegnen einem in fast jedem Team, das mit Agenten anfängt. Jedes hat eine einfache Gegenmaßnahme.
| Anti-Pattern | Warum es schadet | Stattdessen |
|---|---|---|
| Das Mega-Ziel — „Baue die komplette Auftragsverwaltung inklusive Statistik“ | Lange Läufe, riesige Diffs, die niemand prüft; ein Fehler am Ende kostet den ganzen Lauf | Spec, Plan-Run, kleine Backlog-Items mit Abhängigkeiten |
| Freitext statt Spec | Der Agent entscheidet Fachfragen still; das Gate kann nicht prüfen, ob das Richtige gebaut wurde | Spec mit EARS-Kriterien und IDs, Spec-Modus LEICHT oder STRENG |
Gate auf off, „weil es nervt“ | Sicherheits- und Architekturbefunde verschwinden; Fehler landen im Base-Branch | Mindestens advisory, für Produktivcode blocking; störende Befunde verstehen statt abschalten |
| Blinder Retry — denselben gescheiterten Lauf unverändert neu starten | Gleiche Kosten, ähnliches Ergebnis | Nur mit neuer Information wiederholen: Ziel präzisieren, Spec ergänzen, Memory-Eintrag |
| Freigabe ohne Diff-Lektüre | Die Haltestelle wird zur Fassade; Verantwortung ohne Kontrolle | Spec lesen, Tests prüfen, Produktivänderungen prüfen (11.7) |
| Agent schreibt und gibt seine eigene Spec frei | Die Anforderung bestätigt sich selbst; plausible, aber falsche Kriterien gehen durch | Agenten erzeugen nur Entwürfe; freigeben darf ein Mensch ab MAINTAINER, idealerweise nicht der Auslöser |
| Daneben im selben Workspace arbeiten | Zwei Schreiber, ein Verzeichnis: Konflikte, verlorene Änderungen | Eigener Branch oder warten; für Parallelität die Workflow-Ebene mit Worktrees |
| Kontext-Müllhalde — alles in Memory und Projektbeschreibung kippen | Teure, widersprüchliche Kontexte; der Agent folgt der falschen Notiz | Memory kuratieren, veraltete Einträge löschen, Entscheidungen statt Gesprächsprotokolle |
| Fremdkonfiguration vertrauen — ein importiertes Repo bringt Hooks und MCP-Server mit | Fremder Code läuft mit den Rechten des Agenten | Nullzustand beibehalten, Funde in der Audit-Kette prüfen (Kapitel 8) |
| Kosten erst am Monatsende ansehen | Automatik und lange Läufe summieren sich unbemerkt | Budgets und Token-Limits vorab, regelmäßiger Blick in /analytics |
11.10 Checklisten für den Alltag
Vor dem ersten Run in einem Projekt
- Projektdefinition vollständig: Vision, Zielgruppe, Stack, Architektur, Sicherheit, NFRs, Git-Konventionen gefüllt; keine leeren Platzhalter in den generierten Artefakten.
- Artefakte gelesen:
PROJECT.md,INSTRUCTIONS.md,AGENTS.mdeinmal durchgesehen. - Team gewählt: passende Agentenrollen, bevorzugte Modelle bewusst gesetzt.
- Adapter und Auth-Modus geklärt: Abo nur für persönliche Nutzung, im Team API-Key oder Gateway.
- Sandbox entschieden: Container-Modus für Build-Runs, wenn Docker vorhanden.
- Gate-Modus gesetzt: mindestens
advisory. - Budget gesetzt (mindestens beobachtend) und Spec-Modus gewählt.
- Erst mit
mocküben, wenn du den Ablauf noch nicht kennst.
Vor der Spec-Freigabe
- Ziel aus Nutzersicht formuliert, nicht als technische Aufgabe.
- Nicht-Ziele benannt.
- Jedes Kriterium hat eine ID, beschreibt ein Verhalten und ist prüfbar (keine vagen Wörter wie „schnell“, „benutzerfreundlich“).
- Negativ- und Grenzfälle abgedeckt.
- Keine offenen Fragen mehr im Abschnitt „Offene Fragen“.
- Fachlich bestätigt von jemandem, der nicht umsetzt.
Vor der Merge-Freigabe
- Gate-Verdict verstanden, kein
ERRORignoriert. - Jedes gebundene AC durch einen Test belegt, Negativfälle inklusive.
- Keine Änderungen außerhalb des Auftrags (ungedecktes Verhalten geprüft, Nicht-Ziele respektiert).
- Migrationen und Berechtigungen gesondert geprüft.
- Entscheidungsnotizen des Agenten gelesen; fachliche Annahmen in die Spec zurückgespielt.
- Nicht der eigene Run, wenn Segregation of Duties gilt.
Nach dem Release
- Warum-Trace stichprobenartig geprüft: gebundene Spec-Fassung, Modell, Freigaben.
- Memory um Learnings ergänzt, veraltete Einträge entfernt.
- Backlog aufgeräumt: abgelehnte Pläne entfernt, veraltete Items neu bewertet.
- Kosten des Meilensteins in
/analyticsangesehen. - Spec-Änderungen für die nächste Version als neue Entwurfsfassung begonnen.
11.11 Rollen im Teamalltag
Agenten verändern, wer was tut, nicht dass Verantwortung getragen werden muss. In der Praxis haben sich folgende Zuständigkeiten bewährt; sie lassen sich auf das Rollenmodell der Fabrik abbilden.
| Mensch-Rolle | Aufgaben | Typische Fabrik-Rolle |
|---|---|---|
| Fachverantwortliche:r (Spec-Owner) | Ziele und Nicht-Ziele festlegen, offene Fragen beantworten, Kriterien fachlich bestätigen | DEVELOPER (Entwürfe) oder VIEWER mit Mitwirkung über das Team |
| Entwickler:in | Specs ausformulieren, Plan- und Build-Runs starten, Backlog pflegen, Memory kuratieren | DEVELOPER |
| Reviewer:in / technische Leitung | Specs und Runs freigeben, Gate-Befunde bewerten, Workflow-Pläne freigeben | MAINTAINER |
| Produkt- bzw. Teamverantwortung | Mandant, Projektzuordnung, Budgets | ADMIN (Plattformbetrieb; die Stufe OWNER trägt derzeit keine eigenen Rechte) |
| Betrieb / Plattform | Konten, Policy-as-Code, Compliance-Profile, Isolationsnachweise, Backup, Attestierung, Export | ADMIN |
Daneben stehen die Agentenrollen in den Teams der Fabrik (Architect, Developer, Reviewer, QA, Security Reviewer, Documentation, Merge/Release). Sie beschreiben, mit welcher Mission und welchen Regeln ein Agent arbeitet — sie ersetzen keine der menschlichen Rollen oben, insbesondere nicht die Freigabe.
run.approval-segregation erzwingt das technisch.
11.12 Wie es weitergeht
Du hast jetzt das theoretische und praktische Rüstzeug, um sinnvoll mit der Fabrik zu arbeiten. Wissen wird zu Können durch Wiederholung. Ein bewährter Weg:
- Erster Durchlauf mit
mock: Projekt per Assistent anlegen, Spec schreiben und freigeben, Plan-Run, Aktivierung, Build — ohne Kosten, um die Oberfläche kennenzulernen. Anleitung: Schnellstart und Tutorial. - Echter Adapter, kleines Feature: eine Spec mit drei bis fünf Kriterien, Spec-Modus
LEICHT, Gateadvisory. Ziel: Gate-Befunde lesen lernen. - Strenger werden: Spec-Modus
STRENG, Gateblocking, Freigabe vor Merge mit Segregation of Duties. - Bestehendes Repo: ein eigenes Repository importieren und mit einer Spec für ein vorhandenes Verhalten beginnen.
- Team und Betrieb: Rollen, Mandanten, Budgets und Policies einrichten (Administrationshandbuch).
- Parallel und reguliert: die Workflow-Ebene (Kapitel 7) und Compliance-Profile mit Audit-Export und Offline-Verifier (Kapitel 9) ausprobieren.
Zum Nachschlagen: Benutzerhandbuch, Administrationshandbuch, FAQ und die bekannten Grenzen. Und wenn du ein Konzept auffrischen willst: Die Übersicht führt zu allen Kapiteln; besonders oft lohnt sich der Blick zurück in Kapitel 4 (Specs und EARS).
Übung
Übung: Dein eigener Durchlauf
Wähle ein kleines Feature aus deinem Arbeitsumfeld (oder nimm „Auftrag einem Techniker zuweisen“ für MaintHub) und spiele den Loop schriftlich, idealerweise auch praktisch mit dem mock-Adapter, durch:
- Schreibe fünf offene Fragen zur Idee auf und beantworte sie.
- Formuliere eine Spec mit Ziel, zwei Nicht-Zielen und drei bis fünf EARS-Kriterien mit IDs, davon mindestens ein „Falls …“-Kriterium.
- Schneide die Umsetzung in zwei bis drei Pläne mit
Spec:/AC:-Zeilen und Abhängigkeiten. - Lege für jedes Kriterium fest, welcher Test es belegt (Testname mit AC-ID).
- Notiere, welche Haltestellen in deinem Ablauf ein Mensch entscheidet, wer das ist und welche Fabrik-Rolle er braucht.
- Benenne das Anti-Pattern, in das du in deinem Team am ehesten tappen würdest, und deine Gegenmaßnahme.
Hinweise zur Selbstkontrolle
Prüfe deine Kriterien gegen die Checkliste „Vor der Spec-Freigabe“: Hat jedes eine ID, beschreibt es Verhalten statt Implementierung, ist es ohne Interpretation prüfbar? Hat jedes Kriterium mindestens einen positiven und, wo sinnvoll, einen Negativ- oder Grenzfalltest? Sind die Pläne so klein, dass ihr Diff in einer Sitzung lesbar ist? Haben Spec-Freigabe und Merge-Freigabe je eine Person ab MAINTAINER, die nicht selbst ausgelöst hat?
Kapitelfragen
Diese Fragen greifen auf den gesamten Kurs zurück. Wenn du sie sicher beantworten kannst, hast du das Wesentliche verstanden.
-
Nenne die Haltestellen im Loop, an denen ein Mensch entscheidet, und erkläre für jede, was ohne sie schiefgehen könnte.
Musterantwort
Spec-Freigabe: Ohne sie baut der Agent gegen nicht bestätigte Anforderungen, das Gate prüft gegen falsche Kriterien. Freigabe vor der Ausführung (Default ohne Approval-Policy): Ohne sie startet ein Agent ohne Zustimmung, z. B. mit falschem Ziel oder Adapter. Freigabe vor dem Merge: Ohne sie wäre Code im Base-Branch, bevor jemand zugestimmt hat — eine signierte Zusage wäre Fassade. In Workflows kommt die Planfreigabe hinzu.
-
Warum wird ein Backlog-Item erst
DONE, wenn sein Build-Run gemerged ist, und nicht schon, wenn der Code geschrieben ist?Musterantwort
Weil Nachfolger auf dem Base-Branch aufbauen. Ein Item, dessen Arbeit noch auf dem Run-Branch liegt (z. B. bei
NEEDS_CORRECTIONoder offenem PR), ist für abhängige Items nicht verfügbar. Ein vorzeitigesDONEwürde Abhängigkeiten freigeben, die in Wahrheit noch nicht erfüllt sind. -
Im Beispiel fehlte ein Test für AC-007-04. Beschreibe den Weg vom Befund bis zum korrigierten Stand und erkläre, warum das kein blinder Retry ist.
Musterantwort
spec-conformancemeldet AC-007-04 als nicht durch einen Test referenziert. Im Spec-ModusSTRENGist das einCRITICAL-Befund im blockierenden Gate und löst die Korrekturschleife aus; der erneute Lauf auf demselben Branch erhält den Befund als Feedback und liefert den Negativtest nach. Es ist kein blinder Retry, weil eine neue Information (der konkrete Befund) eingeht, die den zweiten Versuch gezielt anders macht. -
Ein Agent ändert während eines Build-Runs
specs/SPEC-007-…/spec.mdund ergänzt ein Kriterium. Was passiert damit, und was ist deine Aufgabe?Musterantwort
Die Fabrik übernimmt die Änderung nach dem Build als neue
DRAFT-Fassung; sie wird nie automatisch freigegeben, und der laufende Run bleibt an die beim Start gebundene Fassung gebunden. Deine Aufgabe: den Entwurf prüfen, fachlich klären lassen und ihn — durch eine Person abMAINTAINER— freigeben oder verwerfen. -
Du sollst einen Pull Request eines Agenten freigeben. In welcher Reihenfolge liest du, und warum gerade so?
Musterantwort
Erst die Akzeptanzkriterien der Spec (Maßstab festlegen), dann die Tests (belegen sie das Verhalten inklusive Negativ- und Grenzfällen?), dann die Produktivänderungen (lässt sich jede Zeile auf ein Kriterium zurückführen?), dann die Entscheidungsnotizen des Agenten, mit Sonderblick auf Migrationen und Berechtigungen. So prüfst du gegen den Auftrag statt gegen dein Bauchgefühl und erkennst ungedecktes Verhalten.
-
Ein Kollege schlägt vor, das Quality Gate auf
offzu stellen, weil derhallucination-reviewerzu viele Hinweise liefert. Was antwortest du?Musterantwort
Mit
offverschwinden auch Sicherheits-, Architektur-, Abhängigkeits- und Spec-Befunde. Besser: die Befunde verstehen (oft weisen sie auf echte Lücken wie fehlende Tests hin), den Auftrag oder die Spec präzisieren und notfallsadvisorystattblockingverwenden. Ein Gate abzuschalten, weil es meldet, ist wie einen Rauchmelder abzuhängen, weil er piept. -
Nach drei Wochen ändert die Fachabteilung SPEC-007: AC-007-03 bekommt einen Grundkatalog statt Freitext. Was zeigt dir die Fabrik nach der Freigabe der neuen Fassung, und was tust du?
Musterantwort
Der Vergleich auf AC-Ebene weist AC-007-03 als geändert aus; die Fabrik schreibt
SPEC_DRIFTmit der betroffenen AC-ID in die Audit-Kette, markiert offene Backlog-Items, die an AC-007-03 gebunden sind, als veraltet und setzt daran gebundene Workflow-Tasks aufWAITING_FOR_REPLAN. Du planst daraufhin (Plan-Run oder neues Item) die Anpassung mit Bezug auf die neue Fassung; die Tests zu AC-007-03 werden angepasst. -
Ein Prüfer fragt ein halbes Jahr später, warum die Stornierung ohne Benachrichtigung der Techniker gebaut wurde. Welche Spuren in der Fabrik helfen dir bei der Antwort?
Musterantwort
Die freigegebene Spec-Fassung mit dem Nicht-Ziel „Keine Benachrichtigung von Technikern“, ihre Freigabe (
SPEC_APPROVEDmit Version und Hash, wer und wann), der Warum-Trace der Build-Runs mitRUN_SPEC_GEBUNDEN(welche Fassung), die Commit-TrailerSpec:/Implements:und die Run-Freigaben. Bei Bedarf erzeugt ein Admin unter/exportein prüffähiges Bundle, das der Prüfer mit dem Offline-Verifier selbst prüfen kann. -
Transfer: Dein Team will Routinen nutzen, damit jede Nacht ein Plan-Run und morgens Build-Runs laufen. Welche drei Voraussetzungen schaffst du vorher?
Musterantwort
Beispiel: (1) Budgets und Token-Limits, weil Automatik laufend Kosten erzeugt (Hard-Cap je Mandant). (2) Quality Gate auf
blockingund Freigabe vor dem Merge, damit nichts ungeprüft in den Base-Branch gelangt. (3) Spec-ModusSTRENGmit freigegebenen Specs, damit automatisch geplante Arbeit an bestätigte Anforderungen gebunden ist. Zusätzlich sinnvoll: Segregation of Duties und ein fester Zeitpunkt, an dem jemand die Freigaben abarbeitet. -
Fasse das Leitbild „Du beschreibst. Die Fabrik baut. Du genehmigst.“ in eigenen Worten zusammen und ordne jedem Satz mindestens zwei Fabrik-Funktionen zu.
Musterantwort
Beschreiben: Projektdefinition und Assistent, Specs mit Akzeptanzkriterien, Memory, Guardrails. Bauen: Plan- und Build-Runs mit Adaptern, Branch je Run, Korrekturschleife, Quality Gate, Workflow-Ebene. Genehmigen: Spec-Freigabe ab
MAINTAINER, Freigabe vor Ausführung und vor Merge mit Inline-Diff, Segregation of Duties, Warum-Trace und signierte Audit-Kette als Nachweis. Kern: Der Mensch verantwortet Was und Ob, die Fabrik das Wie — überprüfbar.