Resuming a release run
Resuming a release run
Repeating stado release submit resumes the same release run. An initial
platform submission keeps its original stable job identity and output URI.
Before replacing a failed platform attempt, the coordinator reads the original
job: queued, running, completed, and uploaded jobs keep that identity and their
existing output. A publication or storage-read failure does not start another
build. A failed job also keeps its identity when its durable build receipt says
passed: the bootstrap's upload can fail after compilation and qualification
succeed, while the native finalizer subsequently preserves the output.
If canonical output is missing, resumption reads the retained receipt from the
recorded builder through Stado. It verifies the receipt's run, job, product,
version, platform, builder, source and manifest bindings, then asks that builder's
installed Stado to upload its retained command log, archive and receipt to both
the attempt and canonical output locations. The receipt is uploaded last;
publication checks the storage write receipts, reads the canonical receipt back,
and verifies the actual archive's SHA-256 before using it.
A mismatch returns release job <JOB> returned a receipt that does not match this run: <FIELD> is "<RECEIPT>", not "<EXPECTED>"; …, naming every field that
disagrees, an absent artifact with the archive's digest, and a status other than
passed with the failure the receipt states. A missing archive returns release job omitted archive. Neither replaces a passed build.
The original job keeps its recorded terminal state and cause; recovery does not
rewrite that history.
The worker also checks for its own exact completed output before executing a replayed request. It reuses a passed receipt only when the immutable request, including its inputs and secret references, matches and the retained archive still has the recorded size and SHA-256. That replay returns the existing build instead of running the compiler again.
The stored platform request fixes its builder and input archives. Resumption
checks that request against the release's source and manifest, preserves its
exact bytes, and uses the already-staged inputs instead of fetching them again.
An existing queue plan retains its recorded consumer and does not require a
new live-builder selection. If no queue plan exists yet, the saved builder
must still pass normal admission; another machine is not silently selected.
An altered request returns immutable queue object differs: PATH without
overwriting the saved request or creating a replacement build.
Source: this website