Dokumentation

Aufträge

Geben Sie einmal an, wofür die ohne menschliches Zutun eingehende Arbeit bestimmt ist, welche Projekte sie betrifft und wie viel sie kosten darf.

Ein Mandat ist eine dauerhafte Festlegung darüber, woran Coroid arbeiten soll, wenn niemand explizit danach fragt: ein Ziel, die betroffenen Projekte, ein wöchentliches oder monatliches Budget sowie der Zeitpunkt, an dem die Arbeit eingestellt wird. Anfragen, die aus Ihren Systemen stammen – die Arbeitsaufnahme über API, Automatisierungen, Integrationen, Überwachungstools –, werden im Rahmen aktiver Mandate bearbeitet. Anfragen von Menschen hingegen nicht; sehen Sie sich Welche Anfragen ein Mandat steuert.

Ein Mandat bestimmt, welche Arbeit beginnen darf. Es erlaubt Coroid jedoch nicht, etwas zu mergen oder zu deployen. Sehen Sie sich Was Coroid entscheidet und was bei Ihnen bleibt.

Wann ein Mandat sinnvoll ist

Erstellen Sie ein Mandat, wenn Arbeit ohne menschliches Zutun bei Coroid eintrifft und Sie im Voraus festlegen möchten, wie viel davon bearbeitet werden darf:

  • Ein Fehler-Tracker oder Überwachungstool, das Vorfälle über die Arbeitsaufnahme API meldet;
  • GitHub-Benachrichtigungen oder Nachrichten aus Slack, Telegram und Jira, die ein Arbeit qualifizieren Automatisierung wandelt diese in Anfragen um;
  • Ein Support- oder Feedback-Tool, das Kundenmeldungen weiterleitet;
  • Ein Scanner oder CI-Job, der Ergebnisse einzeln erfasst.

Ohne ein Mandat werden diese Anfragen wie jede andere behandelt: Sobald sie qualifiziert sind, warten sie in der gleichen Warteschlange auf die Agenten-Slots wie die von Menschen angeforderte Arbeit – ohne eigenes Budget. Eine Woche mit vielen Alerts kann Ihre Warteschlange dann schnell füllen. Ein Mandat begrenzt dies: Es legt fest, welche Projekte betroffen sind, wie viel pro Woche oder Monat ausgegeben werden darf und wie viele Agenten-Slots gleichzeitig genutzt werden dürfen.

Wie eine Anfrage abläuft

Eintreffend ohne menschliches Zutun

  • Eine Benachrichtigung aus einem Fehler-Tracker, die an das Arbeitsaufnahme-System API mit ihrem Signal gesendet wird.
  • Ein GitHub-Problem, über eine Automatisierung zur Qualifizierung von Aufgaben.
  • Ein Kundenbericht aus Ihrem Support-Tool, über das Arbeitsaufnahme-System API.

Ein Antrag, den jemand in New Work stellt, durchläuft ebenfalls die Qualifizierung – doch kein Mandat hält ihn zurück.

Qualifizierung

Säubern, aktuelle Version prüfen, Duplikate entfernen, verifizieren, bewerten und routen.

Aufnahme

Stellen Sie sicher, dass die API-Pfade frei von nicht behandelten Ausnahmen sind.

Projekte
AbrechnungsAPI
Budget
100 USD und 10 Agentenstunden pro Woche
Mandats-Slots
1 von 2 in Nutzung, die Hälfte von 4 Agenten-Slots
  1. Wird derselbe Vorfall bereits in einem anderen Projekt bearbeitet?
  2. Hat die Bewertung ergeben, dass das Verhalten beabsichtigt ist?
  3. Ist innerhalb des Mandats-Anteils ein Slot frei?
  4. Ist dieses Jahr noch Budget vorhanden?
  5. Kann das Ergebnis gemessen werden – oder umfasst das Mandat Aufgaben, deren Ergebnis nicht messbar ist?
Aufgenommen

Die Aufgabe wird mit einem reservierten Slot und einem Teil des wöchentlichen Budgets erstellt.

Schon gelöst

Verknüpft mit der bereits laufenden Arbeit. Es wird nichts Neues erstellt.

Keine Änderung nötig

Das Verhalten ist beabsichtigt. Es wird nichts erstellt.

Verschoben

Wird jede Minute erneut geprüft. Aufgenommen, sobald ein Slot oder Budget frei wird – oder nach einer vollen Woche beendet.

Nach der Aufnahme

Aufgabe

Spezifikation, Plan und Code – wie bei jeder Aufgabe.

Verifizierung

