From 0f7f628730477a850e17341ef11582d34adc82ae Mon Sep 17 00:00:00 2001 From: jochen Date: Sun, 27 Sep 2026 01:42:00 +0200 Subject: [PATCH] ADR 0120: note the shared/region interaction with hq 128 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A roster fact may be shared — written into a marked region of the machine's file (into: block, hq 128) rather than as the whole file. The template renders the content; shared decides how the host lays it down. Composes with hq 128: the region mechanism is the host's, the format is the module's. --- ...120-a-roster-fact-carries-its-format-as-a-template.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/02-DECISIONS/0120-a-roster-fact-carries-its-format-as-a-template.md b/02-DECISIONS/0120-a-roster-fact-carries-its-format-as-a-template.md index 8b28a97..c142cda 100644 --- a/02-DECISIONS/0120-a-roster-fact-carries-its-format-as-a-template.md +++ b/02-DECISIONS/0120-a-roster-fact-carries-its-format-as-a-template.md @@ -74,6 +74,15 @@ The two built-in projections render through the same path any module uses: - **dnsmasq's zones** move into dnsmasq. The `local=`/`address=` grammar is dnsmasq's configuration language, and it now lives in dnsmasq's manifest, where the module that runs dnsmasq owns it. +**A fact also says whether its file is the mesh's whole or a region of the machine's.** A hosts file +is the machine's — its `localhost`, the operator's lines, another tool's marked blocks — so +`node-names` is `shared`: the mesh owns only its region and keeps the rest byte for byte, the host +laying it down `into: block` +([ADR 0102](0102-the-mesh-writes-into-a-shared-file-never-over-it.md), hq issue 128). A resolver's +zones file is the mesh's whole, and is not shared. The template renders the content either way; +`shared` decides how the host writes it. This composes with hq 128 rather than replacing it: the +region *mechanism* is the host's, the region's *format* is the module's template. + **The names-vs-machines distinction is the template's choice** ([04-ISSUES/111](../04-ISSUES/111-the-resolver-is-told-names-the-mesh-serves-not-only-machines/00-report.md)): a container's hosts ranges `.Names`, so a routed name resolves to the machine serving it; a resolver told the mesh's suffix is its own ranges `.Machines`, or a routed name written there with the suffix