R3-3: the node's own composer has no path without an entry call; its tests compose from the catalog half
Builds: design 47 G §628, §421, A-312, A-317 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h
This commit is contained in:
@@ -134,7 +134,7 @@ type Env struct {
|
||||
SeatListChanged <-chan struct{}
|
||||
// Entry asks the seat mesh-catalog's verb `entry` of a fingerprint (meshcatalogclient.EntryVerb), in the engine's own name.
|
||||
// Set, the composer reads the catalog half by the fingerprints its wants and the runnings it heard name and nothing else of
|
||||
// the indexer's or the builder's states (design 47 G §421, §628); nil reads the indexer's states, as the shadow does.
|
||||
// the indexer's or the builder's states (design 47 G §421, §628); a composer is made with it.
|
||||
Entry meshcatalogclient.Call
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ type Composer struct {
|
||||
notTaken map[string]string
|
||||
// unmadeSaid is, by module, the stable part of the reason its last journal line said (without where the picture stands).
|
||||
unmadeSaid map[string]string
|
||||
// entries is the cache of entries asked by fingerprint, nil where the composer reads the indexer's states; keptEnt the entries
|
||||
// entries is the cache of entries asked by fingerprint; keptEnt the entries
|
||||
// held from the composition state or an answer, keptWantVal the wants it keeps there and keptWants the modules whose want
|
||||
// stands from that state alone until the live read of the wants answers (entries.go). Under mu; keptWrite orders the writes.
|
||||
entries *meshcatalogclient.Entries
|
||||
@@ -303,7 +303,7 @@ type Pass struct {
|
||||
// composed at (frombus.Scope.Holds), for LastHeld's words.
|
||||
holds map[string]compose.Hold
|
||||
// Unmade is each module wanted that the pass composed no composition of at its want's fp, with why: the want not
|
||||
// taken, the module not assigned here, no manifest in the composer's picture of the indexer's modules (and where that
|
||||
// taken, the module not assigned here, no entry of its build in the composer's picture of the catalog half (and where that
|
||||
// picture stands), or what the composition left it out for. A module held alone is in Held, not here. Said once per
|
||||
// change as a journal line, so a want that waits for the composer says what for.
|
||||
Unmade map[string]string `json:"unmade,omitempty"`
|
||||
@@ -1557,7 +1557,7 @@ func (r reader) Manifest(ctx context.Context, digest string) ([]byte, error) {
|
||||
if ok {
|
||||
return raw, nil
|
||||
}
|
||||
if r.c.byEntries() && !r.c.forCandidates {
|
||||
if !r.c.forCandidates {
|
||||
return nil, fmt.Errorf("the catalog half's entries hold no manifest %s", digest)
|
||||
}
|
||||
key, err := meshcatalogclient.ManifestsKey(digest)
|
||||
@@ -2195,7 +2195,7 @@ func (c *Composer) unmadeOf(fps map[string]string, comps map[string]engcomp.Comp
|
||||
continue
|
||||
}
|
||||
if made[module] == fp {
|
||||
// Composed, but from the indexer's manifest and not a build: said, since what it names no artifacts of is no module
|
||||
// Composed, but from the entry's manifest and not a build: said, since what it names no artifacts of is no module
|
||||
// that runs.
|
||||
if w, ok := fromManifest[module]; ok {
|
||||
out[module], keys[module] = w, fp+" "+w
|
||||
@@ -2211,18 +2211,18 @@ func (c *Composer) unmadeOf(fps map[string]string, comps map[string]engcomp.Comp
|
||||
why = fmt.Sprintf("the seat's assignment places no %s on this node (%d modules placed)", module, len(own.Modules))
|
||||
key = "not placed"
|
||||
case !in:
|
||||
why = fmt.Sprintf("no manifest in the composer's picture of the indexer's modules (%d modules)",
|
||||
why = fmt.Sprintf("no entry of its build in the composer's picture of the catalog half (%d modules)",
|
||||
len(c.modules))
|
||||
key = "no manifest"
|
||||
case slices.Contains(skipped, module):
|
||||
why = "the composition skipped it: the declaration gives it no fingerprint (indexer's picture: " + m.Fp2 + ")"
|
||||
why = "the composition skipped it: the declaration gives it no fingerprint (the composer's picture: " + m.Fp2 + ")"
|
||||
key = why
|
||||
default:
|
||||
if at := made[module]; at != "" {
|
||||
why = fmt.Sprintf("the pass composed it at %s and the want names %s (indexer's picture: %s)", at, fp, m.Fp2)
|
||||
why = fmt.Sprintf("the pass composed it at %s and the want names %s (the composer's picture: %s)", at, fp, m.Fp2)
|
||||
key = "composed at " + at
|
||||
} else {
|
||||
why = fmt.Sprintf("the composition made nothing of it at %s (indexer's picture: %s)", fp, m.Fp2)
|
||||
why = fmt.Sprintf("the composition made nothing of it at %s (the composer's picture: %s)", fp, m.Fp2)
|
||||
key = "made nothing at " + m.Fp2
|
||||
}
|
||||
}
|
||||
@@ -2444,7 +2444,7 @@ func (c *Composer) EngineModule() string {
|
||||
// stands says the want of a module stands for its placement in the early pass of a start: its want is a kept one the live read has
|
||||
// not answered, and the entry of its build is kept (design 47 G A-117).
|
||||
func (c *Composer) stands(module string, w meshwants.WantsByWantNodeModuleValue) bool {
|
||||
if !c.byEntries() || !c.keptWants[module] {
|
||||
if !c.keptWants[module] {
|
||||
return false
|
||||
}
|
||||
k, ok := c.keptEnt[w.Fp]
|
||||
|
||||
Reference in New Issue
Block a user