TLS-1, TLS-2, TLS-3: the runner declares its own secret ledgers, refuses a bundle tool named as a ledger repair, and states the capabilities of its calls in its PING (issue 1966)

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
This commit is contained in:
2026-11-04 11:40:03 +01:00
parent 84ede95c4a
commit 8b1ab467a9
8 changed files with 153 additions and 6 deletions
+14 -1
View File
@@ -308,7 +308,7 @@ func Run(conn *bus.Conn, served []Served, envs map[string]map[string]string, log
announced, err := announce.Serve(conn, announce.Service{
Name: conn.Module(), ID: instanceOf(conn),
Description: "the mesh's tool runtime on " + node + ": every assigned module's tools and the seats they hold",
Metadata: map[string]string{"node": node},
Metadata: map[string]string{"node": node, announce.Capabilities: strings.Join(CallCapabilities(), ",")},
}, func() []announce.Endpoint { return endpointsOf(conn, r.own(), r.registrations(), r.modules) })
if err != nil {
logf("[mesh-tools] cannot announce what it serves: %v", err)
@@ -396,6 +396,19 @@ func (r *runner) load(s Served) *loadedModule {
fail(err.Error())
continue
}
// A tool named as one of the runner's ledger repairs would be taken for it, or hide it: refused at the load, naming both
// (ADR 0597 §10).
clashed := ""
for _, reg := range child.Registrations {
if clashed == "" && r.isServed[reg.Module] {
clashed = repairClash(reg.Module, reg.Tools)
}
}
if clashed != "" {
child.Stop()
fail(clashed)
continue
}
l.children = append(l.children, child.Stop)
for _, reg := range child.Registrations {
got := registration{module: reg.Module, owner: module, tools: reg.Tools}