Files
dbeglord fb7395c354 [ENH](foundation-api): Pause Foundation creation during migration (#7782)
Moving existing Foundations into a new product-record table requires a
stable list of Foundations. If customers can create another Foundation
while that list is being registered, the new Foundation may be missing
when the service begins requiring a product record for access.

This change adds a temporary pause on Foundation creation so operators
can complete that registration without stopping ordinary memory reads
and writes. When the pause is enabled, both initialization of the
default Foundation and creation of a named Foundation return HTTP 503
before modifying storage or product records. The shared creation
function enforces the pause for every authorized caller, including
internal callers.

The pause is disabled by default. Operators must deploy the setting to
every service instance and allow requests already running on older
instances to finish before taking the final inventory. Reading existing
product records and ordinary memory operations remain available.

### Production preparation

The production service currently runs an older version that does not use
the new product-record table. It needs the same pause before the
migration starts. A [backport for that deployed
version](https://github.com/chroma-core/chroma/compare/5c4f800858336752b88d3fa70434483b23db82fc...dff1d8aea6adfc5abb0e7d710f3fb41db093288d)
is prepared and tested.

Merge this mainline change before promoting the backport through the
normal release process. Build the compatible image, record its image
digest, and rehearse the pause in staging before requesting production
release approval. After the pause is active, register the existing
Foundations, deploy and verify the service that requires those records,
then reopen creation.

Neither environment has been deployed or paused by this work.

### Validation

The two pause/configuration tests and all 20 product-record lifecycle
tests pass; these groups overlap. Formatting and whitespace checks pass.
The production backport's full Foundation library suite passes with 223
tests and two ignored. Its tests verify refusal before storage changes
and successful page reads and trajectory writes while paused;
trajectories are stored records of agent runs.

The setting is `foundation.provisioning_paused` in the Foundation API
configuration, or `foundation.foundation.provisioning_paused` in the
hosted service configuration. The affected routes are `POST /api/init`
and `POST /api/tenants/{tenant}/foundations`. Build the production
backport with Chroma source `dff1d8aea6adfc5abb0e7d710f3fb41db093288d`
and hosted source `5a61059205a307b8f3afe634d546fe5bdf836273`.
2026-09-24 19:12:33 +00:00
..