ADR-003 — Communication as 9th Domain
ADR-003: Communication as 9th Top-Level Domain
Status: Accepted | Date: 2026-04-15 | Supersedes: v1 04-semester-management.md SS5, v1 10-admin-system.md SS4
Context -- What v1 does
v1 splits communication across two unrelated domains:
- Email Management (04-semester-management.md SS5): Semester-scoped automated email templates with trigger conditions, template variables, preview, test-send, and clone-from-previous. Sits alongside Tags, Welcome Package, and Operations as semester configuration.
- Notifications (10-admin-system.md SS4): Broadcast push notifications to all users. No recipient filtering. A single form under Admin & System.
There is no blast email, no announcement board, no 1:1 messaging, and no communication audit trail anywhere in v1.
Decision
Communication becomes the 9th top-level sidebar domain (IA shifts from 8+1 to 9+1 domains). It contains 6 screens:
| Screen | Origin | Type |
|---|---|---|
| Automation Emails | Absorbed from 04-semester-management.md SS5 (Email Management) | Existing, enhanced with sequence view |
| Blast Emails | Net-new | New |
| Push Notifications | Absorbed from 10-admin-system.md SS4 (Notifications), enhanced with recipient filtering | Existing, enhanced |
| Announcement Board | Net-new (replaces community board concept) | New |
| Private Messages | Net-new (bidirectional student/teacher inbox) | New |
| Communication Logs | Net-new | New |
Boundary decision: Issue Queue (10-admin-system.md SS6) stays in Admin & System. It is ticketed support, not messaging.
Rationale
From the Apr 15 meeting:
- Stakeholder wants a unified communication section: "I would like to have like a separate section that's just for like all types of communication like automation emails, email blasts, push notifications."
- Blast email is a critical gap: "we don't currently have that as an option at all."
- Community board replaced by one-way announcement board; bidirectional 1:1 messaging confirmed despite implementation risk: "We discussed that and we decided to take the risk."
- Tags stay where they are (Decision #7) but bulk email will use tags for recipient filtering.
Consequences
First-order -- direct spec changes
- New spec file
11-communication.mddefining all 6 screens. - 04-semester-management.md: remove SS5 (Email Management) from sidebar items and screen list.
- 10-admin-system.md: remove SS4 (Notifications) from sidebar items and screen list.
- 00-spec-index.md: add Communication to SS3 Master Navigation Tree; update screen counts from 35 to 39 (net +4 new screens).
Second-order -- cascade to other specs
- 00-spec-index.md SS6 WF1: step 11 ("Semester Management > Email Management") now points to Communication > Automation Emails.
- 04-semester-management.md SS3.5 (Overview tab) Automation section "View All Emails" link retargets to Communication > Automation Emails.
- 04-semester-management.md SS3.6 (Setup Checklist) "Email Templates" deep link retargets to Communication > Automation Emails with
?semester=[id]. - 02-dashboard.md: "Send Notification" quick action retargets to Communication > Push Notifications.
- 01-global-patterns.md: sidebar definition gains a 9th domain entry.
What we lose
- Email templates lose their co-location with other semester config (Tags, Welcome Package, Operations). Admins configuring a new semester must now cross into a separate domain for email setup. Mitigated by Setup Checklist deep links continuing to work.
- Notifications lose their proximity to other system admin tools.
What we gain
- Unified place for all outbound communication (automated, manual, push, in-app).
- Blast email capability that does not exist today.
- Communication audit trail via Logs screen.
- 1:1 messaging channel replacing informal WhatsApp/email.
Implementation notes
- Automation Emails preserves semester-scoping as a filter (not a parent domain constraint).
- Mockup scope: all 6 screens get list/form layouts; Private Messages gets a conversation thread UI. Actual message delivery is production-only.
- Identity switching was rejected (see ADR-004); replaced with admin pre-drafting for TAs.
Open questions
- Sequence view data source: all students, sample, or searched student?
- Template library: unified across automation and blast, or separate?
- Scheduling: send-now only, or future scheduling for blast/push?
- Announcement board permissions: admin-only, or can TAs post?
- Private Messages: in-app only, or email fallback?