097 技術・設計検証／2026-10-03 UTC
技術:26 unittestケース通過。model.pyの不変State/stepを描画と分離。乱数なし。
検査:両軍/味方装備、取得１行動目、槍の途中壁/駒、射程、槌HP下限、斜め両壁、敵低HP/id/上優先経路、移動後攻撃なし、死者、旗連続/切断、全滅優先、１０フェーズ引分け、予告一致、保存型/版、undo敵フェーズ/装備、開始/説明/確認の同時・ずれ入力とrelease gate。
セーブは一時ファイルから正常置換。テストの保存先はTemporaryDirectory、GUIログは触らない。
設計:ブリーフのA/B/C候補をそのまま採用。各々、装備あり/なしで旗勝利の実行列を保存。有限のbest-first探索で得た証拠で、全状態到達性や最適性の証明ではない。
一変更比較:両軍強化／味方だけ強化。各配置の同じ装備なし入力列で共通目標へ到達。比較結果から面白さを断言しない。
合理的な別案:装備なし旗守備と装備あり撃破。Bの撃破例は装備あり６行動HP３/３、なし８行動HP２/２。攻撃ルートの証拠はoffensive_results.json。すべての局面で取得が優れると主張しない。
更新順:味方行動→装備/攻撃→死者/全滅→２行動終わりなら敵ID順→旗→上限。敵フェーズ直前全滅を優先。
予告は選んだ行動＋残りを待つ条件でモデルから算出。装備後範囲は同じreach関数に仮装備を渡す。
未確認:人の試遊・面白さ、Windows/macOS実機、音の実聴、所要時間。無音のゲームで音依存目標なし。
実Pyxel自動収録とネイティブ入力観察は別記録。後者の結果はNATIVE_OBSERVATIONS.txt。元収録のソースコピーとイベントは保持し、修正後に置換しない。
追加結果:日本語/空白パス・別cwd・PYTHONUTF8=0/PYTHONIOENCODING=cp932環境からのimport、全UI日本語字形、ASCII引用BAT、X３本140字以下、証拠非変更を検査通過。
実自動デモ:749元GIFフレーム、遅延30ms×749、全749フレームを30fpsへ１回ずつ変換。24.966667秒・音声ストリームなし。frame_0470 PNGを目視確認。Nativeと同じソースで収録。
通常capture_sec=0は実ネイティブ起動とF12４枚の保存で機能確認。

表示上の軽微な制限: 勝敗確定後も右欄の見出しは「予告」のままですが、
内容は終了時のHPと直前の行動記録です。終了後の新しい行動は実行されません。
勝敗表示を確認し、Xで一行動戻すかRで同じ配置を再開できます。
