You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Parent: #89. MVP slice 2 of 3. Target: v1.8.0. Validates the source runtime in #216.
Outcome
One installation completes GNOME Wayland -> logout -> Plasma Wayland -> logout -> GNOME Wayland with the same configuration and no manual LG Buddy restart. Available interfaces determine adapter contributions; shared policy does not select a desktop/session profile.
Scope
Verify existing graphical-session service stop/start wiring, including a user manager kept alive by SSH/console logins or lingering. Fix demonstrated activation/environment gaps.
Keep interface connections and any Wayland/logind object selection inside adapters. Retain logind filtering of remote and non-graphical sessions and existing eligibility checks; diagnose ambiguous graphical matches.
Verify shutdown cancels subscriptions and pending checks. New monitoring cannot consume old observations/replies. Reconcile TV ownership through existing restore policy rather than discarding markers.
Exercise late interface startup, owner replacement and reconnection for activity and inhibition capabilities independently, using Compose independent activity and inhibition capabilities for GNOME and Plasma #216's contract. Each capability owns its push/pull handling and recovery inside the adapter; sharing a transport does not merge the paths. Inhibition meets activity eligibility only at the Boolean blanking gate. A quiet healthy push capability is not a failure.
Verify useful connection diagnostics while preserving independent gamepad monitoring and the separate system sleep/wake service. Record the available source set for each leg; an absent optional inhibition source is ordinary reduced coverage. Expected source availability belongs to the test setup, separately from the runtime decision.
Acceptance
The GNOME -> Plasma -> GNOME round trip requires no configuration edits, desktop selection or manual service restart.
Concurrent SSH/console logins do not change desktop integration; the round trip works with a retained user manager.
Old connections, observations and check replies cannot affect the next login.
Late/restarted interfaces recover automatically. Missing inhibition support does not disable a source's activity capability; startup, absence and source failure contribute no inhibitor. Quiet healthy push sources and pending refreshes retain their last observed state; failed reads drop the source contribution without manufacturing a release. Cancelled checks return no verdict and obsolete replies cannot authorize a later attempt.
Idle/restore, gamepad, lock/unlock and suspend/resume work on each leg, including recovery with an existing ownership marker.
Disabled built-in monitoring preserves passive notifications and unrelated GUI/CLI operation.
Boundary
The MVP supports one local graphical session per account alongside non-graphical logins. Simultaneous graphical desktops and fast user switching are separate scope; existing desktop support must not be deliberately removed.
This is lifecycle verification and fixes. #216 owns the inhibition coordinator, reconciliation semantics and adapter protocol behavior. The implementation, fixture and lifecycle evidence are delivered together in #231; final MVP validation combines the three slices.
Verification — 2026-09-12
All six acceptance items are verified. The complete implementation, concurrent TV fixture and evidence are consolidated in #231 on feat/217-desktop-session-validation.
The combined candidate (5e3522986672e177233c18102605830376c1c863) completed GNOME → Plasma → GNOME with unchanged configuration, user manager PID 865 retained, and SSH session 177 present through both switches. Monitor PIDs changed automatically from 2319 → 11680 → 22011; lifecycle PID 2315 survived throughout.
Every leg passed idle/restore, overlapping inhibitors and final-release delay, gamepad restore/reset, lock/unlock before and after actual guest s2idle, and joint TV power-off/WoL/HDMI_3 recovery. Both services retained their identities across suspend with zero restarts. Existing ownership markers survived logout and were restored on new input.
Live PowerDevil restart recovery passed without restarting LG Buddy. Existing adapter/private-bus/runtime tests verify late appearance, owner replacement, capability independence, retained quiet/pending state, failed-read semantics, cancellation and rejection of obsolete replies.
Separate disabled-monitoring checks passed on both GNOME and Plasma: real desktop Notify forwarding, installed GUI launch, CLI TV reads and no idle blanking. The original configuration was restored after these checks.
The earlier VM stalls were reproduced with both LG Buddy services stopped: a virtio GPU command-queue wait blocked desktop switching, and an Incus-agent 9p mount blocked suspend. The test VM's QXL display and masked unused agent allowed the full matrix to complete. No production workaround was needed.
The validation report records exact hashes, service identities, test controls and limits, including the corrected unlock harness and the earlier Hearth hardware observations: Complete #217 validation record.
This completed lifecycle matrix used PowerDevil for Plasma inhibition and does not claim native KWin inhibition coverage. The current MVP plan adds that independent source through #233, including prebuilt, local-build and absent-source validation. #233 owns the additional bridge lifecycle/integration checks; this completed #217 evidence remains valid for the source combinations actually tested. Activity and inhibition remain independent and meet only at can_blank().
All automated checks passed for the combined code, including 1,023 unit tests, 151 Cucumber scenarios, integration tests, Clippy, the real-CLI fixture smoke and all jobs in CI run 34711926512. One physical gamepad test remains ignored; virtual gamepad input was exercised live.
No remaining #217 implementation or validation blocker. Acceptance is complete and #231 merged into dev on 2026-09-12 as f1160d57d60a72d6fa63cbade6ea7858d0bbd50a. The PowerDevil-only MVP-boundary statements in the earlier evidence/comment describe the earlier plan; the current source/fallback plan is #233. This does not promote a prerelease or complete the remaining #89 MVP/reporter-validation work.
Parent: #89. MVP slice 2 of 3. Target: v1.8.0. Validates the source runtime in #216.
Outcome
One installation completes GNOME Wayland -> logout -> Plasma Wayland -> logout -> GNOME Wayland with the same configuration and no manual LG Buddy restart. Available interfaces determine adapter contributions; shared policy does not select a desktop/session profile.
Scope
Acceptance
Boundary
The MVP supports one local graphical session per account alongside non-graphical logins. Simultaneous graphical desktops and fast user switching are separate scope; existing desktop support must not be deliberately removed.
This is lifecycle verification and fixes. #216 owns the inhibition coordinator, reconciliation semantics and adapter protocol behavior. The implementation, fixture and lifecycle evidence are delivered together in #231; final MVP validation combines the three slices.
Verification — 2026-09-12
All six acceptance items are verified. The complete implementation, concurrent TV fixture and evidence are consolidated in #231 on
feat/217-desktop-session-validation.5e3522986672e177233c18102605830376c1c863) completed GNOME → Plasma → GNOME with unchanged configuration, user manager PID 865 retained, and SSH session 177 present through both switches. Monitor PIDs changed automatically from 2319 → 11680 → 22011; lifecycle PID 2315 survived throughout.The validation report records exact hashes, service identities, test controls and limits, including the corrected unlock harness and the earlier Hearth hardware observations:
Complete #217 validation record.
This completed lifecycle matrix used PowerDevil for Plasma inhibition and does not claim native KWin inhibition coverage. The current MVP plan adds that independent source through #233, including prebuilt, local-build and absent-source validation. #233 owns the additional bridge lifecycle/integration checks; this completed #217 evidence remains valid for the source combinations actually tested. Activity and inhibition remain independent and meet only at
can_blank().All automated checks passed for the combined code, including 1,023 unit tests, 151 Cucumber scenarios, integration tests, Clippy, the real-CLI fixture smoke and all jobs in CI run 34711926512. One physical gamepad test remains ignored; virtual gamepad input was exercised live.
No remaining #217 implementation or validation blocker. Acceptance is complete and #231 merged into
devon 2026-09-12 asf1160d57d60a72d6fa63cbade6ea7858d0bbd50a. The PowerDevil-only MVP-boundary statements in the earlier evidence/comment describe the earlier plan; the current source/fallback plan is #233. This does not promote a prerelease or complete the remaining #89 MVP/reporter-validation work.