mirror of
https://github.com/chroma-core/chroma.git
synced 2026-10-12 02:12:06 +00:00
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`.