diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index c737fee..540d1ee 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -136,6 +136,35 @@ high-ROI, etc.) live in the journal + ROADMAP — not here.* ### Product / day-2 +### 148. Every `nomarchy-home` re-lights the laptop panel inside a shut lid + +Bernardo, 2026-07-16, and he hit it twice in ten minutes: after `nomarchy-home` +the laptop panel "turns on again" while docked **lid closed**, and he had to +re-set docking by hand from the Display menu. Then an agent's `hyprctl reload` +silently undid his fix and re-lit it a second time — confirmed live: +`/proc/acpi/button/lid/*/state` = `closed` with `eDP-1` enabled and +`dpms_on=true`, i.e. a panel burning inside a shut clamshell with nobody +looking at it. + +**Cause is a known hammer with no follow-through.** `hyprctl reload` re-applies +every monitor rule and re-enables every output — the ROADMAP already calls this +"the #142 hammer", and the undock transition *relies* on it. But +`nomarchy-display-watch` only reacts to `monitoradded`/`monitorremoved`; a +reload emits neither, so nothing re-asserts the dock profile and the panel just +stays on. Any HM activation reloads Hyprland, so **every rebuild while +docked-clamshell lights the panel** and leaves it lit until the user notices. +Journal for the window is empty — display-watch never saw a thing. + +Cost: wasted power and panel life, and the live display state silently diverging +from the profile the user chose — the exact class of "you have to fix it by +hand" that the display work exists to remove. Fix is probably to re-assert the +dock/clamshell profile *after* a reload rather than only on hotplug: either +watch the lid switch as a trigger in its own right (logind already knows), or +have the transition/activation path re-run the dock decision once the reload +settles. Note the ordering trap — the reload is also the undock rescue, so +whatever re-asserts must not fight the rescue that deliberately re-enables eDP +when the lid is open. + ### 146. hypridle dies silently and systemd calls it healthy Fell out of the #127 diagnosis (2026-07-16, ROADMAP § "#127 solved"), and it is diff --git a/agent/HARDWARE-QUEUE.md b/agent/HARDWARE-QUEUE.md index 1b83d6b..09b2ccd 100644 --- a/agent/HARDWARE-QUEUE.md +++ b/agent/HARDWARE-QUEUE.md @@ -70,10 +70,19 @@ Everything else below stays open; order is convenience, not a gate. `hypridle.conf` reads `on-timeout=hyprctl dispatch dpms off`. 4. ✓ The brick condition on purpose, from config: `systemctl --user stop hypridle` + `hyprctl dispatch dpms off` → **keypress woke it in 4s**, - docked **lid open** (`DP-2,eDP-1`) — which also retires the old - "docked with the lid open is untested" caveat. The clamshell variant - woke in 6s the same day. Wake is now proven in all three geometries - (undocked lid-open, clamshell-docked, docked lid-open). + with both outputs enabled (`DP-2,eDP-1`). The clamshell variant (DP-2 + alone) woke in 6s the same day. Wake proven with one enabled output + and with two; DPMS-on-input is compositor-level and does not care how + many. + **Correction (2026-07-16, Bernardo):** the commit that added this + entry (321ccf7) claimed that 4s run was "docked, lid OPEN" and that it + retired the old "docked lid-open is untested" caveat. **Both wrong.** + The lid was **shut the whole time** — `eDP-1` was lit *inside a closed + clamshell* because a `hyprctl reload` had re-enabled it (#148). "Lid + open" was inferred from an output being enabled, which is not evidence + of anything: `/proc/acpi/button/lid/*/state` is, and it was never + checked. Docked-lid-open remains **untested** — moot now that the gate + is gone, but not tested. Do not read output lists as lid positions. **Still open — needs real idle time, cannot be rushed:** 2. Docked, **lid closed**, idle 10+ min → the external **blanks**. This is the revert working; nothing to date has watched a genuine 10-min