Zum Inhalt springen
Reality Graph

FunktionTrust Review

Ein Ergebnis je Run. Einmal berechnet, von einer Funktion.

DiffChecksScopeeine Regelgeprüfteingeschränktblockiert
Das Prüfergebnis für KI-Code ist einer von drei benannten Ausgängen: geprüft, eingeschränkt geprüft oder blockiert. Es kommt aus einer einzigen deterministischen Funktion, berechnet aus geänderten Dateien und Diffs, die Reality Graph selbst aus Git liest, statt aus dem, was das Modell über seine eigene Arbeit geschrieben hat.

Zuletzt aktualisiert:

Die Ausgänge

Drei Antworten, keine Punktzahl

Am Ende eines Agenten-Runs steht nicht die Frage, wie zuversichtlich jemand ist. Es steht die Frage, ob diese Änderung weitergehen kann.
AusgangWas er bedeutetWas ihr als Nächstes tut
GeprüftDie deklarierten Checks liefen, die Belege sind vollständig, nichts hat einen Block erzwungen.Die Änderung inhaltlich reviewen. Die mechanischen Fragen sind beantwortet.
Eingeschränkt geprüftDer Run hält, aber etwas ist eingeschränkt: ein bezeugtes statt ausgeführtes Ergebnis, eine abgeleitete Mission, ein unvollständiger Index.Die Einschränkung lesen. Sie benennt den Teil des Bildes, der schwächer ist als der Rest.
BlockiertEine blockierende Bedingung hat gegriffen: ein geschützter Pfad hat sich geändert, ein gefordertes Ergebnis fehlt, die Belegerfassung ist gescheitert.Die Ursache beheben. Eine grüne Testsuite hebt das nicht auf, eine Freigabe auch nicht.
Drei Ausgänge, keine Punktzahl und kein Konfidenzwert. Eine Zahl beginnt ein Gespräch über die Schwelle; ein benannter Ausgang erzwingt eine Entscheidung über den Run, der vor euch liegt.

Der harte Fall

Grüne Tests, und der Run ist trotzdem blockiert

Das ist das Verhalten, das ein Ergebnis von einem Testbericht unterscheidet, und der Grund, warum das Regelwerk getrennt von den Check-Ergebnissen ausgewertet wird.

run-4f2a.verdict.txt

Beispiel – illustrativ, keine echten Run-Daten
verdict     BLOCKED
checks      pytest -q  ->  exit 0  (von Reality Graph ausgeführt)
reason      geschützter Pfad geändert: alembic/versions/0031_add_index.py
evidence    geänderte Dateien aus Git gelesen (7 Dateien, 412 Zeilen)
note        eine bestehende Suite hebt eine Änderung an einem geschützten Pfad nicht auf

Die Belege hinter dieser Zeile kommen aus Git, nicht aus Prosa: Die geänderten Dateien und Diffs liest Reality Graph selbst. Git wird also vorausgesetzt, und ab 500 KB bereinigtem Diff bricht die Erfassung ab, statt ein Teilbild zu melden.

Erkannt wird im Nachhinein. Reality Graph findet die Änderung im Repository; es fängt keinen Schreibvorgang ab und macht nichts rückgängig. Was es mit einem geschützten Pfad macht, steht auf der Seite zu Freigaben.

Für die, die später fragen

Ein Ergebnis ist nützlich. Zweihundert sind eine Antwort.

Das ist der Teil, der einen CTO und eine QA-Leitung interessiert, und der Teil, den ein Werkzeug pro Run nicht liefern kann: jedes Ergebnis, das dieses Projekt je erzeugt hat, nebeneinander, Monate nachdem das Terminal zu war.

Jeder Run und sein Review liegen lokal und lösen über die exakte ID auf, der Run von vor sechs Wochen öffnet also so bereitwillig wie der von heute Morgen. Damit werden drei Fragen von Archäologie zu einer Abfrage: Wie oft liefern wir blockiert aus, welche geschützten Pfade werden immer wieder angefasst, und liefen die Checks in der Woche, in der es eng wurde, tatsächlich.

