screen-locker/TODO-cap-bonus-at-day-ceiling.md
Krzysztof kuhy Rudnicki e1f1c668a8
Some checks are pending
dependency freshness / dependencies on newest stable (push) Waiting to run
md-naming / markdown naming convention (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (flutter, flutter-analyze, ) (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (mypy, mypy, ) (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (pylint, pylint, ) (push) Waiting to run
pre-commit / pre-commit (${{ matrix.group }}) (rest, , mypy,pylint,flutter-analyze) (push) Waiting to run
Tests / test (push) Waiting to run
Tests / lock-popup-safety (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (0) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (1) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (2) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (3) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (4) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (5) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (6) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (7) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (8) (push) Waiting to run
Tests / flutter test (shard ${{ matrix.shard }}) (9) (push) Waiting to run
Tests / flutter-coverage (push) Blocked by required conditions
Tests / web-coverage (push) Waiting to run
repo-contract / repo contract (push) Waiting to run
TODO: cap live shutdown bonuses at the day's earned_time ceiling (from the tutor-cutover handoff)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-10 09:17:58 +02:00

958 B

Cap every live shutdown bonus at the day's ceiling, not 24:00 / 23:00

Carried over from the 2026-10-10 tutor-cutover handoff (item 1a, optional).

what

The live bonus paths clamp at 24:00 (_shutdown.py _MIDNIGHT, ~:152) and then at adjust_shutdown_schedule.sh's fixed RESTORE_CEILING=1380 (23:00). If WAKE_MINUTES ever moves the earned_time ceiling below 23:00, a bonus could push shutdown past the real ceiling. Cap them at earned_time.shutdown_ceiling_for(day) instead (already wrapped in _earned.py ~:167).

where

screen_locker/_shutdown.py, screen_locker/adjust_shutdown_schedule.sh, scripts/_preview_sim.py (HELPER_CEILING mirrors RESTORE_CEILING).

must

  • The 168-case "do every task => 23:00" invariant test (fc54534) stays green.
  • must not: loosen anything — the shell ceiling remains a hard upper bound.

done

A test that sets a ceiling below 23:00 shows no bonus path exceeding it.

REMOVE ME AFTER FINISH