030 ひと箱の天気 検証記録
2026-10-02 UTC / 実装・機能検証済み、人の面白さ確認待ち

1. 純粋モデルと採用した3配置
設計のA/B/Cを座標・水量とも採用。Bの雨樋は透明な細管として、鉛直雨や日差しを遮らないことを明文化し画面の説明にも表示。
A: 源2、花0。B: 源2、花0、受け皿0。C: 源3、花0、K0。
安定状態BFSはA36/B64/C85、最短8/9/10行動。20,000状態上限の内側で全グラフを完了。
成功後の行動は止める。Zは戻せる。解の唯一性や人の難しさは未測定。
solver_results.jsonに入力列、代替輸送、回復列、最終hash、比較結果を保存。

2. 自動試験
test_results.txt: 25 tests passed（最終コード）。
モデル15項目: 全到達状態の保存則、状態非負、雲容量、雨/日差し、拒否後同一性、容量超過、屋根、B回復、花の回収、明示吸収帳簿、門閉鎖、undo、分岐、グラフ検査、比較両版可解。
流路の二重バッファ: 1刻み1辺、合流で2滴加算、満杯超過は次刻み。4ノード全24走査順で同じ。
門: 同刻みK流入と門流出がある合成5ノード全120走査順で旧K条件を使う。
初期データの循環と同じ高さの雨受け重複はエラー。終息上限到達時に水を消して続けない。
吸収帳簿の合成状態でも雲＋ノード＋帳簿を保存。製品の花は保持型で帳簿0。
UI10項目: 長押し反復なし、複数矢印拒否、開始/次/停止/リセット/メニューの同時・時間差入力、移送中操作、最初の空きフレーム、成功/移送中undo、無操作300フレーム、全3解を入力から再生。
説明、全拒否理由、全箱、成功、undo、比較版、デモ、流路途中状態について文字領域と字形欠損をチェック。

3. 実クラウドLinux GUI
2026-10-02 19:44–19:46 UTC。CUAの実キー入力、150ms（保護操作250ms、Up長押し700ms）で確認。
起動→説明→SPACE+Up: 水は源2のまま、余計な蒸発なし。
Up700ms: 1滴だけ移動。Zで完全に戻る。
P→Up→P: 停止中の入力は状態を変えない。
A: UURRRRDDで開花。
N+Up: B開始時に余計な操作なし。
B: UURRRRDで屋根からBへ1滴、Upは屋根で拒否。LUで回収しRRDDで花へ。
Bの最初のUpは雨アニメ中だったため無入力として無視。落ち着いてからのUpでshade理由を確認。これをモデル不具合とは数えない。
C: UUURRDでK1・雲2、門開。UでK0・雲3、門閉。ZでK1・雲2を復元しRRDDで開花。
C成功後Z→R+Up→M+Space: resetは初期水3、メニューはタイトルで停止。
ESC終了後、対象ウィンドウが一覧にないことを確認し共有GUI枠を解放。
media/gui_events.jsonの52イベントをtools/verify_native.pyで純粋モデルへ独立再生し、全hash一致。
media/native_validation.jsonとnative_*.pngが証跡。media/native_app_source.txtはこの入力時のapp.pyと同一。
これはエージェントが操作した機能確認です。人の楽しさや初見理解の証拠ではありません。

4. 映像
media/box_weather_automatic_silent.mp4: 749フレーム、30/1 fps、24.966667秒、音声ストリームなし。
入力は自動。実際のPyxelレンダー。A成功、B屋根への雨→回収→取入口で成功、CのK1保持→花2を収録。
GIFの全デコードフレームを元順序で1回ずつRGB24としてffmpegへ渡し、タイムスタンプをn/30へ。
GIFの30ms丸めをそのまま動画の時計にはしない。-rで間引き/水増しもしない。
media/timing_validation.json: 全フレームhash、入力数、出力数、fps、秒数、音声なしのffprobe結果。
モデルと描画を模倣した説明動画ではなく、app.py --headless --demoの出力です。
native映像の連続収録ではありません。native入力証跡は別のPNGと操作ログ。

5. 一変更比較
同じCの門条件だけを常時開門/1滴連動に変更。EXPERIMENT.txtとsolver_results.json。
基準87状態・8手、通常85状態・10手。両方可解。
同入力UURRRRDDで基準F2/S1、通常F0/S3。総量は両方3。
比較実画面を2PNG、対応操作JSONを同梱。作った比較基準を架空の旧版とは記載しない。

6. 移植・文字・配布
全テキストファイルI/OはUTF-8明示。JSONも明示。
tools/test_portability.py: cp932既定模擬、日本語/空白を含むコピー先、/tmpからのタイトル描画と字形読込を確認。
BATはASCIIのみ、%~dp0を引用し、失敗時pause。standalone setup/playを同梱。
Pythonコード/アートMIT、Noto由来bitmap字形SIL OFLとライセンス同梱。
Pillow/ffmpeg/Notoは再生成用。プレイの依存はrequirements.txtのPyxel。
X原稿3本はそれぞれ140文字以内。公開投稿は行っていない。

7. 体験レビュー（仮説）
Aのまとめ輸送は合理的。1滴往復も全箱で合法の別解。
Bは花の近くへ雨を落とす方策が外れるが、水は回収可能。
Cは全水回収でKの重りも取ると門が閉まり、手元の量だけを最大化する方策が崩れる。
無操作では解けない。自動シミュレーションを待つだけのゲームではない。
初見で透明な細管、二色枠、点線の重りを読めるか、蒸発/雨の押下が退屈でないかは人の試遊で確認が必要。

未検証
人の面白さ、初見理解、再挑戦率、Windows/macOS実機GUI。音は実装しておらず実聴主張なし。
