アーキテクチャ概要
DispatchAtlas は、dispatchatlas Python 名前空間を共有する 5 つの焦点を絞った
配布パッケージと、ルート集約パッケージから成るワークスペースです。アーキテクチャは
ドメイン契約を中心に保ち、ベンチマーク生成、求解、キャンペーン実行、分析、ドキュメント、
リリース自動化を外側へ移します。すべての依存は内側、dispatchatlas.core に向かって
指します——ピアパッケージ間で横方向に向かうことも、ツールへ外向きに向かうことも決して
ありません。
🧭 依存方向
dispatchatlas.lab
/ | \
v | v
dispatchatlas.bench | dispatchatlas.solve
\ | /
v v v
dispatchatlas.core
^
|
dispatchatlas.analytica
(安定したキャンペーンマニフェストもデータとして読む)各矢印は「インポートする」を意味します。すべての矢印は dispatchatlas.core を指し、
外向きや横向きに指す矢印はありません。dispatchatlas.analytica は意図的に
dispatchatlas.lab への矢印を持ちません: それは完了したキャンペーンがディスク上に
残す JSON マニフェストを消費し、キャンペーンランタイムそのものは消費しません。
各パッケージのマニフェスト(packages/*/pyproject.toml)と、各パッケージの src/
ツリー内のインポート文から導出。2026-06-10 に検証。
| レイヤー | パッケージ | 責務 | インポート可 | インポート不可 |
|---|---|---|---|---|
| ドメイン | dispatchatlas.core | スケジューリング契約、検証、来歴、シード、シリアライズ、プロトコル。 | 標準ライブラリと承認された軽量依存のみ。 | 他のあらゆる DispatchAtlas パッケージ。 |
| ベンチマーク | dispatchatlas.bench | ベンチマーク分類、ジェネレーター、カタログ、具体化、引用エビデンス。 | dispatchatlas.core。 | ソルバー・キャンペーン・分析・サイトランタイムのコード。 |
| ソルバー | dispatchatlas.solve | ソルバーメタデータ、レジストリ、ベースライン、メタヒューリスティクス、オペレーター、オプションアダプター。 | dispatchatlas.core。 | ベンチマークジェネレーター、キャンペーンランナー、分析エクスポート、サイトランタイムのコード。 |
| キャンペーン | dispatchatlas.lab | 再現可能なキャンペーン構成、予算、チェックポイント、リトライ、実行。 | dispatchatlas.core、dispatchatlas.bench、dispatchatlas.solve。 | 分析パッケージまたはサイトランタイム内部。 |
| 分析 | dispatchatlas.analytica | 統計、開示フィルタリング、エビデンスバンドル、ポータルデータセット、CLI。 | dispatchatlas.core、加えて JSON データとして読む安定したキャンペーンマニフェスト。 | ライブキャンペーン実行またはサイトランタイム内部。 |
| 集約 | dispatchatlas | ルート配布; バージョン面を公開し、all エクストラを通じて 5 つのパッケージをピン留め。 | ランタイムでは何も; 合成はエクストラを通じて起こる。 | — |
📦 パッケージの役割
dispatchatlas.coreは内側の境界です。共有スケジューリング語彙(ProblemSpec、Schedule、目的、制約)、検証、来歴とシード系譜、正典シリアライズ、そしてすべての 外側パッケージが実装するプロトコル(BenchmarkProvider、Solver、ExperimentRunner、ResultRepository、DisclosurePolicy、AnalysisExporter)を 定義します。そのマニフェストは依存ゼロを宣言するため、ドメインはどこでもインポート 可能なまま保たれます。dispatchatlas.benchはドメイン語彙をベンチマークエビデンスに変えます: ジェネレーターファミリー、ドメインプロファイル、スモークと完全カタログ、特性評価 メトリクス、そして各ファミリーの仮定がどこから来るかを記録する引用マトリクス。dispatchatlas.solveはスケジュールを生み出すすべてを所有します: ソルバー メタデータと能力記述子、ソルバーレジストリ、構築的ベースライン、順列メタヒューリス ティクス、NDSO ファミリー、スケジューリングオペレーター、そしてエクストラの背後に 保持されるオプションの厳密ソルバーアダプター。dispatchatlas.labはベンチマークとソルバーを、チェックポイント付き・予算付き・ 環境スタンプ付きのキャンペーンに、決定的な実行識別子とともに合成し、すべての ファミリーをすべてのソルバーと突き合わせる適用可能性マトリクスを所有します。 そのマトリクスゆえに、core、bench、solve を一緒に見ることを許された唯一の パッケージです。それらを組み合わせることこそ、それが存在する理由だからです。dispatchatlas.analyticaは完了したキャンペーンディレクトリ——checkpoint.json、plan.json、environment.json、結果行——を読み、統計要約、エビデンスバンドル、 レポートの足場、ポータルデータセットを生成します。マニフェストベースの入力が、記録 された成果物だけから分析を再現可能に保ちます。dispatchatlas(ルート)は 5 つのパッケージをワンコマンドインストールのために 集約し、公開バージョン面を担います。
🔒 なぜ方向が強制されるか
内向きのみの方向は、慣習ではなくテスト済みの契約です:
- テスト容易性。 core はソルバー・キャンペーン・分析の機構を一切インストールせずに 問題とスケジュールを検証するため、ドメインテストは標準ライブラリのみのインポートで 走ります。bench と solve は互いを引き込まずに core 契約に対してテストします。
- 再現性。
dispatchatlas.analyticaがライブキャンペーンランタイムではなく記録 された マニフェストを消費するため、完了したいかなるキャンペーンもその成果物から バイト単位で再分析できます。 - 独立リリース。 各パッケージは別々にビルドしバージョンをピン留めします; ソルバーの 変更がベンチマークや分析の挙動を静かに変えることはできません。
インポート境界テストは tests/architecture/ にあります:
test_import_boundaries.py は ast モジュールで各パッケージのソースファイルを走査し、
上記の禁止インポート表を越えるいかなるインポートでも失敗し、test_workspace_privacy.py
は私的研究成果物を守ります。その方向を正典として定めているのはルート AGENTS.md
(§ Package Boundary Summary) であり、CONTRIBUTING.md がそれを貢献者向けに
引き継ぎます。本ページはその上に立つ詳細解説であり、すべての pull request はこれに
照らしてレビューされます。
🌐 公開面
site/ 下のドキュメントサイトは承認されたエクスポートデータ——開示フィルタ済みの
ポータルバンドルとエビデンス要約——を消費します。ライブキャンペーンを実行せず、開示
ポリシーを迂回しません。
🛠️ ガバナンス面
tools/ と CI はすべてのパッケージコード、ビルド成果物、レポートを検査できます。外側
から品質をゲートし、製品パッケージのランタイム依存になることは決してありません。