earned_time 0.12.1: park UNIFIED_FROM (2027-01-01) until screen-locker's late-credit rule ships

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Krzysztof Rudnicki 2026-10-17 17:24:07 +02:00
parent 67f14588f7
commit 2ec1c6e9b1
4 changed files with 9 additions and 6 deletions

View File

@ -40,7 +40,7 @@ never a same-day cut):
The two floors are derived separately (`_resolve._shutdown_floor`), so the
ladder cannot move a gaming minute.
**Unified ladder (0.12.0, `UNIFIED_FROM` 2026-10-18):** each rung pays what
**Unified ladder (0.12.0; `UNIFIED_FROM` parked at 2027-01-01 in 0.12.1):** each rung pays what
its earner pays in gaming (workout 120, LeetCode 60, reading 60, tutor 1/unit
to 60), so the floor drops 18:50 -> 18:00 under the same 23:00 ceiling:
nothing 3 h / 18:00, workout 5 h / 20:00, +LeetCode 21:00, +reading 22:00.
@ -240,7 +240,7 @@ on the day itself is logged and does not count.
## Install
```console
pip install --user --break-system-packages --no-deps "earned-time @ git+https://github.com/kuhyx/utils@earned-time-v0.12.0#subdirectory=earned_time"
pip install --user --break-system-packages --no-deps "earned-time @ git+https://github.com/kuhyx/utils@earned-time-v0.12.1#subdirectory=earned_time"
```
The root `steam-backlog-enforcer.service` sets `HOME=/home/kuhy`, so it imports

View File

@ -51,8 +51,10 @@ TUTOR_FROM: Final = date(2026, 10, 10)
ANKI_WAIVED_FROM: Final = date(2026, 10, 9)
# From this day every rung pays exactly the gaming time its earner pays
# (:data:`UNIFIED_LADDER`, 0.12.0). It lowers the floor 18:50 -> 18:00, so it
# lands the day after the deploy (2026-10-17), never on it.
UNIFIED_FROM: Final = date(2026, 10, 18)
# lands the day after the deploy, never on it. Parked (0.12.1) until
# screen-locker's late-credit rule ships: an 18:00 floor without it locks out
# a credit landing after the shutdown.
UNIFIED_FROM: Final = date(2027, 1, 1)
_SLEEP_MINUTES: Final = 8 * 60
_DAY_MINUTES: Final = 24 * 60

View File

@ -29,7 +29,8 @@ def _day(day: date, **done: int) -> tuple[int, str]:
def test_switch_is_the_day_after_the_deploy() -> None:
assert date(2026, 10, 18) == UNIFIED_FROM
assert date(2027, 1, 1) == UNIFIED_FROM # parked until the late-credit rule
assert ladder_for(date(2026, 10, 18)) is TUTOR_LADDER
assert ladder_for(EVE) is TUTOR_LADDER # deploy day keeps the old rungs
assert ladder_for(UNIFIED_FROM) is UNIFIED_LADDER

View File

@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "earned-time"
version = "0.12.0"
version = "0.12.1"
description = "Penalty-then-reward registry: what every gate app earns in gaming time and shutdown time"
requires-python = ">=3.14"
dependencies = []