RD-3: the validator accepts a foundation part's own findings stream
mesh/delivery-group group fix/47-G-reader-release-2 rejected: composed together: the checker's verdict at the members' heads (12ff6ae3438d): integration: mesh-…
mesh/delivery closed: a newer head of the same pull request
mesh/check failed: integration: mesh-delivery-builder/internal/build.TestAnAskTheKeyNamesAndNobodyPutIsPutAtStart: buil… | b57281f5a406 on 2f1b60f2a231

A foundation part keeps its old sections for good, its findings stream
among them; the trunk refused the new indexer manifest's
mesh-delivery-indexer-findings as outside the predefined forms.

Builds: design 47 G §529, A-30, A-146 (hq 618ad2b7)

Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
This commit is contained in:
2026-11-12 03:12:46 +01:00
parent cf2db47e57
commit b57281f5a4
2 changed files with 10 additions and 2 deletions
+5 -2
View File
@@ -5571,12 +5571,15 @@ var streamsKeptUntilMoved = map[string][]string{
"mesh-delivery-forge-bridge": {"forge"}, "mesh-delivery-forge-bridge": {"forge"},
} }
// PredefinedFormProblems refuses each stream a module declares that streamsKeptUntilMoved does not name for it. // PredefinedFormProblems refuses each stream a module declares that streamsKeptUntilMoved does not name for it, but a
// foundation part's.
func PredefinedFormProblems(m catalogue.Manifest) []string { func PredefinedFormProblems(m catalogue.Manifest) []string {
var out []string var out []string
for _, s := range m.Streams { for _, s := range m.Streams {
// A stream that keeps its history is one of the bus's predefined forms (novox/hq ADR 0592 §6). // A stream that keeps its history is one of the bus's predefined forms (novox/hq ADR 0592 §6).
if !s.KeepsHistory() && !slices.Contains(streamsKeptUntilMoved[m.Module], s.Name) { // A foundation part keeps its old sections for good, its streams among them: its findings stream
// `<module>-findings` (design 47 G §529, A-30, A-146).
if !s.KeepsHistory() && !slices.Contains(Foundation, m.Module) && !slices.Contains(streamsKeptUntilMoved[m.Module], s.Name) {
out = append(out, fmt.Sprintf("%s keeps the stream %q, outside the bus's predefined forms: keep it as a state, "+ out = append(out, fmt.Sprintf("%s keeps the stream %q, outside the bus's predefined forms: keep it as a state, "+
"a log or an object store, which the runtime reads for the module's tools and others read by `reads`", m.Module, s.Name)) "a log or an object store, which the runtime reads for the module's tools and others read by `reads`", m.Module, s.Name))
} }
@@ -5111,6 +5111,11 @@ func caseTwoModulesCannotDeclareOneStream(t *testing.T) {
if got := PredefinedFormProblems(catalogue.Manifest{Module: "mesh-mail", Streams: a.Streams}); len(got) != 0 { if got := PredefinedFormProblems(catalogue.Manifest{Module: "mesh-mail", Streams: a.Streams}); len(got) != 0 {
t.Fatalf("a stream kept until it moves was refused: %v", got) t.Fatalf("a stream kept until it moves was refused: %v", got)
} }
// A foundation part keeps its old sections for good: its findings stream is accepted (design 47 G §529, A-30, A-146).
findings := []catalogue.StreamDeclaration{{Name: "mesh-delivery-indexer-findings", Events: []string{"finding-written.*"}}}
if got := PredefinedFormProblems(catalogue.Manifest{Module: "mesh-delivery-indexer", Streams: findings}); len(got) != 0 {
t.Fatalf("a foundation part's findings stream was refused: %v", got)
}
} }
// A seat name meaning two protocols is the failure nobody could diagnose afterwards. // A seat name meaning two protocols is the failure nobody could diagnose afterwards.