Skip to content

Commit 0b04839

Browse files
claude[bot]claude
andauthored
docs(adr): correct ADR-0088's 'function' delivered-form row — contributes.functions was never a delivered form (#10724) (#12000)
The row credited plugin `contributes.functions` (QL query functions) as a delivered form of the retired `function` kind. The #10627 census measured zero readers of that key monorepo-wide, so nothing declared there was ever registered; the key itself is retired by #10724. Same correction shape as the 2026-08-22 `contributes.routes` correction one row up. Claude-Session: https://claude.ai/code/session_01K93P8PbH7kVjsAXkqzH1zY Co-authored-by: Claude <noreply@anthropic.com>
1 parent bf8d129 commit 0b04839

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

docs/adr/0088-metadata-kind-admission-and-retirement.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Their real, consumed forms already live elsewhere, and all are **code contributi
3838
| Retired kind | Delivered form |
3939
|---|---|
4040
| `router` | imperative `http.server` mounts (resolve the service from the plugin context and mount on `kernel:ready`) + declarative `apis:` since #5040. ⚠️ **Correction (#4936, 2026-08-04):** this row originally also credited app-authored declarative `apis:` as "executed by `handleApiEndpoint`". That was never true — no route was mounted for a declared path and `matchEndpoint` had no implementation anywhere, so the branch was dead code; it has been deleted and a non-empty `apis:` is now rejected at publish/validate. The retirement decision for the `router` KIND is unaffected; the endpoint executor is being built under #5040, after which declarative `apis:` becomes a real delivered form. ⚠️ **Correction (2026-08-22 ruling):** this row also credited plugin manifest `contributes.routes` (HttpDispatcher prefix routing) as a delivered form. That was never true either — the key has zero readers monorepo-wide, so an entry parses cleanly and serves nothing. The key is being removed and every author-facing material that recommended it is corrected to point at the imperative mount; the delivered forms are the two now named above, and the `router` KIND's retirement is unaffected. |
41-
| `function` | `defineStack({ functions })` code values (hook-binder & flow `script` body runners) + plugin `contributes.functions` (QL query functions) |
41+
| `function` | `defineStack({ functions })` code values (hook-binder & flow `script` body runners). ⚠️ **Correction (#10724, 2026-08-25):** this row originally also credited plugin `contributes.functions` (QL query functions) as a delivered form. That was never true — the #10627 census measured zero readers of the key monorepo-wide, so a function declared there was never registered; the key is retired with the other dead `contributes` members (#10724), and `defineStack({ functions })` remains the one way in, as the paragraph below already records. The retirement decision for the `function` KIND is unaffected. |
4242
| `service` | the plugin/service registry itself (`registerService`) |
4343

4444
Their registry entries had `allowRuntimeCreate: false`, no overlay, no loader — a kind whose every governance flag is "no" is declaring it does not belong in the registry. Studio visibility into registered routes/functions/services, if wanted, is **runtime introspection** (a read-only endpoint), not metadata. The dormant objectql load path that registered QL functions from `type: 'function'` metadata items (nothing ever produced them) is removed with this ADR; `defineStack({ functions })` remains the one way in.

0 commit comments

Comments
 (0)