Correct 0075: co-residence is not the exclusivity that matters
The first draft implied gitea and the registry could not share a machine, because registry claims the-artifact-store at node scope and I carried that across to gitea without asking what the claim is for. A machine running gitea for git and packages alongside a registry serving artifacts is an ordinary arrangement. They are different ports doing different jobs, and nothing about one being the mesh's artifact store requires the other not to exist. The exclusivity that matters is mesh-wide and 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 and forbids something reasonable. Whether registry should still hold that claim is left open rather than answered from outside its manifest — it may be protecting something about its port or its data directory that nobody wrote down. Claude-Session: https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
This commit is contained in:
@@ -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. |
|
||||
|
||||
Reference in New Issue
Block a user