vrg-release's confirm-main settles on the wrong CD job once vergil-actions' cd-release gains package jobs (vergil-project/vergil-actions#905).
Problem
confirm_main waits with _settled_run_jobs(ctx, run_id, ("release",)) (src/vergil_tooling/lib/release/confirm.py:31). That uses _find_job (:133), which returns the first job whose name contains "release". Consumers call the reusable cd-release, so every job surfaces as release / <job>.
With #905, the reusable workflow adds release / package-matrix, which runs for every repo (with or without [package]) and finishes first, plus release / package-build / <cell> and release / package-sign. The wait can then end before release / release has a conclusion. _verify_release_job then sees an unfinished release job and fails the release falsely. This brings back the race fixed in #1611, fleet-wide, as soon as vergil-actions v2.1 ships #905.
Fix
Settle on the actual release job using the existing leaf-segment matcher _is_release_job (:174), which already handles both release / release (consumers) and cd / release (vergil-actions' own inline job), instead of the substring match. Keep _find_job's substring behavior wherever other callers rely on it (e.g. ("docs",) at :54), or give the settle step a predicate.
Acceptance
Sequencing (load-bearing)
This fix must be released in vergil-tooling before vergil-actions is released with #905. Otherwise any repo's vrg-release can fail confirm-main.
vrg-release's confirm-main settles on the wrong CD job once vergil-actions'cd-releasegains package jobs (vergil-project/vergil-actions#905).Problem
confirm_mainwaits with_settled_run_jobs(ctx, run_id, ("release",))(src/vergil_tooling/lib/release/confirm.py:31). That uses_find_job(:133), which returns the first job whose name contains"release". Consumers call the reusablecd-release, so every job surfaces asrelease / <job>.With #905, the reusable workflow adds
release / package-matrix, which runs for every repo (with or without[package]) and finishes first, plusrelease / package-build / <cell>andrelease / package-sign. The wait can then end beforerelease / releasehas a conclusion._verify_release_jobthen sees an unfinished release job and fails the release falsely. This brings back the race fixed in #1611, fleet-wide, as soon as vergil-actions v2.1 ships #905.Fix
Settle on the actual release job using the existing leaf-segment matcher
_is_release_job(:174), which already handles bothrelease / release(consumers) andcd / release(vergil-actions' own inline job), instead of the substring match. Keep_find_job's substring behavior wherever other callers rely on it (e.g.("docs",)at:54), or give the settle step a predicate.Acceptance
release / package-matrix(completed) comes beforerelease / release(in progress): the settle step keeps waiting, then verifiesrelease / release.Sequencing (load-bearing)
This fix must be released in vergil-tooling before vergil-actions is released with #905. Otherwise any repo's
vrg-releasecan fail confirm-main.