029 ずれる星座 QA
2026-10-02 UTC。実装者による技術・設計確認。人の試遊は未実施。

純粋モデル
候補3面を座標変更なしで採用。BFSは深さ打切りなしで全到達グラフを列挙。
A/B/C=12/12/36状態、最短1/2/3、最短列1/2/6通り。
Oだけの方策はAを解けるがB/Cを解けない。最深基点だけでは全3面とも解けない。
Cで「今合った星を動かさない」方策は解けないと全制約グラフで確認。
根連打は導入Aの正当な解。B/Cに同じ回転連打の解はない。
短い解を長くするための操作や隠し制限は追加していない。
solver_results.jsonに成功列と各手の状態hash・制約方策・拒否辺数を記録。
別の実装担当による局所辺ベクトルからの独立再構成とも528候補操作が一致した報告を受領。
この報告は人の楽しさ評価ではない。

27自動試験
test_model.py 15件、test_ui.py 12件。
子孫集合、世界座標の一括更新、4回転復帰、逆回転、枝長、根/別枝の固定、終端/undo。
木の循環・親範囲・重複星・根移動目標の拒否。盤外/同点衝突は原子的に拒否。
葉の操作と拒否回転は同一Timeline、手数/履歴/hash不変。
単なる正解列に加え、全状態で枝長と根位置を検査。
同時/段階的な開始・次面・停止/再開・リセット・メニューの持越し入力をmock検査。
押しっぱなしは1回だけ。キーを離した次フレームの意図的な押下は反応する。
矢印同時押しは拒否。予告/選択はモデルを変えず、停止中/放置で進行しない。
タイトル・全3面・ゴール・全理由・最大該当ID列・予告・無音デモを描画し、字形欠落と文字画面範囲を検査。
mockでsave_eventsを置換し、テストが実映像ログを書き換えないようにした。

ポータビリティ
cp932を既定にするI/O模擬、日本語＋空白のコピー先、任意cwdから起動/字形読込みに成功。
すべてのテキストファイルI/OはUTF-8明示。BATのASCII、引用パス、失敗pauseを検査。
これをWindows SDL/ネイティブ入力検証とは呼ばない。

ネイティブ実操作（2026-10-02 19:37–19:40 UTC、共有クラウドLinux）
Application Finderからlaunch.shを起動。CUAで実ウィンドウを操作し毎場面を画面確認。
通常キーは150ms、長押し/複合は650–700ms。
・SPACE+Right長押しで開始しても回転0。改めてRightでA成功。
・A成功→Z→再成功→N+RightでBへ。B初期は回転0。
・BでRight700msでも1回転、DownでA選択。
・P+Rightで説明中。説明中Rightでも不変。P+Rightで再開しても1回転のまま。
・SPACE予告は不変、AをLeftでB成功（2回転）。
・Cへ進みUpでD選択、Rightで葉拒否。回転0/履歴0。
・O左→A右→B右の意図的押下でC成功（3回転）。
・R+Rightでリセット回転0。M+SPACEで選択画面に留まり、開始しない。
・Aへ選択して開始、A基点で右→右。2回目がO/B重複で拒否。Zで回転0に復帰。
・F12で実レンダラPNGとgui_events.jsonを保存。
・ESC終了後、一覧で029ウィンドウがないことを確認し共有枠を解放。
ネイティブの複合キーは持越し確認。1フレーム刻みの段階的入力はmock側で厳密に検査。
画面の三角Bラベルが上寄りだったため下へ4px調整し、上記全検査は再起動した最終ソースで実施。

映像・一変更比較
最終テスト後に実Pyxel --headless --demoを再実行。設計図アニメではない。
元GIF719フレームを全て順番通りRGBでffmpegへ渡し、各1回、入力30fps。
MP4=719フレーム、23.966667秒、音声ストリームなし。timing_validation.jsonに元frame hashとffprobe。
GUIログと自動ログは別。自動映像を人のプレイ動画とは呼ばない。
比較はBの同じモデル/入力/選択で子孫強調だけを替えた実験用基準。
両版とも可解、12状態、2回転、最短2列。理解の改善率や人の好評は測定していない。

未確認・評価待ち
Windows/macOS実機入力、音の実聴、初見の人の理解、選択の面白さ、再挑戦意向。
003等の既存作品への感想を029へ流用していない。公開投稿はしていない。