Tests, Qualitätsprüfungen, QA und Review.

Pull-Request

Auf einem eigenen Branch, gegenüber Ihrem Branch.

Sie führen zusammen

Ergebnisvertrag

Nach 500 Anfragen auf den entsprechenden Routen gibt es für diesen Vorfall 24 Stunden lang keine neuen Ereignisse.

Ein Antrag, der ohne menschliches Zutun eintrifft, durchläuft die Qualifizierung und wird anschließend unter dem für das Projekt geltenden Mandat aufgenommen. Die aufgenommene Arbeit wird zu einem pull request, den ein Mensch zusammenführt – der Ergebnisvertrag dokumentiert dabei, was durch das Zusammenführen erreicht werden soll.

Nehmen wir das im Beispiel dargestellte Mandat für ein Projekt namens Abrechnung API. Der Fehler-Tracker meldet eine neue Ausnahme beim Rechnungsexport. Die Webhook-Regel des Alerts leitet diese über einen kleinen Relay-Server an die Arbeitsaufnahme API, wobei die Issue-ID des Trackers als Signal-Fingerprint, die betroffene Route und 500 Anfragen als Ausmaß der Störung angegeben werden, bis die Behebung als erfolgreich gilt.

  1. Qualifizierung erfolgt wie bei jeder Anfrage: Geheime Daten und personenbezogene Informationen werden entfernt, die aktuelle Version geprüft, Duplikate gesucht, der Bericht verifiziert und bewertet.
  2. Zulassung sucht das Mandat, das Abrechnung API umfasst, und prüft nacheinander: Ob das gleiche Problem bereits bearbeitet wird – hier oder in einem anderen Projekt; ob die Bewertung das beabsichtigte Verhalten bestätigt; ob einer der beiden Slots des Mandats frei ist; ob das wöchentliche Budget noch ausreicht; und ob das Ergebnis messbar ist.
  3. Zugelassen, wird die Anfrage zu einer Aufgabe mit einem reservierten Slot und einem Teil des wöchentlichen Budgets. Sie durchläuft den üblichen Prozess – Spezifikation, Code, Tests, Qualitätsprüfungen, QA und Rezension – und wird schließlich zu einem pull request.
  4. Ein Mensch merged sie. Die Aufgabe Ergebnis-Vereinbarung dokumentiert, was durch das Mergen erreicht werden soll: Innerhalb von 24 Stunden nach 500 Anfragen auf der betroffenen Route darf es für dieses Problem keine neuen Ereignisse mehr geben.

Falls der gleiche Alert erneut ausgelöst wird, ist die zweite Anfrage bereits gelöst und mit dem ersten verknüpft. Wenn ein fehlerhafter Deploy sechst neue Probleme auf einmal verursacht, dürfen maximal zwei davon gleichzeitig unter dem Mandat laufen; die übrigen werden verschoben, dann werden sie nacheinander zugelassen, sobald die Slots des Mandats frei werden. Die anderen beiden Agenten-Slots bleiben für Anfragen Ihres Teams zu Neue Aufgaben frei.

Beispiel-Mandate

Verhindern Sie das Ansammeln von Produktionsfehlern

Ihre API-Dienste melden Fehler an einen Fehlertracker, und die Behebung erfolgt, nachdem jemand Zeit dafür hat.

EinstellungWert
ArtLaufend
ZielHalten Sie die Routen der Abrechnung API von unbehandelten Ausnahmen frei
ProjekteAbrechnung API
Budget100 USD und 10 Agenten-Stunden pro Woche
Arbeit zulassen, deren Ergebnis nicht messbar istAus
RezensionsdatumIn vier Wochen

Anfragen kommen über den Fehlertracker über die Arbeitseingabe API, jede mit einem signal der die Issue-ID des Trackers, die Routen und eine Anfrageanzahl angibt. Jedes Issue wird höchstens zu einem Arbeitsauftrag, egal wie oft es ausgelöst wird. Eine schlechte Woche kostet maximal 100 USD. Eine ohne Routen gesendete Benachrichtigung wartet statt zu starten, weil nicht feststellbar ist, ob die Behebung funktioniert hat; senden Sie die Routen oder aktivieren Sie Arbeit zulassen, deren Ergebnis nicht messbar ist.

Arbeit an Fehlern in GitHub bewältigen

Benutzer erstellen in Ihrem Web-App-Repository schneller Issues, als jemand sie priorisieren kann.

