Skip to content

Commit 1fe7845

Browse files
committed
chore(changeset): grade the isConfigured widening patch with Metadata-protocol none
IEmailService is a service contract, not authorable metadata, so under the level rule now on main the entry declares Metadata-protocol: none and ships patch for both packages; the Clause-2 widening line stays as claimed. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D6F9axfoPzR7t8G1J7Ytzz
1 parent 518c569 commit 1fe7845

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

‎.changeset/25065-email-service-is-configured.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
---
2-
'@objectstack/spec': minor
3-
'@objectstack/plugin-email': minor
2+
'@objectstack/spec': patch
3+
'@objectstack/plugin-email': patch
44
---
55

66
feat(spec, plugin-email): `IEmailService.isConfigured()` answers whether mail sent through the service is actually delivered
77

88
Clause-②: yes (widening: an optional member on `IEmailService`)
9+
Metadata-protocol: none
910

1011
- **The contract.** `IEmailService` (`@objectstack/spec/contracts`) gains one optional member, `isConfigured?(): boolean`, with the same name and shape as `ISmsService.isConfigured()`. `true` means the active transport hands mail to a real delivery provider. `false` means no mail leaves the process: sends still resolve and still write their audit row. A `log` transport is never delivering, in any environment. The answer is read at call time and follows a transport swapped in at runtime.
1112
- **Absent means unknown.** The member is optional, so every existing implementation stays valid. A consumer must never read an absent member as delivering: a flow whose success depends on a mail reaching someone treats absent the same as `false` and keeps its explicit refusal, so a service that is merely wired is never mistaken for one that delivers.

0 commit comments

Comments
 (0)