014 流れ星の清掃員：5段階の日本語教材

掃除した経路が2.4秒だけ壁になる。そこを離れるまで自分は通れ、岩はすぐ反射する。
原作B「横切る岩」の因果を、移動→記録→所有者→岩→巻戻しの順で作ります。
原作一式ではありません。中間段階の練習ルールと省略機能は本文に明記しています。

まず実行
PythonとPyxelを用意した環境で、このフォルダーへ移動：
  python -m pip install -r requirements.txt
  python 01_sweep.py
01→02_lifetime.py→03_owner.py→04_rocks.py→05_rewind.pyの順に読みます。
5本はそれぞれ独立したファイル。元ゲーム、他段階、画像、字形、インターネットは実行時不要。
1本だけを別のフォルダーへ移しても動きます（Pyxelのインストールは必要）。
実検証はPython3.12.14 / Pyxel2.9.9 / Linux。新規OS別pip導入、Windows/macOS GUIは未検証。
Python3.10以上の構文。文字を読む処理はUTF-8を指定。モデルのimportではPyxelを読みません。

操作
全段階：方向キー保持で移動、SPACE保持で掃除、Rで同じBをやり直す。Escで終了。
斜めでも同速。SPACEを離すとごみを拾わず、線を作らず移動します。
01：ごみ回収だけ。壁の線も岩もない練習。
02：寿命付きの線を記録。線はまだ通れ、岩もいません。
03：一度離れ、生後0.18秒以上の自分の線が壁になる。岩はまだいません。
04：原作Bの岩と反射を追加。新しい線も岩には即座に有効です。
05：SPACE新押下でタイトル開始。Pで停止/再開、Zで1秒巻戻し。
タイトル開始のフレームは移動しません。SPACE保持は次フレームから掃除に使います。
停止中はZ無効。接触/成功の後はZで戻れます。RとPを同時に押せばRが優先。
音は実装していません。01〜04にタイトル/P/Zはありません。

原作Bの試し方
下の4個を横に掃いてから、右端を上へ行き、上の2個を掃きます。
--demoは原作成功入力を121入力フレーム再生し、約4.033333秒で6個回収します。
04/05では横壁が岩を上へ反射します。全部拾うか岩に触れると世界の時計も停止します。
時間制限はありません。03以降で線に止まったら、安全な場所で消えるまで待てます。

学び方と検証
LESSON.md：各段階の説明、見える結果、核のコード、間違い、課題、チェックリスト。
lessons.json：同じ5項目を機械可読で保存。全snippetは対応ソース内の完全一致。
diffs/：隣接する4組の正確な差分。
  python -B test_stages.py
  python -B tools/check_freeze.py
任意の原作直接比較：
  python -B tools/verify_original.py "原作014_starlight_sweeperフォルダーの絶対パス"
通常試験はqa/canonical_reference.jsonの原作由来fixtureで完結し、原作を探しません。
標準ライブラリだけの試験なので、Pyxelがない環境でも実行可能です。

実描画の再現
  python 05_rewind.py --headless --demo --frames 145 --screenshot result.png --report result.json
--replay-jsonはUTF-8の配列の配列で、各フレームに保持するキー名を入れます。
未指定フレームは全キー解放。--demoと--replay-jsonの併用は禁止です。
--framesは12〜100000。QA入出力には--headlessが必要。
画像とreportは現在の作業ディレクトリ基準。親フォルダーは事前に作ってください。
Pyxelの更新と描画は別なので、reportのactual_framesは実際に進めた入力回数を記録します。
qa/render_runs.jsonが各ソースSHA・入力・画像・状態report・ログを対応付けます。

配布と権利
A/C、タイトル左右の面選択、成功後N、F12、--baselineのCLI、録画を省略。
画面はASCIIと図形。原作の日本語字形データは使っていません。
LICENSEは原作MITの全文をそのまま同梱。各段階の冒頭にも全文を埋め込みます。
元LICENSEの参照先assets/NOTO-LICENSE.txtも原文のまま同梱。
詳しい比較範囲と未検証事項はlesson_meta.jsonとQA.txt。
原作ファイルは変更していません。人試遊、実OS入力、ブラウザー、音の検証とは別です。
