blankpad has had no idle screen lock for 8 days; lid close suspends it unlocked #47

Closed
opened 2026-10-20 17:23:49 -07:00 by dank · 1 comment
Owner

Fixed, deployed, started, and proven: Restart=always + StartLimitIntervalSec=0 + PartOf=graphical-session.target (d013795, PR #48), then kill -TERM on the live main PID produced NRestarts=1 with a new MainPID and active — the October event survived. Cause attributed to eight seconds (niri/noctalia started 16:22:31, swayidle exited 16:22:23), and the over-stated lid claim corrected in 5ab0a49 (PR #49): suspend was covered by noctalia's own sleep inhibitor; the idle lock is what was dead.

Two things deliberately not in scope here, tracked separately: the heartbeat liveness check is #50, and #40 stays open for the credential rotation.

cwd: /home/blank/.omp · session: 01a155bb-6474-7366-be9d-629f74af0e05

Fixed, deployed, started, and proven: `Restart=always` + `StartLimitIntervalSec=0` + `PartOf=graphical-session.target` (`d013795`, PR #48), then `kill -TERM` on the live main PID produced `NRestarts=1` with a new `MainPID` and `active` — the October event survived. Cause attributed to eight seconds (niri/noctalia started `16:22:31`, swayidle exited `16:22:23`), and the over-stated lid claim corrected in `5ab0a49` (PR #49): suspend was covered by noctalia's own sleep inhibitor; the idle lock is what was dead. Two things deliberately not in scope here, tracked separately: the heartbeat liveness check is **#50**, and `#40` stays open for the credential rotation. --- cwd: /home/blank/.omp · session: 01a155bb-6474-7366-be9d-629f74af0e05
Author
Owner

Correction after merge (measurement, not inference)

Two claims in this PR needed the follow-up in #49:

  1. The trigger is attributed. niri and noctalia both started Mon Oct 12 16:22:31 2026; swayidle went inactive (dead) at 16:22:23. The compositor session restarted and took the watcher with it — which is exactly what PartOf=graphical-session.target addresses. The user journal had nothing for that window, so the evidence is process ages.
  2. The lid claim was wrong. systemd-inhibit --list shows noctalia … sleep "Lock before sleep" delay: the shell locks on suspend independently of swayidle, so suspend was never unprotected. What was dead for eight days is the idle lock and after-resume. The method error — pgrep empty read as "no lock path", when a locker can be a hook inside a running shell — is now recorded in the docs with the instrument that catches it: systemd-inhibit --list.

Also documented: an omp agent session holds an idle inhibitor ("omp agent session" block), so swayidle logs Not enabling timeouts: idle inhibitor found and arms no idle timeout while an agent works.

The fix itself is unchanged and proven live: NRestarts=1 with a new MainPID after a deliberate SIGTERM.


cwd: /home/blank/.omp · session: 01a155bb-6474-7366-be9d-629f74af0e05

## Correction after merge (measurement, not inference) Two claims in this PR needed the follow-up in http://dankclaw:3000/dank/command-center/pulls/49: 1. **The trigger is attributed.** `niri` and `noctalia` both started `Mon Oct 12 16:22:31 2026`; swayidle went `inactive (dead)` at `16:22:23`. The compositor session restarted and took the watcher with it — which is exactly what `PartOf=graphical-session.target` addresses. The user journal had nothing for that window, so the evidence is process ages. 2. **The lid claim was wrong.** `systemd-inhibit --list` shows `noctalia … sleep "Lock before sleep" delay`: the shell locks on suspend independently of swayidle, so suspend was never unprotected. What was dead for eight days is the **idle** lock and `after-resume`. The method error — `pgrep` empty read as "no lock path", when a locker can be a hook inside a running shell — is now recorded in the docs with the instrument that catches it: `systemd-inhibit --list`. Also documented: an `omp` agent session holds an `idle` inhibitor (`"omp agent session" block`), so swayidle logs `Not enabling timeouts: idle inhibitor found` and arms no idle timeout while an agent works. The fix itself is unchanged and proven live: `NRestarts=1` with a new `MainPID` after a deliberate `SIGTERM`. --- cwd: /home/blank/.omp · session: 01a155bb-6474-7366-be9d-629f74af0e05
dank closed this issue 2026-10-20 17:55:30 -07:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dank/command-center#47