Reproduzierbare Kampagnen
Der experiments/-Arbeitsbereich enthält alles, was eine Kampagne erzeugt, und
alles, was zur Reproduktion nötig ist. Die Trennung ist strikt: Rezepte werden
verfolgt, Ausgaben sind lokal. Kampagnenkonfigurationen und Runner-Skripte leben
in der Versionskontrolle; jede schwere Ausgabe — generierte Benchmarks,
Laufdatensätze, Logs, Prüfpunkte, Belegpakete und der Umgebungs-Schnappschuss —
bleibt auf der Maschine, die sie erzeugt hat, und wird bei Bedarf aus dem Rezept
neu erzeugt.
🗂️ Layout
| Pfad | Verfolgt | Enthält |
|---|---|---|
configs/ | ja | Kampagnenkonfigurationen — das vollständige Rezept: Solver-Aufstellung, Benchmark-Suite, Laufanzahlen, Budgets und der Root-Seed. |
scripts/ | ja | Kampagnen- und Analyse-Runner (zum Beispiel run_smoke_pilot.py). |
benchmarks/ | nein | Materialisierte Benchmark-Instanzen. |
results/ | nein | Laufdatensätze unter results/{campaign_id}/{solver_id}/{benchmark_id}/run_{idx}.json. |
logs/ | nein | Ausführungslogs unter logs/{campaign_id}_{YYYYMMDD_HHMMSS}.log. |
.checkpoints/ | nein | Fortsetzbarer Kampagnenzustand unter .checkpoints/{campaign_id}.json, durch einen Konfigurations-Hash geschützt. |
evidence-bundles/ | nein | Kuratierte, offenlegungsgestufte Exporte unter evidence-bundles/{campaign_id}-{tier}/. |
ENVIRONMENT.md | nein | Host-, OS-, Python- und Commit-Schnappschuss, zur Laufzeit erfasst. |
Ausgabeverzeichnisse existieren lokal und werden vom Kampagnen-Runner automatisch neu erstellt, wenn sie fehlen; nichts unter ihnen wird je zur Übernahme bereit gestellt.
🧱 Zwei Schichten, eine Wahrheitsquelle
- Reproduzierbarkeitsschicht (granular). Jeder Lauf ist ein JSON-Datensatz
unter
results/{campaign_id}/{solver_id}/{benchmark_id}/run_{idx}.json. Der Pfad selbst ist der Index — Kampagne, dann Solver, dann Benchmark, dann Replikat — so ist jeder Ausschnitt der Belege ohne Datenbank adressierbar. Datensätze tragen erstklassige Felder für Timing, Konvergenz, Lösung und Solver-Aufwand; nichts Analytisches versteckt sich in freiformigen Notizen. - Kurationsschicht (gestuft).
evidence-bundles/{campaign_id}-{tier}/enthält die offenlegungsgestuften Exporte, die aus den Laufdatensätzen abgeleitet sind. Die Stufen-Kennungen stammen aus dem festen, öffentlich-sicheren Vokabular —core,speed,quality,platform— und ein Paket wird stets aus den Datensätzen auf Laufebene abgeleitet, nie eine unabhängige Wahrheitsquelle.
🔁 Reproduzierbarkeitsvertrag
- Jede Kampagne deklariert einen Root-Seed; der Seed jedes Laufs leitet sich deterministisch aus ihm und der Position des Laufs ab — gleiche Konfiguration, gleiche Seeds, gleiche Datensätze, Bit für Bit.
.checkpoints/{campaign_id}.jsonerfasst den Konfigurations-Hash. Eine unveränderte Konfiguration setzt vom Prüfpunkt fort und überspringt abgeschlossene Läufe; jede Konfigurationsänderung macht den Prüfpunkt vollständig ungültig.ENVIRONMENT.mdschnappschießt Host, Betriebssystem, Python und den Repository-Commit zur Ausführungszeit, sodass jedes Ergebnis zum exakten Code und zur Maschine, die es erzeugt haben, rückverfolgbar ist.- Logs sind je Ausführung nur-anhängend.
Diese Praktiken — Seed pro Lauf, Erfassung von Konfiguration und Umgebung, damit ein Ergebnis aus seinem Rezept neu erzeugt werden kann — folgen anerkannten Standards zur Dokumentation und Reproduktion rechnerischer Experimente (ACM Artifact Review and Badging, Version 1.1, 2020; Gundersen & Kjensmo 2018).
Das Reproduzierbarkeitsmanifest rechtfertigt den 30-Läufe-Boden zudem mit einer abgeleiteten Aussage zur Teststärke: am Boden, bei einem zweiseitigen 0,05-Niveau und 0,80 Teststärke, detektiert das gepaarte Design standardisierte Effekte von etwa 0,523 oder größer unter der ARE-angepassten Wilcoxon-Approximation (Noether 1987; Rahmenwerk: Campelo und Takahashi 2019). Der Satz wird zur Renderzeit aus dem Boden neu berechnet, sodass er nie vom Boden abdriften kann, den er rechtfertigt. Zwei weitere Protokolldeskriptoren reisen daneben: ein Budget-Skalierungseintrag, der aufzeichnet, wie das Auswertungsbudget mit der Instanzgröße wächst (das größenskalierte Protokoll von Vallada, Ruiz und Framiñan 2015, vom Fair-Comparison-Manifest des Labors als auswertungsskalierte Regel oder als kampagnenfest aufgezeichnet), und ein Tuning-Paritäts-Eintrag, der das gleiche Tuning-Budget je Algorithmus trägt, das jede vergleichende Kampagne deklariert (LaTorre, Molina, Osaba, Poyatos, Del Ser und Herrera 2021); eine undeklarierte Parität rendert ehrlich als undeklariert.
🏃 Wie eine Kampagne in den Arbeitsbereich schreibt
-
Erstelle oder passe eine Kampagnenkonfiguration unter
configs/an (smoke-pilot.jsonist der verfolgte Ausgangspunkt). -
Führe sie über den Kampagnen-Runner aus — programmatisch wie in den Tutorials, über ein verfolgtes Rezept-Skript (
uv run python experiments/scripts/run_smoke_pilot.py), oder über die Befehlszeilenschnittstelle:uv run dispatchatlas-lab run --config experiments/configs/smoke-pilot.json -
Der Runner validiert die Konfiguration zu einem deterministischen Plan, schreibt
results/{campaign_id}/plan.jsonundenvironment.json, dann persistiert er einen inhaltsgehashten Datensatz pro abgeschlossenem Lauf plus etwaige fehlgeschlagene Versuche. -
Inspiziere die Laufdatensätze unter
results/und setze fort, spiele wieder ab oder führe aus derselben Konfiguration erneut aus. Die gleiche Konfiguration erneut auszuführen reproduziert die gleichen Datensätze Bit für Bit; eine geänderte Konfiguration macht den Prüfpunkt ungültig, statt ihn still wiederzuverwenden.
Die Seite der Kampagnen-Engine dokumentiert Validierung, Trockenlauf-Budgets, Ausführungsmodi, Wiederholungen, Fortsetzung und Replay-Verifikation vollständig.
📦 Von Laufdatensätzen zu Belegpaketen
Der Exportpfad verwandelt ein abgeschlossenes Kampagnenverzeichnis in ein
kuratiertes Paket unter evidence-bundles/{campaign_id}-{tier}/:
uv run dispatchatlas export `
--campaign-dir .\experiments\results\smoke-pilot `
--target-dir .\experiments `
--authorized-output-root .\experiments `
--tier coretools/build_campaign_evidence.py treibt denselben Pfad im großen Maßstab und baut
Benchmark-Kataloge, Kampagnen, Analysen und Pakete für jede Stufe aus einer
aufgezeichneten Konfiguration. Die Seite Belegpakete
beschreibt die Stufen; Analyse-Exporte beschreibt den
statistischen Inhalt.
🔒 Öffentlich-sichere Grenze
Öffentliche Seiten lesen diesen Arbeitsbereich nie direkt: die Dokumentations-Website und das Ergebnisportal konsumieren nur committete, nach Offenlegung gefilterte Exporte, die aus der kuratierten Schicht erzeugt wurden. Private Programmaufzeichnungen im Arbeitsbereich werden von der Versionskontrolle ignoriert und erreichen nie eine öffentliche Oberfläche.