Merge main into L3: pin mesh-sdk main d4c61ee, which holds L3's sdk and the seed's held-as-today fixes (issue 774)
mesh/delivery-group group feat/774-vault-mints-l2 rejected: composed together: the checker's verdict at the members' heads (2199dae4e7d8): ace
mesh/delivery closed: a newer head of the same pull request
mesh/check failed: ace: the check of novox/mesh-host#168 failed: the pin of git.novox.be/novox/mesh-sdk/go at commit d4c61ee8ffd0 is on no pull reques…

This commit is contained in:
2026-10-29 00:11:11 +01:00
5 changed files with 79 additions and 9 deletions
+15
View File
@@ -19,6 +19,7 @@ import (
"encoding/json"
"errors"
"fmt"
"slices"
"sort"
"strings"
"sync"
@@ -112,6 +113,9 @@ type Composer struct {
certified string
said string
refusal string
// held is what the composer's last pass held: each module refused alone, and the node's own ("node") when it could
// compose none (heldNow).
held []string
// doing is what the composer waits on now (waiting), for a running answer to say (issue 1126, T2); its own lock, so
// it is read while c.mu is held.
doingMu sync.Mutex
@@ -635,12 +639,23 @@ func (c *Composer) refused(why string, held map[string]string) {
c.mu.Lock()
same := c.refusal == said
c.refusal = said
c.held = heldModules(held)
if why != "" {
c.held = append(c.held, delivery.HaveNodeWord)
}
c.mu.Unlock()
if !same && c.env.Refused != nil {
c.env.Refused(why, held)
}
}
// heldNow is what the composer's last pass held, sorted.
func (c *Composer) heldNow() []string {
c.mu.Lock()
defer c.mu.Unlock()
return slices.Clone(c.held)
}
// keepRunning is comp with each sealed value the node already runs at the same slot kept, where it opens to the same
// value (delivery.KeepSeals, issue 1126, C1): of what runs (running, the agent's), else of what its module's have says
// it runs (Held). A have written before slots names no slot: its boxes are reused within their own module alone, at a