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