Lewati ke konten
DispatchAtlas
Cari

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

PathDilacakMenyimpan
configs/yaKonfigurasi kampanye — resep lengkap: daftar solver, suite benchmark, jumlah eksekusi, anggaran, dan benih induk.
scripts/yaPelaksana kampanye dan analisis (misalnya run_smoke_pilot.py).
benchmarks/tidakInstans benchmark yang dimaterialisasi.
results/tidakCatatan eksekusi di results/{campaign_id}/{solver_id}/{benchmark_id}/run_{idx}.json.
logs/tidakLog eksekusi di logs/{campaign_id}_{YYYYMMDD_HHMMSS}.log.
.checkpoints/tidakStatus kampanye yang dapat dilanjutkan di .checkpoints/{campaign_id}.json, dijaga oleh hash konfigurasi.
evidence-bundles/tidakEkspor terkurasi dan berjenjang-pengungkapan di evidence-bundles/{campaign_id}-{tier}/.
ENVIRONMENT.mdtidakSnapshot 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

  1. 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.
  2. 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}.json mencatat hash konfigurasi. Konfigurasi yang tidak berubah melanjutkan dari titik pemeriksaan dan melewati eksekusi yang selesai; perubahan konfigurasi apa pun membatalkan titik pemeriksaan sepenuhnya.
  • ENVIRONMENT.md mengambil 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

  1. Buat atau sesuaikan konfigurasi kampanye di bawah configs/ (smoke-pilot.json adalah titik awal yang dilacak).

  2. 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
  3. Pelaksana memvalidasi konfigurasi menjadi rencana deterministik, menulis results/{campaign_id}/plan.json dan environment.json, lalu mempertahankan satu catatan ber-hash-konten per eksekusi yang selesai ditambah percobaan yang gagal.

  4. 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 core

tools/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.