diff --git a/03-DESIGN/01-to-be/16-module-coverage.md b/03-DESIGN/01-to-be/16-module-coverage.md index e2a2642..cedef65 100644 --- a/03-DESIGN/01-to-be/16-module-coverage.md +++ b/03-DESIGN/01-to-be/16-module-coverage.md @@ -50,17 +50,34 @@ is `extends` chains, which were doing inheritance and are better as separate mod ## Missing, and what each would take -Ordered by how many modules need it. +Ordered by how many modules need it. The largest entry turned out not to be a gap at all, which +is left in place rather than deleted: the first framing of it was wrong in an instructive way, and +a checklist that quietly loses its biggest item reads as though nobody looked. -### Tool servers — 56 modules +### Tool servers — 56 modules — *not a gap* -**The largest single gap.** Over half the modules ship a `tools/` directory that becomes tools an -agent can call on that node. Nothing in the new manifest says *this module offers tools*. +Over half the modules ship a `tools/` directory that becomes tools an agent can call on that node. +This was written up as the largest single gap. **It is expressible with what exists**, and the +first framing of it was wrong in a way worth keeping: *a module provides `tools`, the session +requires them* does not work, because a requirement has exactly one answer and 56 modules offering +tools would be 56 answers to one question. -A module can already run the server — it is a container or a service. What is missing is the -convention that makes it reachable: something has to know the tools exist and route to them. That -is plausibly not a manifest feature at all but a **provision** — a module provides `tools`, the -session on that node requires them — which would need no new vocabulary. **Not yet decided.** +Turn it around and it fits exactly. The session **provides** `tool-host`; every module offering +tools **requires** it and **contributes** where its tools are. Many-to-one is what `contributes` +has always been, and the session receives all of them in one file: + +``` +given: { from: gitea, values: { at: … } } + { from: minio, values: { at: … } } + { from: umami, values: { at: … } } +``` + +Verified by resolving it, not by reading the code. It also only became possible today: until +[`022`](../../04-ISSUES/022-one-credential-per-node-per-provision-not-per-module/00-report.md) was +fixed, several modules on one node requiring the same thing was refused outright. + +What remains is not vocabulary but a decision about **what a tool server is** — a container the +module already runs, and what the session does with the list. That is work, not a missing shape. ### Schema migrations — 14 modules