60 lines
2.1 KiB
Markdown
60 lines
2.1 KiB
Markdown
# 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.
|