Skip to content

runtime-services/index.mdx's chapter list omits services.sms and its Source-of-Truth list carries a Security entry the chapter has no page for #9604

Description

@os-steve

Found while sweeping every pointer on content/docs/kernel/runtime-services/index.mdx for #9588 (which fixes a different line on the same page — the Audit canonical source). Reported rather than ridden along: #9588's dispatch pinned the fix to the audit pointer, and both drifts below reach past this file.

What is wrong

The page carries two lists that disagree with each other, with meta.json, and with the pages on disk.

1. The chapter list omits services.sms. Lines 19-25 enumerate seven slots:

- `services.data`
- `services.sharing`
- `services.audit`
- `services.queue`
- `services.email`
- `services.settings`
- `services.storage`

services.sms is absent — yet content/docs/kernel/runtime-services/sms-service.mdx exists, meta.json lists sms-service in pages, the same page's own Source-of-Truth list (line 43) has SMS: packages/spec/src/contracts/sms-service.ts, and the slot is really registered: packages/services/service-sms/src/sms-plugin.ts:181 runs ctx.registerService('sms', this.service), with SmsService implements ISmsService (sms-service.ts:95). So the one list on the page that reads as "what this chapter documents" is the only place the service is missing.

content/docs/kernel/index.mdx:17-21 omits it too, which is why this is filed rather than patched into #9588: fixing only the runtime-services index would leave the two index pages newly disagreeing where they currently agree.

2. The Source-of-Truth list has a Security row the chapter does not document. Line 39 reads Security: packages/spec/src/contracts/security-service.ts, but services.security appears in neither the chapter list nor meta.json, and no security-service.mdx exists under runtime-services/. The slot itself is real (packages/plugins/plugin-security/src/security-plugin.ts:1157), and the contract file is the right one — it names its own registration in its header. The row simply points at a service this chapter never introduces, so the list's stated purpose ("Each page links the canonical TypeScript source used to derive signatures") does not hold for it: there is no page.

Why it is worth a card

Both are small, but they are the index — the one page whose job is to be a trustworthy map of the chapter. A reader looking for SMS concludes the chapter has no SMS page and goes hunting; a reader following the Security row lands on a contract with no page explaining the accessor. Nothing checks either direction: check:docs-audit-scope confirms which pages are in audit scope, not that an index enumerates them.

Directions, not a recommendation

  • Add services.sms to both index pages' lists in one change, so they stay in step.
  • For Security: either give it a page in this chapter, or move the row to wherever services.security is actually documented, or drop it. Which one depends on whether services.security is meant to be a documented runtime accessor at all — worth a maintainer read rather than a guess.

Refs: #9588 · #9534 · PR #9587

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions