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: #216, within the #89 GNOME/Plasma MVP. Target: v1.8.0.
Outcome
Implement push-based inhibition, starting with GNOME SessionManager. Each capability maintains current inhibition state from ordered source events and exposes a Boolean permission facade, with separate diagnostics. The section combines participating adapters' Booleans.
Establish initial GNOME inhibition state and refresh after reconnect. Change-only notifications and periodic reconciliation trigger an internal state refresh. Those queries update the same contribution; they do not register GNOME again in Implement pull-based inhibition capabilities #223.
Keep event ordering, owner validation, obsolete-message rejection, connections and retries inside the adapter.
Combine different adapters' Booleans: any observed inhibition blocks. Startup, absence and source failure contribute no inhibitor. Quiet healthy subscriptions and pending refreshes retain the last observed state; failed reads drop that source's contribution without manufacturing a release.
GNOME inhibition is testable without its activity capability; inhibitor events never enter the activity stream or inactivity engine.
Startup with existing inhibition and changes during initial synchronization are covered.
Tests cover overlapping inhibitors, one ending while another remains, quiet subscriptions, owner loss/replacement, reconnect and delayed old events.
Internal refresh queries update one contribution, without an independent pull contributor for the same GNOME fact.
Section tests combine independent adapters' Booleans and matching diagnostics, including neutral startup/absence/failure, retained state during pending refreshes, and periodic reconciliation of missed additions/removals.
Boundary
#221 owns activity. This slice does not add activity queries, reinterpret idle notifications as inhibition, read preferences, implement aggregate release delay or decide TV actions. #223 implements capabilities whose acquisition mode is pull. #225 joins inhibition permission with activity eligibility only at can_blank().
Completion record — 2026-09-12
Implementation merged into dev in #227. The current runtime suite passes (1,019 unit tests, 151 Cucumber scenarios and runtime integration tests), including activity delivery, private-bus inhibition, cancellation/recovery, preference and gate coverage.
Real GNOME SessionManager overlap, final-release delay and gamepad/restore checks passed. Periodic refresh, owner replacement and obsolete events are covered by adapter tests.
#216 retains native Wayland coverage; #217 retains remaining VM lifecycle validation; #218/#219 retain portable configuration and diagnostics work. No prerelease/main promotion is authorized by closing this implementation slice.
Parent: #216, within the #89 GNOME/Plasma MVP. Target: v1.8.0.
Outcome
Implement push-based inhibition, starting with GNOME SessionManager. Each capability maintains current inhibition state from ordered source events and exposes a Boolean permission facade, with separate diagnostics. The section combines participating adapters' Booleans.
Scope
Acceptance
Boundary
#221 owns activity. This slice does not add activity queries, reinterpret idle notifications as inhibition, read preferences, implement aggregate release delay or decide TV actions. #223 implements capabilities whose acquisition mode is pull. #225 joins inhibition permission with activity eligibility only at
can_blank().Completion record — 2026-09-12
Implementation merged into
devin #227. The current runtime suite passes (1,019 unit tests, 151 Cucumber scenarios and runtime integration tests), including activity delivery, private-bus inhibition, cancellation/recovery, preference and gate coverage.Real GNOME SessionManager overlap, final-release delay and gamepad/restore checks passed. Periodic refresh, owner replacement and obsolete events are covered by adapter tests.
#216 retains native Wayland coverage; #217 retains remaining VM lifecycle validation; #218/#219 retain portable configuration and diagnostics work. No prerelease/main promotion is authorized by closing this implementation slice.