fix(power): exempt charge-limit oneshot from start rate limiting
All checks were successful
Check / eval (push) Successful in 3m9s

Round 1 of #101's V3 failed on TuringMachine (2026-07-13 18:16): a
SPACED dock/AC event storm — each run finishing before the next event —
never coalesces, so 5 successful sub-second starts inside systemd's
default 10s window tripped start-limit-hit and marked the unit failed
(doctor badge) although every run succeeded. The write is idempotent
and cheap; rate limiting it only manufactures false failures, so the
unit sets StartLimitIntervalSec=0.

checks.battery-charge-limit now asserts the exemption and runs 8
sequential starts expecting a clean, non-failed state; the original
mid-run coalescing phase is unchanged.

Verified: V2 — the check passes under KVM (exit 0). V0 flake check
green. V3 round 2 re-queued in HARDWARE-QUEUE.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-13 18:26:00 +01:00
parent 720d9a38fb
commit f7246941e8
4 changed files with 60 additions and 14 deletions

View File

@@ -19,6 +19,21 @@ Template:
---
## 2026-07-13 — charge-limit start-limit-hit on spaced AC storms (this commit)
- **Task:** Live V3 failure of #101 (TuringMachine doctor badge, 18:16): a
spaced dock/AC event storm → 5 successful starts in 10s →
`start-limit-hit`, unit marked failed though every run succeeded.
- **Did:** `unitConfig.StartLimitIntervalSec = 0` on
`nomarchy-battery-charge-limit` (idempotent sub-second write — rate
limiting only manufactures false failures); extended
`checks.battery-charge-limit` with the exemption assert + an 8× sequential
start loop and a clean-state check.
- **Verified:** V2 — the check passes under KVM (exit 0: exemption asserted,
8 spaced starts, not failed, no start-limit-hit; original coalescing
phase still green). V0 flake check green.
- **Pending:** V3 round 2 re-queued in HARDWARE-QUEUE (#101 entry updated).
- **Next suggestion:** land the in-flight #93/#99/#107 evidence run.
## 2026-07-13 — #102 Nextcloud Desktop opt-in in the template (this commit)
- **Task:** BACKLOG #102 — document upstream HM `services.nextcloud-client`
as a downstream-template opt-in; no Nomarchy wrapper.