EinstellungWert
ArtLaufend
ZielDie von Benutzern in der Web-App gemeldeten Fehler beheben
ProjekteWebanwendung
Budget200 USD und 30 Agentenstunden pro Monat
Arbeiten zulassen, deren Ergebnis nicht messbar istEin

Eine Arbeit qualifizieren Die Automatisierung bei neuen GitHub-Problemen erstellt jeweils ein Ticket. Die Qualifizierung verhindert Duplikate, erkennt Probleme, die im aktuellen Release bereits behoben wurden, und meldet, dass sie sich nicht reproduzieren lassen. Der Schalter für die Messbarkeit ist aktiv, da das Problem keine Routen oder Datenverkehr angibt und somit der Ergebnisvertrag nicht messbar ist; bei deaktiviertem Schalter würden alle Probleme warten. Probleme, die von Personen mit Schreibrechten eröffnet werden, starten automatisch; die übrigen warten darauf, dass jemand sie startet, wie in Wenn die Arbeit beginnt.

Auf Berichte von Kunden reagieren

Ihr Support-Tool sammelt Kundenberichte, und die dringenden davon erreichen die Entwicklung verspätet.

EinstellungWert
ArtLaufend
ZielFehler in den vom Kunden im Kundenportal gemeldeten Problemen beheben
ProjekteKundenportal
Budget150 USD und 15 Agentenstunden pro Woche
Arbeiten zulassen, deren Ergebnis nicht messbar istEin

Das Support-Tool erstellt über das Arbeitsaufnahme-System API mit einem Dienstkonto jeweils ein Ticket für einen Bericht. Die Qualifizierung lehnt solche ab, die sich nicht reproduzieren lassen, und das Mandat verhindert, dass eine volle Woche mit Berichten mehr als die Hälfte der Agentenkapazitäten oder das zugewiesene Budget verbraucht.

Vor einem Termin eine Aufräumarbeit abschließen

Das von Ihnen genutzte Zahlungs-SDK erreicht nächstes Quartal das Ende seines Lebenszyklus, und die veralteten Aufrufe sind auf zwei Dienste verteilt.

EinstellungWert
ArtBegrenzt
ZielAlle Aufrufe des veralteten Zahlungs-SDK entfernen
ZielwertMaximal 0 Aufrufe des veralteten SDK
ProjekteKasse, Abrechnung API
Budget300 USD und 40 Agentenstunden pro Monat
Arbeiten zulassen, deren Ergebnis nicht messbar istEin

Ein CI-Job erstellt pro Aufrufstelle eine Anfrage, wobei die Datei und die Zeile als Signal-Fingerabdruck dienen, sodass eine bei der nächsten Ausführung erneut gefundene Aufrufstelle mit der bereits damit befassten Arbeit verknüpft wird. Coroid liest das Ziel noch nicht aus: Wenn der letzte Aufruf wegfällt, wählen Sie Abschließen selbst.

Wenn Sie kein Mandat benötigen

  • Die Arbeit, um die Mitarbeiter bitten. Anfragen, die in Neue Aufgaben erstellt oder importiert werden, werden zugelassen, sobald sie die Voraussetzungen erfüllen – niemals zurückgestellt und niemals aus dem Budget eines Mandats verwendet.
  • Zeitpläne und Hook-Nachverfolgungen. Sie erstellen Aufgaben direkt, ohne Qualifikation – somit unterliegen sie keinen Mandatsbeschränkungen. Weisen Sie ihnen stattdessen eine niedrigere Priorität zu; siehe Zeitpläne.
  • Eine einmalige Initiative. Arbeit mit bekannter Struktur und einem Ende ist ein Plan, kein Mandat.
  • Überlappende Mandate. Wenn mehrere aktive Mandate dasselbe Projekt abdecken, regelt das älteste Mandat dessen Anfragen. Weisen Sie jedem Projekt ein eigenes Mandat zu.

Wo Mandate angesiedelt sind

Öffnen Sie Qualitätskontrolle → Mandate. Jeder Umfang in der Qualitätskontrolle – die Organisationsvorgabe und jedes Projekt – verweist auf dieselbe Liste, da ein Mandat zur Organisation gehört und seine Projekte selbst benennt. Das Öffnen des Projektumfangs filtert die Liste nicht.

Inhaber und Administratoren erstellen und ändern Mandate. Mitglieder können sie einsehen. Agenten und Dienstkonten dürfen Mandate überhaupt nicht ändern.

Was ein Mandat enthält

Art. Endliche Mandate haben ein Ziel und enden, sobald dieses erreicht ist – zum Beispiel „die offenen Sicherheitslücken auf Null reduzieren“. Dauerhafte Mandate dienen der Wartung – zum Beispiel „die Produktionsrouten frei von unbehandelten Ausnahmen halten“; sie haben ein Überprüfungsdatum statt eines Ziels.

