Files
pulse/.github/workflows/retry-release-convergence.yml
pulse-triage[bot] 6f3c436121 Stop retrying unchanged credential blocks
A committed release with an unchanged operator-owned containment failure cannot converge through unattended retries. Classify that evidence without weakening the block, and rearm only when the relevant private inputs or public controls change.

Change-source: pulse-maintainer
2026-09-04 00:14:40 +01:00

70 lines
2.3 KiB
YAML

name: Retry Release Convergence
run-name: Reconcile release convergence debt
# A committed release is never returned to draft because a mutable surface is
# temporarily unavailable. Re-run current controls, or dispatch them afresh
# when the failed run predates a repair, so the complete convergence workflow
# reacquires the global lease and replays every idempotent surface. Successful
# surfaces are safe to repeat; retrying only failed jobs would bypass the lease.
on:
workflow_run:
workflows:
- Release Convergence
types:
- completed
branches:
- main
schedule:
# workflow_run delivery is not durable. Reconcile the current stable and
# preview channel heads hourly so a dropped event cannot strand aliases.
- cron: '37 * * * *'
workflow_dispatch:
permissions:
actions: write
contents: read
concurrency:
group: retry-release-convergence
cancel-in-progress: false
jobs:
retry_committed_convergence:
if: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.conclusion != 'success' }}
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Checkout current reconciliation controls
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Reconcile the failed convergence
env:
GH_TOKEN: ${{ github.token }}
PRO_REPOSITORY_TOKEN: ${{ secrets.WORKFLOW_PAT }}
RUN_ID: ${{ github.event.workflow_run.id }}
run: >-
python3 scripts/release_control/reconcile_release_convergence.py
--repository "${GITHUB_REPOSITORY}"
--run-id "${RUN_ID}"
reconcile_missed_event:
if: ${{ github.event_name != 'workflow_run' }}
runs-on: ubuntu-24.04
timeout-minutes: 10
steps:
- name: Checkout current reconciliation controls
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Reconcile current channel heads
env:
GH_TOKEN: ${{ github.token }}
PRO_REPOSITORY_TOKEN: ${{ secrets.WORKFLOW_PAT }}
run: >-
python3 scripts/release_control/reconcile_release_convergence.py
--repository "${GITHUB_REPOSITORY}"
--latest