From 9d578873570e3814d48bb5947ec82dce8015ee47 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:06:12 +0100 Subject: [PATCH 1/9] Answer A-36: mesh-sdk's calls words and the TS follower, as built 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 5435806b..53c21bd7 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 @@ -131,3 +131,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". `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. +- **A-36** (§622, §643, A-21, A-22; principle 7) As built in mesh-sdk a59ccad8: the Go package's `calls` are the four + words its calls need (`ledger-upkeep-calls`, `sent-objects-calls`, `put-sessions`, `finding-calls`), the npm package's + `finding-calls` alone; the npm package makes no session, so its `state.put` refuses a value over one chunk, naming + it. A-22 holds for TypeScript too: the TS follower keeps no plain-field `Finding` of its own beside the writer. From 528a7ee41ca0c6d99cf893d44b1f03e9a17eebdb Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:07:36 +0100 Subject: [PATCH 2/9] Answer A-37: the held writer's stdio form, and it holds what a reader writes 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 53c21bd7..4ad76b00 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 @@ -135,3 +135,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". words its calls need (`ledger-upkeep-calls`, `sent-objects-calls`, `put-sessions`, `finding-calls`), the npm package's `finding-calls` alone; the npm package makes no session, so its `state.put` refuses a value over one chunk, naming it. A-22 holds for TypeScript too: the TS follower keeps no plain-field `Finding` of its own beside the writer. +- **A-37** (A-16, A-29, A-32; principles 7 and 3) The held writer has a stdio form, `views.NewStdioHeldWriter`, filling + `Publish` and `Listen` as A-16's does, so no module writes the adapter; and the held writer holds every finding + written through it, its `WriteWire` included, so a reader's findings are in its statement too. From efec941fa7c774f6b903f5f798bba916cbc2b1e1 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:11:30 +0100 Subject: [PATCH 3/9] Answer A-38: the held writer answers what it holds --- 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 4ad76b00..b370cb57 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 @@ -138,3 +138,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-37** (A-16, A-29, A-32; principles 7 and 3) The held writer has a stdio form, `views.NewStdioHeldWriter`, filling `Publish` and `Listen` as A-16's does, so no module writes the adapter; and the held writer holds every finding written through it, its `WriteWire` included, so a reader's findings are in its statement too. +- **A-38** (A-29, A-32; principles 4 and 7) The held writer can be read: `HeldWriter.Held()` answers the findings it holds, + so a part that diffs or looks up its open findings (artifact-store-tools, mesh-config) reads them there and keeps no + set of its own. From c5bdcbf0c59bf011ffa626c0fd518634b3130d60 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:11:57 +0100 Subject: [PATCH 4/9] Correct A-27: the tool runner keeps its followers and writes its findings through a held writer --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) 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 b370cb57..ed142db4 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,12 +103,15 @@ 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). +- **A-27** (A-16, A-28, A-29; principle 7; corrected) The tool runner is no process module, so it keeps its own + consumer and its four followers as they are and builds no `views.ProcessReader`. It writes the findings it wrote + before (`first-view-unanswered` and the others of its old code, the same kinds) through one `views.HeldWriter` over + its own connection: a small state adapter over the connection's state calls, `Publish` and `Listen` from the + connection, in its one place (A-16); it writes and clears each follower's finding as that follower's status says, as + A-28 has for a single ask. Its JetStream comes from the connection as `bindings.go` already makes it. - **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 + manifest 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 From 867229003bc187761e4c18a41f7a5bac431f5c7f Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:14:05 +0100 Subject: [PATCH 5/9] Answer A-39: which record change makes which owed act 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 ed142db4..e69d4043 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 @@ -144,3 +144,8 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-38** (A-29, A-32; principles 4 and 7) The held writer can be read: `HeldWriter.Held()` answers the findings it holds, so a part that diffs or looks up its open findings (artifact-store-tools, mesh-config) reads them there and keeps no set of its own. +- **A-39** (§158, §161 to §167, A-35; principle 7) Which record change makes which act, as the transitions did: every + change of a record (a step's outcome applied, the record ended) says a line on the head commit's note + (` record : ()`, one line) and replaces each member pull request's delivery view with + what `show` answers for the record; a comment is said only when the record ends failed or held, naming why. The gate's + own findings (`approval-carried-open` first) go through one held writer over its own `findings` state (A-29, A-37). From feebb8cb202227f4effb6e74a6b99679c69fc0da Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:16:18 +0100 Subject: [PATCH 6/9] Answer A-40: the held writer seeds at Start 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 e69d4043..988f4ff3 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 @@ -149,3 +149,6 @@ names the principle that settles it, and is cited as "design 47 G A-n". (` record : ()`, one line) and replaces each member pull request's delivery view with what `show` answers for the record; a comment is said only when the record ends failed or held, naming why. The gate's own findings (`approval-carried-open` first) go through one held writer over its own `findings` state (A-29, A-37). +- **A-40** (A-29, A-37; principle 7) The held writer seeds what it holds from its state at `Start`, not when it is + made, so every module makes it at once, as it makes the plain writer, and no stdio module waits for `Served` in an + adapter of its own; a `Write` before `Start` is held and written at `Start`. From fd04333fa5889e6685fe1df00eee96ffe4febb7f Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:16:58 +0100 Subject: [PATCH 7/9] Answer A-41: no part reads the build modules' toolchains buckets where the builder answers 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 988f4ff3..61bfb933 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 @@ -152,3 +152,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". - **A-40** (A-29, A-37; principle 7) The held writer seeds what it holds from its state at `Start`, not when it is made, so every module makes it at once, as it makes the plain writer, and no stdio module waits for `Served` in an adapter of its own; a `Write` before `Start` is held and written at `Start`. +- **A-41** (§492, §604, §546; principle 1) A part reads another module's data only by asking it, so the checker and the + indexer stop reading the build modules' `toolchains` buckets: they take a toolchain from the builder's own read verb + or event where one serves it today. Where none does, the restored read stays for G, built as mesh-delivery 7a3c312a + has it, and the lead notes it for the next milestone; no new verb is added in G for it. From 2d5f6ac949f77442fac7616fce689364313bbfad Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:24:07 +0100 Subject: [PATCH 8/9] =?UTF-8?q?Correct=20A-30=20to=20=C2=A7529's=20finding?= =?UTF-8?q?=20stream=20forms;=20answer=20A-42,=20the=20gate=20finding's=20?= =?UTF-8?q?scope?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- 03-DESIGN/01-to-be/47-milestones/G-20-lead-answers.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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 61bfb933..4e92d29a 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 @@ -117,8 +117,11 @@ 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-30** (§383, §529, §686; principle 3; corrected) Every module whose writer publishes declares its finding events + as §529 says: a foundation part (the validator's list) in its old `streams` section as `-findings`; every + other part in its `requires` by the template `events` as `finding-events`, its entry listing `finding-written.*`, + `finding-cleared.*` and `findings-stated.*`. None publishes an event it does not declare, and no other part declares + `-findings`. - **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. @@ -156,3 +159,5 @@ names the principle that settles it, and is cited as "design 47 G A-n". indexer stop reading the build modules' `toolchains` buckets: they take a toolchain from the builder's own read verb or event where one serves it today. Where none does, the restored read stays for G, built as mesh-delivery 7a3c312a has it, and the lead notes it for the next milestone; no new verb is added in G for it. +- **A-42** (§592; principle 8) The gate's `approval-carried-open` has scope `delivery`, a scope the mesh already uses + for the delivery's findings, and id `.`. From d9a0e19b204e01cf9106068b16d0cb9c666ce0c8 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 22:25:39 +0100 Subject: [PATCH 9/9] Answer A-43: plain views families are followed, the runner's writer uses its JetStream 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 4e92d29a..7c63f466 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 @@ -161,3 +161,7 @@ names the principle that settles it, and is cited as "design 47 G A-n". has it, and the lead notes it for the next milestone; no new verb is added in G for it. - **A-42** (§592; principle 8) The gate's `approval-carried-open` has scope `delivery`, a scope the mesh already uses for the delivery's findings, and id `.`. +- **A-43** (A-26, A-28, A-16; principle 7) As built in mesh-catalog d03ffa80 and mesh-tools 4bfae38a: an owner's plain + `.views.` family is followed by `Reader.Follow`, the follower's `Ask` set after (`Adopt` is for a seat's + events); and the tool runner's held writer is given its JetStream, the writer's own defaults publishing and + listening, so `bus.Conn` gains no publish method.