From f871c9f96802da4778d1ca0fe6d145203e2b77e2 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:34:35 +0100 Subject: [PATCH 01/11] Answer A-101: > in TopicMatches, one operator-channel asker in mesh-sdk 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 16dd3db1..5c4183d7 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 @@ -396,3 +396,8 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **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. +- **A-101** (§532, §521, A-74, A-89; principles 1, 3 and 7, shared code in mesh-sdk) mesh-sdk's `stdio.TopicMatches` + understands the bus's own `>`, so an adopted follower's `..>` hears every event, not the first view only. + The operator-channel asker (the seat holder found on the seat list, the ask published, the router's record read for + the warrant, `decided` heard) is one mesh-sdk helper that the builder, the teller, the indexer and the runner use; no + module keeps its own copy. A step's own bound is a key with its own time to live too (A-77), not a timer. -- 2.54.0 From 1c9488c2ae7730550819cccdb08ea39dd1cec2d0 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:35:01 +0100 Subject: [PATCH 02/11] Answer A-102: accepted kinds named in invokes 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 5c4183d7..3a3cec53 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 @@ -401,3 +401,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". The operator-channel asker (the seat holder found on the seat list, the ask published, the router's record read for the warrant, `decided` heard) is one mesh-sdk helper that the builder, the teller, the indexer and the runner use; no module keeps its own copy. A step's own bound is a key with its own time to live too (A-77), not a timer. +- **A-102** (§22, §24, A-97; principle 7) A part that puts work on a seat's accepted kind names it in `invokes` as + `seat:.` (the runner: `seat:mesh-builds.step` and each build seat's `check.step`), and the grants part + composes the publish of that accept subject from it, as it composes a verb's call. -- 2.54.0 From f426b4e5fa98196750e8a286c9b173f59cb8a898 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:35:37 +0100 Subject: [PATCH 03/11] Answer A-103: the registration's first branch wins; the follower's helpers built once 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 3a3cec53..8500f40f 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 @@ -404,3 +404,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-102** (§22, §24, A-97; principle 7) A part that puts work on a seat's accepted kind names it in `invokes` as `seat:.` (the runner: `seat:mesh-builds.step` and each build seat's `check.step`), and the grants part composes the publish of that accept subject from it, as it composes a verb's call. +- **A-103** (§532, §614; principle 7, shared code in the follower) When two watched branches list one module, the + module's own registration decides: its first branch is the one read. The `Entry` and `Ready` helpers over the branch + follower, the `_entry_again` tool, the `entry-not-found` finding and the entries rows of + `_first_views` are built once, in `meshcatalogclient` and mesh-sdk's views, and every reader uses them. -- 2.54.0 From 9efa510ad53965e7e6215839952b98741c05f5d3 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:37:12 +0100 Subject: [PATCH 04/11] Answer A-104: the runner's write verbs, kept results, toolchain and unanswered asks 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 8500f40f..85f65e29 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 @@ -408,3 +408,10 @@ names the principle that settles it, and is cited as "design 47 G A-n". module's own registration decides: its first branch is the one read. The `Entry` and `Ready` helpers over the branch follower, the `_entry_again` tool, the `entry-not-found` finding and the entries rows of `_first_views` are built once, in `meshcatalogclient` and mesh-sdk's views, and every reader uses them. +- **A-104** (§22, §70, §482, §25, §416, §535, §647, A-70, A-77, A-68; principle 7) The runner's write verbs (`review`, + `rerun`, `accept`, `cancel`) are served by its tools bundle, which writes the state `pipelines` by compare-and-set and + says `step-ended`; an optional step still waiting does not hold a pipeline's end, only a required one does. A step + ask's kept results are the `kept` entries whose `package` is the artifact's package (from the entry); its + `toolchain` is the runner's `toolchain.` kept as heard from `toolchain-agreed`. An unanswered ask is read + from the build seat holder's `ask-taken` as §647 says (not the seat list), its five minutes a key with its own time to + live in a state `bounds` of the runner. -- 2.54.0 From ab39ee3290dc601a019f1a4e2539c2b5ca4baa88 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:42:40 +0100 Subject: [PATCH 05/11] Answer A-105: the runner's toolchains state 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 85f65e29..f524e701 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 @@ -415,3 +415,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". `toolchain` is the runner's `toolchain.` kept as heard from `toolchain-agreed`. An unanswered ask is read from the build seat holder's `ask-taken` as §647 says (not the seat list), its five minutes a key with its own time to live in a state `bounds` of the runner. +- **A-105** (A-104; principle 7) The runner keeps what it hears of `toolchain-agreed` in a state of its own, + `toolchains` (history 1), key ``, value its language, version and digests; a step ask's `toolchain` is read + there. -- 2.54.0 From 362c8074d1893d1d2c57d7f02ba86c7177a307cb Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:44:17 +0100 Subject: [PATCH 06/11] Answer A-106: the runner's steps as built, its write verbs waiting on the operator 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 f524e701..5baa796d 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 @@ -418,3 +418,9 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-105** (A-104; principle 7) The runner keeps what it hears of `toolchain-agreed` in a state of its own, `toolchains` (history 1), key ``, value its language, version and digests; a step ask's `toolchain` is read there. +- **A-106** (§25, §416, §535, §647, A-104; principle 7) As built on the runner's recover branch (239a6693, e8b69509, + 2d9c6591): a kept result counts for an artifact when its package is the artifact's or lies beneath it; the ask's + toolchain carries language and version; only the three build seats' asks are bounded by `ask-taken`; the five + minutes are a constant; an expired step ends `could not run` and the others run on. The runner's write verbs wait on + the operator's answer whether a process may answer calls (then the process writes `pipelines` by compare-and-set + itself); the runner gains a whole-module integration test against the bus in G. -- 2.54.0 From f29a8f0ebe40bd904ba061eec29882bfc62eb9f2 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:48:03 +0100 Subject: [PATCH 07/11] Answer A-107: a process answers its seat's verbs, the operator's yes 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 5baa796d..a48db75f 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 @@ -424,3 +424,10 @@ names the principle that settles it, and is cited as "design 47 G A-n". minutes are a constant; an expired step ends `could not run` and the others run on. The runner's write verbs wait on the operator's answer whether a process may answer calls (then the process writes `pipelines` by compare-and-set itself); the runner gains a whole-module integration test against the bus in G. +- **A-107** (the operator, 2026-11-11 about 23:45 CET: yes, a process may answer calls; principles 1 and 7; withdraws + A-45, A-59, A-60's bundle principal, A-70, A-87's bundle part and A-104's bundle part) mesh-sdk's rule that a process + answers no call (issue 1171, AC3) is removed: a process answers its seat's verbs directly over the bus, with the + proved caller, through one mesh-sdk call. The part that holds the data answers for it: the bus module's keeper serves + `mesh-broker`'s verbs and sends the chunks itself; the builder's process serves `reserved` and `builder_build`; the + runner's process serves `review`, `rerun`, `accept` and `cancel`, writing `pipelines` by compare-and-set; the chunk + subjects go to the process that answers. -- 2.54.0 From ccfac82fd1dee25e846a0097b1cdc8f78cb63da5 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:51:15 +0100 Subject: [PATCH 08/11] Answer A-108: the node agent runs the catch-up after the restore 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 a48db75f..d0a1fde9 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 @@ -431,3 +431,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". `mesh-broker`'s verbs and sends the chunks itself; the builder's process serves `reserved` and `builder_build`; the runner's process serves `review`, `rerun`, `accept` and `cancel`, writing `pipelines` by compare-and-set; the chunk subjects go to the process that answers. +- **A-108** (§630, §214, §406, §516; principle 7) The catch-up is the node agent's: after the restore and the `Apply` of + the reverted build, it calls the point's recorded `{tool, arguments}` as that module's tool on its own node through + the tool runner, as `holder:node-engine` is granted (§406); `restore-kept` carries the snapshot only. §630's "passes + its catch-up to restore-kept" reads "runs its catch-up after it". -- 2.54.0 From 9ff6368e8288a92369329ef5406c09322074a8d9 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:56:42 +0100 Subject: [PATCH 09/11] Answer A-109: a process's serves, their grants, chunks on the core bus 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 d0a1fde9..1a0c8775 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 @@ -435,3 +435,9 @@ names the principle that settles it, and is cited as "design 47 G A-n". the reverted build, it calls the point's recorded `{tool, arguments}` as that module's tool on its own node through the tool runner, as `holder:node-engine` is granted (§406); `restore-kept` carries the snapshot only. §630's "passes its catch-up to restore-kept" reads "runs its catch-up after it". +- **A-109** (A-107, §681, ADR 0675; principles 6 and 7) A process that answers its seat's verbs declares them in its + manifest's process section as `serves` (mesh-sdk's `ProcessBus` takes the field, its old "a process serves nothing" + gone), and the grants part composes the process account's subscribe of `mesh.seat..call..*` and + `.tool.` from it, plus, for a `chunks: true` verb, the publish of `.chunk..>` and the subscribe of + `.ack..*.*`. A snapshot's chunks are a transfer, published on the core bus with no stream; any caller of + `snapshot-get` receives the chunks (who may hear them is no question), a protected snapshot never. -- 2.54.0 From 3ffb0f8d8e27ce9165d3a7790e94e2d7474105e8 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:57:37 +0100 Subject: [PATCH 10/11] Answer A-110: a process's serves in the form of invokes 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 1a0c8775..5de6211f 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 @@ -441,3 +441,5 @@ names the principle that settles it, and is cited as "design 47 G A-n". `.tool.` from it, plus, for a `chunks: true` verb, the publish of `.chunk..>` and the subscribe of `.ack..*.*`. A snapshot's chunks are a transfer, published on the core bus with no stream; any caller of `snapshot-get` receives the chunks (who may hear them is no question), a protected snapshot never. +- **A-110** (A-109; principle 7) A process's `serves` is a list of `seat:.` strings, the form of `invokes` + beside it; whether a verb sends chunks is read from its seat definition (`chunks: true`), never declared again. -- 2.54.0 From 369c875358ce8e633d612301f88e5a1e71f62f61 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 23:57:54 +0100 Subject: [PATCH 11/11] Answer A-111: the runner's write verbs 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 5de6211f..2db785ac 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 @@ -443,3 +443,8 @@ names the principle that settles it, and is cited as "design 47 G A-n". `snapshot-get` receives the chunks (who may hear them is no question), a protected snapshot never. - **A-110** (A-109; principle 7) A process's `serves` is a list of `seat:.` strings, the form of `invokes` beside it; whether a verb sends chunks is read from its seat definition (`chunks: true`), never declared again. +- **A-111** (§22, §70, §482, A-104, A-107; principle 7) As built in mesh-delivery 210abfc8 and bb51e59a: a rerun's ask id + carries its time; a rerun carries the kept results and toolchain; `rerun` of `approval` is refused naming + `ask-again`; `cancel` drops the asks' bounds and leaves what the build seats already took; the hand act's verb is + `mesh-pipeline-runner.`; a review ends every running pipeline at that commit and fingerprint waiting on one. A + review given after a pipeline ended passed is refused, as built. -- 2.54.0