From 073160ca46f1aacfb07bd0773c70ee6ce87e9379 Mon Sep 17 00:00:00 2001 From: jochen Date: Wed, 11 Nov 2026 10:55:20 +0100 Subject: [PATCH] Answer develop's next questions on G's contracts, and correct design 25 on the bus module's types The generator emits body types and sending stays mesh-sdk's, the reader release reads needs-approval and the bodies map, an accepted kind's name is separate from its stream, and the bus module's created and recreated do carry types. Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ --- .../25-milestones/bindings-first-view.md | 2 +- .../47-milestones/G-9-prepare-answers.md | 22 +++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/03-DESIGN/01-to-be/25-milestones/bindings-first-view.md b/03-DESIGN/01-to-be/25-milestones/bindings-first-view.md index 734acbe0..7b4bc4b5 100644 --- a/03-DESIGN/01-to-be/25-milestones/bindings-first-view.md +++ b/03-DESIGN/01-to-be/25-milestones/bindings-first-view.md @@ -53,7 +53,7 @@ choice, to the bus module's. Each choice below says so. subjects, while the bus module sends, and the grants part needs, mesh-sdk's membership binding: `local` (the local name), `storage`, `template`, `stream` and `subject` (a stream's, and a ledger's history's subject), `bucket`, `object-store`, and for a ledger `history`, `state`, `indexes` (each index's bucket by its name), `snapshot` and - `types` (which the bus module's events leave empty; the grants part copies them from `manifest-accepted`). The + `types`, which `created` and `recreated` carry and only `dropped` clears (corrected 2026-11-11, develop question D-11 of design 47's milestone G: an earlier wording had the bus module's events leave them empty). The definition's `Binding` takes exactly those fields, with those names and forms, so `created`, `recreated` and `list`'s `binding` carry one form, the generated contract decodes what the bus module sends, and no byte changes on the wire; the fields design 47 G §399 adds come on top of it. Why: the design's choice following this line's diff --git a/03-DESIGN/01-to-be/47-milestones/G-9-prepare-answers.md b/03-DESIGN/01-to-be/47-milestones/G-9-prepare-answers.md index ecd1ebb8..968cba09 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-9-prepare-answers.md +++ b/03-DESIGN/01-to-be/47-milestones/G-9-prepare-answers.md @@ -181,8 +181,9 @@ line says so.* - §414 **The build seats' state is `detected-steps`.** The state §326 names `steps` is `detected-steps`, apart from today's step keys `steps`. This amends §326. Why: the design's choice (C5, D13). How it is checked: whole (Go build module), as §326. -- §415 **Kinds on the stream `check`, and a recovery's steps.** A step ask is the kind `check.step`, a run on request's - `check.run`; a recovery's steps are `delivery.step`, which the runner may publish (§86). Why: the design's choice +- §415 **Kinds on the stream `check`, and a recovery's steps.** A step ask is the kind `step` on the stream `check`, + its subject `check.step`; a run on request's is `run`, subject `check.run`; a recovery's steps are `step` on the + stream `delivery`, subject `delivery.step`, which the runner may publish (§86; §455). Why: the design's choice (D5, C6). How it is checked: whole (runner, Go build module), a recovery's step is taken from `delivery` first. - §416 **A step ask carries the kept results.** The runner's step ask carries the kept results by package digest (§25), so a build seat runs only the packages without one. Why: the design's choice (C7). How it is checked: whole @@ -386,3 +387,20 @@ line says so.* arguments}`: `tool` an address as the mesh MCP server names one, `arguments` an object. Why: develop question D-6, 2026-11-11. How it is checked: unit (mesh-conditions' contract, node-backup's contract), each form read and another refused. +- §452 **The seat generator emits the body types; sending is mesh-sdk's.** For a definition's `bodies` (§439) the seat + generator emits only their types, in Go and TypeScript, and each event's subject function; the sending (the state + key, the event and the one-minute resend of §383) is mesh-sdk's `go/views` writer and its TypeScript twin, which + name no seat. This amends §439's "the writers are generated". Why: develop question D-7, 2026-11-11. How it is + checked: unit (seat generator), a definition's `bodies` yields types and subject functions and no sending code; + unit (mesh-sdk's writer, both languages), a body sent with the subject handed in. +- §453 **The reader release reads `needs-approval`.** §89's and §409's words the reader release reads include the + manifest word `needs-approval` and a verb's `needs-approval` in a seat's definition (design 46). Why: develop + question D-8, 2026-11-11. How it is checked: unit (the release's reader), both read. +- §454 **`bodies` is a map, referenced as `defs` is.** A definition's `bodies` is a map of a name to a schema; a + reference `#/bodies/` resolves as `#/defs/` does, and the reader release reads it (§409). Why: develop + question D-9, 2026-11-11. How it is checked: unit (definition reader), a reference into `bodies` resolved. +- §455 **An accepted kind's name and stream.** An accepted kind has a plain lower-case name (`step`, `run`) and a field + `stream`, `check` or `delivery`; its subject is `.`, and one kind name may ride both streams: the build + seats accept `step` on `check` and on `delivery`, and `run` on `check` (§22, §206). The reader release reads + `stream` (§409). This amends §415. Why: develop question D-10, 2026-11-11. How it is checked: unit (definition + reader), `step` on both streams accepted, a dotted kind name refused.