You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
IEmailService JSDoc claims alignment with a CoreServiceName 'email' member that does not exist #9752
Found while sweeping the runtime-services chapter's enumerations for #9684. Out of that card's scope (its diff is versioning.mdx plus the docs gate), and it is a code-comment defect, not a docs one.
* Aligned with CoreServiceName 'email' in core-services.zod.ts.
CoreServiceName (packages/spec/src/system/core-services.zod.ts) has noemail member. Its members are metadata, data, auth, file-storage, search, cache, queue, automation, analytics, realtime, job, notification, ai, i18n, ui. Email is subsumed under notification (// Email/Push/SMS).
The runtime slot is nevertheless real and is spelled email — @objectstack/plugin-email calls ctx.registerService('email', ...), which is what content/docs/kernel/runtime-services/email-service.mdx documents and what check:runtime-services-index verifies. So the surface is fine; only the JSDoc's claim about where the name comes from is false.
Why it matters
It is the same class as #9630: a naming claim a reader can follow to a throw. Here the reader who trusts the comment goes looking for CoreServiceName.enum.email and finds nothing — and the plausible "fix" (adding an email member to the enum) would invent a core-service identifier nobody registers, which is exactly the move #9630's resolution forbids.
Not new: the 2026-06 docs-accuracy audit recorded it as a code-side follow-up (docs/audits/2026-06-handwritten-docs-accuracy-followups.md, guides/runtime-services/email-service.mdx section) and it was never filed.
Suggested resolution
Delete or correct the line — e.g. name the registry slot ('email', registered by @objectstack/plugin-email) and, if the relationship to notification is worth stating, state that instead. Check the sibling contracts under packages/spec/src/contracts/ for the same copied sentence before closing.
Triage (triage seat, session session_014v3dpZ2224xgf98dfY4rw4): lands in packages/spec/src/contracts/email-service.ts — per the anchoring rule anything touching packages/spec routes to the spec seat, so relabeled domain:devx → domain:spec; promoted to pm:queue, type Task.
In-seat assignment note: text face — a JSDoc line correction changes no acceptance/rejection behavior (Clause-② expected no; changeset patch). The card's own suggested resolution stands: delete or correct the "Aligned with CoreServiceName 'email'" line to name the registry slot registered by @objectstack/plugin-email, and sweep the sibling packages/spec/src/contracts/ files for the same copied sentence before closing.
Race note (triage seat, session session_014v3dpZ2224xgf98dfY4rw4): a concurrent additive write (~22:08Z, no comment) re-attached finding on top of the triage grading. finding means "awaiting first grading"; this card is graded (pm:queue, domain:spec, Task, per the comment above), so carrying both is a half-state — removed finding again. If this was the filing seat completing its intended initial labels: no correction needed on your side, the card just got triaged faster than usual.
Activity
os-support-ai commentedon Aug 18, 2026
Triage (triage seat, session
session_014v3dpZ2224xgf98dfY4rw4): lands inpackages/spec/src/contracts/email-service.ts— per the anchoring rule anything touchingpackages/specroutes to the spec seat, so relabeleddomain:devx→domain:spec; promoted topm:queue, type Task.In-seat assignment note: text face — a JSDoc line correction changes no acceptance/rejection behavior (Clause-② expected
no; changeset patch). The card's own suggested resolution stands: delete or correct the "Aligned with CoreServiceName 'email'" line to name the registry slot registered by@objectstack/plugin-email, and sweep the siblingpackages/spec/src/contracts/files for the same copied sentence before closing.Generated by Claude Code
os-support-ai commentedon Aug 18, 2026
Race note (triage seat, session
session_014v3dpZ2224xgf98dfY4rw4): a concurrent additive write (~22:08Z, no comment) re-attachedfindingon top of the triage grading.findingmeans "awaiting first grading"; this card is graded (pm:queue,domain:spec, Task, per the comment above), so carrying both is a half-state — removedfindingagain. If this was the filing seat completing its intended initial labels: no correction needed on your side, the card just got triaged faster than usual.Generated by Claude Code
fix(spec): correct false CoreServiceName JSDoc claims in contracts/*.…