ADR 0593 §7, §9: the checker asks compose-candidate of each placed node in parallel within its own setting compose-answer-bound (60 s); a refusal fails the check naming node and module, a silent, unready or unreachable node passes with "not composed on that node: no answer". A group with a node-engine member is composed by the composer at that head on the Go build seat over each node's input. The wait on the assigner's compositions goes, and the checker invokes the one engine verb it needs. Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
29 lines
941 B
Go
29 lines
941 B
Go
package check
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"git.novox.be/novox/mesh-sdk/go/delivery"
|
|
)
|
|
|
|
// withComposition is v with the check's composition taken in: a failed one fails the check, naming its machine.
|
|
func withComposition(v *delivery.Verdict, comp delivery.CompositionVerdict) {
|
|
v.Composition = comp.Composition()
|
|
v.Took.Composition = comp.Took
|
|
if comp.State == delivery.CompositionPass && len(comp.Warnings) > 0 && v.Composition != nil {
|
|
v.Composition.Words = strings.Join(comp.Warnings, "; ") // passed with a warning (ADR 0593 §9)
|
|
}
|
|
if comp.State == delivery.CompositionFail {
|
|
machine := comp.Machine
|
|
if machine == "" {
|
|
machine = "the composition"
|
|
}
|
|
f := delivery.FailedFirst{Machine: machine, Words: comp.Words}
|
|
if v.State == delivery.VerdictFail {
|
|
addFailure(v, f) // the tests failed too: the composition is named after them (the operator, 2026-11-02)
|
|
return
|
|
}
|
|
v.State, v.Failed = delivery.VerdictFail, f
|
|
}
|
|
}
|