DL-345
An agent-attached channel’s read grant is the OWNER set — the anchoring agent’s owner_user_id and that user’s agents — as a deliberate product decision (Matt: “by default, yes, all agents under an owner can read all channels from that owner”), NOT as a reuse of existing OWNER-group semantics: the owner-set viewer CTE exists only in the two GROUP queries (go/internal/store/queries/channels.sql:93, :118), while all three CHANNEL predicates grant non-member access solely through the SHARED-group arm (:152-153, :181-182, :211-212), so the disjunct mints a new visibility class rather than matching a precedent. Attachment bounds only the NON-MEMBER grant — members read regardless of owner, since cross-owner members exist (a converted DM carries both owners). A per-channel ACL is the named successor that will gate specific channels off, slotting in as one more conjunct in the three predicate copies plus the participant probe; this design keeps that insertion cheap and does not attempt the ACL
Status: Active (Matt, 2026-09-07)
Record: ../../ui/compass-channels-in-agent-tree/design.md#2-the-visibility-invariant