Skip to content

fix(spec): correct false CoreServiceName JSDoc claims in contracts/*.ts - #9762

Merged
os-elon merged 1 commit into
mainfrom
claude/issue-9752-email-service-jsdoc
Aug 18, 2026
Merged

fix(spec): correct false CoreServiceName JSDoc claims in contracts/*.ts#9762
os-elon merged 1 commit into
mainfrom
claude/issue-9752-email-service-jsdoc

Conversation

@os-elon

Copy link
Copy Markdown
Collaborator

Fixes#9752

What

packages/spec/src/contracts/email-service.ts:11 claimed "Aligned with CoreServiceName 'email' in core-services.zod.ts" — CoreServiceName has no email member (email is subsumed under notification). The runtime slot 'email' is real (@objectstack/plugin-email calls ctx.registerService('email', ...)); only the claim about where the name comes from was false. Corrected to name the real registry slot and its registrant, and to note the relationship to 'notification' — per the card's suggested resolution. No enum member was added (the #9630-class forbidden fix).

Template sweep (triage-instructed)

The "Aligned with CoreServiceName 'X' in core-services.zod.ts" sentence is copied across 16 files in packages/spec/src/contracts/*.ts. Checked every instance against the actual CoreServiceName enum (packages/spec/src/system/core-services.zod.ts): metadata, data, auth, file-storage, search, cache, queue, automation, analytics, realtime, job, notification, ai, i18n, ui.

FileClaimed memberIn enum?Action
auth-service.tsauthyesunchanged (byte-identical)
notification-service.tsnotificationyesunchanged
automation-service.tsautomationyesunchanged
analytics-service.tsanalyticsyesunchanged
storage-service.tsfile-storageyesunchanged
export-service.tsexportnofixed — no CoreServiceName slot, no evidenced provider binding at all (no registerService('export', ...) anywhere in the tree, no implementer)
ai-service.tsaiyesunchanged
realtime-service.tsrealtimeyesunchanged
job-service.tsjobyesunchanged
i18n-service.tsi18nyesunchanged
metadata-service.tsmetadatayesunchanged
cache-service.tscacheyesunchanged
queue-service.tsqueueyesunchanged
email-service.tsemailnofixed — primary target; runtime slot 'email' is real, registered by @objectstack/plugin-email, subsumed under notification in the enum
search-service.tssearchyesunchanged
seed-loader-service.tsseed-loader+ "SeedLoaderProtocol in data/seed-loader.zod.ts"no (both halves)fixed — no CoreServiceName slot, no registration binding, and SeedLoaderProtocol does not exist anywhere in the repo (not even in data/seed-loader.zod.ts, whose exports are SeedLoaderRequestSchema/SeedLoaderResultSchema/SeedLoaderConfigSchema). metadata-protocol's SeedLoaderService implements the contract by direct construction, not ctx.registerService.

Totals: 16 checked, 13 true (left byte-identical), 3 false (fixed).

data-engine.ts ("Aligned with 'src/data/data-engine.zod.ts'") and llm-adapter.ts ("Aligned with IAIService in ai-service.ts") also contain "Aligned with" sentences but are a different claim shape (pointing at a schema file / sibling contract, not asserting CoreServiceName membership) — out of this sweep's scope, not evaluated for truth here.

Scope

JSDoc prose only — no interface shape, no runtime, no schema changes. No member was added to CoreServiceName. Verified contracts/*.ts JSDoc feeds no generator on this diff: no reference doc under content/docs/references/ embeds these sentences (grepped), and no other source file quotes the "Aligned with CoreServiceName" sentence outside packages/spec/src/contracts/*.ts itself.

Tests

  • pnpm --filter '@objectstack/spec' build — clean.
  • pnpm --filter '@objectstack/spec' test — full package suite ran (the name filter did not narrow it): 413 test files / 10,987 tests passed.
  • pnpm --filter '@objectstack/spec' typecheck — pass.
  • Gate list below (all 17 gates the dispatch-time derivation names, re-derived post-diff with node scripts/pm/dispatch-gates.mjs), all green at fee9e2a: check:changeset-gate-self-tests, check:cross-package-test-inputs, check:doc-formula-expressions, check:empty-state, check:liveness, check:merge-driver, check:objectui-changeset, check:spec-parsed-alias, check:strictness-ledger, check:type-source-resolution, check:variant-docs, check-adr-0087-registration.mjs, check-changeset-no-major.mjs, check-cross-package-test-inputs.mjs, check-dev-prereqs.mjs --self-test (matches CI's invocation — the full-workspace-build scan mode is not what CI runs here), check-empty-changeset.mjs, check-affected-docs.mjs (self-test). Plus check:generated (13/13 artifacts up to date — confirms contracts/*.ts JSDoc feeds no generator on this diff) and check:docs (229 generated files in sync), and node scripts/check-nul-bytes.mjs (clean).

Changeset

patch on @objectstack/spec — comment-only, but the JSDoc text is emitted into the published package's .d.ts output, so it is a (very small) user-visible change.


Generated by Claude Code

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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016D9wdJR14KKCxz1WgdAzcw
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

Nothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)), so this run has no opinion about the docs.

What this run could not see
  • 3 changed file(s) yielded no anchor (packages/spec/src/contracts/email-service.ts, packages/spec/src/contracts/export-service.ts, packages/spec/src/contracts/seed-loader-service.ts) — pages documenting those are invisible to this run

Coarse fallback — 115 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json e2899f6bee8214e31a9481854ff0bf6cc97177cepackageMentionDocs.

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation tooling labels Aug 18, 2026
@os-elon
os-elon marked this pull request as ready for review August 18, 2026 22:36
@os-elon
os-elon enabled auto-merge August 18, 2026 22:36
@os-elon
os-elon added this pull request to the merge queueAug 18, 2026
Merged via the queue into main with commit 985a9cdAug 18, 2026
27 checks passed
@os-elon
os-elon deleted the claude/issue-9752-email-service-jsdoc branch August 18, 2026 23:17
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/stooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

IEmailService JSDoc claims alignment with a CoreServiceName 'email' member that does not exist

2 participants

@os-elon@claude