diff --git a/02-DECISIONS/0075-two-stores-and-which-provides-what.md b/02-DECISIONS/0075-two-stores-and-which-provides-what.md index af6a607..e8dbcd2 100644 --- a/02-DECISIONS/0075-two-stores-and-which-provides-what.md +++ b/02-DECISIONS/0075-two-stores-and-which-provides-what.md @@ -50,6 +50,18 @@ which means the pivot has already happened — and the pivot needs somewhere to **Gitea also provides `artifact-store`, and a mesh may choose it.** Two providers of one provision is a thing the mesh understands: it refuses, names both, and choosing is assigning the one you want. + +**And it does not claim `the-artifact-store`.** That claim is node-scoped, so a module holding it +cannot share a machine with another that does — and a machine running gitea for git and packages +*alongside* a registry serving artifacts is an ordinary arrangement, not a conflict. They are +different ports doing different jobs. + +The exclusivity that matters is mesh-wide and is already expressed: `provides` at mesh scope means +two providers are two answers, and the resolver refuses until one is assigned. Forbidding +co-residence adds nothing to that and forbids something reasonable. **Whether `registry` should +still hold that claim is left open here** — it may be protecting something about the port or the +data directory that is not written down, and removing a claim is not a thing to do from the outside +of a manifest. A mesh that assigns gitea gets authentication and TLS for its artifacts — which is to say, **issues 042 and 048 are answered by choosing a provider that already solved them**, rather than by reimplementing accounts and certificates in a registry that has none. @@ -112,5 +124,6 @@ here**: it is named, so the next person does not discover it. |---|---| | Genesis needs no database | The installer raises a mesh of one on a machine with nothing, and the artifact store it installs has no store of its own. | | Two providers are a choice, not a conflict | A mesh holding both is asked to resolve `artifact-store` and refuses, naming both, until one is assigned. | +| Providers may share a machine | A node is assigned both gitea and a registry, and both run — only one of them answers `artifact-store`. | | The two stores are not interchangeable | A module depending on `package-registry` is not satisfied by `artifact-store`, and the refusal says why. | | A migration is verified before it is finished | The old provider cannot be unassigned while any machine's declaration still names it. |