Commit 5921a4b8 authored by Alex Pooley's avatar Alex Pooley 🔴
Browse files

Add ADR 015: Non-isolation is a permanent Organization state

parent e5fb62a3
Loading
Loading
Loading
Loading
+9 −5
Changes for content/handbook/engineering/architecture/design-documents/organization/_index.md: 9 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -71,12 +71,15 @@ organization and into their own private Organization.

## Organization Isolation

All Organization data and functionality in GitLab will be isolated.
Isolation means that data and features can never cross Organization boundaries.
This is covered in further detail at [Organization Isolation](isolation.md).
Organizations can be isolated. Isolation means that data and features can
never cross that Organization's boundary. This is covered in further detail
at [Organization Isolation](isolation.md).

On GitLab.com, an Organization starts non-isolated, to support the gradual
transition of top-level groups out of the Default Organization. Non-isolation
is also a valid, permanent state on its own: an Organization can stay
non-isolated indefinitely, and isolating is optional. See [ADR 015: Non-isolation is a permanent Organization state](decisions/015_non_isolation_is_permanent.md).

On GitLab.com, organizations begin in a **non-isolated** state to support the
gradual transition of top-level groups out of the Default Organization.
Features that depend on organization-scoped data must check whether the current
organization is non-isolated, or isolated, before enforcing organization boundary rules.
See [ADR 008: Non-isolated organizations on GitLab.com](decisions/008_non_isolated_organizations_gitlab_com.md)
@@ -349,6 +352,7 @@ Based on this analysis we expect to see similar behavior when rolling out Organi
- [012: Organization is a scoped space](decisions/012_organization_space.md)
- [013: Warn when creating a Top-Level-Group inside an organization](decisions/013_warn_on_tlg_creation.md)
- [014: Organization roles renamed to Organization user types](decisions/014_organization_roles_renamed_to_organization_user_type.md)
- [015: Non-isolation is a permanent Organization state](decisions/015_non_isolation_is_permanent.md)

## Links

+50 −0
Changes for content/handbook/engineering/architecture/design-documents/organization/decisions/015_non_isolation_is_permanent.md: 50 added lines, 0 removed lines.
Original line number Diff line number Diff line
---
owning-stage: "~devops::tenant scale"
title: 'Organizations ADR 015: Non-isolation is a permanent Organization state'
description: "ADR establishing that a non-isolated Organization is a valid, indefinite state, not a phase every Organization is expected to leave."
creation-date: "2026-07-28"
authors: [ "@alexpooley" ]
toc_hide: true
---

## Context

[Organization Isolation](../isolation.md) assumes every Organization
eventually isolates, and [Non-isolated organizations on GitLab.com](008_non_isolated_organizations_gitlab_com.md) treats
non-isolation only as a starting point on the way there. Whether
non-isolation is temporary or a valid, permanent outcome has been
ambiguous until now. This ADR makes it explicit.

## Decision

A non-isolated Organization is a permanent, valid state. An Organization
is never required to isolate. Isolation is something an Organization's
owner opts into, if and when it makes sense for them — not a
destination every Organization is expected to reach.

## Consequences

1. [Organization Isolation](../isolation.md)'s opening claim, that all
   Organization data will be isolated, is corrected as part of this
   ADR. Its phased rollout further down still describes engineering
   milestones as though every Organization eventually isolates;
   revising that is a separate piece of work.
1. A non-isolated Organization may remain on the legacy Cell
   indefinitely, not only until it isolates. A separate, upcoming
   Organization-scoped request context blueprint works out what this
   means for Cell placement in full.
1. Multi-Organization membership is not a temporary side effect of an
   in-progress migration. It is a permanent capability for any
   Organization that stays non-isolated.

## Alternatives considered

1. **Treat non-isolation as a temporary migration state, with every
   Organization eventually isolating** — rejected. Isolation means no
   data crosses the boundary, so an isolated Organization gives up all
   interop with other Organizations. Many Organizations rely on that
   interop today. Isolating every Organization anyway would break real
   workflows for them; assuming it will happen assumes a replacement
   interop capability that does not exist yet. One idea, sometimes
   called "Org Connect," could someday fill that gap, but it remains a
   long way off.
+3 −2
Changes for content/handbook/engineering/architecture/design-documents/organization/isolation.md: 3 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -17,8 +17,9 @@ Isolation flags are orthogonal to the Organization lifecycle (`unconfirmed`, `co

## What?

All Organization data and functionality in GitLab will be isolated.
Isolation means that data and features can never cross Organization boundaries.
An Organization can be isolated. Isolation means that data and features
can never cross that Organization's boundary. Non-isolation is also a
valid, permanent state on its own. See [ADR 015: Non-isolation is a permanent Organization state](decisions/015_non_isolation_is_permanent.md).

Below is a depiction of multiple Organizations within a single instance called "Cell 1".