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