4 回の修正でアームは動かなかった。仮説(書き換える対象)と現象(動かないこと)が別の単位で発生していた。仮説の検証粒度がコードの構造粒度を超えていた。
動作単位ごとに分ける。01 daemon、02 send_angles、03 camera、04 detect、05 capture、06 integrate、07 classify。各スクリプトは単独実行可能で、検証する挙動が一つだけある。
04 で初めて真因が一発で見えた。旧テンプレが古く、マット ROI 内のアーム link を白箱としてマッチしていた。
05b で HSV 白色マスクによる自動トリム機能を実装。マウス操作の精度に依存せず、白箱本体の外接矩形でテンプレを切り出す。
07 で minAreaRect により角度を自動測定。parallel 8 枚 / skewed 11 枚に分類。撮影中に混入していた 30° 前後のテンプレを物理退避し、0° の 8 枚に絞った。
06b → 06c → 06d → 06e → 06f の 5 段階で改善。各ステップは差分一つ。grep でコード内部仕様を読み、モンキーパッチで定数を上書き。test_white_box_score.py 本体は触らない。
支配的だったのは BGR → GRAY 化。matchTemplate の計算量はチャネル数に比例する。3 → 1 で 2.84 倍速、理論値とほぼ一致。
各単体スクリプト 50〜200 行。AI がコード全体を一度に把握できるサイズ。grep で内部仕様を読み、time.time() で計測し、print で観測する。
動機は「コード品質」ではなく「AI が判断できる粒度」。これを呼ぶ職能はまだ定まっていない。ソフトウェアアーキテクト、DevEx、リサーチエンジニアが扱ってきた領域に、AI Workflow Design という新しい層が重なる。