From 201e998418bff9fe5705e3540ff57e4d033ef14f Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 21:59:52 +0100 Subject: [PATCH 1/6] Answer A-27: the tool runner's first views are adopted by a process reader Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ --- 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 979245a6..e5aa88c6 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 @@ -103,3 +103,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-26** (§687, §689, A-22; principle 7) A part raises no follower's finding itself: every follower is adopted through its reader (`Adopt`), and the reader raises and clears the follower's four findings through the module's writer, so the pipeline runner, the indexer and the assigner build none of their own. +- **A-27** (A-26, A-16; principle 7) The tool runner's first views follow A-26 too: `firstview` builds a + `views.ProcessReader` over the runner's bus connection and adopts its followers, so the reader raises their findings; + the runner's `bus.Conn` gains one accessor for its JetStream, its one place (A-16). -- 2.54.0 From dca4bc973e5785286c0b37d3413f164550f5c6e3 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:00:05 +0100 Subject: [PATCH 2/6] Answer A-28: own followers through a reader, a single ask through the writer Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ --- 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 e5aa88c6..978dffdd 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 @@ -106,3 +106,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-27** (A-26, A-16; principle 7) The tool runner's first views follow A-26 too: `firstview` builds a `views.ProcessReader` over the runner's bus connection and adopts its followers, so the reader raises their findings; the runner's `bus.Conn` gains one accessor for its JetStream, its one place (A-16). +- **A-28** (A-26, A-22, §687; principle 7) A part's own follower (mesh-config, mesh-vault) is followed through a + `views.Reader` holding the module's writer and adopted, as A-26. A single ask that is no follower (mesh-build-go's + manifest ask, the tool runner's ask) writes and clears its `first-view-unanswered` finding itself through + `Writer.Write` and `Writer.Clear` with the contract's `Finding`; mesh-sdk exports no helper for it. -- 2.54.0 From a1c77688ab8cb638ea6f32cde10e6349f0234355 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:00:25 +0100 Subject: [PATCH 3/6] A-23 names the trace operation, as built Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ --- 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 978dffdd..c8f97d42 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 @@ -91,7 +91,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". module's own check interval; a field the contract's `Finding` lacks (`resolved`, and its words in every module, the watchman's included) is dropped, the keeper saying a clear in its own words; an id is escaped as a name, and a `ref` goes into the id only where two findings of one kind share an id; old keys are cleared by the writer's first statement. mesh-sdk keeps no old `views.Finding` or `FindingWriter` beside the generic writer. -- **A-23** (§81, §132; principle 7) The gate's `recovery` marks the delivery record through its ordinary update, with one +- **A-23** (§81, §132; principle 7) The gate's `recovery` marks the delivery record through its ordinary update (the record type's `trace` set-fields operation), with one field `recovery` holding `by` (the proved caller), `why` and `commit`; no new operation. Then it says `recovery-merged`. - **A-24** (§431, §172, §592, §158; principles 7 and 4) Once the merge states go, `deliveries`, `show` and `groups` answer the delivery records as the gate keeps them (G-3 *The delivery record*), filtered by their arguments, with no line -- 2.54.0 From 2103f4479b07458eda3c225938a84a757ad3e6ed Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:01:05 +0100 Subject: [PATCH 4/6] Answer A-29: one mesh-sdk writer that observes from its own state Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ --- 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 c8f97d42..37135cfa 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 @@ -110,3 +110,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". `views.Reader` holding the module's writer and adopted, as A-26. A single ask that is no follower (mesh-build-go's manifest ask, the tool runner's ask) writes and clears its `first-view-unanswered` finding itself through `Writer.Write` and `Writer.Clear` with the contract's `Finding`; mesh-sdk exports no helper for it. +- **A-29** (§686, A-3; principle 7, shared code lives in mesh-sdk) A part whose findings are raised as they happen, not + judged afresh, uses one mesh-sdk form of the writer that observes from its own state: it seeds what it holds from the + state's keys before it starts, keeps them under its own lock, and its `Observe` answers them, so no part writes that + adapter (the watchman's copy moves there; the assigner, builder and indexer use it). -- 2.54.0 From d60f14c56ced3cf29313d5be018d61fb103ce923 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:03:55 +0100 Subject: [PATCH 5/6] Answer A-30 to A-32: declared finding events, old keys, held writers Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ --- 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 37135cfa..dc09c31d 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 @@ -114,3 +114,10 @@ names the principle that settles it, and is cited as "design 47 G A-n". judged afresh, uses one mesh-sdk form of the writer that observes from its own state: it seeds what it holds from the state's keys before it starts, keeps them under its own lock, and its `Observe` answers them, so no part writes that adapter (the watchman's copy moves there; the assigner, builder and indexer use it). +- **A-30** (§383, §686; principle 3) Every module whose writer publishes declares the events it says + (`finding-written`, `finding-cleared`, `findings-stated`) in its manifest; none publishes an event it does not declare. +- **A-31** (A-14, A-22; principles 3 and 7) A module whose old finding keys end in no kind it owns (gitea's package + registry, distribution) deletes those old keys once at its start, in its own code, so no stale finding stays; the + writer's rule is unchanged. +- **A-32** (A-29; principle 7) A part that keeps its open findings in memory (artifact-store-tools, mesh-config, + distribution, gitea's package registry) uses the held writer of A-29, so a restart neither drops nor rewrites them. -- 2.54.0 From d0a7565088f98dbd46327c8a11f2367df090d450 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:05:00 +0100 Subject: [PATCH 6/6] Answer A-33 to A-35: the gate's records from take-in, source, owed acts Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 10 ++++++++++ 1 file changed, 10 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 dc09c31d..5435806b 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 @@ -121,3 +121,13 @@ names the principle that settles it, and is cited as "design 47 G A-n". writer's rule is unchanged. - **A-32** (A-29; principle 7) A part that keeps its open findings in memory (artifact-store-tools, mesh-config, distribution, gitea's package registry) uses the held writer of A-29, so a restart neither drops nor rewrites them. +- **A-33** (§151, §592, A-9; principle 7) The gate opens one record per `take-in.taken`: its key is the taken body's + `branch` and `source` (`.`, each escaped as a name); its members are the taken body's `entries` + (`repository`, `pull`), a group's members in one record; its heads are the commits the take-in names for them. +- **A-34** (§291, §15, §592; principle 1) `source.` moves on `take-in.taken`: the gate writes the taken body's + `source` for its `branch`, then says `source-moved`; nothing else moves it. +- **A-35** (§167, §158, §168; principle 7) The record's changes make the same owed acts the delivery's transitions make + today (the delivery's view, a comment, the note's line), re-keyed on the record; each act said is kept in the record's + `acts` with when it was said, and ended there on `owed.ended`, so `stalled` reads the unanswered ones. + `approval-carried` and `approval-carried-open` are design lines (§542, §592), not left out: they are built, with the + `pull-merged` and `pull-closed` consumes that clear the finding. -- 2.54.0