Skip to content

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

Closed as duplicate

Description

@objectstack-fleet

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)

  1. POST /api/v1/automation/showcase_urgent_task_alert/clone {"name":"qa_urgent_alert_clone","label":"QA urgent alert clone"} → 200, status: draft.
  2. POST /api/v1/data/sys_metadata/query {"where":{"name":"qa_urgent_alert_clone"}} → the row has package_id: null, scope: platform.
  3. GET /api/v1/meta/flow?package=com.example.showcase → 30 flows, clone absent. Bare GET /api/v1/meta/flow → 31 flows, clone present.
  4. Console /_console/studio → "No writable packages yet"; the only installed entry is the read-only showcase package. /_console/studio/com.example.showcase/automations lists the 30 packaged flows, not the clone. The deep link …/automations?surface=flow%3Aqa_urgent_alert_clone redirects to another flow.
  5. 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 / _provenance on 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) (both client.list(type, {packageId}) and listDrafts({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

Full run evidence: #21330.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 2, 2026

    @objectstack-fleet
    ContributorAuthor

    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 says

    Triage 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.ts strips 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), so repo:objectui, with no domain:* 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-contract acceptance[6]) passes.


    Generated by Claude Code

  2. added
    area:studioChanging a running app without code — authoring, publish, docs and the portal
    bugSomething isn't working
    pm:queueReady for the PM dispatch loop
    repo:objectuiSeam card: cross-repo ordering with objectui is the substance (pure objectui fixes live in objectui)
    on Oct 2, 2026
  3. objectstack-fleet commented on Oct 3, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: moved to objectstack-ai/objectui#11553, where the fix lands. Closed duplicate

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-03T14:03Z. ⛔ Not a claim, ⛔ not a dispatch.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:studioChanging a running app without code — authoring, publish, docs and the portalbugSomething isn't workingpriority:p2Medium: important, M3repo:objectuiSeam card: cross-repo ordering with objectui is the substance (pure objectui fixes live in objectui)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions