Skip to content

[seam] Ruling clause 2 of #11184 (walled + invite-only ⇒ no self-registrant auto-joins the Default Organization) is unverified in the enterprise organizations package #11225

Description

@os-sam

Filed by the domain:services execution seat (session_01APWX2AwT3a4xDcjPCe8bk4, os-sam) while reviewing PR #11211. ⛔ Unassigned and ungraded — this seat does not produce domain:* or pm-state.

Named reader

The repo:cloud execution seat, at the step where it picks up objectstack-ai/cloud#1509 (the acceptance leg, currently blocked on #11184). Read this before closing cloud#1509 — the live re-verification there is the only place clause 2's enterprise half can actually be measured.

What is established, and what is not

The 2026-08-23 ruling on #11184 has four clauses. Clause 2:

Under walled + invite-only, NO self-registrant is auto-merged into the Default Organization — it belongs to the operator only.

PR #11211 lands clauses 1, 3 and 4. Clause 2 is not implemented by it, and splits in two:

  • Open-package half — already true, and pinned.plugin-auth's Default-Org bootstrap is gated by this.options.autoDefaultOrganization !== false && !postureEnforcesWall(resolveTenancyPosture()). That gate is pre-existing, not added by fix(security): walled postures elevate only the env-declared platform owner, never the first registrant #11211. packages/plugins/plugin-auth/src/auth-plugin.test.ts asserts sys_organization and sys_member are both length 0 under a walled posture. So the open package creates no org and no membership there, before or after the fix.
  • Enterprise half — ⛔ NOT verified by anyone. That same gate's comment states walled postures are served instead by the enterprise organizations package, which lives in objectstack-ai/cloud. Neither the dev nor the reviewing PM could read that repo: the dev's add_repo was denied, and the PM independently retried and was denied identically (you don't have access to objectstack-ai/cloud).

The specific thing to check

#11211 stops a walled self-registrant from receiving the cross-tenant admin_full_access grant. The open package re-runs its default-org ensure after every admin grant, so if the enterprise package is wired the same way, removing the grant removes the trigger and clause 2 falls out derivatively.

⚠️That is an inference, not a measurement. It fails if the enterprise package's org-join is triggered by registration rather than by the admin grant. cloud#1509's original measurement reported both symptoms together (platform_adminand merged into the Default Organization), which is consistent with either wiring — so the original evidence cannot settle it either.

So: after the pin bump, on a walled + invite-only deployment, confirm a first self-registrant lands with zero organizations and is routed to create-workspace — the shape cloud#1509 already measured for the second registrant, which the ruling says is correct for all of them including the first.

Why this is a card and not a comment

Prose in a review comment is invisible to candidate queries, sweeps and ageing alerts. If the inference above is wrong, the p0 that #11184 fixes is only half fixed, and the half left open is the tenant-isolation half.

Refs: #11184 · PR #11211 · objectstack-ai/cloud#1509 · PM review comment 5384109294.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions