ADR 0104: a provision may be answered by an adapter to the predecessor #81

Merged
jschoubben merged 1 commits from decide/0104-route-adapter into main 2026-09-22 21:57:54 +00:00
Owner

Decides issue 093, found on the first adopted node.

During a migration, a provision whose only provider owns a scarce machine-wide resource may be answered by an adapter: a module that provides the provision by writing into the predecessor's own configuration. For the route, the adapter receives every contribution as the proxy would and writes each as a route file where the predecessor's proxy reads, pointing at the machine port the contributing module publishes.

What that buys: the predecessor's proxy keeps serving every name and keeps renewing its certificates, so there is no certificate event until the end; the migration keeps its shape of one service at a time, each reversible on its own; and the proxy becomes the last cutover again, by which time every route is one the mesh contributed.

Rejected: teaching the successor proxy to serve routes it did not derive (puts the riskiest step first, and puts configuration the mesh does not own into the component whose design is that the mesh derives it); taking the proxy first and accepting the window; and making the requirement optional, which would let a module report success while serving nobody.

It is migration scaffolding and says so: assigned only on an adopted node, writing only files it can name as its own, removed when the predecessor's proxy retires. Connectivity's design records how the handover works, and issue 093 is marked located.

Decides issue 093, found on the first adopted node. During a migration, a provision whose only provider owns a scarce machine-wide resource may be answered by an **adapter**: a module that provides the provision by writing into the predecessor's own configuration. For the route, the adapter receives every contribution as the proxy would and writes each as a route file where the predecessor's proxy reads, pointing at the machine port the contributing module publishes. What that buys: the predecessor's proxy keeps serving every name and keeps renewing its certificates, so there is no certificate event until the end; the migration keeps its shape of one service at a time, each reversible on its own; and the proxy becomes the last cutover again, by which time every route is one the mesh contributed. Rejected: teaching the successor proxy to serve routes it did not derive (puts the riskiest step first, and puts configuration the mesh does not own into the component whose design is that the mesh derives it); taking the proxy first and accepting the window; and making the requirement optional, which would let a module report success while serving nobody. It is migration scaffolding and says so: assigned only on an adopted node, writing only files it can name as its own, removed when the predecessor's proxy retires. Connectivity's design records how the handover works, and issue 093 is marked located.
jschoubben added 1 commit 2026-09-22 21:57:49 +00:00
jschoubben merged commit 6c81ea2204 into main 2026-09-22 21:57:54 +00:00
jschoubben deleted branch decide/0104-route-adapter 2026-09-22 21:57:54 +00:00
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/hq#81