fix(display): #148 — enforce dock intent without the auto-profiles toggle
All checks were successful
Check / eval (push) Successful in 3m37s
All checks were successful
Check / eval (push) Successful in 3m37s
Every nomarchy-home re-lit eDP-1 inside the shut lid: HM activation fires hyprctl reload, the catch-all monitor rule re-enables the panel, and the tick invariant built for exactly this (#142, enforce_dock_intent) never fired — it was gated on settings.displayProfileAuto, the *named-profile* auto-switch toggle, which is unrelated to dock intent and off unless opted into. Confirmed live on the incident machine: dockMode=true, displayProfileAuto unset, watcher journal empty — every tick returned at that guard. Fix: drop the auto_on gate. settings.display.dockMode alone is the user's recorded intent (written by the menu and the dock transition); the profile-active check remains as the real guard (a named profile outranks the dock heuristic). No fight with the #142 undock hammer: undock clears the intent before its rescue reload, so the enforcer stands down by ordering. tools/monitor-fallback.nix grows the reload-mid-dock scenario: fake lid closed, hyprctl reload, panel re-disabled within ~4s, action=re-dock logged — under displayProfileAuto's default false, i.e. the exact condition the bug shipped under. Verification: V2 — nix flake check --no-build green, checks.docking-ux green, monitor-fallback harness green three times (implementer twice, reviewer once, ~71s VM). V3 pending: relogin + nomarchy-home while docked-clamshell (HARDWARE-QUEUE; the watcher is exec-once, the fix arms at next login). Implementation by a Sonnet subagent; diagnosis, design and review on Fable. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -19,6 +19,22 @@ Template:
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-17 — #148: dock intent now enforced without the auto-profiles toggle
|
||||
- **Task:** BACKLOG #148 (promoted from PROPOSED by Bernardo in-session).
|
||||
- **Did:** one-line fix — `enforce_dock_intent` dropped its `auto_on || return`
|
||||
guard (`settings.displayProfileAuto` gates named-profile auto-switching, not
|
||||
dock intent; with it, the #142 invariant never fired for anyone not opted
|
||||
into auto profiles — confirmed live on this box: dockMode=true, auto unset,
|
||||
watcher journal empty). Comment rewritten to record the why.
|
||||
`tools/monitor-fallback.nix` grew a reload-mid-dock scenario. Implementation
|
||||
by a Sonnet agent from my design; diagnosis + review here.
|
||||
- **Verified:** V2 — flake check green, checks.docking-ux green, monitor-
|
||||
fallback harness green ×3 (coder ×2 + my independent re-run): lid closed →
|
||||
reload → panel re-disabled ~4s, `action=re-dock` logged.
|
||||
- **Pending:** V3 queued (relogin + nomarchy-home docked-clamshell; watcher is
|
||||
exec-once so the fix arms at next login). Rides with #149's relogin check.
|
||||
- **Next suggestion:** #127 rewrite from the boot -4 forensics; then #134.
|
||||
|
||||
## 2026-07-17 — #147: doctor learns to see machine state the flake never set
|
||||
- **Task:** BACKLOG #147 (promoted from PROPOSED by Bernardo in-session).
|
||||
- **Did:** `nomarchy-doctor` gains a machine-state-drift check — linger as the
|
||||
|
||||
Reference in New Issue
Block a user