aSPARK-guard
Gate-Durchsetzung im Code statt im Prompt: Was ein Quality-Gate verletzt, wird am Tool-Aufruf abgelehnt — und jede Übersteuerung kostet einen datierten, hash-gebundenen Eintrag im Repository.
aSPARK Core ist Markdown-Prompt-Material ohne Laufzeit. Seine Quality-Gates sind damit Bitten an ein Sprachmodell: „lies qa.md, und wenn dort offene Blocker stehen, verweigere das Release.“ Das hält — bis ein Agent unter Kontextdruck sich einen guten Grund zurechtlegt. Aus seiner eigenen Sicht ist ein gut begründetes Gate ein bestandenes Gate.
guard verlegt die Prüfung dorthin, wo das Modell sie nicht wegargumentieren kann: in einen Hook außerhalb des Modells, auf den Tool-Aufruf selbst. Zwei Zusagen — kein Gate lässt sich stillschweigend überspringen, und keine Übersteuerung bleibt unsichtbar. Core wird dafür nicht verändert, und in einem Projekt ohne .spark/-Verzeichnis passiert nichts.
- ◆
Drei Gate-Regeln
Ein Plan gegen eine nicht freigegebene Spec, ein QA-Bericht gegen ein nicht bestandenes Review, ein Release über rote Gates oder offene Blocker — abgelehnt, bevor geschrieben wird. Jede Ablehnung nennt die Regel, den auslösenden Zustand und jeden Weg nach vorn.
- ◆
Übersteuern — aber sichtbar
Ein Gate lässt sich überstimmen, nur nicht stillschweigend: eine Zeile in overrides.jsonl mit Regel, Grund und dem SHA-256 des Artefakts, das den Block ausgelöst hat. Ändert sich dieses Artefakt, verfällt die Ausnahme. Und der Agent darf die Datei nicht selbst schreiben.
- ◆
Hash-Ledger
Jeder Schreibvorgang unter .spark/ mit SHA-256, Status und Git-HEAD — append-only und mitversioniert. Git sieht nur Commits und faltet Zwischenstände zu einem Diff; das Ledger datiert jeden einzelnen Statuswechsel.
- ◆
Drift-Erkennung
Ein Artefakt, das außerhalb des Loops bearbeitet wurde, weicht von seinem letzten Ledger-Eintrag ab. Eine Zeile Kontext beim nächsten Session-Start sagt das — statt dass ein unverifizierter Status stillschweigend weitergilt.
- ◆
Template-Vertrag
Prüft beim Schreiben die Strukturen, die aspark-graph später parst, und meldet Formabweichungen als Kontext — nie als Block. Im ersten Lauf über 44 eigene Artefakte fand er genau eine echte: eine AC-ID, die für jede Graph-Abfrage unsichtbar war.
- ◆
Schweigt und scheitert offen
Kein .spark/-Verzeichnis, keine Ausgabe. Defektes Payload, kaputte Konfiguration, unerwarteter Fehler — die Aktion läuft trotzdem durch. Kein Netz, kein LLM, keine Abhängigkeit: nur Standardbibliothek, unter tausend Zeilen, in einer Sitzung prüfbar.
Ehrlicher Status: v0.1.0 ist die erste vollständige Version — alle sechs Meilensteine gebaut, 142 Tests, über 22 reale Gate-Artefakte ohne einen einzigen Fehlalarm nachgespielt. Was fehlt, ist Feldevidenz, nicht Mechanik: ein vollständiger Feature-Loop auf einem fremden Projekt steht noch aus. Nur POSIX (macOS, Linux), Python 3.11+, rund 50 ms pro Write/Edit — auch in Repos ganz ohne aSPARK.
Jedes Produkt hat eine Verantwortung und stabile Schnittstellen. Eine Schwäche in einem darf nie Änderungen in einem anderen erzwingen.
Passt das zu Ihrem Lieferprozess?
Beginnen Sie mit Core auf einem Pilotprojekt. Workflow, Wissensgraph und Policy-Packs liegen offen auf GitHub.