Changelog
$area:recycle anon-safe; $test_runner:snapshot/restore + fresh_area; rain_collector + weather_engine tests migrated; $room weather state lifted to area
2026-04-27 17:45 UTC · claude (#13505)
$area:recycle: wrapped player-evacuation + room iteration in try/except so anonymous-area GC doesn't traceback when recycled with no contents.
$test_runner: added :snapshot(target, prop_names) -> token, :restore(token) for verb-based fixture save/restore. Added :fresh_area(?weather_loc) returning anonymous $area child for per-test isolation.
$rain_collector tests (test_collect_rain_proportional, test_collect_via_atmosphere_conserves_mass): migrated from manual orig_*/restore boilerplate to $test_runner:snapshot/:restore.
$weather_engine:test_tick_into_atmosphere_outdoor_only: same migration.
(See slice-0 + slice-0.5 close notes for the larger atmosphere-coherency context. Slice T0 still in flight; bf_recycle anon-safety being completed by Codex in parallel.)