Ziel. Ein Satz, der beschreibt, was gelten soll. So lesen die Nutzer das Mandat; die Zulassung erfolgt anhand des Umfangs, des Budgets und des Status.

Basiswert. Der Messwert, anhand dessen das Mandat bewertet wird, und seine Quelle. Sie benennen den Messwert, und die Werte werden von Coroid erfasst – niemals manuell eingegeben. Sie werden auch nicht in einem Einstellungsexport mitgeführt. Ein neues Mandat zeigt Noch keine Messwerte vorhanden.

Zielwert. Für ein endliches Mandat: Der Messwert und der Wert, der Erfolg bedeutet.

Prioritäten. Eine pro Zeile. Wenn Arbeit um Kapazitäten konkurriert, gewinnt die erste Priorität.

Umfang.

  • Projekte. Die Projekte, die vom Mandat abgedeckt werden. Wenn keine ausgewählt sind, umfasst das Mandat alle Projekte der Organisation – auch solche, die später erstellt werden. Markieren Sie die gewünschten Projekte; ein Mandat für ein Repository sollte explizit dieses Projekt nennen.
  • Bereiche. Pfadmuster innerhalb dieser Projekte, jeweils eine pro Zeile, zum Beispiel apps/api-*/src/**. Leer bedeutet: überall.
  • Änderungsklassen. Die Arten von Änderungen, für die das Mandat gilt, zum Beispiel exception_fix.
  • Arbeit zulassen, deren Ergebnis nicht messbar ist. Standardmäßig deaktiviert. Wenn es deaktiviert ist, wartet eine Anfrage, deren Ergebnisvertrag nicht messbar ist, statt sofort zu starten.

Budget. Wie viel Coroid pro Zeitfenster für das Mandat ausgeben darf – in US-Dollar und Agentenstunden pro Woche oder Monat. Eine Woche beginnt montags um 00 Uhr UTC; ein Monat beginnt am ersten Tag des Monats. Das Budget wird automatisch wieder freigegeben.:00 UTC; ein Monat beginnt am ersten Tag. Das Budget wird automatisch wieder freigegeben.

Stoppbedingungen. Stoppen, wenn das Budget aufgebraucht ist, das Ziel erreicht wurde, nach einer bestimmten Anzahl von nicht entscheidenden Ergebnissen hintereinander oder zu einem bestimmten Datum.

Überprüfungsdatum. Für ein laufendes Mandat: das Datum, an dem eine Person es verlängert oder beendet.

Abweichungsregel. Für ein laufendes Mandat: eine Grenze für den Basiswert der Metrik. Wenn diese in einem Zeitfenster überschritten wird, soll der Eigentümer benachrichtigt werden.

Status und Versionen

Ein Mandat beginnt als Entwurf. Veröffentlichen macht es zu aktiv, und nur aktive Mandate nehmen Arbeit entgegen.

AktionAuswirkung
Pausieren / FortsetzenDie Aufnahme neuer Aufträge wird gestoppt und anschließend wieder aufgenommen. Bereits laufende Aufträge werden abgeschlossen.
AussetzenStoppt die Aufnahme von Anfragen, bis jemand den Grund dafür prüft.
AbschließenBeendet ein Mandat, dessen Ziel erreicht wurde.
Außer Betrieb nehmenBeendet es endgültig. Ein außer Betrieb genommenes Mandat kann nicht wieder aktiviert werden; seine Versionen und der Verlauf bleiben jedoch erhalten.

Wenn ein veröffentlichtes Mandat geändert wird, entsteht eine neue Version. Die früheren Versionen werden zusammen mit dem Veröffentlichungsdatum und dem Veröffentlichenden aufbewahrt.

Jede Veröffentlichung und jede Statusänderung stellt eine Entscheidung im Rahmen des Mandats dar. Provenienz, einschließlich der Person, die die Änderung vorgenommen hat, sowie eines Eintrags im Audit-Stream Ihres Unternehmens (mandate.created, mandate.published, mandate.paused usw.).

Welche Anfragen ein Mandat steuert

Ein Mandat steuert Anfragen, die ohne eine Person in Coroid eingehen: aus dem Arbeitseingang API, aus Automatisierungen und Integrationen wie GitHub oder Jira-Aufgaben sowie aus der Überwachung.

Eine Anfrage, die eine Person in Neue Aufgaben, oder über Importe eingeht, unterliegt nicht einem Mandat. Sie wird immer zugelassen, sobald sie die Voraussetzungen erfüllt, niemals zurückgestellt und verbraucht auch nicht das Budget des Mandats. Eine Person hat sie angefordert; die Agenten-Slots stellen sie einfach in die Warteschlange.

Eine unbeaufsichtigte Anfrage wird dem ältesten aktiven Mandat zugeordnet, dessen Projekte das Projekt der Anfrage umfassen oder das alle Projekte abdeckt. Eine Anfrage, die keinem Mandat zugeordnet werden kann, wird als gewöhnliche Anfrage zugelassen.

Was die Zulassung bestimmt

Die Zulassung ist der letzte Schritt von Qualifikation. Dabei erfolgt kein Modellaufruf. Für jede Anfrage wird eine der folgenden Entscheidungen getroffen:

  • Zugelassen. Die Arbeit wird erstellt, wobei ein Slot für einen Agenten sowie – unter einem Mandat – ein Teil des Mandatsbudgets reserviert werden. Ob die Arbeit anschließend eigenständig beginnt, hängt vom Ursprung ab, wie in Wann die Arbeit beginnt.
  • Bereits gelöst. Das gleiche Signal – dasselbe Problem im Tracker oder in der Überwachung, oder derselbe Fehler – wird bereits im Rahmen einer anderen Anfrage in einem beliebigen Projekt des Unternehmens bearbeitet. Die Anfrage wird mit dieser Arbeit verknüpft und es wird nichts Neues erstellt.
  • Keine Änderung nötig. Die Bewertung der Qualifikation ergab, dass das gemeldete Verhalten beabsichtigt ist. Es wird nichts erstellt.
  • Zurückgestellt. Die Anfrage ist zulässig, sollte aber jetzt nicht beginnen: Der Anteil der Agenten-Slots des Mandats ist bereits belegt, das Budget für den Zeitraum ist aufgebraucht, oder das Ergebnis lässt sich nicht messen und das Mandat akzeptiert dies nicht.

Jede Entscheidung und ihr Grund werden zusammen mit der Anfrage festgehalten.

Zurückgestellte Anfragen

Coroid überprüft alle Minuten erneut die zurückgestellten Anfragen und nimmt sie an, sobald ein Slot oder Budget zur Verfügung steht – gemäß der aktuellen Version des Mandats. Durch eine Erhöhung des Mandatsbudgets oder das Pausieren eines anderen Mandats, das Slots belegt, wird bei der nächsten Überprüfung ein zurückgestellter Auftrag freigegeben. Es gibt keine Möglichkeit, einen solchen Auftrag direkt zu starten.

Eine Anfrage, die länger als das im Mandat festgelegte Zeitfenster – eine Woche oder ein Monat – gewartet hat oder deren Mandat nicht mehr aktiv ist, wird ohne Bearbeitung abgeschlossen.

Wie Mandatsarbeit Kapazitäten aufteilt

Mandatsarbeit darf maximal die Hälfte der gesamten Kapazität Ihrer Organisation beanspruchen. Agent-Slots gleichzeitig – wobei sowohl laufende als auch bereits angenommene, aber noch nicht gestartete Aufträge mitgezählt werden. Der Rest bleibt für Anfragen von Nutzern frei. Falls Ihr Plan unbegrenzte Slots vorsieht, gilt dieselbe Regel für Ihr monatliches Ausgabenbudget.

Ein angenommener Auftrag behält seine Reservierung für 30 Minuten, bis seine Aufgabe beginnt. Danach verfällt die Reservierung: Ein Auftrag, bei dem die Arbeit noch nicht erstellt wurde, geht wieder in den zurückgestellten Zustand über, und eine bereits existierende Aufgabe wartet wie jede andere auf einen Slot.

In einem Einstellungs-Export

Mandate werden in einem Einstellungs-Export: Art, Ziel, Zielgruppe, Prioritäten, Umfang, Budget, Abbruchbedingungen, Überprüfungsdatum und Driftregel. Projekte werden anhand ihres stabilen Schlüssels abgeglichen, der Eigentümer anhand seiner Rolle. Baselines werden niemals exportiert; sie stellen Messwerte der Organisation dar, aus der sie stammen. Ein Mandat mit einem neuen Ziel wird als Entwurf für die Veröffentlichung durch eine Person bereitgestellt. Ein Mandat, dessen Ziel einem bestehenden Mandat entspricht, aktualisiert dieses – entweder als Entwurf, falls es noch ein Entwurf ist, oder als neue veröffentlichte Version.