071 ねじまき工房：五段階の日本語教材

入口: LESSON.md。構造化本文: lessons.json、画面/原作差分: lesson_meta.json。
各段階は独立した.py。Python3.11以上/Pyxel2.9.9。実検証Linux Python3.12.14。
python 01_connections.py
python 02_cam_phase.py
python 03_walking.py
python 04_forecast.py
python 05_timeline.py

操作はLESSON.mdを参照。Rは状態だけ初期化、コードの変更は保存→終了→再実行。
教材UIはASCII、他ファイル不要。原作の日本語画面/連続運転/保存UIを省略。
全A/B/Cデータ、初期Aの四歩、D連結成分だけの閉路停止を保持。
03から順序つき歩行判定、04から同モデル八刻予告、05からUndo/累積256判断。
四歩基本達成後の六歩は任意。架空の整数玩具で、実機の設計・安全には使いません。
MIT全文を各.pyのコメントに保持。Noto/Pyxel通知はassetsに保持。教材はグリフを使いません。

標準ライブラリの検証（教材フォルダで実行）
python -B test_stages.py
python -B qa/cp932_check.py
python -B qa/exercise_checks.py
python -B qa/verify_freeze.py

実Pyxelの短い検証（新しい出力フォルダを指定、上書きしません）
SDL_AUDIODRIVER=dummy python -B qa/runtime_checks.py /絶対パス/新規runtime
SDL_AUDIODRIVER=dummy python -B qa/relative_output_check.py /絶対パス/新規relative
SDL_AUDIODRIVER=dummy python -B qa/render_boundaries.py /絶対パス/新規boundary

原作との再比較（読み取りだけ。出力先は新規フォルダ）
python -B qa/reference_check.py /原作/071_clockwork_workshop /絶対パス/新規reference

単体の画像出力例
python 05_timeline.py --headless-smoke --demo-checkpoint --screenshot result.png
画像の相対パスは起動した作業フォルダ基準。Pyxelのimport/initより前に絶対化。
既存ファイル・不存在の親・png以外・headlessなしの画像出力は拒否します。
--headless-smokeは短く終了。--demo-checkpointはその段階の合成入力を再生。
入力ファイルの再現ではなく定めたチェックポイント。通常の遊びでは付けません。

qa/REVIEW.mdが実施範囲と限界。qa/final-results.jsonが検証結果。
FROZEN_SHA256.jsonは自身とPythonキャッシュを除く全ファイルの正確な集合とSHA256。
編集練習後は元へ戻さない限り凍結確認は失敗し、これは正常です。
ブラウザー、物理キーボード、Windows/macOS実機、音の実聴、人の学習効果は未確認。
