Context
Locked-channel enforcement (added in #97) lives at the checkChannelPermissions chokepoint (rules/permission/hasChannelPermission.ts) and blocks the permission checks that funnel through it:
canCreateDiscussion
canCreateEvent
canCreateComment
canUpdateChannel (wiki edits)
This matches the lock dialog's wording ("new discussions, events, and comments"). However, upvotes, downvotes, emoji reactions, and file uploads do not go through checkChannelPermissions, so they are not blocked on a locked channel.
Question
Is "locked = no new discussions/events/comments, but interactions (upvotes/reactions) still allowed" the intended scope, or should a lock make the channel fully read-only (also freezing upvotes/reactions/uploads)?
Notes
- The current behavior is consistent with the UI copy, so this may be intentional — filing to confirm rather than assuming.
- If full read-only is desired, the lock check would need to extend to the upvote/reaction/upload permission paths (which currently use
hasChannelPermission / mod-permission helpers directly rather than checkChannelPermissions).
🤖 Generated with Claude Code
Context
Locked-channel enforcement (added in #97) lives at the
checkChannelPermissionschokepoint (rules/permission/hasChannelPermission.ts) and blocks the permission checks that funnel through it:canCreateDiscussioncanCreateEventcanCreateCommentcanUpdateChannel(wiki edits)This matches the lock dialog's wording ("new discussions, events, and comments"). However, upvotes, downvotes, emoji reactions, and file uploads do not go through
checkChannelPermissions, so they are not blocked on a locked channel.Question
Is "locked = no new discussions/events/comments, but interactions (upvotes/reactions) still allowed" the intended scope, or should a lock make the channel fully read-only (also freezing upvotes/reactions/uploads)?
Notes
hasChannelPermission/ mod-permission helpers directly rather thancheckChannelPermissions).🤖 Generated with Claude Code