からくり島の航路：5段階教材

Python 3.11以上 / Pyxel 2.9.9。各.pyは独立、外部画像・字形・原作ファイルなしで起動。
詳しい解説、確認手順、実験、差分案内はLESSON.md。
01 手動航行 → 02 積み荷と島在庫 → 03 命令列 → 04 C報告と依頼 → 05 Undoと停止。
燃料はありません。「補給」は島の在庫が周期的に増えることです。

準備（ZIPは全展開）:
Windows:
py -3 -m venv .venv
.venv\Scripts\python -m pip install -r requirements.txt
.venv\Scripts\python 01_voyage.py
.venv\Scripts\python 05_undo.py
macOS/Linux:
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
.venv/bin/python 01_voyage.py
.venv/bin/python 05_undo.py

←→ 候補選択、Space 一日。01/02は手動、03以降は初期命令列MA,L,MH,U。
03以降: MはH停泊中の手動切替、Eで編集。←→候補、Z末尾追加、Backspace末尾削除、
Enter保存、E取消。1〜6枚。空列や七枚目は不可。編集に日数はかかりません。
05: X Undo、Bは全状態を初期化してLOOP/STOP切替、Enterは末尾停止から無料再開。
Rは即初期化（LOOP/STOPを維持）、Escは即終了。確認画面はありません。
一キーを押したら全部離して次へ。同時押しは拒否、Rは新しい押下で優先。

規則: 出港1日＋距離日、到着日は次カードを実行しません。
船倉上限2、島在庫上限4、H倉庫へ降ろして配達。空積み/空降ろしも1日。
A補給は3日周期、Bは2日。積載後に補給。原作AのCは補給なし。
Cの距離・在庫・周期・景色・航行残日数はHへの報告まで範囲/?を表示。
船倉は船自身の観測なので表示します。期限24日ちょうどまでに倉庫6＋C報告で達成。
期限を過ぎても観察は続き、すでに達成した日付は保持します。

原作Aとの主な違い: 01〜03は機能を減らした練習。04は依頼、05はUndoと停止を追加。
A/B/C海域選択、連続自動再生/一時停止、セーブ/ロード、日本語字形、編集枠置換は省略。
教材のBは全初期化を伴う比較です。全操作の履歴保存ではなく、日・編集・エラーを記録。

困ったら: キーを全部離す。FAULTは05のXまたはR。編集不可ならTARGETを確認。
C訪問だけでは?は消えずH帰港が必要。期限終了後も動けるのは原作規則です。
No module named pyxelなら起動に使う同じpythonでrequirementsを導入。
GUI/OpenGL対応環境が必要です。headless成功はWindows/macOS GUIの保証ではありません。

検査:
python test_stages.py
任意の原作照合はPYXEL096_ORIGINALに原作フォルダかmodel.pyを指定。
未指定なら追加の1テストだけ明示skip。同梱参照fixtureの照合は通常でも実行。
python qa/verify_freeze.py
実Pyxel再検査（出力先は新しいフォルダ）:
python qa/render_check.py --out /tmp/096_new_check
このpythonにはPyxel2.9.9が必要です。標準ライブラリ検査には不要。
qa/reference_fixture.jsonは原作Aの決定論的操作列。全状態網羅ではありません。
qa/generate_reference.pyは別途原作を明示して資料を新規出力するスクリプトです。

限定QA CLI:
python 04_report.py --headless-smoke --demo-checkpoint --screenshot /tmp/096_new.png
--framesはheadless時のみ2〜600で、チェックポイント到達より短い値は拒否。
--screenshotはheadless時、新規.png、親フォルダ既存の場合だけ。既存ファイルは拒否。
通常のゲーム操作ではファイルを書きません。QA CLI以外の保存機能もありません。

未確認: OSキー入力、ブラウザー、Windows/macOS GUI、ユーザーPC、人の学習効果、音声。
実Pyxel headless描画と内部キーイベントはqa/に記録。教材は無音。
LICENSEは原作LICENSE.txtの正確な別名。全段階に全文と参照先noticesを保持。
ASCIIと図形のみ使用し、Noto字形データは使っていません。
