fix(idle): skip DPMS-off when docked (#127 mitigation)
All checks were successful
Check / eval (push) Successful in 5m24s

Blanking the only live output in dock mode led to a brick where wake and
even VT switch failed. Skip hypridle's 10m dpms off when any laptop
internal (eDP/LVDS/DSI) is present but not enabled; lock at 5m remains.
Undocked still blanks. Document LATER revisit for intentional
DPMS-when-docked once wake is proven.

V1: nix flake check --no-build. V3: docked idle stays lit under lock.
This commit is contained in:
2026-07-15 12:51:34 +01:00
parent e9ab0d8d64
commit 060bf524af
6 changed files with 81 additions and 57 deletions

View File

@@ -49,35 +49,20 @@ Everything else below stays open; order is convenience, not a gate.
restores **only** the radios that were on before. If Wi-Fi was already
off, it must stay off after disengage. Glyph must **not** appear when
airplane is off.
- [ ] **#127 docked idle blackout (AMD dev box, 2026-07-15)** —
**Incident (FAILED, unsolicited):** laptop docked, idle a few minutes,
screens went black ("sleep"). External keyboard/mouse did not restore
any display; unplugging the external did not re-enable the laptop
panel; Caps Lock LED still toggled (machine alive). Forced recovery
was needed; a long Grok session died with the brick.
**Important distinction:** on AC, hypridle is *not* supposed to
suspend — only lock (5m) + `dpms off` (10m). Confirm next time with
dump file or journal for `Suspending|PM: suspend` vs hypridle lines
so we know DPMS-stuck vs real S3.
**No SSH required** (post-#127 tooling): Caps Lock alive ⇒ machine is
up. Prefer **local TTY** over SSH:
1. `Ctrl+Alt+F3` → log in on the text console.
2. `nomarchy-display-wake` — try recovery (dpms on + undock rescue).
3. `nomarchy-display-dump` — writes `~/nomarchy-display-dump-*.txt`
(monitors, journals, DRM status). Open that file after the seat
is usable; no second machine needed.
4. Optional while unlocked: `SUPER+SHIFT+D` runs the same dump.
Auto: undock enable-fail and zero-output wake also dump under `~/`.
**Repro (after `nomarchy-home` + relogin so hypridle/watcher pick up):**
1. Dock, confirm dock mode (eDP disabled).
2. Idle past 10 min **or** force: `loginctl lock-session` then
`hyprctl dispatch dpms off`.
3. External KB/mouse — external should wake (`nomarchy-display-wake`
path). If not: TTY → dump → note.
4. Unplug external while black — eDP should return (undock + `dpms on`).
**Pass:** input wakes external while docked; undock while black restores
eDP without reboot; dump files only appear on real failures.
Related: docking recovery round 8 (awake undock) and BACKLOG #127.
- [ ] **#127 docked idle — mitigation check (AMD dev box)** —
**Context:** original brick = docked idle → black, no input wake, undock
no eDP, Caps Lock alive; Ctrl+Alt+F3 gave no usable TTY. **Shipped
mitigation:** skip DPMS-off while docked (internal present-but-disabled);
lock at 5m still. Full DPMS-when-docked deferred (BACKLOG LATER).
**After `nomarchy-home` + relogin:**
1. Dock (eDP disabled in `hyprctl monitors all -j` / not in `monitors`).
2. Idle past 10+ min (or wait for hypridle).
3. **Pass mitigation:** external still shows hyprlock (not black power-save);
`journalctl --user -t nomarchy-idle --since '-20 min'` has
`dpms-off skipped: docked`.
4. Undocked control: eDP only → at 10 min screen *does* blank; input wakes.
Optional: `nomarchy-display-dump` / SUPER+SHIFT+D for other display faults.
Related: docking round 8; LATER “DPMS when docked”.
- [ ] **#96 battery-limit row on threshold-less firmware (Acer M5-481T)** —
on the Acer (live or installed session with the commit carrying this
entry): open System (`SUPER+CTRL+I`). **Pass:** a "Battery limit" row