From 0fe21181056f527949aa891a5fbccfba625aaa3b Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:02:28 +0100 Subject: [PATCH 01/28] Answer A-73 and A-74: publish again by digest, the router's asks through its seat Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 9c3018fd..6dcb6cf0 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -275,3 +275,11 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-70** (§572, A-45; the rule that a process answers no call) The builder's tools bundle serves `reserved` and `builder_versions`, following the catalog half's view itself as other bundles follow views; the builder's process serves no call. +- **A-73** (§588, §369; principle 7) To publish again, the builder takes each artifact's kind and package name from the + catalog entry of the reserved commit, and sends the registry seat's `publish` with the digest and no parts: the + holder takes the bytes from the artifact store, addressed by digest (A-50). "Not stored" is the holder's refusal; + the entry then ends failed, said with its reason. +- **A-74** (§700; principle 1, no module names another) The indexer reads the router's `asks` through the seat + `operator-channel`: its manifest `uses` that seat, and the bucket is formed from the seat's holder on the seat list + and the contract's `StateAsks`, never a module's name in code; the teller's and the node-engine's `messenger_asks` + constant goes the same way in their own change. From 8e87bdc1482238ff86ac9b9c8be826d0ec1c48f8 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:03:39 +0100 Subject: [PATCH 02/28] Answer A-75: mesh-issues' pipeline rows in its delivery line Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 6dcb6cf0..128b3a20 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -283,3 +283,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". `operator-channel`: its manifest `uses` that seat, and the bucket is formed from the seat's holder on the seat list and the contract's `StateAsks`, never a module's name in code; the teller's and the node-engine's `messenger_asks` constant goes the same way in their own change. +- **A-75** (§654, §610; principle 7, and who may do what is no question) mesh-issues shows the pipeline rows where it + already shows a delivery: its `DeliveryLine` gains `pipelines`, one row per module with its steps, `no run` where the + runner's list answers none. A runner verb's old callers list does not refuse a module: from G no verb names its + callers (§610), so the class's default holds. From e9c927d4482df32a75f95dd2af2fd1fed517314d Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:04:18 +0100 Subject: [PATCH 03/28] Answer A-76: the reservation's fingerprint, the registry seat, the fault's class Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 128b3a20..f47adfcf 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -287,3 +287,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". already shows a delivery: its `DeliveryLine` gains `pipelines`, one row per module with its steps, `no run` where the runner's list answers none. A runner verb's old callers list does not refuse a module: from G no verb names its callers (§610), so the class's default holds. +- **A-76** (§588, §568, A-73; principle 7) A reservation keeps the fingerprint of the catalog entry it was made from + (`versions.Source` gains it), so publish again reads that entry; the registry seat for an artifact is found from its + package ecosystem as the builder's seat hearing already maps it. A transport fault's class (`no responders`, `name + lookup`, `connection`, `deadline`) is the one the existing retake reads from the call's error (ADR 0664, ADR 0668). From 6ec5ac27a72c5cf635e32ddd7f5748000841e5c7 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:05:00 +0100 Subject: [PATCH 04/28] Answer A-77: a wait's bound is a key with its own time to live Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index f47adfcf..c49257a8 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -291,3 +291,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". (`versions.Source` gains it), so publish again reads that entry; the registry seat for an artifact is found from its package ecosystem as the builder's seat hearing already maps it. A transport fault's class (`no responders`, `name lookup`, `connection`, `deadline`) is the one the existing retake reads from the call's error (ADR 0664, ADR 0668). +- **A-77** (§373; principles 1 and 7) A wait's bound is a bound key with its own time to live in the waiting part's own + state, as the condition keeper times its two hours (COND7): its expiry is heard as the bus's event and ends the wait + then, failing the step naming the member; no timer in the process and no looking only at the next event. From e67326b6c7f1e1d088d79c4345033ac716f1ebbd Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:05:20 +0100 Subject: [PATCH 05/28] Answer A-78: what outdated keeps and reads Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index c49257a8..9eb787df 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -294,3 +294,11 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-77** (§373; principles 1 and 7) A wait's bound is a bound key with its own time to live in the waiting part's own state, as the condition keeper times its two hours (COND7): its expiry is heard as the bus's event and ends the wait then, failing the step naming the member; no timer in the process and no looking only at the next event. +- **A-78** (§374, §375, §377, §354; principles 1 and 7) For `outdated` and its inputs, the indexer keeps what it hears: + (a) `acted..` in its own state, the newest `wait-ended` (ran or released) with the build it + acted for, compared with the dependent's current build (its newest entry's fingerprint); (b) what a delivered + version serves is read from that version's catalog entry (its manifest's `serves` and words); (c) a derived edge is + marked by a field `filled: true` the contract's `VersionEdge` gains, the machines that place a module come from the + assigner's `placement` (A-62), and each node's last `running` from the node-engine's stream read whole at start + (§556); (d) an `inputs` entry is also keyed by its run ask's id, so the build seat's `step-ended` of that ask finds + and deletes it. From 6cf7372ad42c5d4d78c9742336515c6fe5c8b22e Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:06:17 +0100 Subject: [PATCH 06/28] Answer A-79: the grants part's catalog half, as built, and its last indexer reads go Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 9eb787df..e06812b7 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -302,3 +302,8 @@ names the principle that settles it, and is cited as "design 47 G A-n". assigner's `placement` (A-62), and each node's last `running` from the node-engine's stream read whole at start (§556); (d) an `inputs` entry is also keyed by its run ask's id, so the build seat's `step-ended` of that ask finds and deletes it. +- **A-79** (§558, §614, §684, §196, §444; principle 7) As built in mesh-delivery 6d483af2: the gate's `source` is named + in the short `invokes` form (the manifest's `invokes` is a list of names); the catalog half's rows go into the part's + existing `grants_first_views`; while the catalog half is unread the part keeps what the bus loaded and only adds, + which is §684's way past the cycle, so no registered branch holds nothing. The part's remaining reads of the + indexer's `manifests`, `modules` and `verdicts` go too (§196): the catalog half answers them. From 9d406b6f029e8305171eb08ed0b776ce0c76aaff Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:08:26 +0100 Subject: [PATCH 07/28] Answer A-80: what the indexer keeps as heard has a state of its own Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index e06812b7..c68f227c 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -307,3 +307,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". existing `grants_first_views`; while the catalog half is unread the part keeps what the bus loaded and only adds, which is §684's way past the cycle, so no registered branch holds nothing. The part's remaining reads of the indexer's `manifests`, `modules` and `verdicts` go too (§196): the catalog half answers them. +- **A-80** (A-66, A-68, A-69, §375, §73; principles 7 and 8) What the indexer keeps as heard (`steps-since`, `toolchain`, + `delivered`, `pending`, `acted`) lives in one state of its own, `heard`, not in `own-build`, which keeps its one key; + every key part is escaped as a name (§73), so a dotted module name parses; a kind-3 edge compares its artifact's + language with `toolchain.`. From acdef3a98d9dcd7c8f10b235af8468032b52dedf Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:13:02 +0100 Subject: [PATCH 08/28] Answer A-81: the builder's publish again, as built Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index c68f227c..3e24b271 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -311,3 +311,8 @@ names the principle that settles it, and is cited as "design 47 G A-n". `delivered`, `pending`, `acted`) lives in one state of its own, `heard`, not in `own-build`, which keeps its one key; every key part is escaped as a name (§73), so a dotted module name parses; a kind-3 edge compares its artifact's language with `toolchain.`. +- **A-81** (§588, §369; principle 7) As built in mesh-delivery f12883b2: the publish-again queue key is + `..`; the holders and their nodes are what the builder hears on `running` (read whole at its + start, §556, so a restart rebuilds them); `running` means not stopped, with a fingerprint; a not-stored artifact is + remembered on the reservation (`Unstored`); the tool's request rides a reasks mode `republish`; a message the state + cannot take is not acknowledged, as the other parts do. From 2f8e07d9234b225884536176eeb8391acd55e19a Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:13:31 +0100 Subject: [PATCH 09/28] Answer A-82: build modules found through their seats Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 3e24b271..86f132e1 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -316,3 +316,10 @@ names the principle that settles it, and is cited as "design 47 G A-n". start, §556, so a restart rebuilds them); `running` means not stopped, with a fingerprint; a not-stored artifact is remembered on the reservation (`Unstored`); the tool's request rides a reasks mode `republish`; a message the state cannot take is not acknowledged, as the other parts do. +- **A-82** (§7, §428, §704's seed; principle 1, no module names another) The builder finds a build module the way the + indexer's seed does (mesh-delivery d73aeb02): the build seat whose acting rule `build` has an `on` matching the + artifact's language or `kind:image`, and that seat's holder on the seat list. `Task.Module` and every lane key are + that holder's name as the seat list gives it; a plan's artifact, the toolchain sources, `UnpublishedModules` and + `builder_stuck` all derive from it, and `builder_stuck` reads each build seat's steps through the seat (`.steps`) + rather than a named module's state. The floor's sources are the holders of the seats `git` (tags) and `mesh-catalog` + (requirements) on the seat list. From 1963baefb38ef45365aab3c05ecbe7d1d510209a Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:15:40 +0100 Subject: [PATCH 10/28] Answer A-83: a branch build's edges and its newest build Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 86f132e1..cc0b3475 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -323,3 +323,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". `builder_stuck` all derive from it, and `builder_stuck` reads each build seat's steps through the seat (`.steps`) rather than a named module's state. The floor's sources are the holders of the seats `git` (tags) and `mesh-catalog` (requirements) on the seat list. +- **A-83** (§374, A-78, A-80; principles 1 and 7) `BuildEdges.fp` is the fingerprint of the branch's catalog entry at + the revision `source` names, which the indexer holds itself; no field is added to `package-published`. For a build + of another watched branch, kind 1 compares with that branch's newest build, kept as heard in `heard` as + `branch-build..` (the digest `package-published` carries), not with a released digest. From 5b4cbc035c5874af27c8eff1b21a415f5087880a Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:17:35 +0100 Subject: [PATCH 11/28] Answer A-84: the builder learns a candidate from the run's build step Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index cc0b3475..32c1c586 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -327,3 +327,8 @@ names the principle that settles it, and is cited as "design 47 G A-n". the revision `source` names, which the indexer holds itself; no field is added to `package-published`. For a build of another watched branch, kind 1 compares with that branch's newest build, kept as heard in `heard` as `branch-build..` (the digest `package-published` carries), not with a released digest. +- **A-84** (§194 and its candidate's-view line, §348, §473; principle 1) The builder follows no candidate: only a run's + steps read a candidate's view, so the builder learns a candidate's build from the run's build step ask, which names + each entry by fingerprint; it reads each entry through `mesh-catalog.entry` (repository and commit are the member's + head) and needs no pull request number, a build being per fingerprint. Its read of the indexer's `candidates` view + goes. From 834370bf678030410d26f376b009d859dacd29ff Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:18:38 +0100 Subject: [PATCH 12/28] Answer A-85: a catalog revision per watched branch Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 32c1c586..02c7c60d 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -332,3 +332,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". each entry by fingerprint; it reads each entry through `mesh-catalog.entry` (repository and commit are the member's head) and needs no pull request number, a build being per fingerprint. Its read of the indexer's `candidates` view goes. +- **A-85** (§291, ADR 0666 §6, §9, §614, A-83; principle 7) The indexer keeps a catalog revision per watched branch, as + it keeps the trunk's: objects `branch..` (the branch escaped as a name) beside `trunk.`, the trunk being + the first watched branch's; the branch follower's per-branch `revision` reads them, and `BuildEdges.fp` is the entry's + fingerprint in the revision whose `source` the build names. From 82e0d85700922ef4893bd262177f9e86bb8d28f8 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:20:01 +0100 Subject: [PATCH 13/28] Answer A-86: who keeps an input, and a kind-3 edge's language Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 02c7c60d..d015e5d3 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -336,3 +336,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". it keeps the trunk's: objects `branch..` (the branch escaped as a name) beside `trunk.`, the trunk being the first watched branch's; the branch follower's per-branch `revision` reads them, and `BuildEdges.fp` is the entry's fingerprint in the revision whose `source` the build names. +- **A-86** (§354, §375; principle 7) `KeepInput` is called by the indexer's own `input` verb, when a run on request's asker + hands an input; the indexer asks no `run` itself. A kind-3 edge's language is its catalog edge's target artifact's + language, else the one language the entry's artifacts share, as built in mesh-delivery 652285f0. From 63153faa944dfa417ef4e7ed208dcdbaf9befd29 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:20:52 +0100 Subject: [PATCH 14/28] Answer A-87: the builder's fault words and builder_build's newest Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index d015e5d3..f254df8b 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -339,3 +339,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-86** (§354, §375; principle 7) `KeepInput` is called by the indexer's own `input` verb, when a run on request's asker hands an input; the indexer asks no `run` itself. A kind-3 edge's language is its catalog edge's target artifact's language, else the one language the entry's artifacts share, as built in mesh-delivery 652285f0. +- **A-87** (§568, §589, A-70, A-76; principle 7) As built in mesh-delivery bd228d51: a fault with no node says `no node`; + `FaultClass` maps `buildstep.PassingCause`'s words onto A-76's four classes. `builder_build`'s `newest: ` is + read by the tools bundle following the catalog half itself, as A-70 has it for `reserved`. From c096c4af1c8e2ebf99b1e76bf7796daaf0dfed82 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:21:30 +0100 Subject: [PATCH 15/28] Answer A-88: no callers named in mesh-networking's seats Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index f254df8b..6c4c1ab6 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -342,3 +342,5 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-87** (§568, §589, A-70, A-76; principle 7) As built in mesh-delivery bd228d51: a fault with no node says `no node`; `FaultClass` maps `buildstep.PassingCause`'s words onto A-76's four classes. `builder_build`'s `newest: ` is read by the tools bundle following the catalog half itself, as A-70 has it for `reserved`. +- **A-88** (§610, the main file's item 85; principle 7) mesh-networking's A-N1 (callers named in its seven seat + definitions) is not brought in: from G no verb names its callers (§610), which supersedes item 85's reading. From f1036802510b5d52c6fc269f19ddbdf4a49c5a90 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:24:00 +0100 Subject: [PATCH 16/28] Answer A-89: every asker reads its warrant from the router's record Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 6c4c1ab6..db84c24c 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -344,3 +344,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". read by the tools bundle following the catalog half itself, as A-70 has it for `reserved`. - **A-88** (§610, the main file's item 85; principle 7) mesh-networking's A-N1 (callers named in its seven seat definitions) is not brought in: from G no verb names its callers (§610), which supersedes item 85's reading. +- **A-89** (§37, §700, A-74; principle 7, one way for every asker) The runner reads its approval ask's warrant from the + router's record of its ask, through the seat `operator-channel` as A-74 has it, never from the decided event's body; + the decided event only wakes it. From c96d5d6c6d2a91808ce0fd7adc220cded8df1e74 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:25:22 +0100 Subject: [PATCH 17/28] Answer A-90: every watched branch is taken in by the trunk's take-in Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index db84c24c..c7555817 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -347,3 +347,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-89** (§37, §700, A-74; principle 7, one way for every asker) The runner reads its approval ask's warrant from the router's record of its ask, through the seat `operator-channel` as A-74 has it, never from the decided event's body; the decided event only wakes it. +- **A-90** (§13, §14, §291, ADR 0666 §6, A-85; principle 7) A non-first branch's revision is made by the same take-in as + the trunk's, taken per watched branch: `sourceFollow` takes `source.` for every watched branch, and the + source path (`ApplySource`, the catch-up, the heads' take-in) runs with the branch as its argument, writing that + branch's revision; the trunk is each registration's first branch, not a constant. From 03813cce783cab6917fc6b7e01580a9d6cff80e0 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:26:00 +0100 Subject: [PATCH 18/28] Answer A-91: the warrant in the router's record, unnamed steps, the runner's asking half Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index c7555817..2fee1462 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -351,3 +351,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". the trunk's, taken per watched branch: `sourceFollow` takes `source.` for every watched branch, and the source path (`ApplySource`, the catch-up, the heads' take-in) runs with the branch as its argument, writing that branch's revision; the trunk is each registration's first branch, not a constant. +- **A-91** (§26, §37, §700, Q-RN8; principle 7) The router's record value carries its `warrant` as §700 says: the + operator-channel contract's `AsksByAskerIDValue` gains the field. A step the module's policy does not name is no step + of its pipeline, so `Status` has no open question for it. The runner places a pipeline's steps when it starts it and + asks each build seat for its step, as its asking half; that half is built in G. From d0c7373d386e310c07919904e4c28e2b0ab80005 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:26:25 +0100 Subject: [PATCH 19/28] Answer A-92: the node-engine's bound keys Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 2fee1462..4212e612 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -355,3 +355,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". operator-channel contract's `AsksByAskerIDValue` gains the field. A step the module's policy does not name is no step of its pipeline, so `Status` has no open question for it. The runner places a pipeline's steps when it starts it and asks each build seat for its step, as its asking half; that half is built in G. +- **A-92** (§560, A-77, §627; principle 7, and who may do what is no question) The node-engine's bound keys live in a new + state `bounds` of the seat `node-engine`'s definition, declared in its old section as a foundation part's states are + (§627), key `.` with its own time to live; the node-engine's account holds it as it holds its other states. From d0beb962d89020ee0b5ebcae3559ec9d7f3997e8 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:27:11 +0100 Subject: [PATCH 20/28] Answer A-93: a branch's take-in computes its revision directly; the trunk stays main Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 4212e612..e53dfecc 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -350,7 +350,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-90** (§13, §14, §291, ADR 0666 §6, A-85; principle 7) A non-first branch's revision is made by the same take-in as the trunk's, taken per watched branch: `sourceFollow` takes `source.` for every watched branch, and the source path (`ApplySource`, the catch-up, the heads' take-in) runs with the branch as its argument, writing that - branch's revision; the trunk is each registration's first branch, not a constant. + branch's revision (corrected by A-93). - **A-91** (§26, §37, §700, Q-RN8; principle 7) The router's record value carries its `warrant` as §700 says: the operator-channel contract's `AsksByAskerIDValue` gains the field. A step the module's policy does not name is no step of its pipeline, so `Status` has no open question for it. The runner places a pipeline's steps when it starts it and @@ -358,3 +358,9 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-92** (§560, A-77, §627; principle 7, and who may do what is no question) The node-engine's bound keys live in a new state `bounds` of the seat `node-engine`'s definition, declared in its old section as a foundation part's states are (§627), key `.` with its own time to live; the node-engine's account holds it as it holds its other states. +- **A-93** (§13, §14, §291, ADR 0666 §6, A-85, A-90; principle 7; corrects A-90's trunk) A non-first branch's take-in + is a pure computation from that branch's merged messages straight into its revision (`KeepBranchEntries`): each + module's fingerprint, inputs and graph node at the branch's heads, computed as the trunk's are, with no modules view + or bucket of its own; the trunk's `modules`, `manifests` and graph stay the trunk's alone. The trunk stays the + mesh-wide branch `main` (ADR 0666's default watched branch), named once in the indexer; a registration's own first + branch decides only which of its branches it delivers from. From fb10a9359bfb0d1576f00143452b7fe198400e16 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:27:35 +0100 Subject: [PATCH 21/28] Answer A-94: the assigner hears build.ended and maps a want to its release by source Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index e53dfecc..606575ef 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -364,3 +364,8 @@ names the principle that settles it, and is cited as "design 47 G A-n". or bucket of its own; the trunk's `modules`, `manifests` and graph stay the trunk's alone. The trunk stays the mesh-wide branch `main` (ADR 0666's default watched branch), named once in the indexer; a registration's own first branch decides only which of its branches it delivers from. +- **A-94** (§379, §525, §526; principle 1, a part asks for another's data or hears its events) The assigner hears the + builder's `build.ended` event (§379 names it) and reads no builder state such as `build-log`. A want for a trunk + revision's entry takes `version` and its parts' digests from the `version-released` whose `source` is that revision; + a build `build.ended` marks kept (its keeping node) is a kept build, its parts and `kept-on` from that event; a build + of another watched branch is the one whose `build.ended` names that branch, its parts from that event. From 04f4d715bd1fe16340231ea180ebe8076ea540a8 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:28:03 +0100 Subject: [PATCH 22/28] Answer A-95: the node-engine's kept entries as built, and what is still owed Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 606575ef..806dbb4a 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -369,3 +369,9 @@ names the principle that settles it, and is cited as "design 47 G A-n". revision's entry takes `version` and its parts' digests from the `version-released` whose `source` is that revision; a build `build.ended` marks kept (its keeping node) is a kept build, its parts and `kept-on` from that event; a build of another watched branch is the one whose `build.ended` names that branch, its parts from that event. +- **A-95** (§421, §683, §698, A-47; principle 7) As built in mesh-host 7703162c and 97d3df3e: the entry key is + `entry.` (a key takes no colon); `want.` holds the want with its own `since`; an entry another node + runs is learned from `running`; the refusal "no entry of fingerprint" is `not-found`; `first-view-again` refuses in + words, the node-engine following no view. Still owed in G: a restart composes the bus module and the indexer from the + kept entries and wants while both are down, without waiting for every input (§683's purpose), and the + `entry-not-found` finding (§614). From 4ffcadf4e97ccadef5b8fbde53ff9f4567365a98 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:28:21 +0100 Subject: [PATCH 23/28] Name the node-engine by its word in A-95 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 806dbb4a..ac81f912 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -369,7 +369,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". revision's entry takes `version` and its parts' digests from the `version-released` whose `source` is that revision; a build `build.ended` marks kept (its keeping node) is a kept build, its parts and `kept-on` from that event; a build of another watched branch is the one whose `build.ended` names that branch, its parts from that event. -- **A-95** (§421, §683, §698, A-47; principle 7) As built in mesh-host 7703162c and 97d3df3e: the entry key is +- **A-95** (§421, §683, §698, A-47; principle 7) As built in the node-engine's commits 7703162c and 97d3df3e: the entry key is `entry.` (a key takes no colon); `want.` holds the want with its own `since`; an entry another node runs is learned from `running`; the refusal "no entry of fingerprint" is `not-found`; `first-view-again` refuses in words, the node-engine following no view. Still owed in G: a restart composes the bus module and the indexer from the From 2eb897699fed48b07cfaae2f736841858bf6006d Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:28:59 +0100 Subject: [PATCH 24/28] Answer A-96: the builder says build.ended on its own stream Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index ac81f912..448de741 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -375,3 +375,9 @@ names the principle that settles it, and is cited as "design 47 G A-n". words, the node-engine following no view. Still owed in G: a restart composes the bus module and the indexer from the kept entries and wants while both are down, without waiting for every input (§683's purpose), and the `entry-not-found` finding (§614). +- **A-96** (§379, G-4's event table, §529, A-67; principles 1 and 7) The builder says `build.ended` itself, as a module + event on its own stream: a foundation part's old `streams` entry `mesh-delivery-builder-builds`, 7 days, kept last per + subject `build.ended..` (each escaped), its body the build log entry's `module`, `fingerprint`, + `made` (artifact → digest), `kept-on` and `branch`; the assigner `consumes` `mesh-delivery-builder.build.ended`. A + want's source revision is the one its pass's kept assignment graph revision was computed from (A-67), matched to + `version-released.source`; `parts` stay keyed `:`, the contract's comment corrected to say so. From 720cff7271cb668716e28271a896f848fed7ad9a Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:31:38 +0100 Subject: [PATCH 25/28] Answer A-97: a candidate's build is a pipeline step the runner asks of mesh-builds Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 448de741..316acd99 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -381,3 +381,9 @@ names the principle that settles it, and is cited as "design 47 G A-n". `made` (artifact → digest), `kept-on` and `branch`; the assigner `consumes` `mesh-delivery-builder.build.ended`. A want's source revision is the one its pass's kept assignment graph revision was computed from (A-67), matched to `version-released.source`; `parts` stay keyed `:`, the contract's comment corrected to say so. +- **A-97** (§230, §194, §473, A-84, A-91; principle 7) A candidate's build is asked by the runner as a pipeline step of + its own: the runner's asking half asks the seat `mesh-builds` a `build` step naming each entry by fingerprint, and the + builder takes that ask (its one entry point for a candidate) and answers the step's end; `StepRun`'s steps stay lint, + unit and integration on the build seats. With the candidate coming that way, the builder's watch of the gate's + `source` for candidate base merges goes. A kind-3 dependency's `part` is the entry's kind-3 edge, as built in + 2dc51626. From fa8c046682f8d209bd4b7d4773c5920123728ff7 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:32:21 +0100 Subject: [PATCH 26/28] Answer A-98: a stop act that removes nothing, for a revert Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 316acd99..397e93f5 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -387,3 +387,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". unit and integration on the build seats. With the candidate coming that way, the builder's watch of the gate's `source` for candidate base merges goes. A kind-3 dependency's `part` is the entry's kind-3 edge, as built in 2dc51626. +- **A-98** (§297; principles 3 and 7) The node agent gains one act, `Env.Stop`: it stops a module's units and containers + and removes nothing, so a revert's data survives; the revert stops the newer build with it, asks `restore-kept`, and + then `Apply` starts the reverted build. `Remove` keeps its meaning. From ed9a41147a7eca74fd6c4d7bced99d87e7d07a33 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:33:11 +0100 Subject: [PATCH 27/28] Answer A-99: build is every pipeline's first step, for its own entry Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index 397e93f5..b47dc0e3 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -390,3 +390,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-98** (§297; principles 3 and 7) The node agent gains one act, `Env.Stop`: it stops a module's units and containers and removes nothing, so a revert's data survives; the revert stops the newer build with it, asks `restore-kept`, and then `Apply` starts the reverted build. `Remove` keeps its meaning. +- **A-99** (§230, A-91, A-97; principle 7) `build` is a step every pipeline has, placed first and required whatever its + policy names, so the runner's step enum gains `build`; each module's pipeline asks the build of its own module's + entry only, and a group's members are built by their own pipelines. From e8fce4ca46b333aef2a3bc15853873d28c0638c3 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:33:25 +0100 Subject: [PATCH 28/28] Answer A-100: build.ended as built Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md index b47dc0e3..16dd3db1 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md @@ -393,3 +393,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-99** (§230, A-91, A-97; principle 7) `build` is a step every pipeline has, placed first and required whatever its policy names, so the runner's step enum gains `build`; each module's pipeline asks the build of its own module's entry only, and a group's members are built by their own pipelines. +- **A-100** (§379, A-96; principle 7) As built in mesh-delivery a5e1a5e5 and 5a352482: `build.ended` is said for a done + build only; its `branch` is empty for the trunk; its old-section stream keeps 7 days with no keep-last setting (an + old `streams` entry has none), which A-96's "kept last per subject" gives up.