Repository navigation
automation: a cloned packaged flow reaches no Studio surface — the clone is stored with no package, and every Studio Automations rail lists only package-scoped flows #21332
Description
Activity
objectstack-fleet commented
on Oct 2, 2026 ContributorAuthorMore actionsTriage: first grade —
bug·priority:p2·repo:objectui·area:studio·pm:queue. Ruling: Studio surfaces package-less flows. The clone stays org-owned, as ADR-0126 §7.1 saysTriage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-02T05:59Z. ⛔ Not a claim, ⛔ not a dispatch.Why p2. ADR-0126 promises that a clone is edited in Studio, and the clone is unreachable there. The engine half works, and nothing is lost.
Ruling: the Studio arm, not the package arm (triage's, from the accepted text; overturnable by the maintainer).
- ADR-0126 §7.1 makes the clone "an ordinary org/install-owned flow", and
flow-clone.tsstrips provenance on purpose. So the clone correctly has no package, and moving it into one would contradict the ADR. - The missing piece is the authoring surface. Studio gains a rail, or an entry, for package-less (org/install-owned) flows, and the deep link opens them.
Routing. The fix lands in objectui (
StudioDesignSurface.tsx,StudioRoute.tsx), sorepo:objectui, with nodomain:*here. The claim files objectui's card (category ④), citing this ruling. This card is the coordination record, and it closes when that lands and the checklist clause (automation.packaged-flow-clone-contractacceptance[6]) passes.
Generated by Claude Code
- ADR-0126 §7.1 makes the clone "an ordinary org/install-owned flow", and
- addedarea:studioChanging a running app without code — authoring, publish, docs and the portalChanging a running app without code — authoring, publish, docs and the portalbugSomething isn't workingSomething isn't workingpriority:p2Medium: important, M3Medium: important, M3
on Oct 2, 2026 objectstack-fleet commented
on Oct 3, 2026 ContributorAuthorMore actionsTriage: moved to objectstack-ai/objectui#11553, where the fix lands. Closed
duplicateTriage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-03T14:03Z. ⛔ Not a claim, ⛔ not a dispatch.- This card has been
repo:objectuiwith nodomain:*since its first grade (5946433961), and no objectui card carried it. So no seat could take it. The fix is all objectui's (StudioRoute.tsx,StudioDesignSurface.tsx), so the card now lives there: Studio: a cloned packaged flow reaches no Studio surface — Studio is routed per package, and the clone is correctly package-less (moved from objectstack-ai/objectstack#21332) objectui#11553,bug· p2 ·domain:ui·area:studio·pm:queue. The ruling and the measurements move with it. - The QA clause (QA run · priority:P0 + 17.6-risk (42/42) · 617f25f8 · 2026-10-02 · 30 PASS / 3 PARTIAL / 9 FAIL / 0 BLOCKED / 0 NOT-RUN #21330,
automation.packaged-flow-clone-contractacceptance[6]) is re-run as 验收测试:包内元数据定制(ADR-0126)——流程/动作的停用+克隆 全链路人工确认 #12438's B1, on a console built at a pin that carries that landing. - 验收测试:包内元数据定制(ADR-0126)——流程/动作的停用+克隆 全链路人工确认 #12438's
Blocked-by:is re-derived to the objectui card in this round.
- This card has been
- added 3 commits that reference this issue
on Oct 7, 2026
QA-source: #21330 · automation.packaged-flow-clone-contract · acceptance[6]
What fails
ADR-0126 §7.1 makes a clone of a packaged flow "an ordinary org/install-owned flow", and §1.3 / the Setup › Packaged automation page promise it is edited in Studio ("Editing happens in Studio"). On 17.6.0 (
617f25f8, Console pin31971ff1e28f) the clone is created, survives a restart and dispatches, but no Studio surface lists or opens it.Reproduction (stock showcase, admin)
POST /api/v1/automation/showcase_urgent_task_alert/clone {"name":"qa_urgent_alert_clone","label":"QA urgent alert clone"}→ 200,status: draft.POST /api/v1/data/sys_metadata/query {"where":{"name":"qa_urgent_alert_clone"}}→ the row haspackage_id: null,scope: platform.GET /api/v1/meta/flow?package=com.example.showcase→ 30 flows, clone absent. BareGET /api/v1/meta/flow→ 31 flows, clone present./_console/studio→ "No writable packages yet"; the only installed entry is the read-only showcase package./_console/studio/com.example.showcase/automationslists the 30 packaged flows, not the clone. The deep link…/automations?surface=flow%3Aqa_urgent_alert_cloneredirects to another flow.Reproduced on two fresh boots by the runner and once more by an independent verifier (also via a clone created from the Setup page's dialog).
Mechanism
_packageId/_provenanceon purpose (packages/runtime/src/flow-clone.ts) and persists a package-less row.StudioDesignSurface.tsx→loadPackageSurfaces(client, 'flow', packageId)(bothclient.list(type, {packageId})andlistDrafts({packageId, type})); Studio has only/studio,/studio/:packageId,/studio/:packageId/:tab(apps/console/src/components/StudioRoute.tsx); the landing lists writable and installed packages only.Notes
cb4c31d, fix(runtime)!: the /automation create and update doors save the flow as a tenant row, so what they answer 200 for survives a restart (#20862) #20907); this card is the reachability half only. It was recorded indocs/qa/platform-checklist/FOLLOW-UPS.md§8 as row D18 ("safe to file") and never filed.Full run evidence: #21330.
Generated by Claude Code