ADR 0188: a provider declares what it derives for each consumer, and the mesh tells both ends (issue 124) #303
Closed
mesh-admin
wants to merge 1 commits from
feat/a-provider-declares-what-it-derives into main
pull from: feat/a-provider-declares-what-it-derives
merge into: :main
:main
:issues/228-photos-authenticates-against-admin
:issues/the-night-of-group-8
:fix/adr-0202-module-state
:feat/the-store-keeps-what-the-records-name
:decision/0199-zones-and-the-hosts-file
:issues/218-a-mesh-seat-answered-by-a-non-holder
:feat/a-provider-declares-what-it-derives
:feat/the-operators-machine
:feat/the-found-front-end-is-uninstalled
:decision/0168-built
:decision/0170-renumbered-and-built
:issues/199-200-console-seat-verbs-and-inbox
:feat/the-firewall-seat-serves-its-verbs
:issues/143-144-resolved
:feat/one-thing-filters-a-converged-machine
:issues/group-6-closed
:issue/194-resolved
:issue/194-the-hosts-own-former-archive-stops-every-apply
:feat/a-take-is-a-comparison-the-rest
:feat/the-mesh-answers-for-itself
:feat/the-console-shipped
:issue/172-the-ssh-client-block-matches-one-spelling-of-a-machine
:issue/171-a-modules-own-resolver-knows-no-mesh-name
:issue/110-resolved
:issue/149-adopted-data-cannot-be-placed-where-it-is
:decisions/settle-the-proposed
:decision/0146-connectivity-by-name
:decision/0145-a-module-checks-what-the-mesh-claims
:decision/0144-local-is-not-a-boundary
:decision/0143-a-consumer-verifies-its-grant
:issue/145-healthy-while-broken
:decision/0138-insight-reach-and-the-proxy
:issue/143-corrected-diagnosis
:issue/143-and-144-the-found-firewall
:decision/0142-mesh-delivers-its-own-components
:decision/0141-progressive-insight-on-delivery
:decision/0141-the-host-delivers-its-own-successor
:issue/142-the-host-is-not-delivered
:decision/0140-filter-constrains-what-arrives-from-outside
:decision/0138-endpoint-reach-and-0139-declared-networks
:issue/140-endpoint-reach-and-141-forward-chain
:issue/138-the-uplink-seat-and-139-an-internal-route-name
:decision/0137-a-machine-says-which-networks-it-routes
:issue/136-a-module-may-name-a-program-the-machine-lacks
:issue/135-a-containers-mesh-names
:decision/0112-accepted-and-issue-134
:design/28-and-32-what-shipped
:decision/0136-a-step-gates-its-module
:decision/0133-0134-migrations-and-deploy-facts
:issue/133-the-control-plane-migrates-before-it-serves
:decision/0132-a-seat-carries-the-tools-its-holder-must-serve
:issue/132-a-module-can-be-recorded-without-its-directory
:design/28-one-bus-issue-131-resolved
:design/28-the-mesh-runs-on-nats
:design/28-the-move-needs-a-membership-for-enrolled-nodes
:design/26-a-seat-is-held-on-record
:decision/0131-everything-speaks-to-the-broker-seat
:fix/131-nothing-tells-the-mesh-its-source-moved
:feat/nats-genesis
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Group 8's first half.
Context. Everything about an arrangement is delivered by the mesh — where the provider is, which port, what name to present, where the password is. One kind of value escaped: where the provider names the resource, the name is derived per consumer,
servesis literal, and a provisioner returns nothing. So the object store's bucket rule lived twice — in minio's TypeScript, and transcribed by hand into all three consumers' definitions. One of the three named a predecessor's bucket and would have authenticated successfully and been refused on every object. Even corrected, each of the three names the machine the module happens to run on.Decision. A served value may name the consumer the mesh is serving:
${consumer:as}and${consumer:as:dns}, and nothing else — the mesh learns no protocol here; it spells its own name in an alphabet it already knows. Filled once, where the consumer is known, and delivered to both ends from the one resolution. A consumer may no longer write the derived value into its own definition.The rejected alternative — a provider returning values from provisioning — is weighed in the record: it would make a grant carry data the provider wrote, make a consumer's declaration wait on its provider's reconcile loop, and put the rule where nothing can refuse it.
Design 27 amended; issue 124 resolved; all three checks pass.
Code, with its merge order: mesh-controller #225 first, mesh-sdk #10 second (published as 0.1.2), mesh-catalog #228 last.
Closed in favour of #305, which now carries both of group 8's records.
Two days of main moved under this: the bundles refactor took ADR 0188, so this record is now ADR 0201 (the renumber is noted in the record itself — only the number moved). Rebasing both halves together was the safe way to do that; splitting them apart again afterwards is the manoeuvre that has cost a session before, and they were always going to merge in the same window.
#305 has the whole of group 8 and the merge order.
Pull request closed