deps: earned_time 0.8.0 (per-minute tutor credit), fix stale 15-minute block comments
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 }}) (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) (push) Waiting to run
Tests / test (push) Waiting to run
Tests / web-coverage (push) Waiting to run
repo-contract / repo contract (push) Waiting to run

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Krzysztof Rudnicki 2026-10-10 18:22:04 +02:00
parent e4c61442c2
commit c518c44177
6 changed files with 9 additions and 8 deletions

View File

@ -110,7 +110,7 @@ repos:
- --disable-error-code=list-item
additional_dependencies:
- types-requests
- earned-time @ git+https://github.com/kuhyx/utils@earned-time-v0.7.0#subdirectory=earned_time
- earned-time @ git+https://github.com/kuhyx/utils@earned-time-v0.8.0#subdirectory=earned_time
# ===========================================================================
# PYLINT
@ -130,7 +130,7 @@ repos:
# (steam_backlog_enforcer._mcp_server).
additional_dependencies:
- aiohttp==3.14.4
- earned-time @ git+https://github.com/kuhyx/utils@earned-time-v0.7.0#subdirectory=earned_time
- earned-time @ git+https://github.com/kuhyx/utils@earned-time-v0.8.0#subdirectory=earned_time
- howlongtobeatpy==1.0.24
- mcp==2.3.0
- pytest

View File

@ -16,7 +16,7 @@ dependencies = [
"websockets==17.2",
# The earner registry (gaming budget terms); stdlib-only, so the root
# daemon imports it from the desktop user's site-packages.
"earned-time @ git+https://github.com/kuhyx/utils@earned-time-v0.7.0#subdirectory=earned_time",
"earned-time @ git+https://github.com/kuhyx/utils@earned-time-v0.8.0#subdirectory=earned_time",
]
# Optional extras. The `mcp` group is ONLY needed by the MCP server

View File

@ -5,7 +5,7 @@ aiohttp==3.14.4
bandit==1.9.4
codespell==2.4.3
coverage==7.16.2
earned-time @ git+https://github.com/kuhyx/utils@earned-time-v0.7.0#subdirectory=earned_time
earned-time @ git+https://github.com/kuhyx/utils@earned-time-v0.8.0#subdirectory=earned_time
howlongtobeatpy==1.0.24
mcp==2.3.0
mypy==2.4.0

View File

@ -184,7 +184,7 @@ def build_rules(rules: PlaytimeRules) -> dict[str, Any]:
"name": earner.name,
"label": earner.label,
"earned_seconds": rules.earned_seconds.get(earner.name, 0.0),
# The most a full day pays: the tutor's 4 blocks, not one.
# The most a full day pays: the tutor's 60 minutes, not one.
"bonus_seconds": _most(earner) * 60,
}
for earner in registry_for(datetime.now().astimezone().date())

View File

@ -6,8 +6,9 @@ publishes HMAC-signed ``credit`` rows, so the shared reader is all it needs:
it joins the budget with no code here.
A *counted* gate (the Automation tutor, from ``earned_time.TUTOR_FROM``) pays
per unit -- each verified 15-minute block -- so :func:`ledger_units` reads its
unit count for the day instead of a yes/no.
per unit -- each verified active minute (earned_time >= 0.8; a legacy
15-minute block row counts 15) -- so :func:`ledger_units` reads its unit
count for the day instead of a yes/no.
:func:`first_credits` feeds ``earned_time.resolve`` each penalised earner's
first real credit (earned_time >= 0.6), so a gate that never paid out costs

View File

@ -1,6 +1,6 @@
"""Tests for counted gate earners (the Automation tutor) in the gaming budget.
A counted gate pays per unit -- one verified 15-minute tutor block each --
A counted gate pays per unit -- one verified active tutor minute each --
so :func:`ledger_units` reads its unit count for the day and
``resolve_budget`` turns it into gaming time through the registry. A stand-in
counted earner is registered by patching ``earned_time.EARNERS``, which both