- Plan takes rpe_targets, one RPE per week; its length sets the block length.
- src/language/opengym.py converts a plan into OpenGym routines queued as a
rotation and pushes them through the API, with a state backup before each write.
- scratch.py gains --opengym, --opengym-dry-run, --opengym-replace,
--opengym-migrate and --opengym-accessories, plus the current block's numbers
and accessory layout.
- Fix the kg-to-lb factor in scratch.py (2.20462).