098 教材 / 実検証の範囲

結論: 五段階を著作し、標準ライブラリ照合、実Pyxel headless、単体可搬性、保存の再起動再現を確認しました。
原作ソースとSiteは変更していません。Site統合と公開は親タスクの別工程です。

原作baseline（親が新規実行）
30単体試験、実自動デモはexit0。実GIFの749フレームからフレーム350をPNGへ復号しています。
PNGは新しいゲーム実行ではなく、実GIFの同じ画素を取り出したものです。
qa/original_baseline.jsonに親の結果を保持。教材の試験数や画像枚数へ合算しません。

モデル/入力
Python 3.12.14、-B -S、標準ライブラリだけ。
65件: 原作なしは64合格+任意ライブ比較1 skip。原作指定時は65全合格、skipなし。
250本/11,332状態の原作由来fixtureを04/05へ逐一照合。全状態空間の網羅ではありません。
安全経路、別完成絵、看板への乗継、泡/橋の戻し、完成後編集、固定seedの有限ランダム列を含みます。
原作controller由来の2列37操作も05の状態と全Undo履歴へ照合。
02/03は導入済み章の射影、01は札と選択の個別試験。全段階が原作全体と同一とは主張しません。
選ぶだけでは物理も時間も進まず、同対象Zは解除。二対象未満のEnterを拒否。
同時押し、押し続け、段階的な押し替え、全キー解放、R確認/取消を試験。
無効移動は履歴なし。待機は位置不変でもtickが増え、一手としてUndoされます。
完成後の交換で完成絵更新、章移動と再開のUndo、1000件履歴上限も確認。

保存/外部ファイル
起動や保存先指定だけではファイル/親フォルダーを作りません。
未完成と完成のラウンドトリップ、同形式ファイル上書き、別プロセスからの再起動再現を確認。
保存時点のUndo履歴も新プロセスで復元。S/L自体はゲーム時間を進めません。
無関係JSON・未知版・由来不一致・破損UTF-8・symlink・サイズ超過・型/値域/長さ違反を拒否。
os.replace失敗を合成し、前の保存内容保持と一時ファイル清掃を確認。
失敗したLは現在状態、履歴、選択、モードを保持。成功したLは歩くモードへ戻し選択解除。
2,000,000バイト上限があり、最大1000手より先にバイト上限へ達する場合もあります。
検証は到達可能性の証明ではありません。偽のcomplete=Trueが構造検査を通る原作由来の限界も試験。
ハッシュは原作由来の照合であり、署名/認証/敵対的改ざん防止とは呼びません。

実描画/可搬性
Python 3.12.14、実Pyxel 2.9.9、SDL_AUDIODRIVER=dummy、クラウドLinux。
初期5枚+到達点5枚、800×560の実Pyxel画像と状態JSON。
各.pyだけを日本語/空白パスへコピー、無関係cwdから起動: 5件。
コピー元と実画像SHA-256/状態報告が一致し、コピー先に他のファイルやフォルダーを作りません。
不正CLI36件がexit2。stdlib側も同じ36ケースを検査。
描画は読み取りだけで、状態/履歴/選択を変えない。文字がASCIIで画面内に収まることを合成描画で検査。

実画像の確認
初期と到達点の10枚を実際に開きました。
01: 初期の舟が水底/石が水面、交換後は高さと札が同時に逆転、カーソル枠とTICKを確認。
02: 旅人が右岸5、舟と水底の石が同じセル4、完成絵欄を確認。
03: 長い橋が谷2/3/4を覆い、短い旗が上がり、前章と今章の完成絵を保持。
04/05: 旅人が右端6で降車、三章の完成絵、05だけHISTORY 22を確認。
図形、札カード、現在モード、操作ヒント、記憶欄に重大な重なりや切れを認めませんでした。
標準フォントは小さめです。人間による端末別の読みやすさ評価は未実施です。

著作中に見つけて修正した点
- 書出し前の検証にtupleを渡していたため、JSONのlistへ正規化してから検証するよう修正。全保存試験を再実行。
- QA helperがvenv Pythonのシンボリックリンクを解決し、Pyxelのない基底Pythonで起動していた。venvの実行パスを保持し再実行。
これらは最終版で解消済み。初回エラーを最終合格の証拠には使っていません。

権利/配布
原作MITのLICENSEはバイト同一。全9 Pythonソースへ全文を埋込み。
参照されるNoto/Pyxel全文通知も同一。Notoの字形データは使用しません。
抜粋は実ソースの完全一致、隣接diffは現行ソースからの生成結果と一致。
原作model/controller/app/README/experiments/tests/LICENSE/notices計10ファイルのハッシュを再照合。
FROZEN_SHA256.jsonとtools/check_freeze.pyでファイルの欠落/追加/変更を検査します。

未確認
ブラウザー、OSキーの実入力、Windows/macOS実機GUI、人間による試遊/学習効果/面白さ、音の実聴。
18フレーム演出、表紙、ヘルプ等を省略しており、原作controller全体の完全互換ではありません。
