mesh-config and nats consume the seat mesh-catalog's manifest-accepted, not the indexer's (B7d finding 1; ADR 0634 §1; issue 1966)
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
This commit is contained in:
@@ -67,7 +67,7 @@ them, newest first; with `proposal`, one read whole, with whether the router's a
|
||||
- The seat verb `renames` answers the open renames and the nodes holding each open (the checker asks it); the tools
|
||||
`config_renames` (all, with the closed windows), `config_rename_again` (move by hand after a refusal) and
|
||||
`config_rename_close` (drop a node by hand, a hand act).
|
||||
- On the indexer's `manifest-accepted` it asks the indexer's `indexer_config_readers`; an indexer that does not serve
|
||||
- On the seat mesh-catalog's `manifest-accepted` it asks the indexer's `indexer_config_readers`; an indexer that does not serve
|
||||
it answers "not known" and nothing retires. A value (or secret) nobody reads is **retiring** once no node runs a
|
||||
build that reads it: `retiring` is said and the operator is asked once; the value is removed only on the Approve
|
||||
(a secret through the seat mesh-vault's `retire`, with a hand act naming node, module, name and ask), `retired`
|
||||
|
||||
@@ -238,7 +238,7 @@ func hearing(c *Config) {
|
||||
|
||||
// hearingDelivery takes the delivery parts' words that close a rename window or retire a value, each asked again until
|
||||
// the runtime takes the subscription: the status view's `delivered`, the node-engine seat's `manifest-reads-changed`
|
||||
// (a returning node-engine; design 32) and the indexer's `manifest-accepted`. At its start it judges the windows once,
|
||||
// (a returning node-engine; design 32) and the seat mesh-catalog's `manifest-accepted`. At its start it judges the windows once,
|
||||
// since an event said while this module was down is not said again.
|
||||
func hearingDelivery(c *Config) {
|
||||
<-stdio.Served()
|
||||
@@ -258,7 +258,7 @@ func hearingDelivery(c *Config) {
|
||||
}
|
||||
return c.Windows(b.Node)
|
||||
}},
|
||||
{"mesh-delivery-indexer.manifest-accepted", func(e stdio.Envelope) []string {
|
||||
{"mesh-catalog.manifest-accepted", func(e stdio.Envelope) []string {
|
||||
var b struct {
|
||||
Module string `json:"module"`
|
||||
}
|
||||
|
||||
@@ -775,7 +775,7 @@ func TestConfigWholeRenamesAndRetiresAgainstTheBus(t *testing.T) {
|
||||
p2.mu.Lock()
|
||||
p2.readers = []ReaderRow{{Module: "radio", Key: "band", Kind: KindValue, Readers: []string{}}}
|
||||
p2.mu.Unlock()
|
||||
p2.event("mesh-delivery-indexer.manifest-accepted", map[string]any{"module": "radio"})
|
||||
p2.event("mesh-catalog.manifest-accepted", map[string]any{"module": "radio"})
|
||||
eventually(t, "the retirement waits on g14", func() bool {
|
||||
raw, ok := p2.get(RetiringState, "radio.band")
|
||||
return ok && strings.Contains(string(raw), RetireDraining)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"gitea.forge.pull-request.closed",
|
||||
"mesh-delivery-view.delivered",
|
||||
"node-engine.manifest-reads-changed",
|
||||
"mesh-delivery-indexer.manifest-accepted",
|
||||
"mesh-catalog.manifest-accepted",
|
||||
"mesh-delivery-indexer.views.modules",
|
||||
"mesh-delivery-indexer.views.manifests",
|
||||
"mesh-delivery-indexer.views.predefined",
|
||||
|
||||
@@ -52,8 +52,8 @@ func AcceptedOf(body []byte) (keeper.Accepted, error) {
|
||||
return keeper.Accepted{Module: a.Module, Digest: a.Digest, Revision: a.Revision, BusState: a.BusState}, nil
|
||||
}
|
||||
|
||||
// AcceptedSubject is the indexer's manifest-accepted on the shared events stream.
|
||||
var AcceptedSubject = "mesh.mod." + keeper.FirstViewOwner + ".event." + delivery.ManifestAcceptedEvent
|
||||
// AcceptedSubject is the seat mesh-catalog's manifest-accepted on the shared events stream.
|
||||
var AcceptedSubject = "mesh.seat.mesh-catalog.event." + delivery.ManifestAcceptedEvent
|
||||
|
||||
// The router's records of asks, read under this module's own name (ADR 0259 §3), as the mail sender reads them.
|
||||
const asksBucket = "messenger_asks"
|
||||
|
||||
@@ -184,8 +184,11 @@ func TestTheBussManifestMountsItsProgramsIntoTheUpstreamImage(t *testing.T) {
|
||||
if len(nm.Claims) != 1 || nm.Claims[0].Name != "mesh-broker" || !slices.Equal(nm.Claims[0].Serves, ReadingVerbs) {
|
||||
t.Errorf("claims are %+v: mesh-broker, serving its reading verbs %v alone", nm.Claims, ReadingVerbs)
|
||||
}
|
||||
if !slices.Equal(nm.Consumes, []string{"mesh-delivery-indexer.manifest-accepted"}) {
|
||||
t.Errorf("consumes %v: the indexer's manifest-accepted alone (ADR 0595 §4)", nm.Consumes)
|
||||
if !slices.Equal(nm.Consumes, []string{"mesh-catalog.manifest-accepted"}) {
|
||||
t.Errorf("consumes %v: the seat mesh-catalog's manifest-accepted alone (ADR 0595 §4)", nm.Consumes)
|
||||
}
|
||||
if AcceptedSubject != "mesh.seat.mesh-catalog.event.manifest-accepted" {
|
||||
t.Errorf("the keeper's durable consumer filters on %s, not on the seat mesh-catalog's event", AcceptedSubject)
|
||||
}
|
||||
for _, want := range []string{"mesh-delivery-indexer.indexer_bus_state", "seat:mesh-hand-acts.hand-act"} {
|
||||
if !slices.Contains(nm.Invokes, want) {
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
"mesh-delivery-indexer.indexer_bus_state"
|
||||
],
|
||||
"consumes": [
|
||||
"mesh-delivery-indexer.manifest-accepted"
|
||||
"mesh-catalog.manifest-accepted"
|
||||
],
|
||||
"uses": [
|
||||
"operator-channel"
|
||||
|
||||
Reference in New Issue
Block a user