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 #12150 (Epic: ADR-0126 implementation, v17 line — 17.x minor, maintainer-ruled). Maintainer ruling, 2026-08-26, live PM chat, verbatim: 「同意」 — to the three-part package presented with four-axis analysis (full ruling record: #12359comment 5419050253): #12359 option B, #12350, and this card's original L8 scope are one card, one PR, one verification pass. This card is that card; its PR closes #12159, #12350 and #12359.
Dispatch: coordinated under the #12150 program — ⛔ not from the general queue (maintainer anti-preemption instruction, 2026-08-25, PM session session_01KWRU3s15AJz7PGW7a7wdCh). Contract: ADR-0126 §4 walls + §8 items 2–3, ADR-0029 D7 (object ownership), ADR-0068 D2 (write authority unchanged).
Part 1 — registration home (#12359, ruled: option B)
sys_metadata_activation registration moves from the automation service's manifest (registerRunObject, beside sys_automation_run/sys_flow_dispatch) to PlatformObjectsPlugin — where the object is declared, beside SysMigration/SysMigrationJournal/SysSecret. Move, not add: single owner, no double registration. Consequence: every composition carrying platform-objects has the ledger, so packaged-action disable works without the automation service, and every future Regime C consumer inherits it.
A composition with automation must be measured too: boot order, metadata:reloaded re-attach (both the flow and the action projections hydrate), no ownership-diagnostic regression (ADR-0029 D7).
One metadata_type-parameterized store replaces the two copies of the §4 row contract (ObjectStoreFlowActivationStore in service-automation, ObjectStoreActionActivationStore in objectql). Home: a package BOTH may depend on — @objectstack/core is the leading candidate (#12350's own analysis); ⛔ platform-objects as code home would invert the tiering for objectql (orthogonal to Part 1's registration move, which is composition-level). Both consumers move onto it; the row semantics stay byte-equivalent: install-level rows only, org-carrying rows skipped on read, driver 0 read as false, read-then-write, no engine-slice delete.
Both existing pin suites (flow-activation-ledger.test.ts, action-activation.test.ts) stay green unchanged — they pin the contract, so they are the proof the consolidation lost nothing.
Decide and implement how sys_permission_set.active (the #11513 row-state door, permission-set-projection.ts#4669 carve-out) relates to the generic ledger — projection (column stays, ledger reads through) vs migration (rows move, column retired). §4 walls inherited: no definitions in the ledger, no linkage columns.
A short decision note on this card before code (which route, and the measurement that grounds it); ⛔ if the choice has customer-visible consequences, stop-and-report to the maintainer instead of choosing.
Part of #12150 (Epic: ADR-0126 implementation, v17 line — 17.x minor, maintainer-ruled).
Maintainer ruling, 2026-08-26, live PM chat, verbatim: 「同意」 — to the three-part package presented with four-axis analysis (full ruling record: #12359comment 5419050253): #12359 option B, #12350, and this card's original L8 scope are one card, one PR, one verification pass. This card is that card; its PR closes #12159, #12350 and #12359.
Dispatch: coordinated under the #12150 program — ⛔ not from the general queue (maintainer anti-preemption instruction, 2026-08-25, PM session
session_01KWRU3s15AJz7PGW7a7wdCh). Contract: ADR-0126 §4 walls + §8 items 2–3, ADR-0029 D7 (object ownership), ADR-0068 D2 (write authority unchanged).Part 1 — registration home (#12359, ruled: option B)
sys_metadata_activationregistration moves from the automation service's manifest (registerRunObject, besidesys_automation_run/sys_flow_dispatch) toPlatformObjectsPlugin— where the object is declared, besideSysMigration/SysMigrationJournal/SysSecret. Move, not add: single owner, no double registration. Consequence: every composition carrying platform-objects has the ledger, so packaged-action disable works without the automation service, and every future Regime C consumer inherits it.sys_metadata_activationhas only one registrant #12359 measured 503 (actions-and-no-automation boot,bootStack(showcaseStack)+ flip →SERVICE_UNAVAILABLE) becomes this part's positive test: same boot, flip succeeds, disable consulted at dispatch.metadata:reloadedre-attach (both the flow and the action projections hydrate), no ownership-diagnostic regression (ADR-0029 D7).Part 2 — one store implementation (#12350)
One
metadata_type-parameterized store replaces the two copies of the §4 row contract (ObjectStoreFlowActivationStorein service-automation,ObjectStoreActionActivationStorein objectql). Home: a package BOTH may depend on —@objectstack/coreis the leading candidate (#12350's own analysis); ⛔ platform-objects as code home would invert the tiering for objectql (orthogonal to Part 1's registration move, which is composition-level). Both consumers move onto it; the row semantics stay byte-equivalent: install-level rows only, org-carrying rows skipped on read, driver0read as false, read-then-write, no engine-slicedelete.flow-activation-ledger.test.ts,action-activation.test.ts) stay green unchanged — they pin the contract, so they are the proof the consolidation lost nothing.Part 3 — permission-set convergence (original L8, ADR-0126 §8 item 3)
Decide and implement how
sys_permission_set.active(the #11513 row-state door,permission-set-projection.ts#4669 carve-out) relates to the generic ledger — projection (column stays, ledger reads through) vs migration (rows move, column retired). §4 walls inherited: no definitions in the ledger, no linkage columns.sys_permission_set.activevalues preserved whichever route.Acceptance
Closes #12159,Closes #12350,Closes #12359; three parts verifiable independently in the diff.packages/specsurface; smooth upgrade (the table already exists in live databases — moving its registrar must be a no-op for existing data).Refs: #12359 (ruling) · #12350 · ADR-0126 §4/§8 · ADR-0029 D7 · #11513/#4669 ·
permission-set-projection.ts:1128-1145