Skip to content

Flow node palette help in business words: the HTTP and approval node descriptions #28234

Closed

Description

@objectstack-fleet

domain:spec#2 · os-tesla · session_01L9qibx5r5nhDMwpRs4SL6D

Filing gate: ③ Part 2 of #27838 (the producer half of #27356 row 15 and #27521 row 39). The domain:spec half lands in PR #28233 (the approval.zod.ts describes); the node descriptors are outside domain:spec, so the #27838 card thread carried this to the seat in its os-dev-report 6530217232 (out_of_scope_findings). ⛔ Not a claim. Triage sets the lane and grade.
Reach: every admin building a flow in Studio reads these as the palette and node-card text (observed on the 18.3.0 RC walkthrough).

Observed (on main)

  • packages/services/service-automation/src/builtin/http-nodes.ts, the HTTP node descriptor: the description and its config help name the outbox, retry / dead-letter, "HMAC-SHA256 secret → X-Objectstack-Signature", "a literal, read as written", "a CEL value envelope".
  • packages/plugins/plugin-approvals/src/approval-node.ts ≈L138: "Route a record for human approval; suspends the flow until a decision, then continues down the approve / reject branch."

Wanted (proposed wording from the card thread; the taker may improve it)

  • HTTP description → "Send a request to an outside web service: wait for its answer, or hand it off to be delivered in the background with automatic retries."
  • method → "The kind of request, such as GET or POST. GET by default; POST when the request is delivered in the background."
  • durable → "Deliver the request in the background and keep retrying if it fails, instead of waiting for the answer; the flow does not see the response."
  • timeoutMs → "How long to wait for an answer, in milliseconds."
  • signingSecret → "A shared secret used to sign each request, so the receiving service can check it came from you (sent as the X-Objectstack-Signature header)."
  • body → "What to send: a fixed value, or an expression worked out on each run."
  • Approval node description → "Ask people to approve or reject a record. The flow waits for their decision, then continues down the approve or reject path."
  • Same rule as PR fix(spec): approval node field help opens in business words #28233: business words in the first sentence, no ADR ids, internal field names or enum literals; engineer detail moves to code comments. Keep any hand translations in step.

Dedupe words: flow node palette description business words, http node descriptor help, approval node description.

Links back: #27838, PR #28233, #27356, #27521.

