041 夜更けのパン窯 検証記録 / 2026-10-02
区分: 実装・機能検証済み。人による面白さ確認待ち。

純粋モデルと順序
合法性を全部確認→材料/商品/注文を一括確定→熱変化→時刻+1→受付期限→成否。
生地+丸パン+ラスク+販売済数が初期総数と一致。薪は火入れ時のみ1減。
失敗入力は時間/熱/在庫/履歴が完全不変。undoは全Stateを復元。
最終受付の手で販売可。その手の処理後に不足する必須期限を超えたら未達。
Cは必須成功後にも追加注文を受けられ、薪を残す成功を維持する。

実施
10 unittest: 全面成功・別案・未達、全undo、境界熱/在庫/数量、同時入力/長押し、
開始/状況/再開遷移、停止中の押下/解放→復帰後の新しい押下、全到達状態のUI文字枠。
全行動木を重複Stateで圧縮して列挙: A30、B620、C1698状態。solver_results.json。
Aは4~6手で成功。Bは先ラスク5手と先売り7手を両方保存。
Cは4手で薪1を残す成功、7手で薪0/追加注文成功、先売りからの回復7手を保存。
毎手の時刻/熱/薪/品目/残注文をsolution_logs.jsonへ記録。
限定的greedy4方策をpolicy_results.jsonへ。人の遊び方や最適性の証拠ではない。

一変更比較
Bの初期需要・材料・締切は同一。ラスク適温の上限だけ2と4で比較。
火入れ直後に焼き直す手は現行拒否、変種許可。両方の必須達成を探索で確認。
共通補助目標は時刻8までに全必須を渡すこと。制作史上の旧版ではない。
comparison_results.jsonと別名の実Pyxelスクリーンショット。

クラウドLinux native入力観察
AでSPACE600msでも開始が待機へ漏れず時刻0。P停止中Z250msは時刻0のまま。
解放後Pで復帰、新しいZ600msで1回だけ2個焼成(時刻1)。その後販売/焼き直し/販売で成功。
Xで戻り再販売、R600msで再開、SPACE3回で受付終了の未達。F12保存後ESC終了。
画面で日本語/注文表/熱予告/成功/失敗の理由を確認。ウィンドウ不在を確認して枠解放。
native_events.jsonは観察記録。自動実演と分離し、純粋モデルへ再適用して全Stateハッシュを照合。

動画
actual Pyxel --headless --demo自動入力、無音。全3面の達成を含む。
749原フレームを順番どおり各1回、30fpsへ符号化。24.966667秒、749フレーム、音声0。
GIFの丸めた遅延に合わせて再サンプリングしていない。timing_validation.jsonへ全フレームSHA。
テスト前後でmedia全ファイルのハッシュを確認し、不変を検証。

移植性
全テキストI/OはUTF-8指定。cp932既定シミュレーション・日本語/空白パス・任意cwdで起動/描画。
ASCII BAT、引用されたパス、失敗時pauseを確認。実Windows GUIは未検証。
Noto由来字形とOFLライセンス同梱。音声実装なし・実聴の主張なし。人の感想を生成していない。

独立レビューによる表示訂正
終了後SPACE予告を「待機不可」へ、比較変種の拒否温度を1~4へ修正。
注文完了の文言を全注文に統一。ルール・入力処理・モデルは同一。
元native_events/スクリーンショットは変更せず、media/native_sourceに当時の完全ソースを保存。
最終自動/比較映像は訂正版で再収録。元nativeログは当時ソースSHAと照合し、最終モデルに再適用して検証。
