# 開発進捗ログ

<!--
本ファイルは追記型のフル進捗ログ．

- 最新エントリは下に追記する（時系列順．古いものが上，新しいものが下）
- CLAUDE.md の「開発進捗」セクションは最新 1 行のみ（上書き運用）
- 詳細・失敗パターン・設計判断はすべて本ファイルに残す
- 書式・運用ルールは docs/01_GUIDE/GUIDE_05_エージェント運用ルール.md
  「進捗記録の運用ルール（CLAUDE.md / PROGRESS.md）」を参照
-->

- [x] **ステップ 2: SmTIAS 照明均一性評価 完了**: 照明均一性の評価指標算出・可視化を実装し，REPORT_01（照明均一性評価報告書）を作成済み．次はステップ 3．
  - 注: 本エントリはテンプレート同期で PROGRESS.md を新設した際の移記ベースライン（詳細経緯は `git log` を参照）．以降の進捗は本ファイル末尾に追記する．

- [x] **TECH_05 Phase 1: DNG 読み込み I/F ＋ 動径 min/max 比指標**: SmTIAS 定量モードの出力が PNG→DNG(RAW_SENSOR) に変わったため DNG 読み込み I/F（`src/io/dng_loader.py`）を新設．あわせて照明均一性に動径 min/max 比指標を追加．SmTIAS-LightSim へのコピー前提で再利用性重視．
  - **設計判断（線形性）**: linear 系出力は `output_color=raw`（カラーマトリクス非適用）とし，入射光量とセンサ信号の比例（放射輝度リニアリティ）を担保．カラーマトリクス経路はチャンネル混合で per-channel 比例が崩れるため不採用．luma は既存 PNG 経路互換のため Rec.709 維持（raw 経路では厳密な CIE 輝度でなく固定加重プロキシ）．
  - **重要な発見（仕様との食い違い）**: RAW_SENSOR DNG はレンズシェーディング**未補正**（補正は DNG の OpcodeList2 GainMap・meta.json lscMap として付随するが rawpy は適用しない／lscMap ゲインは 1〜5）．TECH_05 の `apply_lsc_inverse` は「DNG=補正済み」前提だが実際は未補正．照明ムラを測るには lscMap を**順方向適用**してレンズビネットを除去する向きで Phase 3 を設計すること．LSC 順適用で白板 ROI の CoV は約半減を実測．
  - **向き**: DNG はセンサ native が landscape，PNG/preview は portrait．PNG と揃えるには `rot90(-1)`（左右反転なし）．フロントカメラ(id=1) の preview はミラーされるが RAW はミラーされないため反転不要（ラベル位置で確認）．
  - **PNG vs DNG 比較の注意**: 違いはスケール(0-1/0-255)でなくドメイン（PNG=sRGB / DNG=linear）．CoV 等はスケール不変なので，公平比較には PNG を inverse-sRGB で linear 化する必要がある．
  - **動径 min/max 比**: 画素単位 max/min は外れ画素に弱いため，20点輪帯平均の min/max をロバスト指標として追加．
  - **後段（未着手）**: TECH_05 Phase 4（既存パイプライン統合）/ Phase 5（PNG vs DNG，撮影フレーミング差への ROI 対応）/ Phase 6（SPEC_01/02 更新）/ ビューア(viewer.py) の DNG 対応．SPEC のフル更新は TECH_05 Phase 6 に委ねる．`scripts/run_uniformity_dng.py` は PNG 版の DNG 対応ランナーとして暫定追加（共通化は将来）．