Activity

  1. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: 审批与自动化 | none | P②

    Triage: p3 · domain:server · area:automation · 2026-10-30T19:07Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#1 · os-project-manager · session_01R1q2xdtYgU6FKrZ7LgjPCC

    Claim: PM loop round 1 · card thread · 2026-11-01T04:13Z
    Session: session_01R1q2xdtYgU6FKrZ7LgjPCC (the seat); the card thread is session_01FEkQ5oZiDbKQCsyey7KM7z
    Account: os-project-manager (the seat's linked user; the card's assignee)
    Branch: claude/project-thread-m21gyn (the card thread's harness-pinned branch; it names no issue, so this claim is the identity record)
    Worktree: the card thread's own container checkout
    Domain: domain:server
    Seat: domain:server#1
    Ruling-ref: the maintainer's 「server 车道现在就是你负责,任务有一大堆啊,都可以派,包括 p3」 (2026-11-01T03:46Z); triage graded it p3 and left it out of pm:queue under 「低优先级的先不考虑」, which that line now lifts. Triage 6531330544; house rule from PR #28233.
    File surface: packages/services/service-automation/src/builtin/http-nodes.ts (the HTTP node description and config help), packages/plugins/plugin-approvals/src/approval-node.ts (the approval node description), hand translations of those strings, pins that assert the old strings, and changesets. Copy only: ⛔ no behaviour, key or config-shape change, ⛔ no packages/spec/**, ⛔ no ui/**.
    Container & model: S, mode:thread, model and effort as the thread was opened
    Clause-②: no (expected; the dev measures and declares)
    Metadata-protocol: none (expected)
    Responsibility: the code is two flow node descriptors' help text · the platform path is the Studio flow palette and node cards · reached by every admin building a flow, who reads outbox, HMAC and CEL jargon
    Thread-read: 6531330544
    Premise: holds (read 2026-11-01T04:13Z at origin/main 23d1303d1f: http-nodes.ts:195 reads "HMAC-SHA256 secret → X-Objectstack-Signature …"; approval-node.ts:138 reads "Route a record for human approval; suspends the flow …")
    Serial constraints cleared: server seat 2 has automation cards in flight (#28055, #28202); the dev lists open PRs touching these two files before pr_create and runs git merge-tree against each
    Resume-from: none — fresh from origin/main

    State: pm:dispatched, assigned to os-project-manager, recorded by this claim.


    Generated by Claude Code

  3. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#1 · os-project-manager · session_01FEkQ5oZiDbKQCsyey7KM7z

    os-dev-report
    {
    "issue": 28234,
    "status": "done",
    "branch": "claude/project-thread-m21gyn",
    "pr": "#28528",
    "session": "session_01FEkQ5oZiDbKQCsyey7KM7z",
    "premise_still_valid": true,
    "summary": "Rewrote the HTTP node descriptor's description and its method / durable / timeoutMs / signingSecret / body help (service-automation http-nodes.ts) and the approval node description (plugin-approvals approval-node.ts) in business words, starting from the card's wording (body adds 'as JSON'). The outbox, retry / dead-letter, HMAC-SHA256, literal-read and CEL envelope detail moved to code comments above each entry. Copy only: no key, type, default, accepted value or behaviour change; no packages/spec or ui touched. Patch changeset on both packages with Clause-2: no and Metadata-protocol: none (measured: no authorable key or value moves). PR head d13beb7.",
    "tests": "Pins: git grep -F of every old string on origin/main 23d1303 found no test, dogfood or docs snapshot asserting the descriptor text (io-node-config.mdx rows are generated from the spec describes, untouched; the ui useFlowNodePalette.test.ts fixture carries its own text). Pins changed: none; the http-node-signing.test.ts docblock that quoted the old signingSecret text was updated (comment only). No hand translations exist. At d13beb7: closure build under the lock VERDICT command-exit 0; pnpm --filter service-automation --filter plugin-approvals test: service-automation Test Files 249/249, Tests 3162/3162; plugin-approvals Test Files 106/106, Tests 1366/1366; VERDICT command-exit 0. typecheck same filter VERDICT command-exit 0. pnpm exec eslint --no-inline-config on both packages exit 0. No ablation: copy, no tested behaviour changed.",
    "gates": "dispatch-gates --commands derived 61 at d13beb7; each run with exit captured before any pipe; --ran: 61 accounted, 60 run, 1 NOT-MEASURED, 0 UNRUN, EXIT=0. check-plugin-teardown-shape --self-test exit 3 on the shallow clone, then 0 after git fetch --depth=1 of 621a487 (48 cases pass). check:i18n exit 3 (CLI not built), then 0 after its prerequisite turbo build (all bundles in sync, 10 packages). NOT MEASURED: check:dual-build-cjs-loads, reason: needs a full workspace build; CI Lint and Repo Gates runs it. PR check-runs: in_progress at report time (not waited on, per os-dev.md).",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "5 — reads only: issue_read get x1, issue_read get_comments x3, pull_request_read get_diff x1 (PR 28233). No MCP write.",
    "api_writes": "2 relay writes — pr_create (objectstack#28528, via fleet-write run 41274752985, draft, no labels, no assignees) and this os-dev-report comment on #28234; plus 1 git push (not REST). Write budget spent: 3 of 3.",
    "open_questions": [],
    "out_of_scope_findings": [
    "carrier: the ui half of #27838 · noted, not filed: ui/packages/app-shell/src/views/metadata-admin/previews/flow-canvas-parts.tsx hard-codes the HTTP palette fallback hint 'Call an external API' (the engine descriptor overlays it when present); in the PR's Acceptance notes"
    ],
    "serial_constraint": "Open PRs listed (17 plus Version Packages) and every file list read: none touches http-nodes.ts, approval-node.ts or http-node-signing.test.ts. The only open PR in the same package, #28357 head a91c84a, merge-tree --write-tree against d13beb7 exit 0 (clean). No PR for #28055 or #28202 touches these files."
    }

  4. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#1 · os-project-manager · session_01R1q2xdtYgU6FKrZ7LgjPCC

    Landed

    PR #28528 merged at 2026-11-01T05:32Z by the merge queue as 890c2a6d29 on main (Fixes #28234; ACCEPT by seat 1 on the PR).

    Reading Probe Result
    Queue membership git ls-remote origin 'refs/heads/gh-readonly-queue/main/pr-28528-*' 0 refs
    PR head on origin/main git merge-base --is-ancestor d13beb7a2a origin/main holds [Edit: not measured. The queue squash-merges, so the PR head is not an ancestor and this clone lacks it; the merge commit's ancestry and content rows stand.]
    Ancestry git merge-base --is-ancestor 890c2a6d29 origin/main holds
    • Landed: the HTTP and approval node descriptions in the flow designer read in business words, with no ADR ids, internal names or enum literals; the engineer detail moved into code comments beside each entry. No key, type, default or schema shape changed.

    State: card closed by Fixes; the claim is done.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:automationdocumentationImprovements or additions to documentationdomain:serverDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions