Skip to content

Package-provided flows are read-only in Studio — no design mode and no node inspector on any node, which makes every checklist clause needing a node panel on a *shipped* flow unreachable (fixture limit for QA, but a product question worth a ruling) #7571

Description

@huangyiirene

Restart-when: any objectui PR touches the Studio flow-designer node inspector (ride along with a read-only inspection view for package-provided flows), or a customer reports needing to debug a shipped flow in production

Symptom

Opening a package-provided (shipped) flow in Studio offers no design mode and no node inspector for any node. There is no panel from which a node's configuration can be read, so any verification step that needs to look at a shipped flow's node config cannot be performed at all.

Concrete cost in the automation run — two clauses went blocked(fixture) rather than pass or fail:

  • time-relative-trigger — clause 0;
  • connector-dispatch-matrix — clause 3.

Verified contrast: a writable draft flow does open the inspector. So this is not a broken inspector; it is that the inspector is unavailable specifically on flows that arrived via a package.

Two readings, both recorded honestly

The run classified this as a fixture limit, not a product defect, and that classification is reasonable: packages install read-only, the writable-draft path works, and the checklist's clauses could be satisfied against a draft fixture instead.

But the other reading deserves a maintainer's glance rather than being buried in a run's fixture list: "you cannot inspect a shipped flow's nodes in Studio" is a plausible product gap. Inspection is a read. Read-only correctly forbids editing a package's flow; it does not obviously imply the operator may not see how a shipped flow's nodes are configured — and an operator debugging a package flow in production has exactly that need. Whether design mode is the right vehicle for a read-only inspection view is the question; that is a product call, not a QA call.

This card asks for that ruling, and records the QA-side consequence either way. If the ruling is "working as intended", the follow-up is fixture-side (give the affected checklist clauses a writable draft flow to drive, or mark the clauses shipped-flow-inapplicable). If the ruling is "operators should be able to inspect a shipped flow", the fix is cross-repo in objectui's Studio.

Root cause

Not located by the run beyond the observed boundary: package-provided flows open without design mode, while a writable draft opens the inspector normally. No Studio source was traced to the gate that decides this.

Reproduction

  1. Boot showcase (the shipped showcase package provides several flows) and open Studio.
  2. Open any package-provided flow — e.g. one of the showcase flows exercised by time-relative-trigger / connector-dispatch-matrix.
  3. Observe: no design mode; clicking any node opens no inspector panel.
  4. Control: create a writable draft flow and open it — clicking a node opens the inspector as expected.

Lane

No domain:* label applied deliberately: the landing place depends on the ruling above and is genuinely ambiguous between three candidates — the QA checklist under docs/qa/platform-checklist/ (devx), the showcase fixtures under examples/app-showcase/ (automation subsystem), and objectui's Studio (cross-repo). Labelling it now would guess at the answer this card is asking for.

Source

Extracted from the QA run #7516 (framework a86db17).


Generated by Claude Code

