Skip to content

Commit 1406d0e

Browse files
committed
test(runtime): the converted-collections fixture's email template stops authoring the retired category and isSystem
The #22994 fixture modelled a 17.x-emitted email template with `category: 'custom'` and `isSystem: false`. This branch retires both keys, and its tree-scoped absence pin refuses an email-template literal that authors either one. The test's assertions do not depend on the two keys (its dashboard legs carry the conversion proof); the header and fixture notes are corrected to say why the template carries neither. Claude-Session: https://claude.ai/code/session_019G5ZnRrTMiwcHG6iZM19zf Co-authored-by: Claude <noreply@anthropic.com>
1 parent c116f76 commit 1406d0e

1 file changed

Lines changed: 14 additions & 9 deletions

File tree

‎packages/runtime/src/app-plugin-converted-collections.test.ts‎

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@
2020
*
2121
* The second type is `dashboard`, converted by the major-18 retired entry
2222
* `dashboard-refresh-interval-to-refresh-interval-seconds` (retiredAfter
23-
* 17.3.0). It sits beside `emailTemplates`, the card's own type. That type has
24-
* no conversion on this tree: its `category` / `isSystem` retirement is a
25-
* separate change. So its legs below assert the contract (the registry
26-
* holds the conversion's OUTPUT, and that output passes the email loader's own
27-
* parse). That contract has no retired key to bite on here, and it does the
28-
* day a retirement of that type lands.
23+
* 17.3.0). It sits beside `emailTemplates`, the card's own type. Its legs
24+
* below assert the contract (the registry holds the conversion's OUTPUT, and
25+
* that output passes the email loader's own parse). The fixture template
26+
* authors no retired key: the `category` / `isSystem` retirement (#22876)
27+
* converts those two, and its tree-scoped absence pin keeps them out of
28+
* authored literals.
2929
*
3030
* Out of scope, on purpose: the PARSE axis. The door strict-parses (schema
3131
* defaults, ADR-0122 transforms), and the registry copy does not. So the item
@@ -59,15 +59,20 @@ const STAMPS = { _packageId: APP_ID, _packageVersion: '1.0.0', _provenance: 'pac
5959

6060
/** A dashboard carrying the retired `refreshInterval` spelling. */
6161
const RETIRED_DASHBOARD = { name: 'ops_board', label: 'Ops Board', widgets: [], refreshInterval: 300 };
62-
/** What a 17.x parse emitted for an email template: both defaulted keys present. */
62+
/**
63+
* An email template in the artifact. It no longer carries the `category` /
64+
* `isSystem` defaults a 17.x parse emitted: #22876 retires both keys, and its
65+
* tree-scoped absence pin refuses an email-template literal that authors
66+
* either one outside the retirement kit. The legs below still assert the
67+
* contract for this type; the conversion of those two keys is pinned by that
68+
* retirement's own tests.
69+
*/
6370
const EMAIL_TEMPLATE = {
6471
name: 'probe.welcome',
6572
label: 'Welcome',
6673
locale: 'en-US',
6774
subject: 'Welcome',
6875
bodyHtml: '<p>Hi</p>',
69-
category: 'custom',
70-
isSystem: false,
7176
};
7277

7378
/**

0 commit comments

Comments
 (0)