/**
 * Ports: How eval reports reach team-defined notification channels.
 *
 * Two hexagonal ports (D0002) keep report→channel matching pure and I/O-free
 * in the domain kernel while the side effects live in `packages/eval`:
 *
 * - `TeamSubscriptionSource` — read port: load the teams whose channels might
 *   subscribe to a report (a GROQ read adapter implements it).
 * - `NotificationChannelAdapter` — deliver port: post resolved content to one
 *   channel (the Slack bot-token adapter implements it).
 *
 * The matcher in `notifications/match.ts` depends on neither — it turns a
 * report plus a set of teams into `ChannelDelivery[]`. A `NotificationService`
 * (in eval) composes the source, the matcher, and the adapters.
 */
export {};
