feat: jpa, messaging, notification, mongo, graphql 어댑터터 구현체 추가
This commit is contained in:
@@ -2,18 +2,48 @@
|
||||
|
||||
What each channel can actually prove, and what the platform refuses to claim.
|
||||
|
||||
The grade column is not an opinion. `docs/notification/evidence-manifest.json` declares which claims
|
||||
each grade requires and which executable artifact proves each claim, and
|
||||
`./gradlew verifyNotificationEvidence` refuses a grade whose claims are not all backed by a file that
|
||||
exists. Raising a grade means adding the artifact first.
|
||||
|
||||
Five channels read `Stable` until 2026-08-15. Nothing in the pipeline had ever sent a request to a
|
||||
provider — the sandbox job's whole body was two `echo` statements behind `continue-on-error` — and
|
||||
no test killed a worker mid-dispatch. The protocols are implemented and their contracts are proven
|
||||
against real PostgreSQL; the wire and the crash are not. That is what the grade now says.
|
||||
|
||||
## Channels
|
||||
|
||||
| Channel | Reference implementation | Grade | Strongest evidence the platform records by default |
|
||||
|---|---|---|---|
|
||||
| Email | SMTP, Amazon SES API | Stable | Provider acceptance; recipient mail-server delivery, bounce and complaint when the provider publishes events |
|
||||
| SMS | Twilio Programmable Messaging | Stable | `accepted`/`queued`, `sent`, and carrier-DLR `delivered`/`undelivered` |
|
||||
| Mobile push (Android and cross-platform) | FCM, FID-first with legacy registration token compatibility | Stable | FCM acceptance and explicit failures |
|
||||
| Mobile push (Apple) | APNs HTTP/2 provider API | Stable | APNs acceptance |
|
||||
| Web Push | RFC 8030, RFC 8291, RFC 8292 | Stable | Push-service acceptance; user-agent acknowledgement only where the service offers receipts |
|
||||
| Email | SMTP, Amazon SES API | Contract implemented / runtime unqualified | Provider acceptance; recipient mail-server delivery, bounce and complaint when the provider publishes events |
|
||||
| SMS | Twilio Programmable Messaging | Contract implemented / runtime unqualified | `accepted`/`queued`, `sent`, and carrier-DLR `delivered`/`undelivered` |
|
||||
| Mobile push (Android and cross-platform) | FCM, FID-first with legacy registration token compatibility | Contract implemented / runtime unqualified | FCM acceptance and explicit failures |
|
||||
| Mobile push (Apple) | APNs HTTP/2 provider API | Contract implemented / runtime unqualified | APNs acceptance |
|
||||
| Web Push | RFC 8030, RFC 8291, RFC 8292 | Contract implemented / runtime unqualified | Push-service acceptance; user-agent acknowledgement only where the service offers receipts |
|
||||
| In-app inbox | Own database | Optional stable | `PERSISTED`, `SEEN`, `READ` |
|
||||
| Webhook | HTTP client platform | Extension | Whatever the receiving HTTP contract states |
|
||||
|
||||
## What each grade requires
|
||||
|
||||
| Grade | Requires |
|
||||
|---|---|
|
||||
| Stable | durable, multi-worker-safe, callback-supported, recoverable, provider-wire-qualified |
|
||||
| Contract implemented / runtime unqualified | durable, multi-worker-safe, callback-supported |
|
||||
| Optional stable | durable |
|
||||
| Extension | nothing; the receiving contract owns its own guarantees |
|
||||
| Experimental | nothing; the grade is the warning |
|
||||
|
||||
`recoverable` was met on 2026-08-15 by `WorkerCrashRecoveryContractTest`, which walks the four
|
||||
phases a dispatch passes through — claimed, attempt written, request started, body committed — and
|
||||
asserts for each that the delivery becomes claimable again or becomes a question for the provider,
|
||||
never both and never neither.
|
||||
|
||||
The remaining unmet claim, and what would meet it:
|
||||
|
||||
- **provider-wire-qualified** — a real provider sandbox call producing an immutable, uploaded
|
||||
artifact with a correlation id. No request has ever left the process in CI.
|
||||
|
||||
## Evidence levels
|
||||
|
||||
`NONE` → `PLATFORM_QUEUED` → `PROVIDER_ACCEPTED` → `NETWORK_OR_CARRIER_ACCEPTED` →
|
||||
|
||||
Reference in New Issue
Block a user