再現可能なキャンペーン
experiments/ ワークスペースは、キャンペーンが生み出すすべてと、それを再現するために
必要なすべてを保持します。分離は厳格です: レシピは追跡され、出力はローカル。
キャンペーン構成とランナースクリプトはソース管理に置かれ、すべての重い出力——生成された
ベンチマーク、実行記録、ログ、チェックポイント、エビデンスバンドル、環境スナップショット
——はそれを生み出したマシン上に留まり、必要に応じてレシピから再生成されます。
🗂️ レイアウト
| パス | 追跡 | 保持 |
|---|---|---|
configs/ | はい | キャンペーン構成——完全なレシピ: ソルバー名簿、ベンチマークスイート、実行回数、予算、マスターシード。 |
scripts/ | はい | キャンペーンと分析のランナー(例: run_smoke_pilot.py)。 |
benchmarks/ | いいえ | 具体化されたベンチマークインスタンス。 |
results/ | いいえ | 実行記録、results/{campaign_id}/{solver_id}/{benchmark_id}/run_{idx}.json に。 |
logs/ | いいえ | 実行ログ、logs/{campaign_id}_{YYYYMMDD_HHMMSS}.log に。 |
.checkpoints/ | いいえ | 再開可能なキャンペーン状態、.checkpoints/{campaign_id}.json に、構成ハッシュで守られる。 |
evidence-bundles/ | いいえ | キュレーションされ開示層別のエクスポート、evidence-bundles/{campaign_id}-{tier}/ に。 |
ENVIRONMENT.md | いいえ | 実行時に捕捉されたホスト・OS・Python・コミットのスナップショット。 |
出力ディレクトリはローカルに存在し、欠けているときはキャンペーンランナーが自動で再作成 します。その下のものがステージングされることは決してありません。
🧱 2 つの層、1 つの真実の源
- 再現性層(粒度細かい)。 各実行は 1 つの JSON 記録で、
results/{campaign_id}/{solver_id}/{benchmark_id}/run_{idx}.jsonにあります。パス 自体がインデックスです——キャンペーン、次にソルバー、次にベンチマーク、次に複製—— ので、エビデンスの任意のスライスがデータベースなしでアドレス可能です。記録はタイミング、 収束、解、ソルバー努力の第一級フィールドを持ち、分析的なものが自由形式のメモに隠れる ことはありません。 - キュレーション層(層別)。
evidence-bundles/{campaign_id}-{tier}/は、実行 記録から派生した開示層別のエクスポートを保持します。層 id は固定の公開安全な語彙 ——core、speed、quality、platform——に由来し、バンドルは常に実行レベルの記録 から派生し、独立した真実の源では決してありません。
🔁 再現性契約
- 各キャンペーンは 1 つのマスターシードを宣言します。各実行のシードはそれと実行の位置 から決定的に派生します——同じ構成、同じシード、同じ記録、ビット単位で。
.checkpoints/{campaign_id}.jsonは構成ハッシュを記録します。変更のない構成は チェックポイントから再開し完了済み実行をスキップします。いかなる構成変更も チェックポイントを完全に無効化します。ENVIRONMENT.mdは実行時にホスト、オペレーティングシステム、Python、リポジトリ コミットをスナップショットするため、すべての結果がそれを生み出した正確なコードと マシンへ追跡可能です。- ログは実行ごとに追記専用です。
これらの実践——実行ごとのシード、構成と環境の捕捉により結果をそのレシピから再生成できる こと——は、計算実験を文書化し再現するための認知された標準に従います (ACM Artifact Review and Badging, Version 1.1, 2020; Gundersen & Kjensmo 2018)。
再現性マニフェストはまた、導出された検出力ステートメントで 30 回実行の下限を正当化 します: 下限において、両側 0.05 水準と 0.80 検出力で、ペア設計は ARE 調整済み Wilcoxon 近似の下で約 0.523 以上の標準化効果を検出します(Noether 1987; 枠組み: Campelo and Takahashi 2019)。この文はレンダリング時に下限から再計算されるため、それが正当化する 下限から決してドリフトできません。2 つのさらなるプロトコル記述子がその傍らに随伴します: 評価予算がインスタンスサイズとともにどう増加するかを記録する予算スケーリング項目 (Vallada, Ruiz, Framiñan 2015 のサイズスケールプロトコルで、ラボの公正比較マニフェスト が評価スケール規則またはキャンペーン固定として記録します)と、すべての比較キャンペーンが 宣言するアルゴリズムごとの等しいチューニング予算を携えるチューニング同等性項目 (LaTorre, Molina, Osaba, Poyatos, Del Ser, Herrera 2021); 宣言されていない同等性は undeclared として誠実にレンダリングされます。
🏃 キャンペーンがワークスペースへどう書き込むか
-
configs/下でキャンペーン構成を作成または調整します(smoke-pilot.jsonが追跡 される出発点)。 -
キャンペーンランナーを通じて実行します——チュートリアル のように プログラム的に、追跡されたレシピスクリプト (
uv run python experiments/scripts/run_smoke_pilot.py)経由で、または コマンドラインインターフェースを通じて:uv run dispatchatlas-lab run --config experiments/configs/smoke-pilot.json -
ランナーは構成を決定的な計画へ検証し、
results/{campaign_id}/plan.jsonとenvironment.jsonを書き、その後、完了した各実行に加え失敗した試行があればそれも、 コンテンツハッシュされた記録を 1 つずつ永続化します。 -
results/下で実行記録を検査し、同じ構成から再開・リプレイ・再実行します。同じ構成を 再実行すると同じ記録がビット単位で再現されます。変更された構成はチェックポイントを 静かに再利用するのではなく無効化します。
キャンペーンエンジン ページは、検証、ドライラン予算、実行モード、 リトライ、再開、リプレイ検証を完全に文書化します。
📦 実行記録からエビデンスバンドルへ
エクスポート経路は、完了したキャンペーンディレクトリを
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 は同じ経路を規模で駆動し、記録された 1 つの構成から
すべての層のベンチマークカタログ、キャンペーン、分析、バンドルを構築します。
エビデンスバンドル ページは層を記述し、
分析エクスポート は統計内容を記述します。
🔒 公開安全の境界
公開ページはこのワークスペースを直接読みません: ドキュメントサイトと 結果ポータル は、キュレーション層から生成された、コミット済みで 開示フィルタ済みのエクスポートのみを消費します。ワークスペース内の私的プログラム台帳は ソース管理から無視され、公開面に到達することは決してありません。