ソース・テスト・スクリプトを追加・移動するときは本ルールに従い,責務ごとのサブパッケージ配置を保つこと.設計の背景は docs/04_SPEC/SPEC_01_アーキテクチャ設計.md を参照する(本ルールは配置規則のみを定める).
src/sm_tias_lightsim/ ├── __init__.py ├── uniformity.py # Rec.709 輝度変換 + CoV/std/max-min(核計算) ├── cli/ # CLI エントリポイント(render / evaluate / visualize) ├── scene/ # YAML → Mitsuba scene(schema / builder / lights / materials / sensors) ├── geometry/ # STL 読込・単位変換・メッシュ分割(loader / transforms / subdivide) ├── render/ # Mitsuba 実行と出力(runner / output) ├── evaluation/ # 評価パイプライン(roi / zones / radial / oetf / normalize / shape_metrics / visualize …) ├── visualize/ # 3D 可視化(baker / projection / viewer) └── runtime/ # 実行時ヘルパ(llvm_init 等) tests/ # src のサブパッケージ構造をミラー(testing.md 参照) scripts/ # 単発の調査・キャリブ・図生成スクリプト(パッケージ外) configs/ # シーン YAML・評価 YAML・メッシュ等(コード外の設定・入力)
cli → 各機能パッケージ → 核計算(uniformity 等)の一方向を保つ.核計算モジュールから上位(cli・visualize)を import しない.render・cli・output 等の縁に寄せ,evaluation・geometry・visualize/projection 等は入力→出力の純関数として書く(テスト容易性のため.testing.md の「核計算は必ず単体テスト」と対応).tests/ は src/sm_tias_lightsim/ のサブパッケージ構造をミラーする(詳細は .claude/rules/testing.md).src/ ではなく scripts/ に置く(パッケージの公開 API を汚さない).configs/ 配下に置き,コード(src/)に埋め込まない.