From 14acd2b59311b2a0d28fa2713dc735c6a67eaa22 Mon Sep 17 00:00:00 2001 From: jochen Date: Fri, 13 Nov 2026 17:25:39 +0100 Subject: [PATCH] Answer A-353 to A-358: G's start breaks the runner's own wait, grants keeps its modules read, the SDK declares the verbs it calls Found after G's merge: a G tool runner waits on itself, grants freezes once G's indexer runs, the watchman does not build, gitea needs G's build runtime, and the graph ordered the tool runner first because the SDK's calls were undeclared. Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- .../47-milestones/G-22-lead-answers-2.md | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/03-DESIGN/01-to-be/47-milestones/G-22-lead-answers-2.md b/03-DESIGN/01-to-be/47-milestones/G-22-lead-answers-2.md index d7dc1185..5f83a2be 100644 --- a/03-DESIGN/01-to-be/47-milestones/G-22-lead-answers-2.md +++ b/03-DESIGN/01-to-be/47-milestones/G-22-lead-answers-2.md @@ -3,7 +3,7 @@ layer: to-be status: in-progress design: 47 milestone: G -updated: 2026-11-12 +updated: 2026-11-13 decisions: - "ADR 0667" --- @@ -715,3 +715,22 @@ the principle that settles it, cited as "design 47 G A-n". runs healthy from the holder's have, also while a newer build of the bus module waits for the operator's yes: the running build serves the bus state, so a consumer that needs none of the new build's forms is not held; a consumer whose new form only the new build reads still waits for it by its edge of kind 4 (§50). +- **A-353** (G's start, found 2026-11-13 after its merge; principles 3 and 7) While its catalog half is unread, a tool + runner's approval gate lets through the first-view calls the catalog half is read by (the seat mesh-catalog's + `registrations`, `revision` and `entry`, the seat mesh-delivery's `source`, and their owners' first-view tools) and + holds every other call as today, so the runner that serves the indexer's tools can answer the reads it waits on; the + rule lives once, in mesh-sdk's approval gate. +- **A-354** (G's start; deb88b17 "grants keeps its read of modules until W8"; principles 3 and 7) The indexer keeps + serving the first view `modules` in its current form until grants reads the catalog half, so grants issues new + rights once G's indexer runs; the two move together in the same release as W8. +- **A-355** (G's start; principle 5) Every G part builds from main before any is placed: the watchman's go.mod + requires and replaces the seats it imports (nodebuildimage, nodebuildnode), as every module's go.mod does. +- **A-356** (G's start, the forge; principle 7) G's gitea is built by G's mesh-build-node, which is therefore delivered + before gitea; no lock file is kept for a mesh package that the build runtime exempts. +- **A-357** (§47 kind 6; principles 3 and 7) A package's `calls` names every seat verb its code calls on a module's + behalf, in the `invokes` form (`seat:.`); mesh-sdk's Go package adds `seat:mesh-catalog.registrations`, + `seat:mesh-catalog.revision`, `seat:mesh-catalog.entry` and `seat:mesh-delivery.source`, and the indexer derives an + edge of kind 6 from such a call word against the verb's server exactly as from `invokes`, so every module built + against the SDK is delivered after the running versions that serve its start. +- **A-358** (§47; principle 7) The tool runner keeps `invokes: "*"`, its role of forwarding any call; what its own start + needs comes to it through the SDK's `calls` (A-357), as for every module.