diff --git a/.github/workflows/pr-require-checks.yml b/.github/workflows/pr-require-checks.yml index 041edf3..30b1dae 100644 --- a/.github/workflows/pr-require-checks.yml +++ b/.github/workflows/pr-require-checks.yml @@ -106,6 +106,7 @@ jobs: config: lychee.toml ci-status: + name: CI Status needs: [validate-marketplace, lychee] if: ${{ !cancelled() }} runs-on: ubuntu-24.04 @@ -135,8 +136,11 @@ jobs: # aggregation: the job still fails on the contract step's exit code, and # the `ci-lanes` status is on the SHA for the next contract-only run. if: ${{ !cancelled() }} - uses: melodic-software/ci-workflows/.github/actions/pr-require-checks/aggregate-results@594987abe8657a40bccc13d301f1f0d5cccb5348 # v0.39.8 + uses: melodic-software/ci-workflows/.github/actions/pr-require-checks/aggregate-results@ac4d8780de793b20e60a66890e767df579c80d83 # ac4d878 2026-11-11 with: + # report-ci-status mirrors this gate under `ci-status` and runs on + # contract-only events too; the run-shape reads must ignore it. + alias-jobs: ci-status # A contract-only run never waits: while a full run on the SHA is in # flight it fails with "superseded by full run ", and that run's # newer ci-status decides the gate. Once the full run records @@ -150,3 +154,18 @@ jobs: # lane was already red here. treat-skipped-as: fail token: ${{ github.token }} + + report-ci-status: + name: ci-status + needs: [ci-status] + if: ${{ always() }} + runs-on: ubuntu-24.04 + timeout-minutes: 3 + permissions: {} + steps: + - name: Report the conclusion of `CI Status` + env: + RESULT: ${{ needs.ci-status.result }} + run: | + echo "CI Status: $RESULT" + [ "$RESULT" = success ]