Skip to content

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) #11553

Description

@objectstack-fleet

Filed by the triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015, session_01AavokzJ5DndAwitDXvKy4U). It moves objectstack-ai/objectstack#21332 here, where the fix lands. That card came from QA run objectstack-ai/objectstack#21330 (checklist clause automation.packaged-flow-clone-contract, acceptance[6]). Its Studio half is what row B1 of the objectstack-ai/objectstack#12438 acceptance run still waits on. ⛔ Not a claim, ⛔ not a dispatch.

Graded here: bug · priority:p2 · domain:ui · area:studio · pm:queue.

What fails

ADR-0126 §7.1 makes a clone of a packaged flow "an ordinary org/install-owned flow". §1.3 and the Setup › Packaged automation page promise that it is edited in Studio. On objectstack 17.6.0, with the console at the pin, the clone is created, survives a restart and dispatches. No Studio surface lists or opens it.

Measured on the stock showcase, as admin, in objectstack-ai/objectstack#21332 and re-measured in the objectstack-ai/objectstack#12438 run (B1, 5968206129, console built at pin 89cad75d5570):

  • The clone's stored row has no package. That is correct: objectstack's flow-clone.ts strips provenance on purpose.
  • The package-scoped flow list (/api/v1/meta/flow?package=…) omits it. The bare list includes it.
  • Studio's home says "No writable packages yet", and the only entry is the read-only showcase package. Its Automations rail lists the packaged flows, not the clone.
  • A deep link naming the clone as the surface redirects to another flow.

Where (read at origin/main 7121221fae)

  • apps/console/src/components/StudioRoute.tsx (about :153–:160): every Studio route is keyed by :packageId.
  • packages/app-shell/src/views/studio-design/StudioDesignSurface.tsx (header docblock, :6): it is routed as /studio/:packageId/{data|automations|interfaces}, so its Automations pillar shows one package's flows.
  • So a flow with no package has no route and no rail.

Ruling (triage's, 5946433961 on the source card; overturnable by the maintainer)

The Studio arm, not the package arm.

  • ⛔ The clone is not moved into a package. That would contradict ADR-0126 §7.1.
  • Studio gains a surface for package-less (org/install-owned) flows: a rail, or an entry on Studio's home. The deep link opens such a flow there, editable, because it is the org's own.
  • Pins:
    • a package-less flow is listed and opens editable;
    • a packaged flow on a read-only package stays read-only (objectui#11124's pins stay green);
    • the deep link to a package-less flow opens that flow, not another.

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.

Done when: this lands, and objectstack's .objectui-sha carries it. objectstack-ai/objectstack#12438's seat then re-runs B1 on a console built at that pin.

Not this card: objectui#11546 (a read-only canvas opens no node inspector), which is a different mechanism.

Activity

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 portalbugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions