SUNFLOWER ROBOTICS: CLASSROOM SIMULATION

Save main.py in a new folder. Use a trusted Python 3.9+ installation provided
by an adult or your instructor. No additional packages, accounts, downloads
inside the program, camera, network, or physical robot are required.

In your terminal, open that folder and run:
  python3 main.py --self-test
  python3 main.py --scenario clear
  python3 main.py --scenario mission --seed 7

On Windows, your instructor may use `py` in place of `python3`.

Expected test result:
  PASS: 16 checks (14 decisions, command limits, repeatable sensors)

Mission prints six JSON lines. Read decision.reason and display:
  clear     -> clear                      FORWARD
  obstacle  -> obstacle                   STOP
  missing   -> missing_or_invalid_sensor  STOP
  stale     -> stale_sensors              STOP
  invalid   -> invalid_command            STOP
  reverse   -> obstacle                   STOP

Every output includes after_duration with zero left/right/seconds. This is
a simulated end state. It is not a measured motor stop or a physical watchdog.

Distances and elapsed times are mock values. Speeds are unitless normalized
requests. MAX_SPEED does not specify volts, meters per second, or a PWM cap.
No real wiring or motor commands are included. Do not connect this teaching
program to GPIO or copy source-project motor tests into it.

Course design adaptation: the source family robot inspired the sense-decide-act
architecture. This new simulation requires every sensor channel to be healthy,
rejects invalid requests, limits commands, and treats unknown data as a stop.
It is intentionally not a faithful physical model of that robot.

For an optional physical extension, the instructor must confirm the actual
sensor model/voltage, power supplies, motor ratings, wiring, working channels,
command limits, and independent stop behavior. The historical family project
has conflicting hardware notes; those notes are not a classroom wiring guide.
Use a power-off parts map until the instructor has completed commissioning.

Suggested files learners create: prediction-log.txt, sensor-table.txt,
mission-review.txt. Use invented room names and synthetic observations. Share
code and test results with your instructor; no public video is needed.
