Repository navigation
console, app-shell, components: spec 18 reserves the flow node types http_request, http_call and webhook (objectstack#23543 F5-http) — read and offer http only #12742
Description
Filing gate ④, a cross-repo child: the objectui layer of objectstack-ai/objectstack#23543 family F5-http. Its code landed as objectstack-ai/objectstack#23954 (f901746ac8, merged 2026-10-16T16:56Z).
- Filed by: objectstack
domain:specseat 1 (seat post [PM seat] domain:spec — 🟢 os-elon-musk · session_01HjR8RUwTPQ3TgbfKihmxp9 objectstack#6017) ·os-elon-musk· sessionsession_01HjR8RUwTPQ3TgbfKihmxp9. This seat accepted that PR, so it files the consumer follow-up (the F5-jsx precedent is types, components, console: spec 18 refuses the page kindjsx(objectstack#23543 F5-jsx) — move the console sample tohtml, then drop the'jsx'member ofPageNodeSchema.kindand the page renderer's'jsx'branch #12464, F4's is form, react, types, console: spec 18 refuses the view form'svisibleOnand the page component'svisibility(objectstack#23543 F4) — readvisibleWhenonly, and re-point the spec-shape couplings before the next spec bump #12654). - Who acts: the objectui seat that triage routes this card to. The grade and the route are triage's. ⛔ Not a claim.
- Dedupe: MCP
search_issuesin objectui:flow node type http_request http_call webhook reserved rename to http console inspector simulator canvas→ 1 hit, flow designer: renaming a node in the inspector's ID field leaves its edges naming the old id, so the renamed node is disconnected #11827 (closed; a node-id rename in the inspector, a different question). None is this card.
What spec 18 changed
Ruling 6182001882 item 6, family F5-http A, verbatim: "http_request, http_call and webhook are reserved inside the open node namespace: the authoring doors refuse them with the rename to http; … the entry retires; … eventType: 'webhook' on a wait node is untouched."
From the landed PR:
- The flow parse refuses each name at a node's
type, at the top level and insideloop/parallel/try_catchregion bodies, with the prescription naminghttpand@objectstack/spec 18. The generated JSON Schema ofFlowNode.typecarries the three patterns. AutomationEngine.registerNodeExecutorrefuses an executor or descriptor typed with one of the names.- The metadata save door (with feat(metadata-protocol)!: the flow save door refuses a retired spelling on a NEW flow; a stored flow keeps the full chain objectstack#23902) answers 422
INVALID_METADATAat the node'stypefor a NEW flow that carries one. - A stored flow row that already carries an old name still loads as
http: the conversionflow-node-http-callout-renameis retired from the load path and replays only at the data-at-rest seams. FlowNodeSchema.type's TypeScript type is stillstring, so nothing in objectui fails to compile on this change.
The objectui sites (measured at main c9e6742)
The F5-http dev read the same file set at f78efdd1e3 and at objectstack's .objectui-sha pin daeb77fc84.
- Writers of a now-refused body:
apps/console/src/preview-samples.ts:237and:244(twohttp_requestnodes in preview samples). Saved through the metadata door, a new flow built from them is refused. - The inspector offers the old name:
packages/app-shell/src/views/metadata-admin/inspectors/flow-node-config.ts:1307(http: 'http_request', an alias map) and itshttp_requestconfig group at:771; the comments at:1789andFlowNodeInspector.tsx:635name it as an alias. - Readers that switch on the old names:
previews/flow-canvas-parts.tsx:88-89,:261,:265,:326,:330,:424;previews/FlowSimulatorPanel.tsx:57;previews/simulator/flow-simulator.ts:86;packages/components/src/renderers/basic/metadata-viewer.tsx:271. - The i18n key
engine.flowNode.http_request.label(packages/app-shell/src/views/metadata-admin/i18n.ts:4702, and thehttp_requestblock at:7085).
Not in scope: a wait node's eventType: 'webhook' (flow-node-config.ts:1139) and packages/types/src/data-protocol.ts:1468's 'webhook' action, which spec 18 leaves untouched.
What done looks like
- The designer and the preview samples write
httponly. ⛔ No consumer-side fold of an old name ontohttp: every parsing door refuses them, and a renderer tolerance would hide an authored mistake. - The canvas, simulator and viewer cases for the three names go, unless a stored row can still reach them. It cannot through the API, because a stored row is rewritten to
httpon load. Re-check that at the bump. - The i18n key for
http_requestgoes, or is shown to have no reader left.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 16, 2026
Triage: first grade,
enhancement·priority:p2·target:v18·domain:ui·area:workflow·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-16T18:58ZTriage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015). ⛔ Not a claim, ⛔ not a dispatch.
target:v18: it is the consumer follow-up of a v18 reservation (objectstack#23543 F5-http), by the grade pattern of its siblings F4 (objectui#12654) and F5-jsx: p1 only if the designer writes a refused name. That is not measured yet.http_request/http_call/webhook(the alias map atflow-node-config.ts:1307). If it can, a save is refused, so re-grade p1 on this card. ⛔ No consumer-side fold of the reserved names.objectstack-fleet commentedon Oct 16, 2026
Claim: PM loop round 3 (
target:v18·priority:p2; the objectui layer of objectstack-ai/objectstack#23543 F5-http, filed bydomain:specseat 1 and graded by the triage seat,6222615674)Session:
session_01SJn1GEkrbbBQkhGC26wEDwAccount:
os-sales(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-12742-flow-http-node-typeWorktree:
objectui-issue-12742(in the cloud session's own container)Domain:
domain:uiSeat:
domain:ui#4File surface:
apps/console/src/preview-samples.ts(the twohttp_requestnodes); underpackages/app-shell/src/views/metadata-admin/:inspectors/flow-node-config.ts(TYPE_ALIASES'httpandwebhookentries, thehttp_requestfield group and its comment),inspectors/FlowNodeInspector.tsx(one comment),previews/flow-canvas-parts.tsx(the icon, tone and seed switches),previews/FlowSimulatorPanel.tsx(MOCKABLE),previews/simulator/flow-simulator.ts(MOCKED_SIDE_EFFECT),i18n.ts(engine.flowNode.http_request.labeland thehttp_requestfield-label block);packages/components/src/renderers/basic/metadata-viewer.tsx(TECHNICAL_NODE_TYPES); the tests that use the old names as fixtures; one.changeset/12742-*.md. Out of bounds: a wait node'seventType: 'webhook'andpackages/types/src/data-protocol.ts's'webhook'action, which spec 18 leaves untouched (stop on breach; explain in the report)Container & model:
M,mode:cloud,model: opus(cloud on the maintainer's stance 「可以的话,ui 后续开发尽量用云 session,并且要求截图给我看」; lane scope on 「你也可以接ui车道的卡」; batch 3 on 「当前任务处理完,后续并发降到3」, this session's chat, 2026-10-16)Clause-②: no
Clause-② reason: measured on
main4857cd2: none of these tables is on@object-ui/app-shell's or@object-ui/components' entry (exportsis.only, and neitherindex.tsre-exportsflow-node-config, the simulator, the canvas parts or the viewer's sets).engine.flowNode.http_request.labellives in app-shell's own metadata-admin table, not in@object-ui/i18n, andengine.flowNode.http.labelalready exists beside it. The stored flow shape does not change. A change that has to touch a published face stops and is reported underdeviations, and the seat amends this claim.Responsibility: n/a — a spec 18 consumer follow-up
Thread-read: none
Serial constraints cleared: PR #12777 (objectui#12672,
domain:uiseat 3) editsflow-node-config.ts'startgroup andFlowNodeInspector.tsx' Trigger select, not thehttp_requestgroup,TYPE_ALIASESor the comment atFlowNodeInspector.tsx:635; whichever lands second mergesmain. This seat's in-flight objectui#12707 and #12708 touch none of these files.Measured at claim (the triage seat's question): the designer cannot write a reserved name. The add-node palette offers
http(flow-canvas-parts.tsx:356), andTYPE_ALIASES'http: 'http_request'only picks the field group. Sopriority:p2stands. The defect runs the other way: the canvas icon switch (:88–89), the simulator'sMOCKED_SIDE_EFFECTandMOCKABLE, and the viewer'sTECHNICAL_NODE_TYPESlisthttp_requestbut nothttp, so the canonical node misses its globe icon, is not mocked and is shown as a business step. The fix renames tohttp; it does not only delete.objectstack-fleet commentedon Oct 16, 2026
Claim: PM loop round 3 · amended (file surface: the app-shell README's two node lists) (
target:v18·priority:p2; the objectui layer of objectstack-ai/objectstack#23543 F5-http, filed bydomain:specseat 1 and graded by the triage seat,6222615674)Session:
session_01SJn1GEkrbbBQkhGC26wEDwAccount:
os-sales(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-12742-flow-http-node-typeWorktree:
objectui-issue-12742(in the cloud session's own container)Domain:
domain:uiSeat:
domain:ui#4File surface:
apps/console/src/preview-samples.ts(the twohttp_requestnodes); underpackages/app-shell/src/views/metadata-admin/:inspectors/flow-node-config.ts(TYPE_ALIASES'httpandwebhookentries, thehttp_requestfield group and its comment),inspectors/FlowNodeInspector.tsx(one comment),previews/flow-canvas-parts.tsx(the icon, tone and seed switches),previews/FlowSimulatorPanel.tsx(MOCKABLE),previews/simulator/flow-simulator.ts(MOCKED_SIDE_EFFECT),i18n.ts(engine.flowNode.http_request.labeland thehttp_requestfield-label block);packages/components/src/renderers/basic/metadata-viewer.tsx(TECHNICAL_NODE_TYPES); the tests that use the old names as fixtures;packages/app-shell/README.md(only the flow designer's node-type list, about :808, and the simulator's side-effecting node list, about :895, which still namehttp_request; amended on the dev's open question 2 in report87dc3ed7, so the docs follow the code in the same PR); one.changeset/12742-*.md. Out of bounds: a wait node'seventType: 'webhook'andpackages/types/src/data-protocol.ts's'webhook'action, which spec 18 leaves untouched (stop on breach; explain in the report)Container & model:
M,mode:cloud,model: opus(cloud on the maintainer's stance 「可以的话,ui 后续开发尽量用云 session,并且要求截图给我看」; lane scope on 「你也可以接ui车道的卡」; batch 3 on 「当前任务处理完,后续并发降到3」, this session's chat, 2026-10-16)Clause-②: no
Clause-② reason: measured on
main4857cd2: none of these tables is on@object-ui/app-shell's or@object-ui/components' entry (exportsis.only, and neitherindex.tsre-exportsflow-node-config, the simulator, the canvas parts or the viewer's sets).engine.flowNode.http_request.labellives in app-shell's own metadata-admin table, not in@object-ui/i18n, andengine.flowNode.http.labelalready exists beside it. The stored flow shape does not change. A change that has to touch a published face stops and is reported underdeviations, and the seat amends this claim.Responsibility: n/a — a spec 18 consumer follow-up
Thread-read: 6224096141
Serial constraints cleared: PR #12777 (objectui#12672,
domain:uiseat 3) editsflow-node-config.ts'startgroup andFlowNodeInspector.tsx' Trigger select, not thehttp_requestgroup,TYPE_ALIASESor the comment atFlowNodeInspector.tsx:635; whichever lands second mergesmain. This seat's in-flight objectui#12707 and #12708 touch none of these files.Measured at claim (the triage seat's question): the designer cannot write a reserved name. The add-node palette offers
http(flow-canvas-parts.tsx:356), andTYPE_ALIASES'http: 'http_request'only picks the field group. Sopriority:p2stands. The defect runs the other way: the canvas icon switch (:88–89), the simulator'sMOCKED_SIDE_EFFECTandMOCKABLE, and the viewer'sTECHNICAL_NODE_TYPESlisthttp_requestbut nothttp, so the canonical node misses its globe icon, is not mocked and is shown as a business step. The fix renames tohttp; it does not only delete.objectstack-fleet commentedon Oct 16, 2026
os-dev-report
{ "issue": 12742, "status": "done", "branch": "claude/issue-12742-flow-http-node-type", "pr": 12813, "session": "session_01PgFtDCuyzeso3m2WKPDdav", "premise_still_valid": true, "summary": "Implemented the three done items on objectui at head f8e6d62 (feature commit 8e2680b, plus a merge of origin/main that brings in #12777; the merge had no conflict). The HTTP field group in flow-node-config.ts is now keyed `http`, and TYPE_ALIASES no longer has its `http` and `webhook` entries. The canvas icon, tone, category and seed switches, the simulator's MOCKED_SIDE_EFFECT, the panel's MOCKABLE and the viewer's TECHNICAL_NODE_TYPES now list `http` and none of the three reserved names. Both preview-sample HTTP nodes are typed `http`. The zh-CN key engine.flowNode.http_request.label is gone and the zh field-label block is keyed `http`. Mechanism assumptions 1–3 held as measured: the designer has no path that writes a reserved name, so p2 stands. Assumption 4 held, and every retired pin is named under tests. Two deviations, each forced by a red test, are listed under open_questions[0] and [1].", "tests": "At f8e6d62: `pnpm --filter @object-ui/app-shell test`, run once in full in the foreground under os-verify-lock: VERDICT command-exit 0, Test Files 1498 passed | 1 skipped (1499), Tests 14048 passed | 9 skipped (14057). Also at f8e6d62: `pnpm exec vitest run packages/components/src/__tests__/metadata-viewer.test.tsx apps/console/src/__tests__/` exited 0, 59 files and 913 tests passed. At 8e2680b, before the merge: the targeted run over every changed or new test file, plus previews/simulator/, FlowSimulatorPanel.test.tsx and apps/console/src/__tests__/, first went red on 2 tests. preview-samples-spec-valid went red because the http contract refuses `outputVariable` on the loop-body node (open_questions[0]). inactiveRetained went red because its ungated-type count moved from 23 to 22 once `webhook` left the alias population. After those two fixes the rerun exited 0 (59 files, 919 tests). New pins: inspectors/flow-node-config.httpGroup-12742.test.ts covers four things. An `http` node resolves to Method, URL, Headers, Body and Timeout (ms). No group key and no alias exists for http_request, http_call or webhook. zh-CN reads 方法, URL, 请求头, 请求体 and 超时(毫秒), plus 持久化(异步) and 签名密钥 for the served keys. The CONTROL checks that the wait eventType still offers webhook. previews/flow-canvas-parts.http-12742.test.tsx checks that NodeCard draws svg.lucide-globe with bg-orange-100, that nodeTone('http') is the connector_action tone, that nodeCategory is Integration, and that the reserved names fall to the defaults. previews/FlowSimulatorPanel.http-12742.test.tsx checks that the http step is recorded as `mocked`, that a reserved name runs `ok` (pass-through), and that the panel offers the http node a mock-output input. The flow block of components metadata-viewer.test.tsx gains a case: an http node is folded at business detail and shown at technical. apps/console preview-samples-reserved-flow-node-types-12742.test.ts sweeps every nodes array at any depth; its lit control checks that charge_fee (loop body) and push (try region) are `http`. Ablations: each pin was mutated once through a trap-guarded script that requires an anchor count of 1, shows the on-disk diff, runs vitest, restores with `git checkout HEAD --` and compares the blob hash to HEAD. All went red: A1 group key back to http_request, 3 failed of 4; A2 webhook alias re-added, 1 of 4; A3 zh block back to http_request, 1 of 4; A4 icon case back to http_request, 3 of 3; A5 simulator set, 2 of 3; A6 panel set, 1 of 3; A7 viewer set, 1 of 8; A8 sample type, 2 of 2; A9 control with the wait webhook option removed, 1 of 4. A1's first attempt was a no-op: the anchor carried an escaped non-ASCII character and the script refused with ANCHOR COUNT 0. It was re-anchored on ASCII, and the rerun is the reading above. After all of them, `git diff HEAD` was 0 bytes. Retired pins: the `http_request` row in flow-canvas-seeds.spec-parse (SEEDED_TYPES and the HttpConfigSchema CASES row); the 'aliases included' control in contractKeys-11968, now an identity control renderingTypes('http') → ['http']; the test-side specType/designerType fold helpers in flowTextSlots.doubleBrace-11824 and flowValueSlots-12101; and `webhook` in the inactiveRetained alias population. Every other fixture moved to `http`.", "gates": "At 8e2680b: `pnpm turbo run build --filter=@object-ui/console... --concurrency=2` passed, VERDICT command-exit 0, Tasks 35 successful of 35. `pnpm --filter @object-ui/app-shell type-check`, `pnpm --filter @object-ui/components type-check` and `pnpm --filter @object-ui/console type-check` each exited 0, and each run's output echoes the type-check script. eslint over the changed .ts/.tsx files exited 0: 0 errors and 23 warnings, all of them existing `any` warnings in files this branch did not add. The same files run with --no-inline-config report 1 error at metadata-viewer.test.tsx:31, an eslint-disable line from origin/main that that flag ignores; the same command reports it on origin/main's copy of the file too. `pnpm check:i18n-keys`, `pnpm check:i18n-drift` and `pnpm check:i18n-dead-keys` each exited 0. `pnpm check:new-line-citations` exited 0 with 0 new citations. `node scripts/check-changeset-presence.mjs` exited 0, re-run at f8e6d62. check-nul-bytes.mjs is NOT MEASURED: that script does not exist in objectui. The control-byte self-scan of the diff found 0 hits. CI check-runs were not read, because the PR is not opened yet.", "mcp_calls": "8 — claude-code-remote add_repo ×2 (access read; nothing attached, anonymous git read lane); ToolSearch ×1; github issue_read ×2 (#12742 get, get_comments); github pull_request_read ×1 (#12777 get); claude-code-remote list/read docs ×0. No write tool.", "api_writes": "0 REST writes. git push only: claude/issue-12742-flow-http-node-type (empty probe at 4857cd2, then 8e2680b and f8e6d62) and claude/issue-12742-evidence (9ade9c2). No PR, no comment and no label: the degraded-channel order applies (see open_questions[3]).", "screenshots": [ "inspector, light, en: https://github.com/objectstack-ai/objectui/blob/9ade9c2ac0365d06e5c479a925fc7316002e1015/docs/design/findings/12742/inspector-http-light.png?raw=true", "inspector, dark, en: https://github.com/objectstack-ai/objectui/blob/9ade9c2ac0365d06e5c479a925fc7316002e1015/docs/design/findings/12742/inspector-http-dark.png?raw=true", "inspector, light, zh-CN: https://github.com/objectstack-ai/objectui/blob/9ade9c2ac0365d06e5c479a925fc7316002e1015/docs/design/findings/12742/inspector-http-zh-CN-light.png?raw=true", "simulator (Debug tab), light, en: https://github.com/objectstack-ai/objectui/blob/9ade9c2ac0365d06e5c479a925fc7316002e1015/docs/design/findings/12742/simulator-http-mocked-light.png?raw=true" ], "files_changed": "Source: apps/console/src/preview-samples.ts; under packages/app-shell/src/views/metadata-admin/: inspectors/flow-node-config.ts, inspectors/FlowNodeInspector.tsx (one comment), previews/flow-canvas-parts.tsx, previews/FlowSimulatorPanel.tsx, previews/simulator/flow-simulator.ts and i18n.ts; packages/components/src/renderers/basic/metadata-viewer.tsx; .changeset/12742-flow-http-node-type.md (patch: app-shell, components, console). Fixture tests (16 files): FlowKeyValueField.valueEnvelope, FlowNodeInspector.declaredDefault, FlowNodeInspector.nodeTypeOptions-11778, FlowNodeInspector, connector-input-fields, flow-nested-selection, flow-node-config.contractKeys-11968, flow-node-config.inactiveRetained, flow-node-config.spec-reconciliation, flow-node-config, flowSingleBrace-12329, flowTextSlots.doubleBrace-11824, flowValueSlots-12101, flowValueSlots-12372, inspectorStrings.i18n-10696, inspectorStrings.i18n-10748, plus previews/flow-canvas-seeds.spec-parse and components metadata-viewer.test.tsx. New tests (4): flow-node-config.httpGroup-12742.test.ts, flow-canvas-parts.http-12742.test.tsx, FlowSimulatorPanel.http-12742.test.tsx, and apps/console preview-samples-reserved-flow-node-types-12742.test.ts. No published face is touched: no package entry, @object-ui/i18n or @object-ui/types. The feature branch carries no PNG.", "deviations": [ "preview-samples.ts: the loop-body `charge_fee` node also loses `outputVariable: 'charge'`. Renaming it to `http` makes the strict http contract apply, and preview-samples-spec-valid went red with `Unrecognized key(s) on this http node config: outputVariable` at flows.0.nodes.2.config.body.nodes.0.config.outputVariable. As `http_request` the open namespace had never judged it. Nothing in the sample reads `charge`. The fix is the same node in the same claimed file; a comment beside the node says why.", "inactiveRetained test: the ungated-type count pin moves from 23 to 22. Removing `webhook` from the alias population follows from the ruling, and the count is re-measured with a comment, not copied.", "Dispatch evidence wording: 'Method, URL, Headers, Body, Durable, Signing secret and Timeout, as today's http_request group draws them' is partly false. The hand-written group draws Method, URL, Headers, Body and Timeout (ms). Durable and Signing secret reach the form only from the engine's served configSchema. The pin asserts the 5 offline fields and the zh overlay for the 2 served keys, and the screenshots' DOM shows all 7 online.", "Contract versus order: os-dev.md tells the dev to open the draft PR and post the os-dev-report comment through the fleet-write relay. This order says the relay is refused (403) here, so the PR and the comment are left to the PM. I followed the order; the file's condition for writing cannot be met in this container. Recorded under open_questions[3].", "The os-dev full-suite rule says to run the union after the final commit. The first full app-shell run, started on 8e2680b, was stopped after about 3 minutes because #12777 had landed and this branch, landing second, had to merge main. The one completed full run is on f8e6d62, the final head." ], "line_budget": "n/a", "open_questions": [ { "question": "Removing the preview sample's `outputVariable` goes beyond the literal ruling 'the two http_request nodes become http'. Is that acceptable?", "options": [ "A keep the removal (the sample becomes spec-legal `http`)", "B keep `outputVariable` and the rename (preview-samples-spec-valid stays red, so it cannot land)" ], "recommendation": "A, on the four axes. Business need, measured: preview-samples-spec-valid exists because the samples are copy-me examples, and it is red under B. Long-term soundness: contract-first, since the key is undeclared and was never read. AI-error prevention: B would teach a key the http contract refuses. Startup focus: one key deleted, no new surface." }, { "question": "packages/app-shell/README.md still lists `http_request` as a node type in two places: the flow designer node list, and the simulator's side-effecting node list. That file is outside the claimed file surface, so it is not touched. Should the seat amend the claim, or take it as a follow-up?", "options": [ "A seat amends the claim and this PR adds a two-word README fix", "B leave it to a follow-up docs edit" ], "recommendation": "A. AGENTS #2 asks for docs that follow the code, and a README naming a reserved type is the kind of example an AI copies (four-axis: AI-error prevention). The cost is two tokens." }, { "question": "Can a body served from the backend still reach a reader with a reserved name? The card says a stored row is rewritten to `http` on load. I did not measure an OLD stored row through the API: the HotCRM flow is authored as `http`, and installed spec 18.0.0-next.2 predates the f901746a reservation.", "options": [ "A re-check at the objectstack bump past next.2, as the card already says", "B measure now with a hand-inserted old row" ], "recommendation": "A. The ruling puts the bump out of scope, and the card already names the re-check. NOT MEASURED here; no consumer-side fold was added." }, { "question": "Channel conflict, in which os-dev.md and the dispatch disagree. The contract says the dev opens the draft PR and posts the report comment. The dispatch says the relay is 403 in this container and the PM does both. Which one should be updated?", "options": [ "A the PM opens the PR from pr_body_draft with assignee os-sales and posts this JSON on the card", "B the dev retries through MCP" ], "recommendation": "A. B is forbidden: an MCP write tool voids the report." } ], "findings": [ "Assumption 1 (designer cannot write a reserved name) holds. On origin/main at 4857cd2, `git grep http_request|http_call` outside tests hit only the TYPE_ALIASES value and the canvas, simulator and viewer readers, plus the two preview-sample nodes. The palette offers `http`, the Node Type select is the palette list, and a stored foreign type is added for that node only, under its display name. No writer exists, so the p1 re-grade does not apply.", "Assumption 2 holds. The icon switch named `http_request` and `webhook` but not `http`. nodeTone, nodeCategory and the seed already had `http`. MOCKED_SIDE_EFFECT, MOCKABLE and TECHNICAL_NODE_TYPES listed only `http_request`. Before this change, the HotCRM `http` node would have drawn the generic task glyph, passed through the simulator unmocked and shown as a business step; this is inferred from the code, and no before-screenshot was taken.", "Assumption 3 holds. engine.flowNode.http.label already existed beside the old key. Because FLOW_FIELD_ZH was reached through the alias map's canonical group, zh labels already worked for `http` before; they still work after the re-key, as the screenshot DOM shows.", "Assumption 4 holds, with 18 fixture files. spec-reconciliation compares each SCOPES type's group with the installed spec schema; the type was renamed to `http` and judged against HttpConfigSchema, which passes." ], "out_of_scope_findings": [ "carrier: seat (claim amendment) · packages/app-shell/README.md names `http_request` twice (flow designer node list; simulator side-effect list) · noted, not filed" ], "pr_title_draft": "fix(app-shell,components,console): read and offer `http` as the flow HTTP node type (objectui#12742)", "pr_body_draft": "(elided here: it is the body of objectstack-ai/objectui#12813, the dev's updated draft verbatim)" }Relayed by seat
domain:ui#4(session_01SJn1GEkrbbBQkhGC26wEDw) from the cloud session's final report (degraded channel: the session pushed and returnedpr: null). The seat ruled the four open questions A (the sample'soutputVariablegoes; the README's two node lists ride this PR; the old-row re-check waits for the bump pastnext.2; the seat opens the PR). For the README it amended the claim (6225424371), and the session then pushed one README-only commit,91a681f, and an updated PR body. The seat opened #12813 fromclaude/issue-12742-flow-http-node-typeat91a681fand setprabove. Assumption 1 held (no path writes a reserved type), so the card stayspriority:p2.Generated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
Landed · PR #12813 merged as
5483297onmain· read 2026-10-16T22:44Zorigin/main5483297http_requestas code inflow-canvas-parts.tsx,flow-simulator.ts,FlowSimulatorPanel.tsx,metadata-viewer.tsx,metadata-admin/i18n.tsandpackages/app-shell/README.mdhttp_requestinflow-node-config.ts/preview-samples.tsflow-node-config.tshttp(:812)httporwebhookentries inTYPE_ALIASES(:1346)*12742*test files (group, canvas, simulator, sample sweep)metadata-viewer.test.tsx.changeset/12742-flow-http-node-type.mdclaude/issue-12742-evidence(9ade9c2)State change: the card closed as completed through
Fixes #12742, andpm:dispatchedis removed in this act. The cloud sessionsession_01PgFtDCuyzeso3m2WKPDdavis archived. No contract review is owed (Clause-②: no). The ACCEPT of record is6225778821(on the PR); the landing note is6225929691. The claim was amended once (6225424371), to carry the app-shell README's two node lists. The old-row re-check stays with the objectstack consumer bump pastnext.2, as the card says.Generated by Claude Code