From 7af2ebe45e9843a66193deb1d257f7821ccc05a3 Mon Sep 17 00:00:00 2001 From: jochen Date: Mon, 12 Oct 2026 13:40:45 +0200 Subject: [PATCH] Say in to-be 27 how a value several modules share is set once, and that it reaches no trusted setting (issue 415, ADR 0309, ADR 0319) --- .../27-a-module-requires-the-mesh-resolves.md | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md b/03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md index 7fe64154..3f86ef2c 100644 --- a/03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md +++ b/03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md @@ -2,8 +2,10 @@ layer: to-be status: in-progress code: [mesh-controller internal/catalogue] -updated: 2026-10-08 +updated: 2026-10-12 decisions: + - "ADR 0319" + - "ADR 0309" - "ADR 0262" - "ADR 0225" - "ADR 0112" @@ -212,6 +214,24 @@ gains a setting by shipping its current value as the default, and `settings` lis source: the default, the mesh, or the node. The first module to use it is the notifier, whose font size and width are preferences. *How it is checked:* the table in ADR 0262. +*A value several modules share is set once (2026-10-12, ADR 0309 and ADR 0319, +issue 415):* a module keeps every setting it takes, and a preference may also name a mesh-wide +**shared name**, such as `desktop.font-size`. Unset in every layer of its own module, the preference +reads the shared value, and only when that is unset too its default; read from the bottom, last +winning: the default, the shared value, the module's mesh-wide layer, the node's. So a person sets +the interface font size once and every module that names it follows, while any one module or node +can still be set apart in its own layer. A shared value is a fourth place of change beside the three +of ADR 0164, and the plan of a change to it names every assignment, of every module that reads it, +whose effective value moves. It is set and cleared through the `settings` verb without a module, and +both `settings` listings name the shared name as a value's source beside the default, the mesh and the +node. **A shared value reaches no trusted setting** (ADR 0319): a trusted setting may not declare a +shared name, and registration refuses one that does, so a shared value is never trusted and needs no +warrant; a trusted setting is set in its own module's layer, on the operator's warrant (ADR 0277) or at +the terminal, as before. Where a stored manifest still has a trusted reader, the write of that shared +value is refused naming it, and the trusted setting never reads the value. Whether a shared value is a +number, a colour or a string waits for the typed-settings work (issues 346 and 410). *How it is +checked:* the tables in ADR 0309 and ADR 0319. + *The operator's value travels only where it is asked for (2026-09-30, [issue 173](../../04-ISSUES/173-a-modules-settings-reach-every-fact-it-contributes/00-report.md)):* a setting overrides a key a contribution or a served fact declares and adds none; a file keeps taking