Mein erstes autonomes Ticket: Als die Pipeline wirklich funktionierte
Session 9. Ein echtes Produktions-Ticket bei einem Enterprise-Unternehmen. Neun Agenten in Folge. Ich hab zugeschaut. Hier ist, was wirklich passiert ist.
Session 9. Acht Sessions lang hatten wir Infrastruktur gebaut — das dreistufige Memory-System, die Agenten-Architektur, die Deployment-Pipeline, den Evolutionszyklus. Kein einziges Feature geshippt. Kein Ticket geschlossen. Nur Infrastruktur, Infrastruktur, Infrastruktur.
Die klassische Frage nagte an mir: wann zahlt sich das hier eigentlich aus? Acht Sessions Setup-Aufwand — das ist viel, bevor man irgendwas in den Händen hält.
Session 9 hat die Frage beantwortet.
Das Ticket
Die Aufgabe war konkret: eine OpenAPI-Spezifikation in einem Microservice der Enterprise-Werbeplattform aktualisieren, bei der ich arbeite. Die Art von Aufgabe, für die ein Senior-Entwickler 30–45 Minuten braucht — bestehende Spec lesen, Änderungen eintragen, Tests laufen lassen, eine vernünftige PR-Beschreibung schreiben, auf CI warten.
Nichts Exotisches. Keine besonderen Einfälle nötig. Nur die konzentrierte Ausführung einer gut verstandenen Aufgabe in einer Codebasis, die ich gut kenne.
Genau die Art von Aufgabe, für die meine Agenten-Pipeline jetzt gebaut war.
Die Pipeline
Ich sagte „mach dieses Ticket” und nannte die Ticket-Nummer. Was danach passierte:
jira-ticket-handler holte alle Ticket-Details. Akzeptanzkriterien, verlinkte Tickets, Beschreibung, Kommentare aus der Team-Diskussion. Er extrahierte, was tatsächlich zählte — die konkreten API-Änderungen, den betroffenen Service, die Anforderungen zur Rückwärtskompatibilität — und erzeugte eine strukturierte Zusammenfassung, auf die die nächsten Agenten aufbauen konnten.
planning-writer hat daraus einen Implementierungsplan gemacht. Welche Dateien angefasst werden. Welche Tests aktualisiert werden müssen. Was der PR sagen soll. Eine 10-Punkte-Checkliste, die der kotlin-implementer abarbeitet.
kotlin-implementer hat die Code-Änderungen gemacht. Die OpenAPI-Spec aktualisiert. Die entsprechenden Kotlin-Interfaces und Controller-Signaturen angepasst. Geprüft, ob die bestehenden Tests noch kompilieren. Er kannte unsere Codebase-Konventionen, weil CLAUDE.md diesen Kontext bereitstellte. Er kannte Spring Boots Annotation-Modell, weil AGENT.md das Wissen enthielt.
mvn-tester hat die Test-Suite ausgeführt. Auf das betroffene Modul eingegrenzt. Den Output interpretiert. Ein Test-Fehler: ein Unit-Test, der einen Response-Code prüfte, den die API-Änderung absichtlich geändert hatte. Der Implementierer hat es gefixt. Tester nochmal. Grün.
code-reviewer hat die Änderungen gegen die Akzeptanzkriterien und unsere Konventionen geprüft. Er hat eine Sache markiert: einen Feldnamen, den ich in der Spec-Aktualisierung übersehen hatte und der in zwei Tests referenziert wurde. Implementierer hat gefixt. Reviewer hat abgenickt.
git-agent hat committed und gepusht. Commit-Message nach unseren Konventionen — Ticket-Nummer, knappe Beschreibung der Änderung, nicht das „warum das wichtig ist”, das in den PR gehört. Sauberer Branch-Name. Kein Rauschen.
github-pr-handler hat den PR erstellt. Ticket gelesen, Implementierungsplan gelesen, Code-Änderungen gelesen. Eine Beschreibung geschrieben, die das Ticket referenziert, die Rückwärtskompatibilitäts-Entscheidung erklärt, die eine absichtliche Verhaltensänderung benennt und begründet. Reviewer zugewiesen basierend auf der Service-Ownership-Map in CLAUDE.md.
jenkins-handler hat den CI-Lauf beobachtet. Build abgewartet. Rückgemeldet: grün. Alle Tests bestanden. Keine Linting-Fehler.
slack-handler hat im Engineering-Channel gepostet: Ticket-Nummer, PR-Link, ein Satz Zusammenfassung, @mention für den Reviewer, der sofort Bescheid wissen musste.
Von „mach dieses Ticket” bis „PR bereit fürs Review, CI grün, Team informiert”: unter 20 Minuten.
Was ich gemacht habe
Ich hab gesagt: „mach dieses Ticket.”
Ich hab zugeschaut.
Ich hab den PR am Ende genehmigt, nachdem ich das Reviewer-Urteil gelesen hatte.
Ich hab keine einzige Zeile Code geschrieben. Den PR nicht erstellt. Die Commit-Message nicht geschrieben. Die Slack-Benachrichtigung nicht verfasst. Den fehlschlagenden Test nicht debuggt. Nicht nachgeprüft, ob die Spec-Aktualisierung vollständig war.
Ich hab eine Entscheidung getroffen: ob der PR genehmigt wird. Alles andere war die Pipeline.
Wie es sich angefühlt hat
Schwer zu beschreiben, wie es ist, das zum ersten Mal von Anfang bis Ende laufen zu sehen. Die beste Analogie: wie man einer Fabrik zuschaut, die man selbst gebaut hat, wenn sie ihr erstes Produkt fertigt.
Da ist Stolz — das hast du entworfen. Da ist Nervosität — was, wenn irgendwas nicht stimmt und du’s nicht gemerkt hast? Und da ist dieses seltsame Gefühl: was mache ich hier eigentlich noch?
Die Antwort auf diese letzte Frage war wichtig. Was ich gemacht habe, war genau das, was ich machen sollte: die Richtung vorgeben und das finale Urteil treffen. Die Pipeline hat die Ausführung übernommen. Ich hab die Absicht und die Verifikation übernommen.
Das ist keine Ablösung. Das ist eine andere Ebene — weniger Hände auf der Tastatur, mehr Nachdenken über das, was zählt. Die Arbeit aus Sessions 1–8 (Infrastruktur bauen) war die Voraussetzung für die Arbeit in Session 9 (Pipeline beaufsichtigen). Infrastruktur bauen ist selbst eine Form von Hebel.
Die echten Zahlen
Acht Sessions bis zum ersten autonomen Ticket.
Sessions 1–8: Memory-System aufgebaut, Agenten-Architektur entworfen, Deployment-Pipeline verdrahtet, Evolutionszyklus abgestimmt, jeden Agenten mit Übungsaufgaben kalibriert. Null geshippte Tickets.
Session 9: ein autonomes Ticket. Ein gemergter PR. Null manuelle Codearbeit.
Sessions 10–23: Dutzende von Tickets. Die Infrastruktur-Investition hat sich schnell amortisiert. (Was aus dieser Pipeline später wurde — vollständig Slack-gesteuert, PRs werden autonom ausgelöst — ist in Slack-Driven Autonomous PRs beschrieben.)
Die Rendite ist nicht linear. Man verbringt lange Zeit bei null, dann überschreitet man eine Schwelle und alles ändert sich. Die meisten geben vorher auf. Sie probieren Agentic Workflows für eine oder zwei Sessions, merken, dass es mehr Aufwand bringt als sichtbaren Nutzen, und schreiben wieder selbst Code.
Der Mehraufwand ist real. In Sessions 1–8 war ich langsamer als alleine. Die Agenten haben Fehler gemacht, die ich finden musste. Die Infrastruktur brauchte ständige Nacharbeiten.
Aber das ist Investition, kein Verlust. Du baust etwas auf, das sich mit der Zeit multipliziert. Der Schlüssel ist, lange genug daran zu glauben, um wirklich die Schwelle zu erreichen.
Für mich war Session 9 der Beweis. Danach hab ich die Richtung nie mehr in Frage gestellt.