Kampanye yang dapat direproduksi
Ruang kerja experiments/ menyimpan semua yang dihasilkan sebuah kampanye dan
semua yang dibutuhkan untuk mereproduksinya. Pemisahannya ketat: resep dilacak,
keluaran bersifat lokal. Konfigurasi kampanye dan skrip pelaksana berada di
kontrol versi; setiap keluaran berat — benchmark yang dihasilkan, catatan eksekusi,
log, titik pemeriksaan, paket bukti, dan snapshot lingkungan — tetap di mesin yang
memproduksinya dan diregenerasi sesuai permintaan dari resep.
🗂️ Tata letak
| Path | Dilacak | Menyimpan |
|---|---|---|
configs/ | ya | Konfigurasi kampanye — resep lengkap: daftar solver, suite benchmark, jumlah eksekusi, anggaran, dan benih induk. |
scripts/ | ya | Pelaksana kampanye dan analisis (misalnya run_smoke_pilot.py). |
benchmarks/ | tidak | Instans benchmark yang dimaterialisasi. |
results/ | tidak | Catatan eksekusi di results/{campaign_id}/{solver_id}/{benchmark_id}/run_{idx}.json. |
logs/ | tidak | Log eksekusi di logs/{campaign_id}_{YYYYMMDD_HHMMSS}.log. |
.checkpoints/ | tidak | Status kampanye yang dapat dilanjutkan di .checkpoints/{campaign_id}.json, dijaga oleh hash konfigurasi. |
evidence-bundles/ | tidak | Ekspor terkurasi dan berjenjang-pengungkapan di evidence-bundles/{campaign_id}-{tier}/. |
ENVIRONMENT.md | tidak | Snapshot host, OS, Python, dan commit yang ditangkap saat eksekusi. |
Direktori keluaran ada secara lokal dan dibuat ulang otomatis oleh pelaksana kampanye saat tidak ada; tidak ada apa pun di bawahnya yang pernah di-stage.
🧱 Dua lapisan, satu sumber kebenaran
- Lapisan reprodusibilitas (granular). Setiap eksekusi adalah satu catatan JSON
di
results/{campaign_id}/{solver_id}/{benchmark_id}/run_{idx}.json. Path itu sendiri adalah indeks — kampanye, lalu solver, lalu benchmark, lalu replika — sehingga irisan bukti mana pun dapat dialamati tanpa basis data. Catatan membawa bidang kelas-utama untuk waktu, konvergensi, solusi, dan upaya solver; tidak ada yang analitis bersembunyi dalam catatan bentuk-bebas. - Lapisan kurasi (berjenjang).
evidence-bundles/{campaign_id}-{tier}/menyimpan ekspor berjenjang-pengungkapan yang berasal dari catatan eksekusi. Pengenal tingkat berasal dari kosakata tetap yang aman-untuk-publik —core,speed,quality,platform— dan sebuah paket selalu berasal dari catatan tingkat-eksekusi, tidak pernah sumber kebenaran independen.
🔁 Kontrak reprodusibilitas
- Setiap kampanye mendeklarasikan satu benih induk; benih tiap eksekusi diturunkan secara deterministik darinya dan posisi eksekusi — konfigurasi sama, benih sama, catatan sama, bit demi bit.
.checkpoints/{campaign_id}.jsonmencatat hash konfigurasi. Konfigurasi yang tidak berubah melanjutkan dari titik pemeriksaan dan melewati eksekusi yang selesai; perubahan konfigurasi apa pun membatalkan titik pemeriksaan sepenuhnya.ENVIRONMENT.mdmengambil snapshot host, sistem operasi, Python, dan commit repositori saat eksekusi, sehingga setiap hasil dapat dilacak hingga kode dan mesin persis yang memproduksinya.- Log bersifat hanya-tambah per eksekusi.
Praktik-praktik ini — benih per eksekusi, penangkapan konfigurasi dan lingkungan sehingga hasil dapat diregenerasi dari resepnya — mengikuti standar yang diakui untuk mendokumentasikan dan mereproduksi eksperimen komputasi (ACM Artifact Review and Badging, Version 1.1, 2020; Gundersen & Kjensmo 2018).
Manifes reprodusibilitas juga membenarkan lantai 30-eksekusi dengan pernyataan daya turunan: pada lantai, dengan tingkat dua-sisi 0.05 dan daya 0.80, rancangan berpasangan mendeteksi efek terstandardisasi sekitar 0.523 atau lebih besar di bawah aproksimasi Wilcoxon teradjustasi-ARE (Noether 1987; kerangka: Campelo dan Takahashi 2019). Kalimat itu dihitung ulang dari lantai pada waktu-render, sehingga tidak pernah dapat menyimpang dari lantai yang dibenarkannya. Dua deskriptor protokol lebih lanjut berjalan di sampingnya: sebuah entri penskalaan-anggaran yang mencatat bagaimana anggaran evaluasi tumbuh seiring ukuran instans (protokol berskala-ukuran dari Vallada, Ruiz, dan Framiñan 2015, direkam oleh manifes perbandingan-adil lab sebagai aturan berskala-evaluasi atau sebagai terpaku-kampanye), dan sebuah entri paritas-penyetelan yang membawa anggaran penyetelan setara per-algoritma yang dideklarasikan setiap kampanye komparatif (LaTorre, Molina, Osaba, Poyatos, Del Ser, dan Herrera 2021); paritas yang tak-dideklarasikan dirender secara jujur sebagai tak-dideklarasikan.
🏃 Bagaimana kampanye menulis ke ruang kerja
-
Buat atau sesuaikan konfigurasi kampanye di bawah
configs/(smoke-pilot.jsonadalah titik awal yang dilacak). -
Jalankan melalui pelaksana kampanye — secara programatik seperti di tutorial, via skrip resep yang dilacak (
uv run python experiments/scripts/run_smoke_pilot.py), atau melalui antarmuka baris perintah:uv run dispatchatlas-lab run --config experiments/configs/smoke-pilot.json -
Pelaksana memvalidasi konfigurasi menjadi rencana deterministik, menulis
results/{campaign_id}/plan.jsondanenvironment.json, lalu mempertahankan satu catatan ber-hash-konten per eksekusi yang selesai ditambah percobaan yang gagal. -
Inspeksi catatan eksekusi di bawah
results/dan lanjutkan, putar ulang, atau jalankan ulang dari konfigurasi yang sama. Menjalankan ulang konfigurasi yang sama mereproduksi catatan yang sama bit demi bit; konfigurasi yang berubah membatalkan titik pemeriksaan alih-alih menggunakannya kembali secara diam-diam.
Halaman mesin kampanye mendokumentasikan validasi, anggaran dry-run, mode eksekusi, percobaan ulang, pelanjutan, dan verifikasi pemutaran-ulang secara penuh.
📦 Dari catatan eksekusi ke paket bukti
Jalur ekspor mengubah direktori kampanye yang selesai menjadi paket terkurasi di
bawah 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 menggerakkan jalur yang sama pada skala,
membangun katalog benchmark, kampanye, analisis, dan paket untuk setiap tingkat dari
satu konfigurasi yang terekam. Halaman paket bukti
menjelaskan tingkatannya; ekspor analisis menjelaskan
konten statistiknya.
🔒 Batas aman-untuk-publik
Halaman publik tidak pernah membaca ruang kerja ini secara langsung: situs dokumentasi dan portal hasil hanya mengonsumsi ekspor yang telah di-commit dan difilter pengungkapan yang diproduksi dari lapisan terkurasi. Buku besar program privat di ruang kerja diabaikan oleh kontrol versi dan tidak pernah mencapai permukaan publik.