fix(session): recover user services after a broken logout teardown

2026-07-18 dev-box incident: on a warm relogin (user manager kept alive
by the tty1 greetd session — no linger involved) the previous logout's
graphical-session.target stop had been rejected as a destructive
transaction (easyeffects held a queued start job), so the target stayed
active across the logout. Its WantedBy services (cliphist, swaync,
xdg-desktop-portal-*, swayosd, …) crash-looped against the dead Wayland
socket into start-limit-hit, and the next login's plain
'start hyprland-session.target' was a no-op — every session service
stayed failed, doctor red, until a reboot.

Session bring-up (HM's systemd.extraCommands, rendered into the first
exec-once) now stops both hyprland-session.target and a possibly-stale
graphical-session.target, clears failed/start-limit state with
reset-failed, then starts fresh. All three commands are no-ops after a
clean logout or cold boot.

Verified V1: home generation built against this tree renders the new
command chain into hyprland.conf line 1 (nix build of
homeConfigurations.bernardo with the nomarchy input overridden).
V3 pending: warm relogin on hardware — queued in HARDWARE-QUEUE with
exact steps; BACKLOG #149 updated with the incident evidence (the
exec-once posture it watches is defending against a real race).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-18 21:11:39 +01:00
parent 8e8a142465
commit 8fdd9dc423
3 changed files with 40 additions and 0 deletions

View File

@@ -517,6 +517,16 @@ Everything else below stays open; order is convenience, not a gate.
`~/.nomarchy/flake.nix` has `?ref=main` (not lagging v1). **Pass:**
`nomarchy-rebuild` does not die with
`The option 'nomarchy.hardware' does not exist`.
- [ ] **Relogin session recovery (2026-07-18 incident)** — after pulling
the session-recovery commit and rebuilding: from a full Hyprland
session (bar up, a browser open so easyeffects/tray are busy), log
out (SUPER+SHIFT+E) and log straight back in at the greeter — do
**not** reboot between. **Pass:** `nomarchy-doctor` shows *no failed
user units*; `systemctl --user status cliphist swaync
xdg-desktop-portal-hyprland swayosd` are all `active (running)`; the
bar, notifications, and clipboard history (SUPER+V) work. This is
the V3 close for the stale `graphical-session.target` /
`start-limit-hit` relogin breakage (BACKLOG #149 note).
## AMD dev box only
- [ ] **#118 smartd still runs where drives DO have SMART** (this commit) — the