issue 974: review 1: a verb's end, a provisioner client's word and a failed key read each ask or retry a look; the silent bucket ages; the acceptance test starts the rollout through the serving wiring

This commit is contained in:
2026-10-17 13:45:41 +02:00
parent 20c8d9454a
commit 9ca2c2bfb3
11 changed files with 313 additions and 31 deletions
+2 -16
View File
@@ -183,12 +183,7 @@ func serve(ctx context.Context) (err error) {
// Open plans move on events (novox/hq ADR 0406 §5, issue 974): a tier is asked on the `built` and the send of the
// tier before it, a walk ends on its machines' reports, a silent machine is a key that expired, and a plan left
// by a replaced controller resumes from the first look, which this asks for. No timer looks every so often.
// The wait for each machine's report is a key on the bus that expires; where the bus will not take it a timer of its
// own for that wait looks instead.
if err := startRolloutSilent(ctx, server.JetStream()); err != nil {
fmt.Printf("plans: the wait for the machines' reports could not be put on the bus (%v); each is looked at by a timer of its own\n", err)
}
startPlanLooks(ctx, open)
startRolloutEvents(ctx, open, server.JetStream())
// And the merge window (novox/hq ADR 0276, ADR 0407): a batch is cut into its walk when the window closes,
// which no merge or outcome says. The window is two keys on the bus that expire and a watcher that hears it;
// nothing polls (issue 973).
@@ -258,16 +253,7 @@ func serve(ctx context.Context) (err error) {
// (novox/hq to-be 45 §9).
checkEvents = bus
// And every walk this controller keeps in a new state, for the delivery it walks (novox/hq ADR 0239).
inventory.PlanSaved = func(_ *inventory.Inventory, p inventory.Plan) {
sayPlanMoved(ctx, bus, open.inventory, p)
// And the plan's next step is looked at (ADR 0406 §5): a build, a send kept or a command's move is followed
// by the look that asks the next tier, in place of the timer that did.
planKept(p)
// A walk ended has taken what it reuses: its merges' check builds go (novox/hq ADR 0350 §5).
if p.WalkSaid == inventory.WalkEnded {
go forgetChecksOfWalk(context.WithoutCancel(ctx), open.inventory, p)
}
}
inventory.PlanSaved = servingPlanSaved(ctx, bus, open)
if err := server.Checks(following{open: open}); err != nil {
return err
}