ソース・テスト・マイグレーション・データセットの定義を追加・移動するときは本ルールに従うこと.設計の背景は SPEC_01 アーキテクチャ設計を参照する(本ルールは配置規則のみを定める).
src/tiasdata/ ├── __init__.py # 公開 API(load・open_bundle・Bundle・Catalog)を再 export する ├── config.py # 設定ファイルの読み込み・検証 ├── catalog/ # 目録(SQLite)の接続・マイグレーションの適用・各表の操作(SQL はここだけ) │ └── migrations/ # スキーマ変更(catalog/・identity/ の 2 系列.NNNN_<内容>.sql) ├── store.py # ストア(ハッシュ・コピー・照合) ├── kinds/ # ファイルの種類・所見の種類の値の型 ├── importers/ # 取り込み元の形ごとの読み取り(1 つの形 = 1 モジュール) ├── datasets.py # データセットの定義の評価・版の作成 ├── manifest.py # manifest.csv の生成・ハッシュ等の純関数(他の tiasdata のモジュールを import しない) ├── bundle.py # バンドルの読み込み・検証(目録に依存しない) ├── export.py # バンドルの書き出し ├── deliver.py # 計算サーバへの受け渡し(scp・ssh) └── cli.py # CLI エントリポイント datasets/ # データセットの定義(<名前>.toml) tests/ # src/tiasdata/ の構造をミラーする
cli → datasets・bundle・deliver・importers → catalog・store・kinds・config の一方向を保つ.下位から上位を import しないbundle.py(load・open_bundle)は catalog・store・config・export・datasets を import しない(目録の無い計算サーバで使うため).書き出しは export.py に置く.読み込み側と目録側で共有する純関数(ハッシュ・名前の形・検証エラーの整形)は manifest.py に置く.import tiasdata で読み込まれるモジュールを増やさない__init__.py で export したものだけ: 使う側は tiasdata.<名前> で使う.内部モジュールを直接 import させないimporters/ にモジュールを追加し,設定ファイルの importer の名前から選べるようにする.既存の importer に分岐を足さないsrc/tiasdata/catalog/migrations/catalog/ に kinds の行を追加する SQL と,kinds/ に値の型を追加する(SPEC_02「拡張の例」)store・deliver・catalog に閉じ込め,定義の評価・manifest の行の組み立て・照合の判定は入力 → 出力の純関数として書く(テスト容易性のため).gitignore は保険.ENV_02「臨床データの取り扱い」)tests/ は src/tiasdata/ の構造をミラーする(詳細は .claude/rules/testing.md)