034 三手の剣舞 — 機能検証と未確認範囲
人による初見理解/面白さ、Windows実機、音声品質は未確認。自動再生やエージェント操作を人の試遊と数えない。

純粋モデル/自動テスト
17 unittest通過。三場面×三手/一手の両版に通常勝利と無傷勝利がある。
全長0～3の履歴について多数決/同数時の直近規則を別計算と照合。
三回静止による忘却、固定Intentが今回入力を読まないこと、攻撃の次にだけ一手息継ぎ、盤端、同セル/交差禁止、空振りコンボ、同時HP0の相打ち、undo、終端固定を検査。
盤上全位置組と各構え/四行動で範囲内・非重複を検査。
UIは全履歴/回復/比較窓、各終端/説明/メッセージ、750デモframeの文字範囲/glyph存在を確認。9999+で手数表示を有界化。
合成キー検査では開始と異なるタイミングで届く持越し斬り、長押し、停止、undo/reset、面切替、同時入力拒否を確認。
全テストはmediaの内容を生成/変更しない。videoやnative証拠とは分離。

成功列/単純方策（solver_results.json）
A 最短6手/HP1、無傷9手。初手を静止にしたW B B S S F S F Sも無傷。
B 最短6手/HP1、無傷9手。前進斬り交互だけでも10手無傷で勝つ。合法な安全策として保持。
C 最短5手/HP1、無傷7手。初手の後退で端へ行き、空振りで相手の読みを変える策。
斬りのみ/前進のみ/後退のみ/静止のみ/前進斬り交互/息継ぎだけ斬りの6方策を全3場面で監査。全場面を一律に抜ける方策はこの集合にない。
Aで静止のみは安全な循環。後退のみは端で不合法入力になるが追加罰なし。安全性と勝利を混同しない。

比較は反実仮想
Bで集計窓3→1だけを変更。初期配置・HP・履歴・攻撃・移動は同じ。
両版に無傷勝利。共通F F F Sの後だけ、記憶の窓が次の置き斬り/引き突きを分ける。実描画比較画像と同一入力/各版解のログを保存。人による好みや読みやすさ比較はしていない。

Linuxネイティブキー操作 2026-10-02 UTC
共有クラウドLinuxのPyxelウィンドウで150msキーを使用。
BでF S F S F S F S Sを実行し9手HP3で勝利。途中停止中のZは不発で、一手のまま。
勝利後Xでundo、Rで再開。Aへ選択しF5回で敗北。F12記録後Esc終了、034ウィンドウ不在確認。
NEXT文字が相手と重なる点を見つけ、盤の上へ移動。修正後に再起動し、上記B勝利/停止/undo/reset/A敗北をすべて再確認。
media/gui_events.jsonは最終app/model hash付き。全23イベントをモデルへ再投入してhash一致を検査。media/native_b_win.pngが最終B勝利、native_runtime.pngはA敗北。比較用画像生成はこのログを上書きしない。
Cのネイティブ勝利は今回未実施。モデル/実Pyxel自動動画のC成功は別に確認。

実動画
最終ソースを実Pyxelで750更新/30Hzの無音デモ実行。採れたGIFは749フレーム。
全749枚を一回ずつ30fpsでMP4へ。再生24.966667秒、音声streamなし。
ffprobeで枚数/時間を照合し全体decode通過。GIFのセンチ秒遅延を利用した間引きではない。
media/replay.jsonの3場面成功・全状態hashはモデル再計算と一致。

移植性/単体性
全テキストI/O UTF-8明示。cp932-default模擬、日本語/空白パスコピー、別cwdからのglyph読込・初期描画を検査。Windows batはASCII、cd /dで引用符、失敗pause付き。
runtimeはPyxel/標準ライブラリのみ。ソース-only配布でもmediaを作れる。
assets/glyphs.jsonとNoto OFLを同梱。video再生成と媒体QAにはPillow/ffmpegが必要。
