From fee9e2a0874e5df68bfa4dfbe8421af851af33c9 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 18 Aug 2026 22:34:07 +0000 Subject: [PATCH] fix(spec): correct false CoreServiceName JSDoc claims in contracts/*.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit email-service.ts claimed "Aligned with CoreServiceName 'email'" but CoreServiceName has no `email` member — email is subsumed under `notification`. The runtime slot `'email'` is real (registered by `@objectstack/plugin-email`); only the claim about where the name comes from was false. Corrected to name the registry slot and its registrant. Swept all 16 copies of the "Aligned with CoreServiceName 'X'" template sentence across packages/spec/src/contracts/*.ts against the actual CoreServiceName enum. Two more were false: export-service.ts ('export') and seed-loader-service.ts ('seed-loader' + a fabricated "SeedLoaderProtocol in data/seed-loader.zod.ts" that does not exist anywhere in the repo) — neither is a CoreServiceName member nor has any evidenced registerService binding. The other 13 are true and left byte-identical. No CoreServiceName member added (the #9630-class forbidden fix). JSDoc prose only — no interface shape, no runtime, no schema changes. Fixes #9752 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_016D9wdJR14KKCxz1WgdAzcw --- .changeset/email-service-core-service-name-jsdoc.md | 5 +++++ packages/spec/src/contracts/email-service.ts | 4 +++- packages/spec/src/contracts/export-service.ts | 4 +++- packages/spec/src/contracts/seed-loader-service.ts | 7 ++++++- 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 .changeset/email-service-core-service-name-jsdoc.md diff --git a/.changeset/email-service-core-service-name-jsdoc.md b/.changeset/email-service-core-service-name-jsdoc.md new file mode 100644 index 0000000000..198e4e2394 --- /dev/null +++ b/.changeset/email-service-core-service-name-jsdoc.md @@ -0,0 +1,5 @@ +--- +"@objectstack/spec": patch +--- + +fix(spec): correct false "Aligned with CoreServiceName '…'" JSDoc claims across `packages/spec/src/contracts/*.ts` — `email-service.ts` now names the real `'email'` runtime slot registered by `@objectstack/plugin-email` (not a `CoreServiceName` member; subsumed under `'notification'`), and `export-service.ts` / `seed-loader-service.ts` now state plainly that they have no evidenced `CoreServiceName` slot or registration binding (`seed-loader-service.ts`'s companion "SeedLoaderProtocol in data/seed-loader.zod.ts" claim was also fabricated — no such export exists). The other 13 template instances were checked against `CoreServiceName` and left byte-identical; they are true. Comment-only; accept/reject behaviour is unchanged (#9752) diff --git a/packages/spec/src/contracts/email-service.ts b/packages/spec/src/contracts/email-service.ts index 4d84d177b4..97b1391499 100644 --- a/packages/spec/src/contracts/email-service.ts +++ b/packages/spec/src/contracts/email-service.ts @@ -8,7 +8,9 @@ * `@objectstack/plugin-email`; integrations (nodemailer, third-party * SDKs) plug in as an `IEmailTransport`. * - * Aligned with CoreServiceName 'email' in core-services.zod.ts. + * Registered as runtime service slot 'email' by `@objectstack/plugin-email` + * (`ctx.registerService('email', ...)`). Not a `CoreServiceName` member + * itself — email delivery is subsumed under the 'notification' core service. * * Follows Dependency Inversion Principle - plugins depend on this * interface, not on concrete email service implementations. diff --git a/packages/spec/src/contracts/export-service.ts b/packages/spec/src/contracts/export-service.ts index 23f2203084..3a87ced142 100644 --- a/packages/spec/src/contracts/export-service.ts +++ b/packages/spec/src/contracts/export-service.ts @@ -11,7 +11,9 @@ * Follows Dependency Inversion Principle - plugins depend on this interface, * not on concrete export service implementations. * - * Aligned with CoreServiceName 'export' in core-services.zod.ts. + * Not a `CoreServiceName` member and not a registered runtime service + * slot — `IExportService` has no evidenced provider binding (see + * core-service-contracts.ts's evidence-bar note). */ import type { diff --git a/packages/spec/src/contracts/seed-loader-service.ts b/packages/spec/src/contracts/seed-loader-service.ts index ec5cb20bf7..53a615e781 100644 --- a/packages/spec/src/contracts/seed-loader-service.ts +++ b/packages/spec/src/contracts/seed-loader-service.ts @@ -24,7 +24,12 @@ import type { Seed } from '../data/seed.zod.js'; * - **ServiceNow**: Sys ID and display value mapping during import * - **Airtable**: Linked record resolution via display names * - * Aligned with CoreServiceName 'seed-loader' and SeedLoaderProtocol in data/seed-loader.zod.ts. + * Not a `CoreServiceName` member and not a registered runtime service slot + * (no `SeedLoaderProtocol` export exists in data/seed-loader.zod.ts either — + * the request/result shapes there are `SeedLoaderRequestSchema` / + * `SeedLoaderResultSchema`). `metadata-protocol`'s `SeedLoaderService` + * implements this contract directly, constructed rather than registered + * via `ctx.registerService`. */ export interface ISeedLoaderService { /**