075 ちいさな錬金冷蔵庫
6枠の棚に小瓶を並べ、架空のおやつを作る小さな反応パズル。
実装・機能検証済み／面白さは人による確認待ち。

始め方
Windows: Python 3.10以降を用意しsetup.batを一度実行。その後play.bat。
Linux/macOS: Python 3.10以降でbash setup.sh、bash play.sh。
実行依存はPyxel 2.9.9とPython標準ライブラリ。日本語ビットマップ同梱。
Linuxクラウド上の実Pyxelで確認。Windows/macOS実機は未検証。
launch.shは今回のクラウド検証専用。通常はplay.sh/play.batを使います。
音は使いません。現実の食品保存、化学、調理の安全を教えるものではありません。

目的と操作
A/B/Cの手作り依頼を1/2/3で選び、表紙でSpaceまたはEnter。
上下左右で枠を選び、Zで瓶を持つ、空枠に置く、他の瓶と交換します。
瓶を持ったまま試運転はできません。空枠へ置いてからEnter。
Enterで扉を閉める。Spaceで一刻。Pで連続運転・停止。
試運転中の配置編集は不可。Xで直前の一判断を戻します。
二刻目の結果からもX三回で試運転前へ。配置の変更もXで戻せます。
Rで同じ依頼の初期配置。Hは説明。Mは表紙。Escは終了。
Tabで表と図鑑を切替。Dは未確認の完成名を伏せる任意表示です。
読む時間、試した回数、安全な基本達成へ隠し減点はありません。
同時押しは不採用。画面切替後も全操作キーを一度離して押し直します。

ルール
上段は冷、下段は温。触媒は縦横隣の一枠だけに効き、消費されません。
冷たいFひかりの実: Mすず葉あり→月ジャム、なし→氷あめ。
温かいF: B火花石あり→星はじけ、なし→金ジャム。
冷たいCくもの素: Mあり→霜クリーム、なし→雲ゼリー。
温かいC: Bあり→ふくらむ雲、なし→白プリン。
冷段でB、温段でMは反応先を変えません。両方隣でも一意です。
一刻目は熟成1、二刻目で全F/Cが同時に完成。完成品からの連鎖はありません。
矢印や図鑑では時刻は進まず、予告は同じ反応関数から作られます。
編集時の名札は「この配置で二刻後」、熟成1では「次の一刻」を示します。

依頼
A: 月ジャム1＋金ジャム1。Mを上段のF横へ動かすと達成。
B: 星はじけ1＋霜クリーム1。冷CとM、温FとBの関係を作ります。
C: 月ジャム1＋ふくらむ雲1。余りは自由。4種類の完成品は任意です。
三つとも初期配置のままでは依頼未達です。違う品はでき、材料の損失はありません。
固定配置を全列挙し、縦横版の成功はA36/120、B30/360、C212/720。
同じ種類の瓶ID違いを含む数です。左右反転を除いた材質配置も別途記録。
Cで依頼を満たす完成品組合せは10種類。数の多さは面白さの証明ではありません。

比較と記録
Bキーで触媒範囲だけ「縦横／左右」を切替え、同じ依頼を再開します。
他の反応、材料、二刻、依頼は同一。両版で達成する同一配置をpolicy_results.jsonに保存。
図鑑は起動中に試した完成品の集合。X/R/依頼切替で消えず、現在の盤面を変えません。
各品の最初に確認した配置・依頼・ルールも保持。SでrecordsへUTF-8 JSON保存。
Sの保存は最大12件。上限では既存データを消さず拒否します。自動読込はありません。
一試行の意思決定は最大256回、イベント記録は4096件。上限を表示します。
各起動でmediaの別セッションにモデル状態、論理時刻、入力、SHA-256、元ソースを保存。
F12で実画面PNG。自動デモとネイティブ操作記録は別フォルダです。

検証・資料
test_model.py、test_ui.py: 反応、同時変化、ID保存、予告、undo、長押し、停止を確認。
tools/verify_policies.py: 有限配置と共有目標の明示的な生成器。
tools/export_video.py: 実Pyxel GIFの全フレームを一度ずつ30fpsへ変換。
mediaのMP4は自動操作・無音で約25秒。人の試遊映像ではありません。
README/QA/NOTE/X_POSTS、全ソース、MIT/Noto OFL/Pyxelライセンスを同梱。
