node-tools: a session may wait on the gate's approval and on every asker's asks opening and decided
The operator, 2026-10-30: an Approve must be acted on and known at once, and a session should hear approval requests. Adds mesh-delivery-gate.approval (approved, or approved and not handed past 60 s) and, one family per asker that uses the operator-channel seat, operator-channel.asked.<asker> and operator-channel.decided.<asker>. Named one by one (ADR 0367 §2). Needs mesh-catalog fix/turn-handed-on-approve first: the gate's approval event and the seat's asked event are declared there.
This commit is contained in:
@@ -25,8 +25,17 @@ func TestTheManifestNamesTheFirstFamiliesOneByOne(t *testing.T) {
|
|||||||
if err := json.Unmarshal(raw, &m); err != nil {
|
if err := json.Unmarshal(raw, &m); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
// 2026-10-30, the operator: "an approval given by me must get handled accordingly and you should know about it
|
||||||
|
// immediately" and "you should be able to hook into approval requests": the gate's approval (approved, not handed),
|
||||||
|
// and every asker's asks opening and decided, one family per asker.
|
||||||
want := []string{"mesh-knowledge.reviewed", "mesh-delivery-gate.transition", "gitea.forge.status",
|
want := []string{"mesh-knowledge.reviewed", "mesh-delivery-gate.transition", "gitea.forge.status",
|
||||||
"mesh-controller.checked", "operator-channel.decided.claude-code"}
|
"mesh-controller.checked", "operator-channel.decided.claude-code", "mesh-delivery-gate.approval"}
|
||||||
|
for _, asker := range []string{"mesh-config", "mesh-delivery-assigner", "mesh-delivery-teller", "mesh-grants", "mesh-knowledge", "mesh-mail", "pacman"} {
|
||||||
|
want = append(want, "operator-channel.decided."+asker)
|
||||||
|
}
|
||||||
|
for _, asker := range []string{"claude-code", "mesh-config", "mesh-delivery-assigner", "mesh-delivery-teller", "mesh-grants", "mesh-knowledge", "mesh-mail", "pacman"} {
|
||||||
|
want = append(want, "operator-channel.asked."+asker)
|
||||||
|
}
|
||||||
if m.Module != "node-tools" || !reflect.DeepEqual(m.Waits, want) {
|
if m.Module != "node-tools" || !reflect.DeepEqual(m.Waits, want) {
|
||||||
t.Errorf("%s waits on %v, want %v", m.Module, m.Waits, want)
|
t.Errorf("%s waits on %v, want %v", m.Module, m.Waits, want)
|
||||||
}
|
}
|
||||||
|
|||||||
+17
-1
@@ -10,7 +10,23 @@
|
|||||||
"mesh-delivery-gate.transition",
|
"mesh-delivery-gate.transition",
|
||||||
"gitea.forge.status",
|
"gitea.forge.status",
|
||||||
"mesh-controller.checked",
|
"mesh-controller.checked",
|
||||||
"operator-channel.decided.claude-code"
|
"operator-channel.decided.claude-code",
|
||||||
|
"mesh-delivery-gate.approval",
|
||||||
|
"operator-channel.decided.mesh-config",
|
||||||
|
"operator-channel.decided.mesh-delivery-assigner",
|
||||||
|
"operator-channel.decided.mesh-delivery-teller",
|
||||||
|
"operator-channel.decided.mesh-grants",
|
||||||
|
"operator-channel.decided.mesh-knowledge",
|
||||||
|
"operator-channel.decided.mesh-mail",
|
||||||
|
"operator-channel.decided.pacman",
|
||||||
|
"operator-channel.asked.claude-code",
|
||||||
|
"operator-channel.asked.mesh-config",
|
||||||
|
"operator-channel.asked.mesh-delivery-assigner",
|
||||||
|
"operator-channel.asked.mesh-delivery-teller",
|
||||||
|
"operator-channel.asked.mesh-grants",
|
||||||
|
"operator-channel.asked.mesh-knowledge",
|
||||||
|
"operator-channel.asked.mesh-mail",
|
||||||
|
"operator-channel.asked.pacman"
|
||||||
],
|
],
|
||||||
"provides": [
|
"provides": [
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user