Skip to content

Commit 3118d15

Browse files
committed
docs(services-checklist): align the slot capability-flag bullet with the closed capabilities vocabulary
The bullet named the retired top-level `features` map and the retired `workflow` slot, and read `there is no features.auth`. Rewrite it against `WellKnownCapabilitiesSchema` (`packages/spec/src/api/discovery.zod.ts`) and the dispatcher that fills it: name the entries that really follow slot presence, keep the measured `websockets` clause, and record the vocabulary keys that are answered from something other than a slot. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Vbw3RPgdtqesx4azk9SbW8
1 parent 4c0b22b commit 3118d15

1 file changed

Lines changed: 17 additions & 5 deletions

File tree

content/docs/kernel/services-checklist.mdx

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -607,12 +607,24 @@ When a plugin registers a service, the discovery endpoint automatically updates:
607607
`route``"/api/v1/auth"` (unless the instance self-declares `stub`/`degraded` via
608608
`__serviceInfo`, which is reported verbatim instead)
609609
- `routes.auth``"/api/v1/auth"` appears in routes
610-
- `features` flags follow for the slots that have one — `search`, `files`,
611-
`analytics`, `ai`, `workflow`, `notifications`, `i18n` (`websockets` does **not**
612-
follow slot presence: it is `isSubscribableChannel(services.realtime)` — `handlerReady:
610+
- the `capabilities` entries derived from that slot flip — `files` (and
611+
`chunkedUpload`, which rides the same storage surface), `analytics`, `ai`,
612+
`notifications`, `i18n`, `automation`, `cron` (the `job` slot) and `export`
613+
(`automation` **or** `queue`). `capabilities` is the canonical spelling: the top-level
614+
`features` map was renamed to it in
615+
[#4828](https://github.com/objectstack-ai/objectstack/issues/4828), and the `workflow`
616+
slot was retired in v17 ([#4451](https://github.com/objectstack-ai/objectstack/issues/4451)),
617+
so neither name is on the wire. The rest of the vocabulary does **not** follow slot
618+
presence: `websockets` is `isSubscribableChannel(services.realtime)` — `handlerReady:
613619
true` **and** a connectable route — so registering a realtime service does not flip it,
614-
and it reads `false` on every host the open framework ships, #14646; there is no
615-
`features.auth`)
620+
and it reads `false` on every host the open framework ships, #14646; `search` is stated
621+
`false` because this dispatcher mounts no `/search` route, whatever fills the slot
622+
([#7602](https://github.com/objectstack-ai/objectstack/issues/7602)); `comments` is
623+
measured from the object registry; and `transactionalBatch` is `false` on this face,
624+
which mounts no `/batch`. There is no `capabilities.auth`: the vocabulary is closed by
625+
`WellKnownCapabilitiesSchema` (`packages/spec/src/api/discovery.zod.ts`), every producer
626+
answers every key, and a capability the host does not deliver reads `enabled: false`
627+
rather than a missing key
616628

617629
---
618630

0 commit comments

Comments
 (0)