DLV-M2: the checker follows the indexer's candidates, modules, manifests, packages and predefined keys and the assigner's placement by first views
ADR 0615 §1 and ADR 0596: the checker invokes the six read tools, consumes their views families and reads none of the six buckets; this ends its direct read of the packages state (the lead's ruling 2). It keeps first-views and findings and announces both as its own. The lead's ruling: an owner that is down never holds the start; the checks, the tries and the hand asks start once every first view is answered, the placement is followed into the toolchain gate once its first view is. firstview.Reader opens a followed state's picture as a process.BucketOpener (the builder uses it too). Tools checker_first_views and checker_first_view_again. Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
This commit is contained in:
@@ -105,6 +105,16 @@ func (r *Reader) Picture(bucket string) *Picture {
|
||||
return r.pics[bucket]
|
||||
}
|
||||
|
||||
// KeyValue opens a followed state's picture by its bus name, where a process opened the bucket (process.BucketOpener,
|
||||
// as buildrun.FollowPlacement takes it); any other bucket is refused, for the reader reads its owners' states by their
|
||||
// first views alone.
|
||||
func (r *Reader) KeyValue(_ context.Context, bucket string) (jetstream.KeyValue, error) {
|
||||
if p := r.Picture(bucket); p != nil {
|
||||
return p, nil
|
||||
}
|
||||
return nil, fmt.Errorf("%s reads %s by its owner's first view alone, and does not follow it", r.Module, bucket)
|
||||
}
|
||||
|
||||
// Followers are the followers, in the order they were added.
|
||||
func (r *Reader) Followers() []*views.Follower {
|
||||
r.mu.Lock()
|
||||
|
||||
Reference in New Issue
Block a user