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) oder expect(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.

  1. Yuli schreibt .githooks/pre-commit, .githooks/commit-msg und .githooks/pre-push.
  2. 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.