FunktionTrust Review
Ein Ergebnis je Run. Einmal berechnet, von einer Funktion.
Zuletzt aktualisiert:
Die Ausgänge
Drei Antworten, keine Punktzahl
| Ausgang | Was er bedeutet | Was ihr als Nächstes tut |
|---|---|---|
| Geprüft | Die 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üft | Der 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. |
| Blockiert | Eine 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. |
Der harte Fall
Grüne Tests, und der Run ist trotzdem blockiert
run-4f2a.verdict.txt
Beispiel – illustrativ, keine echten Run-Datenverdict 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.
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
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.