Concierge-provisioned workspaces are created as parent_id NULL orphans — breaks A2A ("cannot communicate per hierarchy rules"), canvas depth-1 (#2601), and the single-root org model #2609

Open
opened 2026-06-11 22:12:27 +00:00 by core-devops · 0 comments
Member

Live repro on the fresh enter-os tenant (2026-06-11, second first-run blocker after #2608):

The org concierge provisioned enter-product + enter-growth via the management MCP. Both rows landed with parent_id: NULL — orphan ROOTS beside the kind='platform' org root, not children of it. Consequences, all observed live:

  1. A2A delegation hard-fails: every delegate_task_async from the concierge to its own team died with access denied: workspaces cannot communicate per hierarchy rules (sameOrg = subtree under THE single NULL root; an orphan sibling is outside it). The concierge then told the user it had "an RBAC restriction" — confabulated diagnosis, the real error was only on the delegation rows.
  2. Canvas depth-1 placement — this is the mechanism behind #2601 ("provisioned ws lands depth-1 beside old root").
  3. Org model violation: multiple parent_id-NULL rows per org breaks the org-scope invariant platform_agent.go documents (org = subtree under the single NULL root; org_api_tokens etc. anchor on it).

Hand-fix applied to enter-os: PATCH /workspaces/:id {parent_id: <org root>} for both, after which the same delegation completes cleanly (verified: delegation completed, no error).

Fix: the workspace-create path used by the management surface (and any path reachable without an explicit parent) must default parent_id to the org's kind='platform' root when none is specified — only the install/bootstrap path may create a NULL-parent row. Probably one default + a guard in workspace.go create (INSERT ... parent_id) keyed off the platform-root lookup that platform_agent.go already has. A backfill sweep for existing orphan rows (non-platform, parent NULL, org has a platform root) closes #2601 retroactively.

Refs #2601 (same root cause), #2608 (the other first-run blocker), core#2573 (context).

Live repro on the fresh `enter-os` tenant (2026-06-11, second first-run blocker after #2608): The org concierge provisioned `enter-product` + `enter-growth` via the management MCP. Both rows landed with **`parent_id: NULL`** — orphan ROOTS beside the kind='platform' org root, not children of it. Consequences, all observed live: 1. **A2A delegation hard-fails**: every `delegate_task_async` from the concierge to its own team died with `access denied: workspaces cannot communicate per hierarchy rules` (sameOrg = subtree under THE single NULL root; an orphan sibling is outside it). The concierge then told the user it had "an RBAC restriction" — confabulated diagnosis, the real error was only on the delegation rows. 2. **Canvas depth-1 placement** — this is the mechanism behind **#2601** ("provisioned ws lands depth-1 beside old root"). 3. **Org model violation**: multiple parent_id-NULL rows per org breaks the org-scope invariant platform_agent.go documents (org = subtree under the single NULL root; org_api_tokens etc. anchor on it). **Hand-fix applied to enter-os**: `PATCH /workspaces/:id {parent_id: <org root>}` for both, after which the same delegation completes cleanly (verified: delegation `completed`, no error). **Fix**: the workspace-create path used by the management surface (and any path reachable without an explicit parent) must default `parent_id` to the org's kind='platform' root when none is specified — only the install/bootstrap path may create a NULL-parent row. Probably one default + a guard in `workspace.go` create (`INSERT ... parent_id`) keyed off the platform-root lookup that `platform_agent.go` already has. A backfill sweep for existing orphan rows (non-platform, parent NULL, org has a platform root) closes #2601 retroactively. Refs #2601 (same root cause), #2608 (the other first-run blocker), core#2573 (context).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#2609