Zum Inhalt springen

Modul XVII — Agenten-Simulations- & Test-Sandbox

Modul XVII ist die Test-Sandbox: Sie führt ein Agenten-Szenario in einer isolierten, ephemeren Umgebung aus, gibt eine historische Session deterministisch wieder und vergleicht zwei Varianten vor einem Deployment. Es ist das Geschwistermodul von Modul XII (Evals) — XVII führt in Isolation aus und produziert Outputs, XII misst deren Qualität — und die beiden sind entkoppelt: keines importiert das andere. Diese Seite ist die Referenz dafür, was die Sandbox heute tut, und ihre ehrlichen Grenzen.

Die Sandbox katalogisiert vom Betreiber verfasste Szenarien: eine Abfolge von Schritt-Inputs plus die gemockten Antworten der Tools und Ressourcen, die ein Lauf berühren darf. Ein Szenario ist eine synthetische Fixture — keine Secrets, keine Produktions-Handles — vor dem Persistieren geclampt. Drei Abläufe laufen darauf:

  • Szenario-Simulation — die Schritte eines Szenarios gegen seine Mocks ausführen und Outputs pro Schritt erzeugen (optional gegen eine Evals-Suite bewertet).
  • Replay — die Input-Zeitleiste einer historischen Session rekonstruieren und sie deterministisch gegen Mocks erneut ausführen, sodass derselbe Input denselben Output ergibt.
  • Pre-/Post-Deploy-Vergleich — das gleiche Szenario gegen eine Baseline und eine Kandidaten-Variante ausführen, beide bewerten und ein Verdikt (improved / regressed / unchanged / inconclusive) mit dem Delta festhalten.

Das Modul besitzt vier Entitäten: ein veränderliches scenario, einen veränderlichen run (running → terminal), einen append-only output pro Schritt und einen append-only Pre-/Post-Deploy-comparison. Jeder Lauf hält fest, welcher Runner ihn ausgeführt hat, ob dieser Runner isolated war, ob der ephemere Zustand destroyed wurde, die Zählungen pro Schritt und — falls ein Scorer verdrahtet war — die Suite, den Score und das Pass-Verdikt.

Isolation ist eine Eigenschaft der Leitung, pro Lauf attestiert, keine Behauptung. Der standardmäßige In-Process-Runner ist isoliert per Konstruktion: Er erhält nur die Step-and-Mock-Spezifikation und hält kein Handle zum Store, zum Netzwerk oder zu irgendeinem Secret; ein Schritt, der eine in den Mocks fehlende Ressource anfragt, ergibt einen deterministischen Mock-Miss-Marker und erreicht nie eine reale Ressource; der Zustand lebt im Aufruf und wird beim Rücksprung verworfen, sodass der Lauf destroyed festhält. Bei Bereitstellung durch den Betreiber steht eine OS-Level-Runtime hinter derselben Schnittstelle — eine ephemere, gehärtete, egress-kontrollierte Instanz, deren Backend (gVisor oder Firecracker-microVM) per Policy gewählt und durch Preflight gegated wird. Jeder Lauf hält das reale Backend und sein isolated-Flag fest, sodass ein degradiertes oder portables Backend sichtbar und auditierbar ist, nie versteckt.

Die Sandbox emittiert nicht auf dem Event-Bus; sie produziert persistierte Beweise, die andere Module lesen, ohne an sie gekoppelt zu sein. Ihre Outputs werden von Modul XII über einen nur im Composition-Root verdrahteten Adapter bewertet — die beiden Geschwister teilen sich einen dünnen Port-Vertrag, keinen Import. Ihr Pre-/Post-Deploy-Vergleich ist der Entscheidungsbeweis, den das Deployment-Modul liest, um eine Promotion zu gaten, und er speist die Regressions-Baseline, die XII verfolgt. Das Starten eines Laufs, eines Replays oder eines Vergleichs ist eine privilegierte, mandantengebundene, auditierte Aktion (Editor und höher zum Ausführen; der Deploy-Vergleich ist eine Admin-Entscheidung).