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
The acceptance half of #16130. That card moves the org-scoping registrar into the open core; this one proves an open-only install can actually raise the wall. ⛔ #16130's PR must not claim the acceptance criterion is met — it is discharged here.
The precise gap, measured
The open tree already has the matrix. packages/rest/src/single-kernel-isolated-api-key-matrix.test.ts and single-kernel-isolated-session-org-claim-matrix.test.ts — the two suites the cross-organization repairs pinned (#15256, #15409) — drive a live isolated posture at REST level and assert the whole thing: an ex-member's API key and session refused, a member reading only its own organization, an organization-less caller refused, and the phantom controls that prove the per-type gate is doing the work.
⚠️What they do not do is produce the posture. Both raise it with a hand-written stub:
⇒ Today the open tree proves the wall behaves correctly given a posture, and proves nothing about whether anything open can produce one. Before #16130 that was unavoidable — the only registrar was cloud-private. After it, it is a gap nobody would notice, because every existing suite goes on passing against its stub.
Scope
An open acceptance that raises the posture through the real open org-scoping registrar — the plugin #16130 lands — rather than a stub, and runs the matrix against it.
⛔ Not a port of cloud's ee-tenant-crm-showcase / ee-group-showcase suites, and ⛔ not a new walled showcase app. Those were considered and are out of scope: the matrix exists, and duplicating it is how two copies drift.
⭐ The assertion that makes this card worth having, and it must fail before #16130 lands: with the open plugin mounted and no stub, getService('org-scoping') resolves and the effective posture reads isolated. On today's tree that is unsatisfiable — which is the point.
Acceptance
An open-only composition mounts the open org-scoping plugin and boots with the wall ACTIVE — asserted from the resolved posture, ⛔ not from a stub's return value.
The existing matrix runs against it unchanged in substance: ex-member API key refused; ex-member session refused; a member reads only its own organization; an organization-less caller refused; a healthy member still reads and writes (⛔ without this control the refusals prove nothing).
The stub-based suites stay as they are. They pin the wall's behaviour given a posture, which remains a distinct question from whether one can be produced; ⛔ do not delete or rewrite them to point at the plugin.
Refs: #16130 (the move) · #15256 / #15409 (the matrices and what they pin) · cloud packages/organizations · ADR-0105 D1 (the posture is the authoritative knob).
Blocked-by: #16130The acceptance half of #16130. That card moves the
org-scopingregistrar into the open core; this one proves an open-only install can actually raise the wall. ⛔ #16130's PR must not claim the acceptance criterion is met — it is discharged here.The precise gap, measured
The open tree already has the matrix.
packages/rest/src/single-kernel-isolated-api-key-matrix.test.tsandsingle-kernel-isolated-session-org-claim-matrix.test.ts— the two suites the cross-organization repairs pinned (#15256, #15409) — drive a liveisolatedposture at REST level and assert the whole thing: an ex-member's API key and session refused, a member reading only its own organization, an organization-less caller refused, and the phantom controls that prove the per-type gate is doing the work.⇒ Today the open tree proves the wall behaves correctly given a posture, and proves nothing about whether anything open can produce one. Before #16130 that was unavoidable — the only registrar was cloud-private. After it, it is a gap nobody would notice, because every existing suite goes on passing against its stub.
Scope
An open acceptance that raises the posture through the real open
org-scopingregistrar — the plugin #16130 lands — rather than a stub, and runs the matrix against it.⛔ Not a port of cloud's
ee-tenant-crm-showcase/ee-group-showcasesuites, and ⛔ not a new walled showcase app. Those were considered and are out of scope: the matrix exists, and duplicating it is how two copies drift.⭐ The assertion that makes this card worth having, and it must fail before #16130 lands: with the open plugin mounted and no stub,
getService('org-scoping')resolves and the effective posture readsisolated. On today's tree that is unsatisfiable — which is the point.Acceptance
org-scopingplugin and boots with the wall ACTIVE — asserted from the resolved posture, ⛔ not from a stub's return value.org-scopingswitch is closed (~1350 of 1660 lines move; the licence gate stays) #16130 and this is where it is measured.Refs: #16130 (the move) · #15256 / #15409 (the matrices and what they pin) · cloud
packages/organizations· ADR-0105 D1 (the posture is the authoritative knob).