OBS1 (artifact-store-tools, mesh-healers, mesh-vault, mesh-watcher, minio, nfs-server): the finding stream in each manifest
Each of the six declares the stream <module>-findings (finding-written.*, finding-cleared.*, findings-stated.*, 7 days, 16 MiB) and consumes mesh-conditions.findings-asked; the manifest tests that hold consumes say it. The other observers' manifests are written by their own families. Builds: design 47 G §387, §383 Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ
This commit is contained in:
@@ -474,7 +474,7 @@ func TestTheToolsServedAreTheToolsTheManifestNames(t *testing.T) {
|
||||
t.Errorf("invokes %v", m.Invokes)
|
||||
}
|
||||
// ADR 0615: the assigner's wants and the indexer's manifests are asked once and followed by their events, not read.
|
||||
if !reflect.DeepEqual(m.Consumes, []string{"mesh-delivery-assigner.views.wants", "mesh-delivery-indexer.views.manifests"}) ||
|
||||
if !reflect.DeepEqual(m.Consumes, []string{"mesh-delivery-assigner.views.wants", "mesh-delivery-indexer.views.manifests", "mesh-conditions.findings-asked"}) ||
|
||||
slices.Contains(m.Reads, WantsRead) || slices.Contains(m.Reads, ManifestsRead) {
|
||||
t.Errorf("consumes %v, reads %v", m.Consumes, m.Reads)
|
||||
}
|
||||
|
||||
@@ -39,7 +39,8 @@
|
||||
],
|
||||
"consumes": [
|
||||
"mesh-delivery-assigner.views.wants",
|
||||
"mesh-delivery-indexer.views.manifests"
|
||||
"mesh-delivery-indexer.views.manifests",
|
||||
"mesh-conditions.findings-asked"
|
||||
],
|
||||
"state": [
|
||||
"findings"
|
||||
@@ -85,6 +86,14 @@
|
||||
"template": "files/store-address"
|
||||
}
|
||||
],
|
||||
"streams": [
|
||||
{
|
||||
"name": "artifact-store-tools-findings",
|
||||
"events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"],
|
||||
"max-age-days": 7,
|
||||
"max-mib": 16
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"artifacts": [
|
||||
{
|
||||
|
||||
@@ -48,7 +48,7 @@ func TestTheManifestSaysWhatTheCodeDoes(t *testing.T) {
|
||||
got, want []string
|
||||
}{
|
||||
{"emits (healer-acted is the seat's, said on its subject)", m.Emits, nil},
|
||||
{"consumes", m.Consumes, []string{RaisedEvent, ChangedEvent, RecordedEvent}},
|
||||
{"consumes", m.Consumes, []string{RaisedEvent, ChangedEvent, RecordedEvent, "mesh-conditions.findings-asked"}},
|
||||
{"invokes", m.Invokes, []string{"seat:mesh-hand-acts.hand-act", "seat:mesh-hand-acts.hand-acts"}},
|
||||
{"reads", m.Reads, []string{ConditionsRead}},
|
||||
} {
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
"consumes": [
|
||||
"mesh-conditions.condition-raised",
|
||||
"mesh-conditions.condition-changed",
|
||||
"mesh-hand-acts.act-recorded"
|
||||
"mesh-hand-acts.act-recorded",
|
||||
"mesh-conditions.findings-asked"
|
||||
],
|
||||
"invokes": [
|
||||
"seat:mesh-hand-acts.hand-act",
|
||||
@@ -61,6 +62,14 @@
|
||||
"unknown": "program"
|
||||
}
|
||||
],
|
||||
"streams": [
|
||||
{
|
||||
"name": "mesh-healers-findings",
|
||||
"events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"],
|
||||
"max-age-days": 7,
|
||||
"max-mib": 16
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"artifacts": [
|
||||
{
|
||||
|
||||
@@ -162,6 +162,14 @@
|
||||
]
|
||||
}
|
||||
],
|
||||
"streams": [
|
||||
{
|
||||
"name": "mesh-vault-findings",
|
||||
"events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"],
|
||||
"max-age-days": 7,
|
||||
"max-mib": 16
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"artifacts": [
|
||||
{
|
||||
@@ -253,6 +261,7 @@
|
||||
}
|
||||
},
|
||||
"consumes": [
|
||||
"mesh-delivery-assigner.views.assignments"
|
||||
"mesh-delivery-assigner.views.assignments",
|
||||
"mesh-conditions.findings-asked"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ func TestTheManifestSaysWhatTheCodeDoes(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
// Where the bus runs is the assigner's seat-holders, asked once and followed by its events (ADR 0615), never read.
|
||||
if !reflect.DeepEqual(m.Consumes, []string{"mesh-self-check.checked", assignerModule + ".views." + mesh.StateSeatHolders}) {
|
||||
if !reflect.DeepEqual(m.Consumes, []string{"mesh-self-check.checked", assignerModule + ".views." + mesh.StateSeatHolders, "mesh-conditions.findings-asked"}) {
|
||||
t.Fatalf("consumes %v", m.Consumes)
|
||||
}
|
||||
if !reflect.DeepEqual(m.Invokes, []string{SeatHoldersTool, m.Module + ".watcher_ping", "seat:mesh-hand-acts.hand-act"}) || len(m.Reads) != 0 {
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
"slug": "watch",
|
||||
"consumes": [
|
||||
"mesh-self-check.checked",
|
||||
"mesh-delivery-assigner.views.seat-holders"
|
||||
"mesh-delivery-assigner.views.seat-holders",
|
||||
"mesh-conditions.findings-asked"
|
||||
],
|
||||
"invokes": [
|
||||
"mesh-delivery-assigner.assigner_read_seat_holders",
|
||||
@@ -53,6 +54,14 @@
|
||||
"template": "files/settings.json"
|
||||
}
|
||||
],
|
||||
"streams": [
|
||||
{
|
||||
"name": "mesh-watcher-findings",
|
||||
"events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"],
|
||||
"max-age-days": 7,
|
||||
"max-mib": 16
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"artifacts": [
|
||||
{
|
||||
|
||||
@@ -41,7 +41,7 @@ func TestManifestClaimsTheSeat(t *testing.T) {
|
||||
}
|
||||
invokes, _ := m["invokes"].([]any)
|
||||
consumes, _ := m["consumes"].([]any)
|
||||
if _, reads := m["reads"]; reads || len(invokes) != 2 || invokes[0] != SeatHoldersTool || invokes[1] != "seat:mesh-hand-acts.hand-act" || len(consumes) != 1 || consumes[0] != assignerModule+".views."+mesh.StateSeatHolders {
|
||||
if _, reads := m["reads"]; reads || len(invokes) != 2 || invokes[0] != SeatHoldersTool || invokes[1] != "seat:mesh-hand-acts.hand-act" || len(consumes) != 2 || consumes[0] != assignerModule+".views."+mesh.StateSeatHolders || consumes[1] != "mesh-conditions.findings-asked" {
|
||||
t.Fatalf("reads %v, invokes %v, consumes %v: it asks the assigner's seat-holders once and follows its events (ADR 0615)", m["reads"], invokes, consumes)
|
||||
}
|
||||
var goBundle map[string]any
|
||||
|
||||
@@ -44,7 +44,8 @@
|
||||
"seat:mesh-hand-acts.hand-act"
|
||||
],
|
||||
"consumes": [
|
||||
"mesh-delivery-assigner.views.seat-holders"
|
||||
"mesh-delivery-assigner.views.seat-holders",
|
||||
"mesh-conditions.findings-asked"
|
||||
],
|
||||
"state": [
|
||||
"findings"
|
||||
@@ -192,6 +193,14 @@
|
||||
"package": "minio-client"
|
||||
}
|
||||
],
|
||||
"streams": [
|
||||
{
|
||||
"name": "minio-findings",
|
||||
"events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"],
|
||||
"max-age-days": 7,
|
||||
"max-mib": 16
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"artifacts": [
|
||||
{
|
||||
|
||||
@@ -152,7 +152,7 @@ func TestTheManifestCarriesGrantsTheRosterTheWantsAndTheRemovalOrder(t *testing.
|
||||
if len(full.Reads) != 2 || full.Reads[0] != diskreadings.ReadingsRead || full.Reads[1] != MountsState {
|
||||
t.Errorf("reads: %v", full.Reads)
|
||||
}
|
||||
if len(full.Invokes) != 2 || full.Invokes[0] != SeatHoldersTool || full.Invokes[1] != "seat:mesh-hand-acts.hand-act" || len(full.Consumes) != 1 || full.Consumes[0] != assignerModule+".views."+mesh.StateSeatHolders {
|
||||
if len(full.Invokes) != 2 || full.Invokes[0] != SeatHoldersTool || full.Invokes[1] != "seat:mesh-hand-acts.hand-act" || len(full.Consumes) != 2 || full.Consumes[0] != assignerModule+".views."+mesh.StateSeatHolders || full.Consumes[1] != "mesh-conditions.findings-asked" {
|
||||
t.Errorf("invokes %v, consumes %v", full.Invokes, full.Consumes)
|
||||
}
|
||||
roster := full.Facts["machines"]
|
||||
|
||||
@@ -172,6 +172,14 @@
|
||||
"template": "files/shares.conf"
|
||||
}
|
||||
],
|
||||
"streams": [
|
||||
{
|
||||
"name": "nfs-server-findings",
|
||||
"events": ["finding-written.*", "finding-cleared.*", "findings-stated.*"],
|
||||
"max-age-days": 7,
|
||||
"max-mib": 16
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"artifacts": [
|
||||
{
|
||||
@@ -197,6 +205,7 @@
|
||||
"seat:mesh-hand-acts.hand-act"
|
||||
],
|
||||
"consumes": [
|
||||
"mesh-delivery-assigner.views.seat-holders"
|
||||
"mesh-delivery-assigner.views.seat-holders",
|
||||
"mesh-conditions.findings-asked"
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user