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 { /**