Say the uplink verbs shipped optional, not staged: a progressive insight in ADR 0241, corrected in to-be 48
The controller that merged (mesh-controller #116) dropped the staged seat and marked both verbs optional, stored in the seat's row and read back optional.
This commit is contained in:
+12
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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).
|
||||
|
||||
Reference in New Issue
Block a user