CAT-NR1: every build narrates its asks of a seat in one place

asked, waiting on the seat every five minutes, stored or refused, as the ask's
phase on its step key, so a publish or a copy that stands still is readable on
the bus. PublishOne and PublishFiles narrate for every build module; the image
copy and the late publish use the same narration.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
This commit is contained in:
2026-11-04 16:05:27 +01:00
parent 1c4739698a
commit 37a1f2be53
6 changed files with 262 additions and 8 deletions
@@ -12,6 +12,7 @@ import (
"context"
"errors"
"fmt"
"git.novox.be/novox/mesh-catalog/modules/mesh-build-go/buildstep"
"io"
"time"
@@ -48,8 +49,10 @@ func (m *Module) LatePublish(ctx context.Context, body []byte) (bool, error) {
}
in := registry.PublishInput{Name: n.Name, Kind: n.Kind, Version: n.Version, Tag: n.Tag, Digest: n.Digest,
Fingerprint: n.Fingerprint, Commit: n.Commit, Transfer: transferName(n.Name, "v"+n.Version, n.Digest)}
sent, err := publish.Publish(ctx, publish.Call(call), seat, in, []publish.Part{{Digest: n.Digest,
Open: func() (io.ReadCloser, error) { return nil, errNotHere }}})
sent, err := buildstep.OnSeat(ctx, seat, "late publish of "+n.Name+" "+n.Version+" at "+n.Digest, func() (publish.Sent, error) {
return publish.Publish(ctx, publish.Call(call), seat, in, []publish.Part{{Digest: n.Digest,
Open: func() (io.ReadCloser, error) { return nil, errNotHere }}})
}, nil)
if err != nil {
return false, fmt.Errorf("the late publish of %s@%s (%s): %w", n.Name, n.Version, n.Digest, err)
}