Ein Agent, der Vorschläge macht und nichts verändert
Covey Doctor prüft die anderen Agenten und die Plattform selbst. Warum er nichts ändern darf und warum eine Freigabe die genauen Werte festhält, die jemand gelesen hat.
Alle Agenten in Covey arbeiten bisher auf einem Zielsystem: Sie bearbeiten Tickets, schreiben Code, prüfen Abhängigkeiten. Mit Version 0.4.0 kam einer dazu, dessen Gegenstand die Belegschaft selbst ist. Wir nennen ihn Covey Doctor.
Er liest die Arbeitsakte eines Kollegen — also die Aufzeichnung dessen, was dieser Agent tatsächlich getan hat —, dazu die Konfiguration, die dieses Verhalten erzeugt hat. Wenn ein Betreiber das Repository der Plattform hinterlegt hat, liest er außerdem den Quelltext der Version, die gerade läuft. Das ist der Unterschied zwischen einem Symptom und einer Ursache: Zu melden, dass ein Agent oft scheitert, ist billig. Zu sagen, woran es liegt, braucht den Code.
Damit ist er der Agent mit der größten Reichweite im ganzen System. Und genau deshalb darf er nichts ändern.
Was ein Vorschlag ist
Wenn Covey Doctor zu dem Schluss kommt, dass ein Kollege anders konfiguriert werden sollte, schreibt er keine Änderung. Er schreibt einen Vorschlag.
Ein Vorschlag ist technisch eine vollständige Konfigurationsversion. Sie wird gespeichert, sie ist versioniert, und man sieht sie im Vergleich zur laufenden Fassung Zeile für Zeile. Sie hat nur eine Eigenschaft, die sie von einer normalen Version unterscheidet: Sie läuft nicht. Erst wenn ein Mensch sie annimmt, wird sie zur aktiven Konfiguration.
Ein Detail daran ist wichtiger, als es klingt. Die Annahme schreibt genau das, was im Vorschlag steht — und nichts, was sich in der Zwischenzeit drumherum geändert hat. Wer einen Vorschlag vom Montag am Donnerstag annimmt, bekommt den Vorschlag vom Montag. Ohne diese Regel würde eine Freigabe stillschweigend Dinge mit übernehmen, die niemand gelesen hat.
Covey Doctor darf übrigens auch Vorschläge zu seiner eigenen Konfiguration schreiben. Was er nicht darf, ist seine eigenen Kennzahlen lesen — sonst würde er den Messwert verbessern statt die Arbeit.
Warum wir Aktionen parken statt sie zu verbieten
Manche Aktionen greifen nicht in ein Zielsystem ein, sondern in Covey selbst: einen Agenten anlegen, eine Konfiguration ändern, eine Berechtigung setzen. Solche Aktionen können wir nicht einfach freigeben.
Der erste Ansatz war, sie zu verbieten. Wenn eine Regel eine Aktion hart verweigerte, endete der Lauf mit einem Fehler. Das ist sicher, aber unbrauchbar: Der Agent hatte dann Arbeit geleistet, die verloren ging, und beim nächsten Versuch lief er in dieselbe Wand.
Heute wird die Aktion stattdessen geparkt. Sie wandert in eine Liste, in der ein Mensch entscheidet, und der Agent wiederholt sie, nachdem die Entscheidung gefallen ist. Der Lauf endet nicht, die Arbeit bleibt erhalten.
Die Freigabe merkt sich, was sie gezeigt bekam
Genau diese Wiederholung hat allerdings ein Problem geschaffen, das vorher nicht existierte.
Wenn ein Mensch eine Aktion freigibt und der Agent sie danach erneut ausführt — woher weiß die Plattform, dass er dieselbe Aktion wiederholt? Wenn die Freigabe nur „Agent anlegen ist erlaubt" bedeutet, dann deckt sie auch das Anlegen eines ganz anderen Agenten.
Deshalb hält eine Freigabe seit 0.4.0 die genauen Werte fest, die dem Menschen angezeigt wurden. Wer die Aktion „Agent anlegen mit der Kennung helper" freigibt, hat damit nicht die Aktion „Agent anlegen mit der Kennung backdoor" freigegeben. Kommt die Aktion mit anderen Werten zurück, ist das eine neue Frage und keine bereits beantwortete.
Das klingt selbstverständlich, ist es aber nicht. Freigaben werden in vielen Systemen auf der Ebene des Aktionstyps erteilt, weil das einfacher zu implementieren ist. Solange ein Mensch die Aktion ausführt, geht das meistens gut. Sobald zwischen Freigabe und Ausführung ein Programm steht, das die Werte selbst bestimmt, ist die Art der Aktion die falsche Ebene.
Wo etwas landet, das niemand aufhält
Die Ergebnisse solcher Prüfungen und die offenen Freigaben liegen jetzt in einer gemeinsamen Liste, sortiert nach Dringlichkeit. Der Unterschied zwischen beiden steht dabei ausdrücklich dabei, weil er in der Praxis zählt:
Eine Freigabe hält einen Agenten auf. Er wartet auf die Entscheidung und macht danach weiter. Wer sie liegen lässt, hält Arbeit an.
Ein offener Punkt hält nichts auf. Er ist ein Vorschlag, ein Befund oder ein Hinweis, und bis jemand ihn aufgreift, passiert nichts. Wer ihn liegen lässt, verliert nur die Information.
Beides in einer Liste zu zeigen, ohne den Unterschied zu benennen, wäre bequem und irreführend gewesen.
Ein letzter Punkt, der uns wichtig war: Wenn Covey Doctor auf etwas stößt, das nicht in seiner Zuständigkeit liegt, meldet er es dem zuständigen Kollegen. Er arbeitet nicht still daran vorbei. Ein Agent, der Hindernisse umgeht statt sie zu melden, sorgt dafür, dass niemand von ihnen erfährt.