Die ganze Historie ist in dem lokalen Dashboard durchsuchbar, das dieselbe kanonische Projektion rendert, die auch die CLI druckt. Das Board, das eine Reviewerin liest, und das Terminal, das ein Entwickler gelesen hat, können sich also nicht widersprechen. Der Export ist ein Befehl, als einfaches JSON oder Markdown, vorher von Home-Pfaden und Secret-förmigen Zeichenketten bereinigt.

Danach

Was auf eurer Platte bleibt, wenn der Run schließt

Ein Ergebnis, das mit der Terminal-Sitzung verschwindet, ist ein Gefühl und kein Eintrag.

Was ihr behaltet

  • Runs und Reviews in einem lokalen Speicher, der Neustarts übersteht und aus CLI und lokalem Dashboard lesbar ist.
  • Einen Validierungs-Beleg je Check, jeder mit einem Inhalts-Digest, der eine spätere Änderung auf der Platte auffallen lässt.
  • Jeden Eintrag als lokales JSON oder Markdown, auf Zuruf exportiert und vorher von Home-Pfaden und Secret-förmigen Zeichenketten bereinigt.
  • Ein optionales hash-verkettetes Log, das Änderungen, Umsortierungen, fehlende und doppelte Einträge erkennt und offline verifiziert.

Was es nicht ist

  • Ein Zertifikat. Das Ergebnis ist ein Signal für euer Team und belegt nicht, dass der Code korrekt ist.
  • Signierter oder notariell beglaubigter Beleg. Digests erkennen unachtsame Änderungen, keinen entschlossenen lokalen Angreifer.
  • Geteilte Historie. Es ist eine einfache lokale Datei: kein Server, keine Aufbewahrungsregel, nichts zwischen Menschen oder Maschinen synchronisiert.
  • Ein geplanter Export. Export ist ein ausdrücklicher Befehl nach dem anderen, ohne gemeinsames Ziel.
  • Automatisches Audit-Logging. Das verkettete Log ist opt-in, und jeder Eintrag ist ausdrücklich.

Fragen, die wirklich gestellt werden

Warum drei Ausgänge und keine Punktzahl?
Eine Zahl beginnt eine Diskussion darüber, wo die Schwelle liegt. Ein benannter Ausgang erzwingt eine Entscheidung über den Run, der vor euch liegt. Der Resolver ist eine reine Funktion mit genau einer Aufrufstelle im ganzen Produkt, derselbe Run kann in der CLI also keine andere Antwort geben als im Dashboard.
Kann ein Run mit komplett grüner Testsuite blockiert sein?
Ja, und dieser Fall ist durch einen Test abgedeckt, der eine echte bestehende Suite laufen lässt und dabei eine geschützte Datei verändert, um anschließend zu prüfen, dass das Ergebnis blockiert lautet. Blockierende Bedingungen werden getrennt von den Check-Ergebnissen ausgewertet, und genau deshalb hebt Grün sie nicht auf.
Kann ich ein blockiertes Ergebnis übergehen?
Über euer eigenes Repository entscheidet ihr, was ihr wollt; Reality Graph blockiert nichts und macht nichts rückgängig. Was ihr nicht könnt, ist den Eintrag etwas anderes sagen lassen. Das Ergebnis und sein Grund bleiben in der Run-Historie, und eure Entscheidung steht daneben.
Sind die Validierungs-Belege signiert?
Nein. Jeder Beleg trägt einen Inhalts-Digest, ein nachträglich auf der Platte bearbeiteter Beleg fällt also auf, statt still akzeptiert zu werden. Das erkennt unachtsame Änderungen, keinen entschlossenen lokalen Angreifer, und signiert oder notariell beglaubigt ist nichts davon.

Beendet einen Run mit etwas, auf das ihr zeigen könnt

Ein Ausgang, die Belege dahinter und ein Eintrag, der noch lesbar ist, wenn in sechs Wochen jemand danach fragt.