Activity

  1. os-zhuang commented on Aug 11, 2026

    @os-zhuang
    Contributor

    Triage: needs-user-decision; removed the co-applied pm:queue + finding — the card arrived carrying both queue and finding, and its own text rules neither: it explicitly asks for a maintainer product ruling ("may an operator inspect a shipped flow's nodes read-only?"), which is the decision box, not the dispatch queue and not a held observation. The two follow-up shapes it records (fixture-side checklist change vs. objectui Studio read-only inspection view) both hang on that ruling.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. os-zhuang commented on Aug 11, 2026

    @os-zhuang
    Contributor

    Maintainer ruling recorded 2026-08-11 (PM session, executing the maintainer's direct instruction in chat — verbatim: 「接受你的全部建议,请更新 issue 的状态和标签」, accepting the four-lens decision-inbox review in full).

    Ruling: product direction acknowledged, implementation deliberately deferred. Operators SHOULD be able to inspect — read-only — a shipped (package-provided) flow's node configuration: inspection is a read, and read-only correctly forbids editing, not seeing. But this lands in objectui's Studio at non-trivial cost with no customer pull yet, so it is parked, not queued, and it is NOT v17.

    Hold (2026-08-11). Reason: startup-focus — no measured demand; the QA-side need has a cheaper path. Restart condition: real customer demand for debugging a shipped flow in production, or Studio flow-designer work touching this area anyway (then ride along).

    QA side meanwhile: drive the two blocked checklist clauses (time-relative-trigger clause 0, connector-dispatch-matrix clause 3) with a writable draft fixture.

    State: needs-user-decision → pm:on-hold.


    Generated by Claude Code

  3. huangyiirene commented on Aug 28, 2026

    @huangyiirene
    CollaboratorAuthor

    分诊复核:本卡没有缺陷,domain:* 的空白是对的 —— 更正我自己的普查

    分诊座位,session session_01Aujz2zykf5LXt3T98gRsGe。⛔ 无标签改动。

    为什么会看到这张卡

    本席第 12 轮跑了每日全量(不带 since 窗口),把两仓 572 张 open 卡里缺 domain:* 的挑出来做半标注普查 —— 因为这类卡对每个按车道过滤的视图都不可见。本卡在名单上。

    复核结论:⛔ 不打标签

    卡自己写了理由,而这个理由成立:

    No domain:* label applied deliberately: the landing place depends on the ruling above and is genuinely ambiguous between three candidates — the QA checklist under docs/qa/platform-checklist/ (devx), the showcase fixtures under examples/app-showcase/ (automation subsystem), and objectui's Studio (cross-repo). Labelling it now would guess at the answer this card is asking for.

    ⇒ 锚定规则要的是「修复落地的那个包的域」,而本卡的落点取决于裁决结果:裁「working as intended」⇒ 落夹具侧;裁「运维应当能查看已发布 flow」⇒ 落 objectui 的 Studio,跨仓。给它打任何一个 domain,都是在替它回答它正在问的问题。

    ⇒ 空白不是漏标,是信息。本卡从半标注名单中移除。

    ⛔ 因此更正我自己的普查

    第 12 轮我报「半标注 17 张」。至今已核出两张是有意且论证过的空白,不是缺陷:

    ⇒ 17 → 15。⚠️ 记在这里而不是只写在座位贴里,是因为下一个跑普查的人会再次撞上这两张,而两次都得出「这是缺陷」的结论才是真正的浪费。普查的输出是候选名单,不是判决;每一张仍要读过才算数。

    一条不改状态、但值得维护者知道的观察

    本卡目前 pm:on-hold,Restart-when: 是机会式的(「任何 objectui PR 碰到 Studio flow-designer 节点检查器时顺带做」或「客户报告需要在生产环境调试已发布 flow」)。这个挂起条件本身是合理的。

    ⚠️ 但卡的实质是在请求一次产品裁决 —— 它自己的话:"deserves a maintainer's glance rather than being buried in a run's fixture list",而且它把问题提得很干净:检查是一次「读」。只读正确地禁止编辑一个包的 flow;它并不显然地推出运维不得查看已发布 flow 的节点是怎么配的 —— 而在生产环境调试包内 flow 的运维,需要的正是这个。

    ⇒ 若维护者愿意给一句,本卡可以立刻转 needs-user-decision 并由本席补四棱块。⛔ 本席不自行翻状态:那是另一个席位 2026-08-11 做过的定级,而机会式重启条件今天仍然成立,没有新证据推翻它。


    Generated by Claude Code

  4. os-zhuang commented on Sep 4, 2026

    @os-zhuang
    Contributor

    分诊裁定:⛔ 刻意不给 domain:* —— 并把这条裁定写在这里,免得每一轮重扫一次

    priority:p3 · 保留 pm:on-hold(2026-09-04T19:3xZ 一轮,本评论来自分诊座位)。

    本卡正文的「Lane」段是对的,本席采纳而不是覆盖它。 落点在三个候选之间真实地二义(docs/qa/platform-checklist/ = devx · examples/app-showcase/ = 引擎自动化 · objectui 的 Studio = 跨仓),而选哪一个正是本卡要问的那个问题的答案。锚定规则是「域 = 修复落地的包,读代码定,⛔ 不按标题猜」—— 在裁决之前,任何 domain:* 都是猜。⇒ 打一个标签让它「看起来被处理过」,是本轮口径修正正在消灭的那种假绿。

    ⛔ 也没有送进决策箱,这同样是刻意的。 判据是决策箱的吞吐是稀缺资源:箱里现有 17+ 张,含一张 p0 安全卡(#15409)。本卡有一条成本近乎为零的替代触发器,就写在正文首行:

    Restart-when: any objectui PR touches the Studio flow-designer node inspector (ride along with a read-only inspection view for package-provided flows), or a customer reports needing to debug a shipped flow in production

    ⇒ 它不需要维护者专门开一次会来裁;它需要的是下一次有人碰那块代码时被想起来,而 pm:on-hold + Restart-when: 正是本仓为这种卡设计的形状。⚠️ 但这个判断有一个明确的失效条件,写在这里以便被推翻:若该 Restart 触发在合理时间内没有发生(例如 objectui 的 inspector 长期无人动),那么「搭便车」就等于「永不」,届时应改送决策箱。本卡自 2026-08-11 挂起至今约 24 天 —— ⚠️ 已经接近那个边界,下一任分诊席若看到它仍在原地,请直接改判送箱,并把本评论当作已经权衡过一次的记录,而不是从头再权衡一遍。

    p3 判据:QA 侧后果是两条 checklist 子句走 blocked(fixture)(time-relative-trigger 子句 0、connector-dispatch-matrix 子句 3),而卡面已给出可用的替代夹具(可写草稿流);产品侧的那半是「运维能不能只读地检视一个已发布流的节点配置」,是真实但未见客户报障的问题(正文自陈「a plausible product gap」,⛔ 未测量到需求)。⇒ 不是 p2。

    ⛔ 本席不认领、不派发、不代裁。


    Generated by Claude Code

  5. objectstack-fleet commented on Sep 23, 2026

    @objectstack-fleet
    Contributor

    关 not_planned —— 维护者逐张复核 on-hold 卡时同意关闭;产品方向留在这里备查

    分诊席(session_01Tw7jnJinGHvoGSi8aFkhPJ),2026-09-23T08:01Z。维护者 2026-09-23 在分诊会话里逐张复核 pm:on-hold 卡,对第二组的回复原文:「8006 保留,其他同意」。本卡在那一组里的建议是关闭,维护者同意了。

    保留的产品方向(不因关闭而作废)

    2026-08-11T08:09Z 的裁定(5250634448):运维应当能够只读地查看一个随安装包带来的 flow 的节点配置 —— 查看是一次「读」,只读正确地禁止编辑,并不禁止看。这个方向成立。以后谁来做 objectui Studio 的 flow 设计器节点检查器,应当把「已安装包里的 flow 可以只读打开检查器」算进去。

    为什么关

    • 挂起的条件是「顺带做」:任何 objectui PR 碰到节点检查器时一起做,或者有客户报告需要在生产环境调试已发布的 flow。6 周两条都没有发生。
    • 2026-09-04T19:37Z 分诊(5545577282)写下过这条判断的失效条件:如果顺带做的机会在合理时间内一直没出现,「顺带」就等于「永不」。而且这个提醒挂在本仓,改 Studio 的 objectui 开发者平时看不到。
    • 那条评论同时交代:下一任分诊席如果看到本卡仍在原地,就直接送维护者决定。本次复核就是这样处理的,维护者今天的回答是关闭。
    • QA 那一侧当时就有便宜的替代办法:用可写的草稿 flow 作夹具,驱动 time-relative-trigger 子句 0 和 connector-dispatch-matrix 子句 3。

    ⚠️ 有一处本席读不到:GitHub 显示本卡有 5 条评论,API 只返回 4 条,最后一条可读评论是 5545577282。卡片最后更新时间是 2026-09-18,缺的那一条很可能就是那一次留下的,发评论的账号已被隐藏。⛔ 本席没有读到它的内容,所以也不对它做任何断言。

    重开条件

    有客户报告需要在生产环境查看或调试一个已发布 flow 的节点配置 —— 带着这份报告重开,按上面的方向在 objectui 立卡。

    关闭理由:not_planned,同时摘掉 pm:on-hold。


    Generated by Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions