And no, separating problems cleanly does not necessarily make the whole more complicated (at least according to widespread design practices).
This is not separating problems cleanly to me.
I already presented the alternative, revoke(), which does not require an additional layer like that. What is unclean in it?It's a safeguard against programs hogging resources, including input. There is no cleaner way of doing that, and the overhead is minimal, logind should just relay the input further if it doesn't include a preset keystroke.
Making the console depend on layers of complexity in user space, yeah that'll all be there when things go south.... the console is there for emergencies, needs to depend on as little as possibile, This could be an essential part of GNOME 3!