Dokumentation / Qualität und Governance
Gate und Governance-Center
Ein einziges Gate setzt den Vertrag bei jedem Commit, Push und jeder Pipeline durch, und das Governance-Center bündelt den gesamten Lebenszyklus.
Der Qualitätsvertrag legt fest, was das Team verlangt. Das Gate setzt es durch. Es ist ein einziger Befehl der Engine, den Git-Hooks, CI, der Befehl yuli-mcp gate und die Hooks der Agenten gleichermaßen verwenden. Das Ergebnis hängt nicht davon ab, wer es aufruft.
Der Befehl
agent-engine gate --project <raíz> --stage pre-commit|commit-msg|pre-push|ci \
[--message-file <archivo>] [--base <revisión>] [--format text|json]
Lässt du --project weg, wird der aktuelle Ordner verwendet. Ein Ordner ohne Git besteht immer.
| Exit-Code | Bedeutung |
|---|---|
0 |
Bestanden. |
1 |
Blockiert: Eine Prüfung ist fehlgeschlagen. |
2 |
Bedienungsfehler. |
Was jede Stufe prüft
| Stufe | Was verglichen wird | Prüfungen |
|---|---|---|
pre-commit |
Was im Stage liegt | Alle unten aufgeführten. |
commit-msg |
Die Commit-Nachricht | Nur KI-Zuschreibung und Ausnahmen. |
pre-push |
Gegen @{upstream} (oder origin/HEAD) |
Alle unten aufgeführten. |
ci |
Gegen den Ziel-Branch des PR oder MR (oder HEAD~1) |
Alle unten aufgeführten. |
Die Prüfungen
| Prüfung | Bezeichnung in Yuli | Ergebnis |
|---|---|---|
| Secrets in hinzugefügten Zeilen | Secrets | Blockiert. Gemeldet werden Typ und Zeile, nie der Wert. |
| Tricks in den Tests | Testintegrität | Blockiert, wenn das Profil Tricks blockiert; sonst Warnung. |
| Größe der Änderung | Änderungsgröße | Blockiert bei strikter Durchsetzung; sonst Warnung. |
| Geänderte geschützte Dateien | Geschützte Pfade | Blockiert bei strikter Durchsetzung; sonst Warnung. |
| KI-Zuschreibung in Nachrichten | KI-Zuschreibung | Prüft, dass kein Co-Authored-By einer KI vorhanden ist. |
| Abgelaufene Ausnahmen | Ausnahmen | Warnt. Blockiert nie. |
| Bestehender Code ohne Tests | Sicherheitsnetz | Warnt. Blockiert nie. |
Anti-Trick-Schutz in Tests
Ein Agent unter Zeitdruck könnte einen Test „reparieren“ statt des Codes. Yuli erkennt das.
In den Tests:
- Entfernte Assertions oder gelöschte Tests.
- Übersprungene Tests:
@Disabled,@Ignore,.skip(,xit,#[ignore], Skips in pytest oder unittest,t.Skip. - Triviale Assertions wie
assertTrue(true)oderexpect(true).toBe(true). - Geänderte Erwartungswerte, damit der Test besteht.
- Ein
catch, das innerhalb eines Tests alles abfängt.
Im Build und in der CI:
- Herabgesetzte Mindest-Coverage.
- Im Build übersprungene Tests.
- Ignorierte Fehler, etwa
npm test || true. - Ein durch ein leeres Skript ersetztes Testskript.
- Deaktiviertes Quality Gate oder abgeschalteter Test-Task.
Sicherheitsnetz
Ändern sich bestehende Code-Dateien ohne Characterization- oder Unit-Tests, warnt das Gate: Die Änderung muss das Verhalten erhalten. Den Commit blockiert es nie.
Git-Hooks installieren
Klicke im Governance-Center im Tab Gates auf Hooks installieren.
- Yuli schreibt
.githooks/pre-commit,.githooks/commit-msgund.githooks/pre-push. - Es setzt
git config --local core.hooksPath .githooks.
Yuli installiert nichts, wenn core.hooksPath bereits auf ein anderes Werkzeug zeigt (zum Beispiel husky) oder wenn ein Hook existiert, den es nicht selbst geschrieben hat. Ist die Engine nicht verfügbar, warnt der Hook und lässt durch: Du kannst nie wegen ihm keinen Commit mehr machen.
Hooks deinstallieren entfernt die Konfiguration und löscht nur die Skripte von Yuli.
In der CI
Die von CI erstellen erzeugten Pipelines enthalten den Schritt „Vertrags-Gates“, der agent-engine gate --stage ci ausführt. So wendet die CI dieselben Regeln an wie dein Team lokal.
Das Governance-Center
Öffne es über die rechte Leiste (Weitere Werkzeuge → Governance-Center) oder über die Befehlspalette: Governance-Center öffnen. Es hat 10 Tabs.
| Tab | Inhalt |
|---|---|
| Vertrag | Kritikalität, Schwellenwerte, geschützte Pfade, Ausnahmen, Schichten, SLO, Lizenzrichtlinie, unabhängiger Reviewer, Datenklassifizierung, FinOps-Budgets und Verlauf. |
| Gates | Das Gate für eine Stufe ausführen, die Hooks installieren oder deinstallieren und die CI-Karte. |
| Sensible Daten | Beim Verlassen des Rechners geschwärzte Werte, klassifizierte Felder im Code und Secrets in der Git-Historie. |
| Analyse | Anforderungen (EARS-Muster, Mehrdeutigkeit, ISO-25010-Attribute, Gherkin) und Glossar. |
| Design | Entscheidungen (ADR), Bedrohungen (STRIDE), APIs (OpenAPI), C4, SLO und Legacy. |
| Messung | Architektur-Fitnessfunktionen, LCOM4, Change Coupling, Bus Factor, Schuldenregister, Twelve-Factor und Feature Flags. |
| Tests | Instabile Tests und Quarantäne, Mutation, Testarten, Race Conditions und Last. |
| Lieferkette | Abhängigkeiten und Lizenzen, SBOM, IaC, Container, DAST, Herkunft (SLSA, cosign), CODEOWNERS und Verlauf. |
| Auslieferung | CI, Release, Rollback, progressives Deployment, Runbook, Post-Mortems, DORA, SPACE, Builds und FinOps. |
| Agenten | Kontext, Review, Telemetrie, Lernen, Benchmark und Injection. |
Erzeugte Dokumente
| Dokument | Pfad |
|---|---|
| ADR (Architekturentscheidungen) | docs/architecture/adr/ |
| STRIDE-Bedrohungsmodell | docs/architecture/threat-model.md |
| C4-Diagramme | docs/architecture/c4.md |
| SBOM | docs/reports/sbom.cdx.json und docs/reports/sbom.spdx.json |
| Runbook | docs/operations/runbook.md |
| Post-Mortems | docs/operations/postmortems/ |
DORA
Der Tab „Auslieferung“ berechnet die vier DORA-Metriken: Deployment-Frequenz, Lead Time, Änderungsfehlerrate und MTTR, mit den Stufen Elite, Hoch, Mittel und Niedrig. Grundlage sind die erfassten Deployments oder die CI. Ein APM der Produktion sieht Yuli nicht.
Unabhängige Prüfung
Ein Modell einer anderen Familie prüft die Änderung. Es wird nie dieselbe Familie verwendet wie die des Modells, das sie geschrieben hat. Ist keines konfiguriert, wird die Prüfung als nicht verfügbar angezeigt. In den Profilen „Reguliert“ und „Sicherheitskritisch“ ist sie Pflicht.
Kontext für alle Agenten
Unter Agenten → Kontext schreibt der Bereich „Kontext für alle Agenten“ dieselben Regeln für jedes Werkzeug:
| Ziel | Datei |
|---|---|
| Claude Code (CLAUDE.md) | .claude/CLAUDE.md |
| AGENTS.md (Codex und andere) | AGENTS.md |
| Kiro (.kiro/steering) | .kiro/steering/yuli.md |
| Antigravity | .agent/rules/yuli.md |
| Cursor (.cursor/rules) | .cursor/rules/yuli.mdc |
| GitHub Copilot | .github/copilot-instructions.md |
| Gemini (GEMINI.md) | GEMINI.md |
Der Inhalt steht in einem verwalteten Block; was du außerhalb davon schreibst, bleibt erhalten. Standardmäßig bleiben die Dateien außerhalb von Git; aktiviere das mit In Git versionieren. Jedes Ziel zeigt seinen Status: Aktuell, Veraltet, Existiert nicht oder Manuell bearbeitet.
Gelernte Regeln
Taucht derselbe Befund 3-mal oder öfter in mindestens 2 Aufgaben innerhalb von 30 Tagen auf, wird er zu einer Regel in .ai/rules/learned.md. Du kannst sie unter Agenten → Lernen ablehnen; sie wird nur erneut vorgeschlagen, wenn sich ihre Belege verdoppeln.
Ehrliche Grenzen
- DAST (OWASP ZAP), Container-Scans (Trivy oder Grype) und Signierung (cosign) laufen nur, wenn sie installiert sind, und immer mit Bestätigung. Fehlen sie, weist Yuli darauf hin und simuliert kein Ergebnis.
- Präventive Regeln und IaC-Regeln sind Muster auf dem Text. Jeder Befund kommt mit Datei und Zeile, damit ein Mensch ihn bestätigen kann.