mesh/delivery merged: source.main moved to novox/mesh-host@6e461bd24aa5
mesh/check being carried to ef41fa2e2796 on 6e461bd24aa5 | from 7c483da93a03
compose.CompositionsHolding returns the modules the declaration leaves out for a claim that cannot be held or a refused credential; frombus composeEach holds each with those words, so the node-engine keeps what it handed of the module (no stop of a running module), the candidate answer and the check's sandbox name it refused, and the rest composes. CredentialsNeeded asks nothing for a held module. Resolve and checkClaims move to a test helper (production uses ResolveHolding and holdClaims); a pass refused anyway names a held module's reason among the others. Quick fix: Declared.Held read in the composer only. Thorough, chosen: the same held words reach every reader of the composition (selfcompose, ComposeSent, the candidate answer) through composeEach's one hold path. Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
36 lines
1.0 KiB
Go
36 lines
1.0 KiB
Go
package resolution
|
|
|
|
import (
|
|
"sort"
|
|
|
|
mcat "git.novox.be/novox/mesh-sdk/go/catalogue"
|
|
)
|
|
|
|
// Resolve is ResolveHolding for a test that wants a claim problem as a refusal of the whole set, as before issue 1966.
|
|
func Resolve(catalogue map[string]mcat.Manifest, assigned []string, node mcat.Node, world mcat.World) (mcat.Resolution, error) {
|
|
got, held, err := ResolveHolding(catalogue, assigned, node, world)
|
|
if err != nil {
|
|
return mcat.Resolution{}, err
|
|
}
|
|
if len(held) > 0 {
|
|
var problems []string
|
|
for _, why := range held {
|
|
problems = append(problems, why)
|
|
}
|
|
sort.Strings(problems)
|
|
return mcat.Resolution{}, &Refusal{Problems: problems}
|
|
}
|
|
return got, nil
|
|
}
|
|
|
|
// checkClaims is holdClaims with the problems as a list.
|
|
func checkClaims(modules []mcat.Manifest, node mcat.Node, elsewhere []mcat.Held, holdings []mcat.Held) ([]mcat.Held, []string) {
|
|
held, why := holdClaims(modules, node, elsewhere, holdings)
|
|
var problems []string
|
|
for _, w := range why {
|
|
problems = append(problems, w)
|
|
}
|
|
sort.Strings(problems)
|
|
return held, problems
|
|
}
|