Skip to content

Commit be076da

Browse files
docs(adr-0018): dated note — http_request, http_call and webhook are reserved retired node names (F5-http of #23543) (#23955)
Part of #23543 The ADR-0018 half of family **F5-http** of ruling `6182001882` (item 6): "ADR-0018 gets a dated note naming the three reserved retired names (Tier H, the maintainer's merge)". The code half is PR #23954, landed on `main` as `f901746ac8` (2026-10-16T16:56Z). This PR is branched from `main` and carries one file. ## What One dated addendum at the end of `docs/adr/0018-unified-node-action-registry.md`, in the ADR's own amendment format (`## Addendum (date): …` with a `> Status of this addendum:` line, as its 2026-05-31 `connector_action` addendum): - `http_request`, `http_call` and `webhook`, the three outbound callout names §4 unified into `http`, are **reserved retired names** inside the open node namespace §2 created. - Authoring refuses them as a node's `type`, naming `http`; the ADR-0087 D2 conversion `flow-node-http-callout-rename` leaves the load path at 18 and still runs at every data-at-rest seam, so stored flows keep loading as `http`. - `AutomationEngine.registerNodeExecutor` refuses an executor or descriptor under a reserved name, which retires the conversion's ADR-0078 conflict guard. - A wait node's `waitEventConfig.eventType: 'webhook'` is not affected. Nothing else in the ADR changes: §2's open namespace and §4's table stand as written. ## 维护者速读(草稿) - **改了什么:** 在 ADR-0018(统一节点/动作注册表)末尾加一段带日期的补记:流程节点的三个旧名字 `http_request`、`http_call`、`webhook` 从此是「保留的退役名」——作者写了会当场报错并被告知改成 `http`,插件也不能再用这三个名字注册自己的节点。 - **为什么改:** 这三个名字早在 11 版就合并成了 `http`,但节点类型是开放命名空间,一直没有任何地方拒绝它们,只是加载时悄悄改写。裁决 `6182001882` 第 6 项要求把它们正式保留,并在 ADR-0018 里留下记录,让后来的人知道这块开放命名空间里有三个名字是关着的。 - **风险与代价(含回滚):** 本 PR 只改文档,不改任何行为;行为变化在配套的代码 PR 里。回滚就是撤销这一段补记。已存数据不受影响:旧流程读取时仍会被改写成 `http`。通过元数据 API 新保存的流程,带这三个名字时也会被拒(#23902 按裁定 `6212082860` 已落地)。 - **席位意见:** 建议合并。配套代码 PR #23954 已在 `main` 上(`f901746ac8`),补记里每一句都由已落地的代码兑现;契约复核 PASS(`6217920402`)。一处措辞可再精确:「every data-at-rest seam」指的是每个在静置时规范化 flow 的入口,读取路径按 ADR-0087 原样返回 flow(裁定 `6216220018` 第 3 项保持),不影响结论。 - **你要做的:** 审阅这段补记的措辞,同意后合并本 PR(`docs/adr/**` 属 Tier H,需维护者本人合并)。 --- _Generated by [Claude Code](https://claude.ai/code/session_01SgC7iCUX8y2TeJAvz8wcaw)_ Co-authored-by: Claude <noreply@anthropic.com>
1 parent ba8bf1d commit be076da

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

‎docs/adr/0018-unified-node-action-registry.md‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,3 +234,15 @@ Managed credentials/secret vault, OAuth2 token refresh, multi-tenant connection
234234
- [x] `builtin/connector-nodes.ts`: `connector_action` executor + descriptor (`category: 'io'`, `source: 'builtin'`, `paradigms: ['flow','approval']`), wired into `installBuiltinNodes()`. The core plugin now seeds 11 baseline node types (was 10).
235235
- [x] First concrete plugin `@objectstack/connector-rest` (the reference connector) validating the registry — `request` action, static auth (`none`/`api-key`/`basic`/`bearer`), no OAuth2 refresh.
236236
- [x] Tests: baseline dispatch (fake connector) + REST plugin auth-header injection + end-to-end kernel boot (both plugins → `connector_action` flow → REST handler).
237+
238+
---
239+
240+
## Addendum (2026-10-16): the three retired callout names are reserved
241+
242+
> Status of this addendum: **ruled** (ruling `6182001882` on #23543, item 6). It narrows §2 ("Open the protocol's node type") by exactly three names and closes §4's alias window, which 11.0 ended without a refusal.
243+
244+
The node-type namespace stays open, with one closed exception: `http_request`, `http_call` and `webhook` — the three outbound callout names §4 unified into `http` — are **reserved retired names**. No flow may type a node with one, and no plugin may register an executor under one.
245+
246+
- **Authoring refuses them, naming `http`.** The flow parse refuses each as a node's `type` (top level and inside a region body), with the prescription to rename the node to `http`. The ADR-0087 D2 conversion `flow-node-http-callout-rename`, which rewrote them at load through 17, leaves the load path at 18; it still runs at every data-at-rest seam, so a stored flow written with an old name keeps loading as `http`.
247+
- **Registration refuses them too.** `AutomationEngine.registerNodeExecutor` throws for an executor or descriptor typed with a reserved name: no node could ever reach it, because an authored node is refused and a stored one is rewritten first. This retires the conversion's ADR-0078 conflict guard, which existed only for a third-party executor under one of these names.
248+
- **Not affected:** a wait node's `waitEventConfig.eventType: 'webhook'` is a different field and stays legal.

0 commit comments

Comments
 (0)