fix(tests): make test_derives_peak_day_from_interactions time-of-day-safe

What

Fixes a wall-clock-dependent flaky test in tests/test_sustainability_dispatch.py.

Why

_derive_hours_ratio (dispatch.py:794-796) buckets active-hours by UTC calendar date. The test backdated a span_turn 6h before a datetime.now(UTC) anchor to construct a same-day 6h span — but add_span_turn always stamps its row at the real current time, and a 6h-earlier backdate crosses midnight whenever the suite happens to run between 00:00 and 06:00 UTC, splitting the two turns across two day-buckets (each a lone point, 0h span) instead of one 6h span.

Confirmed this is the exact cause of the currently-failing python:test job on master and on MRs !627/!595 (both fail identically: assert 0.0 >= 1.0, at run times ~04:0x/04:5x UTC).

Verification

Reproduced with a monkeypatched clock against the pre-fix test across sampled hours:

hour=01 UTC: FAIL   hour=04 UTC: FAIL   hour=05 UTC: FAIL
hour=07 UTC: FAIL   hour=12 UTC: FAIL   hour=00 UTC: FAIL
hour=06 UTC: PASS   hour=18 UTC: PASS   hour=23 UTC: PASS

Same harness against the fixed test: PASS at every sampled hour, including the 00:00-06:00 UTC window that broke it before.

ruff check / ruff format --check clean. Full test_sustainability_dispatch.py file: 12 passed.

Scope note

typecheck also currently fails on master (951-953 pre-existing mypy errors across 99 files) — deliberately out of scope here; that's its own, much larger cleanup.

Merge request reports

Loading
Loading