# App Channel Communication Spec ## Principle Member communication is delivered through EDUT app channels after wallet sign-in. ## Why 1. Avoids email deliverability and spam filtering constraints. 2. Avoids SMS compliance overhead. 3. Keeps communication tied to wallet-authenticated entitlements. ## Channel Model 1. Membership mint unlocks app download. 2. App sign-in with wallet activates member channel. 3. Push/in-app notifications are scoped to member ownership state. 4. Web never becomes a long-term broadcast channel once membership is active. ## Notification Classes 1. Offer availability relevant to owned memberships/entitlements. 2. License activation and entitlement state updates. 3. Platform updates and required migration actions. 4. Publisher updates for offers a member owns. 5. Membership policy changes that affect purchase or activation behavior. 6. Availability state transitions (`grace`, `continuity`, `parked`) and required recovery actions. ## Gate Rule No active membership -> no app access channel. Admin plane gate: 1. `org_root_owner` role can access support/admin classes (health diagnostics, config/update controls). 2. `workspace_member` role receives daily-use events only. 3. Member admin attempts return deterministic guidance: `contact_your_org_admin`. ## Deterministic Delivery Rules 1. Notification eligibility is computed from wallet-authenticated entitlement state. 2. Delivery payloads must include deterministic event ids for dedupe and audit. 3. Membership revocation/suspension immediately suppresses member-channel delivery. 4. No marketing list fan-out disconnected from entitlement state. 5. Event polling inbox is canonical; push transport is optional acceleration. 6. Boundary mismatch and parked-state events must include exact remediation steps. ## Contract References 1. `docs/api/member-channel.openapi.yaml` 2. `docs/api/examples/member-channel.examples.md` 3. `docs/handoff/member-channel-backend-checklist.md` 4. `docs/conformance/member-channel-vectors.md` ## Non-Goals 1. Marketing blast lists detached from wallet state. 2. SMS-first member notification flows. 3. Email-first member notification dependency.