Repository navigation
Commit 1f78b64
fix(service-messaging)!: retire renderNotification, the render export that takes a notification template body with no save moment (#25285)
<!-- claude-projects-attribution: {"github_login":"os-sales"} -->
_Requested by **Sales** · [project
thread](https://claude.ai/code/project/chan_01D5bWFY3rFzgJcytD5gD4Uu?thread=cmsg_01D5bWFY3rFzgJcytD5gD4UuN5urDpkXrVjR3HFM2Kxvjn)_
Part of #25190
PR 1 of ruling `6349343463` on #25190 (letter A): the
`renderNotification` half of ruling `6335348115` on #25082 (F2 B3). The
`renderTemplate` half (`@objectstack/plugin-email`) is not in this PR;
it waits until `check-adr-0087-registration` verifies it (item 4), and
#25190 remains open for it.
Clause-②: no (narrowing)
Metadata-protocol: none
## What changes
- `renderNotification` leaves the published entry of
`@objectstack/service-messaging`. It took a notification template body
inline and rendered it at once, with no save moment, so the
hole-placement rule judged by the `sys_notification_template` save hooks
(#25082, PR #25258) could not see it.
- The function stays inside the package, unchanged: the email and sms
channels render every stored template row through it.
- `interpolate` stays on the entry (ruling item 2, the card's first
measurement): it renders the plain-text faces (subject, text and
markdown bodies), which the placement rule judges at no door.
- Changeset: `patch` with the BREAKING banner and the ADR-0087 marker
`not-required (runtime-export-retired
@objectstack/service-messaging#renderNotification)`, and one FROM → TO
line pointing to a stored `sys_notification_template` row.
## Pins
`src/render-export-retired.pin.test.ts`:
- the entry does not export `renderNotification`;
- the control: the entry still exports `NotificationTemplateStore`,
`interpolate`, `TEMPLATE_OBJECT`, `createEmailChannel`,
`createSmsChannel`;
- a stored html template row still renders through an email channel
built from the entry: the html body with the hole encoded, the subject
verbatim.
Reverse check (one-off, no permanent file): with the base's `index.ts`
restored, the retired-name case went red (1 failed, 2 passed); restored
with `git checkout HEAD`, `git diff HEAD` empty.
## Verification
Readings are in the `os-dev-report` comment on #25190 for this PR's head
(tests, derived gates, dogfood battery). Consumers measured on
`origin/main`: zero imports of `renderNotification` from
`@objectstack/service-messaging` anywhere in this tree (tests included);
the card records zero in `objectstack-ai/hotcrm`; npm dependants
unmeasured.
## Acceptance notes
- Branch is the harness-pinned `claude/project-thread-gru6pg`, not
`claude/issue-25190-…`; the claim `6348488271` on #25190 is the identity
record, so the Duplicate Fix Guard's branch-name hint will not match.
- The `RenderInput` and `RenderedNotification` types stay on the entry;
they are types, which render nothing, and the ruling named only the
function.
- The spec-lane hand-off for the gate's member-signature homonym reading
is pointer `6349379881` on #18549; this project files no `domain:spec`
card.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01CP5uvqW3aX2Tfwy6YAsNu5)_
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01CP5uvqW3aX2Tfwy6YAsNu5
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent c9be979 commit 1f78b64
3 files changed
Lines changed: 108 additions & 1 deletion
File tree
- .changeset
- packages/services/service-messaging/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
90 | 98 | | |
91 | 99 | | |
92 | | - | |
93 | 100 | | |
94 | 101 | | |
95 | 102 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
0 commit comments