So I would think that if this was to go further then "channels" would need to be more of a first class citizen and created explicitly, with CREATE CHANNEL, DROP CHANNEL etc:
CREATE CHANNEL channame;
GRANT LISTEN ON CHANNEL channame TO rolename;
GRANT NOTIFY ON CHANNEL channame TO rolename;
LISTEN channame; -- OK
NOTIFY channame, 'hi'; -- OK
LISTEN xxxx; -- exception: no channel named "xxxx"
NOTIFY xxxx, 'hi'; -- exception: no channel named "xxxx"
Personally I think explicitly creating channels would be beneficial; I have hit issues where an typo in a channel name has caused a bug to go unnoticed for a while.
....But of course this would break backwards compatibility with the current model (with implicit channel names) so unless we wanted to force everyone to add "CREATE CHANNEL" statements during their upgrade then, maybe there would need to be some kind of system to workaround this....
Possibly some kind of "catch-all" channel, that enables implicit channel names?
GRANT LISTEN, NOTIFY ON CHANNEL * TO PUBLIC; -- enabled by default for backwards compat
NOTIFY xxxx; -- OK via * CHANNEL
LISTEN xxxx; -- OK via * CHANNEL