2.3 KiB
2.3 KiB
adapter:outbound:notification — notification adapter
Registered identity
- Module ID:
adapter-outbound-notification - Gradle path:
:adapter:outbound:notification - Focused test (derived from Gradle path):
./gradlew :adapter:outbound:notification:test --console=plain - Runtime baseline: Java 21; repository framework baseline: Spring Boot 4.0.0.
- Registry SSOT:
src/config/architecture/modules.json.
Package root: dev.caskeleton.adapter.outbound.notification.
Responsibility
- Preserve the current raw notification router/provider seams only as the
R0 legacycompatibility baseline until the reviewed canonical cutover removes them. - Implement future provider protocols behind application-owned ports without leaking SDK, transport, bootstrap, or persistence types.
- Own provider settings, technical fallback mechanics, and provider adaptation; application policy owns mode, eligibility, retry/fallback decisions and business failure semantics.
- Reuse
adapter:outbound:supportfor shared outbound concerns.
Current R0 freeze
RoutingNotifierperforms route-list fan-out over(Channel, providerId).FailOpenNotificationProviderapplies one global fail-open rule.google-email/GoogleEmailClientandslack-webhook/SlackClientare fake-only extension seams, not production integrations or qualified provider cards.- Checked-in provider selector keys drift from the router's
routes+ providerenabledgrammar. Preserve and document that drift until the canonical graph replaces it; do not silently reinterpret the old keys. - There are no feature/application production consumers and no real-provider, durable, receipt, security, load, or rotation evidence.
- The exact legacy deletion inventory lives in README.md. Do not add behavior to those classes while building their canonical replacements.
Boundaries
- Allowed dependency edges come only from the module's
src/config/architecture/modules.jsonentry. - No inbound DTO/controller, persistence, bootstrap, or sample dependency.
- Provider selection may route configured channels but must not encode business eligibility rules.
Tests
Use provider/client fakes and contract tests; no real webhook or email network calls. Settings changes include binding/validation tests.