Skip to content

ADR-0006: Control plane holds the map, not client content

  • Status: Accepted
  • Date: 2026-07-25
  • Deciders: El

Context

The registry is the one shared thing in a multi-tenant system; if it holds client data, isolation and residency break.

Decision

The registry stores tenant records, resolved config, connector manifests (references to credentials, not the credentials), and operational metadata only — never client data. A thin API sits in front (a service, not a raw shared DB everyone queries). Two writers only: Ansible creates the tenant record at provisioning (bootstrap); the BOS Console edits config. The brain is read-only against the registry. Config applies to new work items only; each run pins to the config version it started under.

Consequences

Isolation and residency preserved; a single gate for validation and the no-client-data rule; the failure modes to guard are drift and leakage (hence reconciliation), not load.

Alternatives considered

  • Raw shared DB everyone queries — rejected: multiple corruption paths, no single enforcement point.
  • Brain writes to the registry — rejected: runtime reasoning must not mutate the source of truth.