52 lines
1.7 KiB
Markdown
52 lines
1.7 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.
|
|
|
|
## Gate Rule
|
|
|
|
No active membership -> no app access channel.
|
|
|
|
## 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.
|
|
|
|
## 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.
|