minio declares the bucket it derives; its consumers stop transcribing it (hq ADR 0188, issue 124) #228

Open
mesh-admin wants to merge 1 commits from feat/a-provider-declares-what-it-derives into main
Contributor

Merge LAST — after mesh-controller #225 (which fills ${consumer:as:dns}) and after mesh-sdk #10 is published as 0.1.2 (which minio's provisioner builds against). Merged before either, three consumers would be configured against a literal placeholder.

  • minio's serves.s3-bucket gains "bucket": "${consumer:as:dns}". The rule that used to live in bucketFor is now a line of the manifest, and the provisioner uses what the mesh hands it.
  • nextcloud, invoicing and photos ask for ${bound:s3-bucket:bucket} instead of writing mesh-novox-ncloud / mesh-novox-invoice / mesh-novox-photos. Those literals were a copy of somebody else's rule — and each of them also named the machine the module happens to run on, which a definition may not do.
  • bucketFor and the long-dead accessKeyFor are gone from client.ts. Both derived an identity the mesh now mints, and both survived with no callers, which is the state a rule comes back from.

No bucket changes name. The derived value equals what bucketFor computed for the same login: mesh_novox_ncloud → mesh-novox-ncloud, and so on for all three. This is a change of who says it, not of what is said — verified against the live store's bucket list before writing it.

tsc --noEmit clean for the minio module.

**Merge LAST** — after mesh-controller #225 (which fills `${consumer:as:dns}`) and after mesh-sdk #10 is published as 0.1.2 (which minio's provisioner builds against). Merged before either, three consumers would be configured against a literal placeholder. - `minio`'s `serves.s3-bucket` gains `"bucket": "${consumer:as:dns}"`. The rule that used to live in `bucketFor` is now a line of the manifest, and the provisioner uses what the mesh hands it. - `nextcloud`, `invoicing` and `photos` ask for `${bound:s3-bucket:bucket}` instead of writing `mesh-novox-ncloud` / `mesh-novox-invoice` / `mesh-novox-photos`. Those literals were a copy of somebody else's rule — and each of them also named the machine the module happens to run on, which a definition may not do. - `bucketFor` and the long-dead `accessKeyFor` are gone from `client.ts`. Both derived an identity the mesh now mints, and both survived with no callers, which is the state a rule comes back from. **No bucket changes name.** The derived value equals what `bucketFor` computed for the same login: `mesh_novox_ncloud` → `mesh-novox-ncloud`, and so on for all three. This is a change of who says it, not of what is said — verified against the live store's bucket list before writing it. `tsc --noEmit` clean for the minio module.
mesh-admin added 1 commit 2026-10-02 19:27:03 +00:00
serves.s3-bucket.bucket is ${consumer:as:dns}; the provisioner uses what it
is given. nextcloud, invoicing and photos ask for ${bound:s3-bucket:bucket}
instead of naming mesh-novox-* literals, which also named this node.
bucketFor and the long-dead accessKeyFor are gone.
You are not authorized to merge this pull request.
This pull request can be merged automatically.
This branch is out-of-date with the base branch
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/a-provider-declares-what-it-derives:feat/a-provider-declares-what-it-derives
git checkout feat/a-provider-declares-what-it-derives
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#228