docs/multi-tenant/implementation-checklist.md
This checklist turns the Workspace architecture into implementation and verification gates. Exact commands and observed results are recorded in the verification report.
These items intentionally remain incomplete. Some require additional Core transaction/cutover primitives and others require the closed Control Plane or deployment. The feature branch delivers the Core isolation kernel, not the closed SaaS product or a production Cloud v2 deployment. Checked implementation items later in this document do not supersede these gates.
InstanceManifest before the closed bootstrap can inject CloudWorkspacePolicy.new_api.provision_account outbox item with the Account and personal Workspace, and an in-process reconciler provisions New API idempotently after commit.BYPASSRLS success path is already covered below.public with current_schemas(false) containing only that business schema; runtime-role/database search_path overrides are rejected.session_replication_role=origin, row_security=on, and lo_compat_privileges=off; every persistent pg_db_role_setting applicable to the runtime role or current business database is rejected.alembic_version read-only access, and business-sequence USAGE/SELECT, with no WITH GRANT OPTION or non-business object grants.vector, permits only plpgsql/vector extensions, forbids runtime extension ownership, and contains no foreign data wrapper, foreign server, or user mapping.PUBLIC have no explicit routine or parameter ACL; the runtime owns no routine and cannot effectively execute any SECURITY DEFINER routine, including extension-owned routines.PUBLIC TEMP is documented and tested as a dedicated-business-database v1 compatibility exception; the migrator never grants TEMP directly to the runtime role.BYPASSRLS source-table owner and restores mixed source-table RLS/FORCE states exactly.INSERT FROM SELECT, hidden ON CONFLICT and batch-value expressions, forced-unquoted identifiers, and custom AST/compiler nodes fail closed and make the UoW rollback-only.SessionEvents fail before a registered callback can receive the synchronous Session or transaction connection; rollback cleanup cannot execute the rejected listener.refresh; synchronous object-session access and AsyncAttrs.awaitable_attrs are not supported tenant APIs.Each row type must have a non-null Workspace UUID, scoped indexes, scoped uniqueness, and scoped CRUD tests.
placement_generation).placement_generation).placement_generation).Host or Origin headers.edition_limit; same-name and same-identifier isolation is covered by the test-only multi-Workspace policy because OSS deliberately has no multi-Workspace browser surface.