fix(power): exempt charge-limit oneshot from start rate limiting
All checks were successful
Check / eval (push) Successful in 3m9s
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:
@@ -11,20 +11,20 @@ the **T14s** (webcam case).
|
||||
|
||||
## Any machine (dev box is fine)
|
||||
|
||||
- [ ] **#101 charge-limit service survives USB-C power-event bursts** —
|
||||
after updating/rebuilding to the commit carrying this entry, clear the
|
||||
old failure with `sudo systemctl reset-failed
|
||||
nomarchy-battery-charge-limit.service`. Plug and unplug the powered
|
||||
USB-C dock twice, allowing five seconds after the last transition.
|
||||
**Pass:** `systemctl show nomarchy-battery-charge-limit.service -p
|
||||
ActiveState -p Result` reports `ActiveState=inactive` and
|
||||
`Result=success`; `systemctl is-failed
|
||||
nomarchy-battery-charge-limit.service` is false; BAT0's
|
||||
`charge_control_end_threshold` still matches the configured/live limit;
|
||||
and `journalctl -b -u nomarchy-battery-charge-limit.service` contains
|
||||
no new `SIGTERM`, `start-limit-hit`, or `Failed with result` lines after
|
||||
the rebuild. Capture that journal plus `udevadm monitor
|
||||
--subsystem-match=power_supply` if it fails.
|
||||
- [ ] **#101 charge-limit service survives USB-C power-event bursts**
|
||||
(round 2) — round 1 FAILED on TuringMachine 2026-07-13 18:16: a
|
||||
*spaced* storm (each run finished before the next AC event) landed 5
|
||||
successful starts in 10s → `start-limit-hit`, unit marked failed,
|
||||
doctor badge — although every run succeeded. Fixed by exempting the
|
||||
unit from start rate limiting (`StartLimitIntervalSec=0`) + a
|
||||
spaced-storm guard in `checks.battery-charge-limit` (the commit
|
||||
carrying this entry). **Re-check:** after pulling/rebuilding this
|
||||
commit, `sudo systemctl reset-failed nomarchy-battery-charge-limit
|
||||
.service`, then plug/unplug the powered USB-C dock several times in
|
||||
quick succession. **Pass:** `systemctl is-failed
|
||||
nomarchy-battery-charge-limit.service` stays false, `Result=success`,
|
||||
BAT0's `charge_control_end_threshold` still matches the limit, and the
|
||||
journal has no new `start-limit-hit`/`Failed with result` lines.
|
||||
- [ ] **Docking recovery round 4 (#100, closed-lid BenQ sequence)** — after
|
||||
updating to the commit carrying this entry, run `nomarchy-home` and
|
||||
relogin. With the lid open, put visible windows on at least workspaces
|
||||
|
||||
Reference in New Issue
Block a user