Say what the builder, the indexer and the watchman do since R4g in their comments: no build-agent is asked, no build record moves a fingerprint, no checks-running bucket is mirrored (issue 1887, review round 2 item 6)

This commit is contained in:
2026-10-23 16:47:36 +02:00
parent 52d8b9b753
commit d32ec6b7f8
4 changed files with 6 additions and 5 deletions
@@ -163,7 +163,8 @@ func run(ctx context.Context, getenv func(string) string, logOut io.Writer) erro
}
// **Said once every build module answered a reference, taken away when stopped** (issue 1886, ADR 0522): the
// controller delivers from this builder's keys only while an instance says it writes references. A bucket not there
// yet (the manifest's state not made) is said, and the controller keeps asking build-agent.
// yet (the manifest's state not made) is said, and the controller's plan waits for the keys, named (no build-agent
// is asked since R4g, ADR 0524 §7).
switch kv, err := js.KeyValue(ctx, instancesBucket); {
case errors.Is(err, jetstream.ErrBucketNotFound):
logger.Printf("the bucket %s does not exist yet: the controller is not told that this builder writes references until it starts again", instancesBucket)
@@ -13,7 +13,7 @@ import (
// done key it writes names where its artifacts are (ADR 0498 §1). The references come from the build modules' own pushes,
// so an instance says it only once a step of every build module it calls answered one since it started: a builder beside
// a build module from before R4e says nothing. The controller delivers from the builder's keys only while an instance
// says so, and asks build-agent as before R4e otherwise. The bucket is read by the controller alone, so its name and shape
// says so; since R4g it asks no build-agent, and a module whose key is not yet done waits, named (ADR 0524 §7). The bucket is read by the controller alone, so its name and shape
// are not in mesh-sdk.
const (
instancesBucket = "mesh-delivery-builder_instances"
@@ -388,7 +388,7 @@ func (ix *Indexer) RecomputeAtStart(ctx context.Context) error {
// fillPaths gives every module whose key names no directory (a key written before the indexer learned paths) the one its
// newest build record names, once, by compare-and-set, changing nothing else (issue 1614): the builder needs it, and a
// rarely merged repository would leave it without one for weeks. A key that names a directory is never written here.
// This read of the controller's build records goes in R4g with build-agent.
// It reads the controller's build records for nothing else: since R4g no fingerprint takes a build record (ADR 0530 §1).
func (ix *Indexer) fillPaths(ctx context.Context) error {
if ix.Modules == nil || ix.Builds == nil {
return nil
@@ -1,6 +1,6 @@
// Package watch is the watchman's logic (novox/hq ADR 0433, ADR 0431, issue 1135): it turns the bus's connect and
// disconnect events, the connections request, the builds bucket and the checks-running bucket into presence, pulse and
// stuck keys. It holds no timer: every reaction is an event, a watch entry or a request the caller makes.
// disconnect events, the connections request and the buckets it mirrors (the builds bucket; the controller's
// checks-running bucket went with the build queue in R4g, ADR 0525 §9) into presence, pulse and stuck keys. It holds no timer: every reaction is an event, a watch entry or a request the caller makes.
package watch
import (