046 機能検証 / 2026-10-02 UTC

境界
架空の有界水路パズル。現実の消防、防災、避難についての手順・助言ではありません。
実装・モデル・クラウドLinux実操作・実描画を確認。人の面白さ、Windows/macOS実機、音は未確認。
自動動画、純粋モデル比較、native実操作の証拠は独立に保存。外部への公開操作はなし。

純粋モデル
24 unittest（モデル20、UI4）。全合法な放水0/1/2と両口の行動木を鎮火まで列挙。
solver_results.json: A全3家/貯水3、B全3家/貯水3、C最大2家/貯水3。C全3家は全行動木中にない。
A W1→待機、A W2→待機はいずれも成功。
B E1→待機だけで全家保護。設計候補E1→W1も成功するがWは任意。W1→E1では東の家に間に合わない。
C3刻待機→E1→待機で2家/貯水3。W1→E1でも2家/貯水2。早すぎるE1のみは0家。
無放水は合法で鎮火まで進められる。隠れた時限、追加火、罰で放水を強制していない。

保存と順序
貯水+各セル水+蒸気+排水=初期4。濡れ数値は在庫に算入しない。
放水は貯水から盤面への一意移動。水1を消火に消費したら、その1を下流へ流さない。
一セルの別容量制限なし。合流4も受け入れる。総量4が各セルの上界。分流はなく行先の固定優先順を公開。
現在セル消火→二重バッファで一歩流れ→移動先消火→濡れ付与→旧火だけが延焼→旧火燃料減→新火生成。
源の二重使用、同刻二歩移動、消火済み火の延焼、新しい火の同刻連鎖を禁止。
同時合流、最も低い隣と同高優先、石の阻止、溜まり、下端排水、濡れの期限、家被害一度限りをテスト。
家被害を含む一刻全体をundoできる。水不足/非法操作は時刻・在庫不変。forecastは副作用なし。

管理比較
同じAで濡れ寿命だけ2/0。初期配置・直接消火・流れは同じ。両版とも3家成功可能。
wet2はW1で貯水3、wet0はW2で貯水2。wet0に同じW1だけを与えた場合の未達も保存。
comparison_results.json、比較専用PNG3枚とEXPERIMENT.txt。旧版の制作史ではない。

UI合成
全合法操作で到達する現行全状態×2口×2量、全理由文、表紙、停止説明、780フレームdemoの文字境界/字形。
update先頭で全キー押下/解放を同期。その後にgate/pause/titleの早期return。
停止中に押す→停止中に離す→再開→新規押下が即受付、持続キーを再開へ持ち越さない両方をテスト。
開始/再開/状況変更/undoの同時・次フレーム入力と長押し。実時間の移動演出はなく、一刻を即時確定する。

クラウドLinux GUI実操作（21:09–21:12 UTC）
日本語表紙からSPACE650ms長押し。ゲームt0のままで、待機が余分に発火しない。
P停止→Z500ms押下/解放→停止画面を確認→P復帰→新ZでA t1/貯水3→SPACEで全3家成功。
成功からX、2でBへ。量2のW放水を2回でt2/貯水0/家1被害、3回目Zは拒否してt2不変。
Xでt1/貯水2/被害0へ復帰、放水口を変更。R再開、無放水6刻で2家・未達。Xで結果直前へ戻す。
R再開、E口1→SPACE5回でt6、3家・貯水3の成功。Wへは一切放水しない。
3でCへ。E口を選び3刻待機。風向変化後の次の被害予告を確認し、E1→待機3刻でt7/2家/貯水3。
1でAへ、B比較切替、量2→放水→待機で濡れ0でも3家成功。下部比較表示を確認。
F12記録後ESC終了、一覧で046ウィンドウ不在を確認。
native_events.jsonが最終の累積記録。success_A/B/C、failure_B、comparison_Aの画像/途中記録も独立保存。
視認: 720×520で全25セル、高さ、風向表、家、水/蒸気/排水、予告、結果の読める配置を確認。

実映像
media/fire_waterways_automatic_silent.gifはPyxel自身の実描画と自動入力。A/B/Cを連続記録。
MP4は元GIF779フレームを全て順序どおり1回ずつ、30fpsのrawvideoとして渡したもの。
最終779フレーム、25.966667秒、720×520、音声ストリームなしをffprobeで確認。
GIFのcentisecond遅延から映像速度を推測せず、モデル描画fpsと元フレーム数に合わせる。
人のプレイ映像や感想ではない。自動リプレイの全状態ハッシュを純粋モデルで再生検証。

移植と証拠隔離
実行時はPyxel+標準ライブラリ。Pillow/ffmpegは開発時のみ。
UTF-8読書を明示、cp932既定を模したロード、任意cwd、日本語・空白ディレクトリでタイトル描画確認。
BATはASCII、引用符パス、失敗pause。フォルダーだけでsetup/play可能。
全文MITとNoto字形OFLを同梱。人の試遊・実機Windows・macOS・音の実聴は未確認。
validate_artifacts.pyがcapture内の現行app/model SHA、全記録のモデル再生、X3本140字以下を確認。
テスト前後にmedia全SHAを照合して不変を確認。UIテストのsaveはstubで、既存証拠へ書き込まない。
