fix(ci): explicit nightly tips skip old-tip recovery

TE
6d ago
+7-1

Explicit-SHA nightly tick dispatches now reach promotion without first recovering the current nightly branch's cancelled run. Run 41260507314 was waiting in that recovery step before it could request the newer source. Recovery's API reads use the job's rate-limit wrapper, which can wait for an hour; continue-on-error only helps after the step exits.

Leo: "why are changes to these not in my current nightly".

The recovery step now runs only when inputs.sha is empty, matching the automatic tick's serialized recovery path. Automatic recovery, started builds and publication ordering are unchanged. Prior art: #29750 rescues runner stalls; #25484 supplies the rate-limit wait; #25195 gives explicit SHA dispatches independent concurrency groups. This closes the remaining old-tip recovery dependency.

Observed / Not run

Observed: the workflow's unconditional recovery step and its hour-long read retry budget. The existing cancelled-tip workflow test now requires the explicit-SHA guard. Fleet verification is pending; no local tests or app build were run. This changes only control-step admission, so incremental build and shared compile caches are unaffected.

Changelog

none

Agent session: agent session
🤖 Generated with Claude Code