Grant a node's engine any verb and event of its node seat on its own node, so a verb added to the contract needs no grants release first (issue 774)
The grants part composed the engine's subscriptions from catalogue.EngineVerbs at its own mesh-sdk pin, so mesh-host #184's optional verb composition was refused on every node and every engine reopened its link every four minutes. Quick fix: re-pin the grants part. Thorough fix (this): the seat's subjects on the engine's node, any verb, as a module answers mesh.mod.<module>.tool.>; callers stay granted per verb.
This commit is contained in:
@@ -320,6 +320,21 @@ func TestTheCopiedComposerComposesAsTheControllers(t *testing.T) {
|
||||
!MaySubscribe(perms, "$SRV.INFO."+EngineSeat) || MaySubscribe(perms, "mesh.seat."+EngineSeat+".tool.hand-over.two") {
|
||||
t.Errorf("node one hears %v", perms.Subscribe)
|
||||
}
|
||||
// A verb or an event the seat's contract gains later is its engine's on its own node without a release of
|
||||
// the grants part (2026-10-31: mesh-host #184's optional verb composition was refused on every node, the
|
||||
// grants part's mesh-sdk pin predating it): the seat's subjects on its node, any verb, any event.
|
||||
for _, verb := range []string{"composition", "compose", "a-verb-added-later"} {
|
||||
if !MaySubscribe(perms, "mesh.seat."+EngineSeat+".tool."+verb+".one") ||
|
||||
!MaySubscribe(perms, "mesh.seat."+EngineSeat+".call."+verb+".one.messenger~one") ||
|
||||
MaySubscribe(perms, "mesh.seat."+EngineSeat+".tool."+verb+".two") ||
|
||||
MaySubscribe(perms, "mesh.seat."+EngineSeat+".call."+verb+".two.messenger~one") {
|
||||
t.Errorf("node one does not answer %s on its own node alone: %v", verb, perms.Subscribe)
|
||||
}
|
||||
}
|
||||
if !MayPublish(perms, "mesh.seat."+EngineSeat+".event.an-event-added-later.one") ||
|
||||
MayPublish(perms, "mesh.seat."+EngineSeat+".event.an-event-added-later.two") {
|
||||
t.Errorf("node one does not say a later event on its own node alone: %v", perms.Publish)
|
||||
}
|
||||
case u.Kind == KindNodeTools || u.Module == "messenger":
|
||||
if !MayPublish(perms, "mesh.seat."+EngineSeat+".tool.root-free.one") {
|
||||
t.Errorf("%s cannot call one's root-free", u.Username())
|
||||
|
||||
Reference in New Issue
Block a user