diff --git a/02-DECISIONS/0241-a-machine-says-how-its-network-is-and-an-outside-writer-of-a-mesh-file-is-a-finding.md b/02-DECISIONS/0241-a-machine-says-how-its-network-is-and-an-outside-writer-of-a-mesh-file-is-a-finding.md index b79a67ed..9cb5971b 100644 --- a/02-DECISIONS/0241-a-machine-says-how-its-network-is-and-an-outside-writer-of-a-mesh-file-is-a-finding.md +++ b/02-DECISIONS/0241-a-machine-says-how-its-network-is-and-an-outside-writer-of-a-mesh-file-is-a-finding.md @@ -144,6 +144,18 @@ Nobody opens a terminal on the machine. The verbs are *staged*: promised and rou of holding the seat, and never stored in the seat's row. A controller older than them reads the row and would refuse every holder of its time. A later change requires them once both holders serve them. +> **Progressive insight — 2026-10-07.** The verbs did not ship *staged*. This rule said they were +> "promised and routed, but not yet a condition of holding the seat, and never stored in the seat's row", +> and the check for rule 8 in the table below said "a staged verb is never seeded into the row and comes +> back from the binary". The controller that merged (mesh-controller #116) has no staged seat. It marks +> both verbs optional (`Verb.Optional`). An optional verb is promised, so a claim serving it is accepted, +> but it is not required, so a holder serving neither still holds the seat. It is seeded into the seat's +> row like any verb, and it stays optional when read back, because the mark is taken from the seat as +> compiled. Mesh-controller's `TestTheUplinkVerbsReadBackFromTheRowStayOptional` holds that. The +> decision is unchanged: promised now, required once both holders serve them. The general rule for a verb +> added to a held seat is [ADR 0246](0246-a-seats-new-verb-is-promised-before-it-is-required.md), from +> [issue 298](../04-ISSUES/298-a-new-seat-verb-deadlocks-across-two-repositories/00-report.md). + ## Consequences - **The VPN rewriting the laptop's file is said within about a minute,** naming FortiClient from its diff --git a/03-DESIGN/01-to-be/48-a-module-says-how-it-is-healthy.md b/03-DESIGN/01-to-be/48-a-module-says-how-it-is-healthy.md index fdc816cd..5d70d045 100644 --- a/03-DESIGN/01-to-be/48-a-module-says-how-it-is-healthy.md +++ b/03-DESIGN/01-to-be/48-a-module-says-how-it-is-healthy.md @@ -261,7 +261,10 @@ the machine itself, beside its liveness looks, and says it in the same statement - **It reads and never acts** (§7). The reconcile writes the file back as it always has. - **Asked further through the uplink seat.** `node-uplink` serves `resolvers` (the file, whether it is the mesh's, its writer) and `links` (each link, its default route, the resolvers its manager knows). They are the - same from every holder, and staged until both holders serve them. + same from every holder, and optional until both holders serve them: promised, so a holder may serve them, + and not yet required to hold the seat (mesh-controller #116; the three steps of an added verb are + [ADR 0246](../../02-DECISIONS/0246-a-seats-new-verb-is-promised-before-it-is-required.md), from + [issue 298](../../04-ISSUES/298-a-new-seat-verb-deadlocks-across-two-repositories/00-report.md)). ## Phases diff --git a/04-ISSUES/298-a-new-seat-verb-deadlocks-across-two-repositories/00-report.md b/04-ISSUES/298-a-new-seat-verb-deadlocks-across-two-repositories/00-report.md index 64363ce5..3a373ec5 100644 --- a/04-ISSUES/298-a-new-seat-verb-deadlocks-across-two-repositories/00-report.md +++ b/04-ISSUES/298-a-new-seat-verb-deadlocks-across-two-repositories/00-report.md @@ -41,7 +41,10 @@ optional verb is promised, so a claim that serves it is accepted, but it is not that does not serve it still holds the seat. `failed` was first written as required and refused today's holder. #114 made it optional and fixed a second hole. The mark was never stored, so a verb seeded into a seat row came back required when the row was read. The working set now takes the mark from the -compiled seat. #116 adds the uplink verbs as optional from the start. +compiled seat. #116 adds the uplink verbs as optional from the start. ADR 0241 rule 8 and to-be 48 §10 +had called those two verbs *staged*, never stored in the seat's row. That was corrected on the day, +as a progressive insight in ADR 0241 and in place in to-be 48: they are optional, stored in the row, and +read back optional. ## Why it is a design issue @@ -62,7 +65,7 @@ controller first promises the verb as optional, the holder serves it, and the co - `TestFailedIsAnOptionalVerbOfTheServiceManager`, `TestAnOptionalVerbStaysOptionalInASetReadFromTheStore` and `TestASeatsVerbGainsTheArgumentsTheBinaryNames` (#114); - `TestTheUplinkSeatPromisesItsVerbsAndRequiresNoneYet` and - `TestTheUplinkVerbsReadBackFromTheRowStayOptional` (#116, open). + `TestTheUplinkVerbsReadBackFromTheRowStayOptional` (#116). The trail is in [01-diagnosis.md](01-diagnosis.md). This is a core issue: at resolution it names its replay, or says in `replay-none:` why none is possible (ADR 0237).