3147b6ddf4
emitTreeEvent and emitCommentEvent were byte-identical (same room resolution, spaceHasRestrictions gate, hasRestrictedAncestor, authorized-only vs broadcast fallback). Collapse the body into one private emitRestrictedAwareToSpace; both stay thin wrappers with unchanged signatures, so the restriction-routing gate lives in exactly one place. Adds coverage for the comment entry point. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>