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