web/docs/app-channel-spec.md

2.1 KiB

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.