Mark the uplink seat's verbs optional, the one mechanism, and keep every optional verb out of the seat row
mesh/merge-gate pass: builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step; every machine composes with the change as it…
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery-group group feat/node-uplink-verbs ready: every member ready, and composed together they pass
mesh/delivery superseded: a newer head of the same pull request

Staged duplicated Verb.Optional. Optional, though, was still seeded into the row,
where the mark is not kept: read back, the delivery seat's checks verb and these
would be required of every holder, and an older controller would require them
too. Stored leaves optional verbs out, and the working set takes them from the
compiled seat, still optional.
This commit is contained in:
jochen
2026-10-07 20:18:05 +02:00
parent be8a9fd00f
commit 3e9a38f81b
5 changed files with 76 additions and 52 deletions
+1 -1
View File
@@ -62,7 +62,7 @@ func (i *Inventory) Seats(ctx context.Context) ([]catalogue.Seat, error) {
func (i *Inventory) SeedSeats(ctx context.Context, defaults []catalogue.Seat) (int, error) {
var added int
for _, s := range defaults {
// A verb still staged is never stored (catalogue.Seat.Staged).
// An optional verb is never stored (catalogue.Verb.Optional).
s = s.Stored()
accepts, emits, serves, err := protocolJSON(s)
if err != nil {
+8 -5
View File
@@ -157,9 +157,10 @@ func TestTheControllersVerbsInTheRowAreTheBinarys(t *testing.T) {
}
}
// A verb still staged (novox/hq ADR 0241) is never in the store's row: a controller older than it reads
// the row and would require what no holder of its time serves.
func TestAStagedVerbIsNotSeeded(t *testing.T) {
// An optional verb (catalogue.Verb.Optional; novox/hq ADR 0241, ADR 0239) is never in the store's row: a
// controller older than it reads the row and would require what no holder of its time serves, and the mark
// itself is not stored, so the row would read back required.
func TestAnOptionalVerbIsNotSeeded(t *testing.T) {
inv := ForTest(t)
if _, err := inv.SeedSeats(t.Context(), catalogue.DefaultSeats()); err != nil {
t.Fatal(err)
@@ -173,8 +174,10 @@ func TestAStagedVerbIsNotSeeded(t *testing.T) {
t.Fatal(err)
}
for _, s := range got {
if s.Name == "node-uplink" && len(s.Serves) != 0 {
t.Fatalf("the row keeps %v", s.Serves)
for _, v := range s.Serves {
if (s.Name == "node-uplink") || (s.Name == catalogue.DeliverySeat && v.Name == "checks") {
t.Fatalf("%s's row keeps the optional %s", s.Name, v.Name)
}
}
}
}