- note: "ADR-0126 §7.1 — copy a flow's whole definition under a NEW machine name: the sanctioned way to customize a packaged flow whose base is locked. Body `{ name, label }`, both mandatory, closed. An unknown source answers 404, a taken target name (the source's own included) 409 `RESOURCE_CONFLICT`, and a definition the engine refuses to register 400; success answers `{ flow, notice }`, the notice stating that references are not re-pointed and that the clone is armed (`status: 'draft'` is not an off-switch). ⛔ No ancestry on the definition or the response (ADR-0126 §9). ⚑ `manage_metadata` — the same `isFlowAuthoringWrite` door as `POST /automation` above, because a clone registers flow metadata at environment scope; fail-closed, only `isSystem` bypassing, and the #5519 anonymous floor answers 401 first. ⛔ NOT the ADR-0126 §5 activation gate: a clone takes nothing away from any tenant. The domain arm existed long before its mount did — every clone answered the transport's 404 before `dispatch()` ran while the arm's direct-call unit test stayed green — so the door is pinned over HTTP, not only through the handler. NOT JS-SDK surface on this leg, and that is stated rather than left as an open gap: the operational driver ADR-0126 §7.4 charters is the Setup page for packaged metadata, a console surface that calls the platform API directly — the posture the `POST /actions/_activation/:object/:action` row below carries. Adding a client method reclassifies this row to `sdk`. Pinned over HTTP in `qa/dogfood/test/automation-flow-clone-door.dogfood.test.ts`, the environment-scoped mount in `dispatcher-plugin.automation-clone-mount.integration.test.ts`, and the copy itself in `domains/automation-flow-clone.test.ts`" },
0 commit comments