Skip to content

Studio connector_action form shows no envelope editor and no in-form refusal for a template token in connectorConfig.input #28164

Closed

Description

@objectstack-fleet

domain:spec#1 · os-tesla · session_01L9qibwb6hBqszPTYJobitm

Filing gate: ② should-fix ④.3 of the contract review of PR #28150 (#27968), record 6525595405. Filed by domain:spec seat 1. ⛔ Not a claim. Triage sets the grade and routes the card to the ui/ lane.

Reach: an app builder editing a connector_action node in Studio. After #28150, a {…} token in connectorConfig.input is refused at publish. Studio's hand-written connectorConfig form offers no CEL-envelope editor for those values and shows no in-form refusal, so the builder meets the located refusal only at the runtime authoring gate. The verdict is right, but it arrives in the wrong place.

Measured (on the #28150 head 6a06a420)

  • flow-value-envelope.ts isValueEnvelopeSlot answers true for ['config','input'] on connector_action. That path is unreachable, because the parse refuses the loose key. It never reads the ledger's block (connectorConfig).
  • FlowNodeConfigField.tsx valueSlotRefusals and flow-simulator.ts:123 call the judge config-only.

What changes

Links: #27968, PR #28150 (record 6525595405).

Blocked-by: #28150

Activity

  1. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

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

    Triage: p2 · domain:ui · area:studio · pm:blocked on #28150 · 2026-10-30T15:01Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: unblocked · p2 · pm:queue · 2026-10-30T16:05Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#3 · os-tesla · session_01L9qibz8HEj53Wx2uphTo2o

    Claim: PM loop round 4 · 2026-10-31T02:44Z
    Session: session_01L9qibz8HEj53Wx2uphTo2o (seat; implementation by card thread session session_01L9qibxVHVAdKszs18owvD6, mode:thread)
    Account: os-tesla (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/project-thread-ug538h (the card thread's designated push branch, the recorded platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-28164
    Domain: domain:ui
    Seat: domain:ui#3
    File surface: views/metadata-admin/inspectors/flow-value-envelope.ts (+test), FlowNodeConfigField.tsx, flow-simulator.ts, the connector_action form component, i18n keys, tests, .changeset/28164-*.md (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: default (dispatch-gates --tier re-run on the actual diff), effort: high
    Clause-②: no (expected; re-judged on the diff)
    Metadata-protocol: none
    Responsibility: the Studio readers' config-only judge is ours; the ledger's connectorConfig block (#28150) is correct and stays
    Thread-read: none
    Premise: per the card's measurement; the dev re-measures on current main before code
    Serial constraints cleared: seat-3 siblings #28239 #28240 #28241 #28179 #28164 hold declared regions of shared files (FRAME.md); #28148 (paused) holds views/setup/PackagedAutomationPage.tsx + packagedFlowLedger.ts

    Maintainer 2026-10-31 「ui 车道一堆任务啊,应该并发开满啊」. Order: /mnt/project-files/ui-seat-3/r2026-10-31/dispatch-28164.md under FRAME.md.

  4. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#3 · os-tesla · session_01L9qibxVHVAdKszs18owvD6

    os-dev-report

    {
     "issue": 28164,
     "status": "done",
     "branch": "claude/project-thread-ug538h",
     "pr": "https://github.com/objectstack-ai/objectstack/pull/28312",
     "session": "session_01L9qibxVHVAdKszs18owvD6",
     "premise_still_valid": true,
     "summary": "Studio readers now honour the ledger block: isValueEnvelopeSlot matches flowNodeExpressionBlock(entry) (true for connector_action connectorConfig.input, false for config.input); FlowNodeConfigField isScalarValueSlot/valueSlotRefusals accept a declared sibling block and hand the node to resolveFlowNodeValueSlots/flowNodeValueTemplateRefusals, so typed connector input fields get the text/CEL toggle and the in-form refusal; the repeater gets the toggle and per-row refusal. flow-simulator configRefusal takes the node and names the block; the Debug run judges connector_action before mocking. Six-map pin is now seven (connector_action:connectorConfig.input), confirmed against FlowValueSlotSchema.",
     "tests": "head ac2e380a: pnpm --dir ui exec vitest run inspectors/ + previews/ + 31 importer files -> Test Files 405/405, Tests 4763 passed 1 skipped (lock VERDICT command-exit 0); pnpm --filter @object-ui/app-shell type-check -> exit 0; eslint on 6 changed ui files -> exit 0. Full app-shell suite (~1987 files, 2 workers) stopped unfinished after ~50 min: declared narrowing, CI Test UI runs it. Ablation (fix committed; 3 sources restored from origin/main, src-aliased so no build): 3 test files -> Test Files 3 failed, Tests 8 failed | 11 passed; restored via git checkout HEAD, git diff HEAD empty. First ablation attempt was a no-op (ui/-prefixed paths refused by the vitest invocation guard), rerun with ui-relative paths.",
     "gates": "dispatch-gates --commands (tree ac2e380a): 35 families, all run with stdin from /dev/null, all exit 0 (check:query-options-erasure first cut at a 280s cap -> 124, rerun -> 0; check:type-check-debt first NOT MEASURED exit 3 from lock queue, rerun under lock -> 0; check-sdui-manifest + --self-test -> 0; ui vitest scripts/ -> 169 passed 2 skipped). dispatch-gates --ran: 35 derived, 35 run, 0 NOT-MEASURED, 0 UNRUN. pnpm check:new-line-citations -> 0 new, exit 0. CI check-runs: in_progress at report time.",
     "line_budget": "7 files, +380 / -34: sources +97/-27 (FlowNodeConfigField 57/10, flow-value-envelope 23/12, flow-simulator 17/5), tests +269/-7, changeset +14",
     "deviations": "none of scope; one declared narrowing (full app-shell suite left to CI). Files: exactly the dispatched surface plus two new test files and the changeset; no i18n keys added; StudioDesignSurface.tsx untouched.",
     "files_changed": [
      ".changeset/28164-connector-input-value-slot.md",
      "ui/packages/app-shell/src/views/metadata-admin/inspectors/FlowNodeConfigField.tsx",
      "ui/packages/app-shell/src/views/metadata-admin/inspectors/FlowNodeInspector.connectorInputEnvelope-28164.test.tsx",
      "ui/packages/app-shell/src/views/metadata-admin/inspectors/flow-value-envelope.test.ts",
      "ui/packages/app-shell/src/views/metadata-admin/inspectors/flow-value-envelope.ts",
      "ui/packages/app-shell/src/views/metadata-admin/previews/simulator/__tests__/flow-simulator.connectorInput-28164.test.ts",
      "ui/packages/app-shell/src/views/metadata-admin/previews/simulator/flow-simulator.ts"
     ],
     "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
     "mcp_calls": "5 — reads only: issue_read get #28164, get_comments #28164 x2, get_labels #28164, get #28185; zero write tools (plus one unauthenticated public REST read of the #28164 assignee)",
     "api_writes": "2 — relay pr_create (#28312, run 41167664520) and this os-dev-report comment via post-stamped",
     "open_questions": [],
     "out_of_scope_findings": [
      "noted, not filed · carrier: none · the Debug run mocks create_record/update_record fields.* and http body without judging their value slots; only connector_action was in scope (PR #28312 Acceptance notes)"
     ]
    }
  5. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#3 · os-tesla · session_01L9qibz8HEj53Wx2uphTo2o

    Landed · 2026-10-31T05:12Z

    probe reading
    PR #28312 merged through the queue at 2026-10-31T05:11:48Z, merge commit 3d9175d047 (ACCEPT 6539013542)
    this card closed completed by the PR's Fixes line

    State: pm:dispatched removed (closed card).

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

Metadata

Metadata

Assignees

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portaldomain:uienhancementNew feature or requestpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions