utils/earned_time/earned_time
Krzysztof kuhy Rudnicki ba4dd58545
Some checks failed
dependency freshness / dependencies on newest stable (push) Waiting to run
file length / file-length (push) Waiting to run
md-naming / markdown naming convention (push) Waiting to run
palette drift / palette (push) Waiting to run
repo-contract / repo contract (push) Waiting to run
shared gate tests / gate unit tests (push) Waiting to run
earned_time pre-commit / pre-commit (push) Has been cancelled
earned_time tests / test (push) Has been cancelled
leetcode-coach pre-commit / pre-commit (push) Has been cancelled
leetcode-coach tests / test (push) Has been cancelled
earned_time 0.21.0: focus day pays 240 gaming
kuhy 2026-11-02: keep the 180 base cut, pay 2 gaming min per focus min
(240 at 120/120), so a full focus day is 8 h again; an idle day stays 2 h.
FocusEarner.cut_gaming_minutes holds the cut (_resolve._gaming_cut) so the
pay (cut + pure bonuses again) can exceed it. Shutdown unchanged. Carry
rows (focus_project 0.6.0, <project>-<YYYYMMDD>-carry) pay like own rows;
test added. Failure modes unchanged: focus_project unusable = no project
(fail-open, logged); unreadable ledger = None, earns nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WzxdWYGW5NZL5uVpnqmNKo
2026-11-02 15:22:10 +01:00
..
tests earned_time 0.21.0: focus day pays 240 gaming 2026-11-02 15:22:10 +01:00
__init__.py earned_time 0.19.0: focus project earner 2026-11-02 08:23:50 +01:00
__main__.py earned_time 0.6.0: gate maturity classifier (python -m earned_time maturity), confirmed_on, first_credits-aware penalty start 2026-10-09 21:21:18 +02:00
_cli.py earned_time 0.19.0: focus project earner 2026-11-02 08:23:50 +01:00
_credits.py earned_time 0.18.0: a LeetCode bonus needs the day paid in full; gate_off lets one solve earn on a stood-down day 2026-10-24 13:13:23 +02:00
_evidence.py earned_time 0.6.0: gate maturity classifier (python -m earned_time maturity), confirmed_on, first_credits-aware penalty start 2026-10-09 21:21:18 +02:00
_focus.py earned_time 0.21.0: focus day pays 240 gaming 2026-11-02 15:22:10 +01:00
_ladder.py earned_time 0.19.0: focus project earner 2026-11-02 08:23:50 +01:00
_ledger.py earned_time 0.18.0: a LeetCode bonus needs the day paid in full; gate_off lets one solve earn on a stood-down day 2026-10-24 13:13:23 +02:00
_leisure.py earned_time 0.16.0: leisure=None|True|False, so the gaming day decides (C6) 2026-10-19 16:58:27 +02:00
_match.py earned_time 0.19.0: focus project earner 2026-11-02 08:23:50 +01:00
_maturity.py earned_time 0.19.0: focus project earner 2026-11-02 08:23:50 +01:00
_policy.py earned_time 0.9.0: tutor earner renamed AUTOMATION_TUTOR/automation -> TUTOR/tutor, ledger ~/.local/share/tutor 2026-10-12 16:31:50 +02:00
_quota.py earned_time 0.10.0: tutor quota per weekday (15 min Tue-Thu, 30 Mon/Fri, 50 Sat/Sun for the full 60) 2026-10-12 21:07:03 +02:00
_registry.py earned_time 0.19.0: focus project earner 2026-11-02 08:23:50 +01:00
_resolution.py sickdays 0.1.0 + earned_time 0.11.0: uncapped sick-day pool, 20:00 sick shutdown floor 2026-10-16 08:23:00 +02:00
_resolve.py earned_time 0.21.0: focus day pays 240 gaming 2026-11-02 15:22:10 +01:00
_sick.py earned_time 0.13.0: sick day = 20:00 + gaming pay of what was done (was max(20:00, earned)) 2026-10-17 17:27:34 +02:00