You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Part of objectstack-ai/objectstack#12150 (Epic: ADR-0126 implementation, v17 line — 17.x minor, maintainer-ruled).
Completes the surface-row deliverable of objectstack-ai/objectstack#12160 (closed by objectstack-ai/objectstack#12348, merged e5ce2ed0 — engine, ledger rows and both dispatch doors only; objectui was deliberately out of that PR's scope, so the UI half is this card, not scope creep).
Dispatch: coordinated under the objectstack#12150 program — ⛔ not from the general queue; the program dispatches on unlock (maintainer anti-preemption instruction, 2026-08-25, PM session session_01KWRU3s15AJz7PGW7a7wdCh). Contract: ADR-0126 §8 item 2 + amendment ruling 3, maintainer verbatim: 「动作 可能是需要开关的,因为有的 action 我不想启用。」 (#12049 comment 5408117664) — the disable half has first-party pull; §7.4 gives the page shape (the merged L5 page is the home, not a new page).
Deliverable
The existing Setup "packaged automation" page (#6301 · PR #6382, merged b362c1b, component ref automation:packaged) gains a packaged actions section beside the flows section:
per packaged action: on/off for this scope — that is all the ledger knows; the page claims nothing more (absence-of-row = active);
refusals surface the server's message verbatim — the §5 operator gate, the ambiguous-name 409 RESOURCE_CONFLICT naming the objects, and the no-ledger 503 SERVICE_UNAVAILABLE — no client-side softening, no retry loops (the objectui#6382 actionErrorDetail pattern);
⛔ NO clone for actions — not chartered (ADR §9; ruling 3 charters the switch only); the flows section keeps its clone, actions get none;
⛔ no drift/ancestry surface (§9) — no badges, no diff-vs-base;
i18n: every new key lands in packages/i18n/src/locales/en.tsand all nine other packs (the objectui#3517 lesson — inline defaultValue is explicitly not a fix).
Acceptance
Packaged actions listed with their activation state; disable/enable round-trip visible in the page;
refusals verbatim (all three shapes above reachable in tests/mocks);
flows section behavior unchanged; no new page, no Studio changes.
Refs: ADR-0126 §7.4/§8.2/§9 · objectstack#12160 · objectstack PR #12348 · objectui PR #6382 (the shape to follow)
Part of objectstack-ai/objectstack#12150 (Epic: ADR-0126 implementation, v17 line — 17.x minor, maintainer-ruled).
Completes the surface-row deliverable of objectstack-ai/objectstack#12160 (closed by objectstack-ai/objectstack#12348, merged
e5ce2ed0— engine, ledger rows and both dispatch doors only; objectui was deliberately out of that PR's scope, so the UI half is this card, not scope creep).Dispatch: coordinated under the objectstack#12150 program — ⛔ not from the general queue; the program dispatches on unlock (maintainer anti-preemption instruction, 2026-08-25, PM session
session_01KWRU3s15AJz7PGW7a7wdCh). Contract: ADR-0126 §8 item 2 + amendment ruling 3, maintainer verbatim: 「动作 可能是需要开关的,因为有的 action 我不想启用。」 (#12049 comment 5408117664) — the disable half has first-party pull; §7.4 gives the page shape (the merged L5 page is the home, not a new page).Deliverable
The existing Setup "packaged automation" page (#6301 · PR #6382, merged
b362c1b, component refautomation:packaged) gains a packaged actions section beside the flows section:POST /actions/_activation/:object/:action(feat(actions): durable packaged-action disable — same activation ledger, dispatch-time consult objectstack#12348); read state comes from the samesys_metadata_activationledger (metadata_type: 'action');409 RESOURCE_CONFLICTnaming the objects, and the no-ledger503 SERVICE_UNAVAILABLE— no client-side softening, no retry loops (the objectui#6382actionErrorDetailpattern);packages/i18n/src/locales/en.tsand all nine other packs (the objectui#3517 lesson — inlinedefaultValueis explicitly not a fix).Acceptance
Refs: ADR-0126 §7.4/§8.2/§9 · objectstack#12160 · objectstack PR #12348 · objectui PR #6382 (the shape to follow)