diff --git a/.claude/rules/testing.md b/.claude/rules/testing.md index 2fbc968..5128914 100644 --- a/.claude/rules/testing.md +++ b/.claude/rules/testing.md @@ -107,7 +107,7 @@ | `close-preview` | プレビュー中に閉じる処理を呼んでもすぐ戻り,後始末の順序が正しい | | `reconnect` | 切断した後に再接続でき,フレームが届く | -※ 2026-10-08 時点で実機テストを通したのは ImagingSource だけ(Lumenera は未実施).校正・撮影・保存中や校正中に閉じる等のチャートが要る項目(PLAN_06 フェーズ 2)は未実装のため,引き続き手動テストで確認する. +※ 2026-10-08 時点で実機テストを通したのは ImagingSource だけ(Lumenera の実機テストは行わない方針.PLAN_06「対象機種」).校正・撮影・保存中や校正中に閉じる等のチャートが要る項目(PLAN_06 フェーズ 2)は未実装のため,引き続き手動テストで確認する. ※ 層④に手を入れた場合は**設計レビュー+実機回帰**で挙動を確認する.その前段として,実機なしで通せる範囲はセルフテスト(`python scripts/verify/run_selftest.py`.`.claude/verify-profile.md`)で,上表の実機テストの項目はユーザーの合図のもと実機テストで確認できる.`/implement` の Tester フェーズでは,対象が層④だけの場合に限り,テストを書かずに設計レビューで判断してよい.層②・③に当たる部分が含まれるなら,その部分のテストは書く. diff --git a/.claude/verify-profile.md b/.claude/verify-profile.md index 00579ad..ee64e49 100644 --- a/.claude/verify-profile.md +++ b/.claude/verify-profile.md @@ -57,11 +57,11 @@ ### 実行コマンド -リポジトリルートで実行する.2 機種とも検査する場合は機種ごとに実行する. +リポジトリルートで実行する.**対象は ImagingSource だけ**で,Lumenera の実機テストは行わない(PLAN_06.Lumenera は解像度が相対的に低く今後あまり使わない見込みのため).ユーザーが明示的に Lumenera の検査を指示した場合に限り `--camera lucam` を使う. | 用途 | コマンド | | --- | --- | -| Lumenera を検査する | `python scripts/verify/run_hwtest.py --camera lucam` | +| Lumenera を検査する(通常は行わない.ユーザーの明示指示があるときだけ) | `python scripts/verify/run_hwtest.py --camera lucam` | | ImagingSource を検査する | `python scripts/verify/run_hwtest.py --camera iscam` | - `--with-chart`(チャートが必要な検査.PLAN_06 フェーズ 2)は未実装.指定すると機材に触れずに終了コード 2 になるため使わない diff --git a/CLAUDE.md b/CLAUDE.md index 4ddecaa..58bfe19 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,7 @@ ## 開発進捗 -最新: 実機自動テスト(PLAN_06 フェーズ 1)を実装し,ImagingSource の実機で 7 項目が合格した(Lumenera は未実施) +最新: 実機自動テスト(PLAN_06 フェーズ 1)を実装し,ImagingSource の実機で 7 項目が合格した(Lumenera の実機テストは行わない方針) ※ 本欄は**最新ステップ 1 行のみ上書き更新**.詳細な進捗履歴(動機・設計判断・失敗パターン)は [docs/PROGRESS.md](docs/PROGRESS.md) に追記する.運用ルールは `.claude/rules/progress-log.md` を参照(該当ファイル編集時に自動ロードされる). ## 必須ルール(コード実装時) diff --git "a/docs/02_ENV/ENV_04_\351\226\213\347\231\272\343\202\263\343\203\236\343\203\263\343\203\211.md" "b/docs/02_ENV/ENV_04_\351\226\213\347\231\272\343\202\263\343\203\236\343\203\263\343\203\211.md" index cc0e245..2075837 100644 --- "a/docs/02_ENV/ENV_04_\351\226\213\347\231\272\343\202\263\343\203\236\343\203\263\343\203\211.md" +++ "b/docs/02_ENV/ENV_04_\351\226\213\347\231\272\343\202\263\343\203\236\343\203\263\343\203\211.md" @@ -163,9 +163,10 @@ - TIASshot が起動していない(起動中ならランナーは実行せずに終了コード 2 を返す) ```powershell -# ビルド(Debug|x64)→ 実機テスト(結果は .verify/hwtest/run-<日時>/).2 機種とも行う場合は機種ごとに実行する -python scripts/verify/run_hwtest.py --camera lucam +# ビルド(Debug|x64)→ 実機テスト(結果は .verify/hwtest/run-<日時>/).対象は ImagingSource だけ python scripts/verify/run_hwtest.py --camera iscam +# Lumenera(通常は行わない.PLAN_06「対象機種」) +python scripts/verify/run_hwtest.py --camera lucam # 開発中の素早い再確認(Debug 出力を消さない.判定には使わない) python scripts/verify/run_hwtest.py --camera iscam --no-clean diff --git "a/docs/03_PLAN/PLAN_06_\345\256\237\346\251\237\350\207\252\345\213\225\343\203\206\343\202\271\343\203\210\350\250\210\347\224\273.md" "b/docs/03_PLAN/PLAN_06_\345\256\237\346\251\237\350\207\252\345\213\225\343\203\206\343\202\271\343\203\210\350\250\210\347\224\273.md" index 75496d2..78c37da 100644 --- "a/docs/03_PLAN/PLAN_06_\345\256\237\346\251\237\350\207\252\345\213\225\343\203\206\343\202\271\343\203\210\350\250\210\347\224\273.md" +++ "b/docs/03_PLAN/PLAN_06_\345\256\237\346\251\237\350\207\252\345\213\225\343\203\206\343\202\271\343\203\210\350\250\210\347\224\273.md" @@ -12,6 +12,7 @@ | --- | --- | | 接続 | カメラ(ImagingSource・Lumenera)と光源は,Claude が動作している開発 PC に接続できる | | 機材 | 両機種がそろっている | +| 対象機種 | **ImagingSource だけを対象にし,Lumenera の実機テストは行わない**(2026-10-08 にユーザーが決定.Lumenera は解像度が相対的に低く今後あまり使わない見込みのため).`--camera lucam` の実装は残すが,検査の対象にしない | | 実行してよい条件 | **ユーザーが会話の中で明示的に合図したときだけ**.撮影の本番中に機材を操作しないため,合図なしに実機テストを実行しない | ## 仕組み (Design) @@ -85,7 +86,7 @@ 1. 人間が機材をつなぎ,カラーチャート(または白板)を穴にはめて,「実機テストして」等と合図する 2. Claude(verifier)が `python scripts/verify/run_hwtest.py --camera <機種> [--with-chart]` を実行し,結果ファイルと終了コードで判定する -3. 2 機種とも行う場合は,機種ごとに実行する +3. 対象は ImagingSource(`--camera iscam`)だけ.Lumenera は行わない(上記「対象機種」) 4. 人間に残る確認は,画面の見た目の最終確認など,数値で置き換えられないものだけにする ## 変更が必要なもの (Changes) @@ -106,15 +107,15 @@ - `HWTEST` フラグ,`--hwtest`,機種指定の接続,結果ファイル,ランナーを作る - チャート不要の検査(`connect`・`preview`・`exposure-gain`・`light`・`close-preview`・`reconnect`)を実装する - 検証プロファイルを更新する -- 完了条件: 両機種で人間の合図のもと実行でき,しきい値を実測から決めて全項目が合格する -- **状態: ImagingSource で完了(2026-10-08.DFK 33UX178 の 2 個体で 7/7 合格).Lumenera は機材がつながり次第実行する** +- 完了条件: ImagingSource で人間の合図のもと実行でき,しきい値を実測から決めて全項目が合格する(当初は両機種としていたが,2026-10-08 に Lumenera を対象外とした) +- **状態: ImagingSource で完了(2026-10-08.DFK 33UX178 の 2 個体で 7/7 合格).Lumenera の実機テストは行わない(対象外)** - 実機テストで見つかった不具合: 同梱の `DFK33UX178.xml` は別個体(シリアル 41520093)のものを指しており,旧 `IScam.Connect` はファイルのデバイスを開いていたため,別個体では接続できず例外が外へ漏れていた.機種名でデバイスを開いてから設定だけを適用し,失敗は `ErrorMsg`+`false` で返すように直した(`Cameras/IScamDeviceSelector`.[TECH_02](../05_TECH/TECH_02_カメラ制御仕様.md)) - 仕様変更: アプリ終了時に光源を消灯しない(ポートを閉じるだけ.上流 v1.7 と同じ.2026-10-08 にユーザーが確定).実機テストの後始末も同じく消灯しない ### フェーズ 2: チャートが必要な検査 - `calibrate`・`shot`・`close-saving`・`close-calibrating` を実装する -- 完了条件: 両機種で実物のチャートを使って全項目が合格する +- 完了条件: ImagingSource で実物のチャートを使って全項目が合格する ### フェーズ 3: 手動テストの縮小 diff --git "a/docs/06_TEST/TEST_01_\343\203\206\343\202\271\343\203\210\344\273\225\346\247\230.md" "b/docs/06_TEST/TEST_01_\343\203\206\343\202\271\343\203\210\344\273\225\346\247\230.md" index 2084455..13c834c 100644 --- "a/docs/06_TEST/TEST_01_\343\203\206\343\202\271\343\203\210\344\273\225\346\247\230.md" +++ "b/docs/06_TEST/TEST_01_\343\203\206\343\202\271\343\203\210\344\273\225\346\247\230.md" @@ -25,7 +25,7 @@ Claude が実機のカメラと光源を操作して,層④のうち数値で判定できる項目を自動で確認する([PLAN_06](../03_PLAN/PLAN_06_実機自動テスト計画.md).`Debug|x64` のみ.手順は [ENV_04](../02_ENV/ENV_04_開発コマンド.md) の「実機テスト」,判定としきい値の詳細は `.claude/verify-profile.md` の「実機テスト」節).**ユーザーの合図があるときだけ実行する**(撮影の本番中に機材を操作しないため). -- `python scripts/verify/run_hwtest.py --camera `(2 機種とも行う場合は機種ごとに実行する) +- `python scripts/verify/run_hwtest.py --camera `(対象は ImagingSource の `--camera iscam` だけ.Lumenera の実機テストは行わない.PLAN_06「対象機種」) - **実行の前提**: カメラ・光源のドライバが入っている([ENV_02](../02_ENV/ENV_02_環境構築手順.md)),検査する機種のカメラと光源が接続されている,カメラの前の穴にカラーチャート(または白板)がはめてある,TIASshot が起動していない - **合格条件**: 終了コード 0(下表の 7 項目が PASS.結果は `.verify/hwtest/run-<日時>/hwtest-result.txt`) @@ -39,7 +39,7 @@ | `reconnect` | 切断した後に再接続できる | 2 回目の `Connect()` が成功し,5 フレーム以上届く | | `cleanup` | 後始末と書き込み禁止 | 露光・ゲインを戻す → カメラ切断 → 光源のポートを閉じる(消灯しない)が成功し,設定・デバイス状態ファイル・本番の保存先が変わっていない | -- 2026-10-08 に ImagingSource(DFK 33UX178 の 2 個体)で 7/7 合格した.Lumenera は未実施 +- 2026-10-08 に ImagingSource(DFK 33UX178 の 2 個体)で 7/7 合格した.Lumenera の実機テストは行わない(解像度が相対的に低く今後あまり使わない見込みのため) - チャートが要る項目(校正・撮影・保存中や校正中に閉じる.PLAN_06 フェーズ 2)は未実装のため,下記の手動テストで確認する ## 結合ロジックテスト (Integration Logic Tests) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 4c6da3d..aca732a 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -197,3 +197,5 @@ - 仕様変更: アプリ終了時に光源を消灯しない(ポートを閉じるだけ.上流 v1.7 と同じ)とユーザーが確定した. - 失敗パターン: ① 同梱の `DFK33UX178.xml` は別個体のシリアルを持ち,旧 `IScam.Connect` がファイルのデバイスを開いていたため,手元の個体では接続できず例外が外へ漏れた.機種名でデバイスを開いてから設定だけ適用する形に直した(本番の接続にも効く修正).② 露光を整数の段(`VCDRangeProperty`)で扱っていたため,2^n でない元の露光(1/60 秒等)に戻せていなかった.絶対値で扱う形に改めた.③ Release の exe を作り直さずに確認し,古い動作を見て判断を誤りかけた.確認は必ずランナー(Debug をビルドし直す)経由で行う. - 後段: Lumenera は機材が未接続で未実施(つながり次第実行する).フェーズ 2(チャートが要る検査).本番の Info.csv の露光記録が整数の段を「1/10 して ms」として書いており誤った値になっている疑い(未確認.報告台帳に記録). + +- [x] **Lumenera を実機テストの対象外に** (2026-10-08): Lumenera は解像度が相対的に低く今後あまり使わない見込みのため,実機テスト(PLAN_06)の対象を ImagingSource だけにした.`--camera lucam` の実装は残すが検査の対象にしない.