Repository navigation
Closed as duplicate
Labels
area: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, M3repo:objectuiSeam card: cross-repo ordering with objectui is the substance (pure objectui fixes live in objectui)Seam card: cross-repo ordering with objectui is the substance (pure objectui fixes live in objectui)
Description
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 pin 31971ff1e28f) 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
/_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. - Expected: the clone appears on a Studio Automations rail (or the clone lands somewhere Studio can open). Actual: unreachable from Studio.
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
- The clone arm strips
_packageId/_provenanceon purpose (packages/runtime/src/flow-clone.ts) and persists a package-less row. - Studio's Automations rail is package-scoped at the pin: objectui
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. - So a package-less flow matches no rail.
Notes
- The durability half of the checklist clause's expected fail is fixed (
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. - The fix needs an owner decision — either Studio gains a surface for package-less (org/install-owned) flows (objectui), or the clone lands in a writable package (objectstack, against the deliberate provenance strip).
- Severity (verifier): major — the engine half works, but the one promised authoring surface cannot reach what it produces.
Full run evidence: #21330.
Generated by Claude Code
Metadata
Metadata
Assignees
Labels
area: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, M3repo:objectuiSeam card: cross-repo ordering with objectui is the substance (pure objectui fixes live in objectui)Seam card: cross-repo ordering with objectui is the substance (pure objectui fixes live in objectui)
Activity
objectstack-fleet commentedon Oct 2, 2026
Triage: 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).
flow-clone.tsstrips provenance on purpose. So the clone correctly has no package, and moving it into one would contradict the ADR.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
objectstack-fleet commentedon Oct 3, 2026
Triage: 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.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.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.Blocked-by:is re-derived to the objectui card in this round.feat(app-shell,console): Studio reaches package-less flows at /studio…
docs(qa): re-point eight checklist items the 17.6.0 release-verificat…
docs(releases): finalize the 17.6.0 notes after publish (objectstack-…