potiuk opened a new pull request, #75919:
URL: https://github.com/apache/airflow/pull/75919

   Constraints for an Airflow release candidate pin the provider wave being 
voted on at its `rcN` versions and commit them onto the shared 
`constraints-X-Y` branch. Two things went wrong around that, and two more hid 
it:
   
   - **The regular generation undid the candidate's pins and called it a 
downgrade.** It resolves without pre-releases, so `common-ai 1.1.0rc1 → 1.0.0`, 
`microsoft-azure 15.3.0rc1 → 15.2.1` and `openlineage 2.21.0rc1 → 2.20.3` 
tripped the provider-downgrade guard. The v3-4-test canary has been red since 
`constraints-3.4.0rc1` for this reason 
([example](https://github.com/apache/airflow/actions/runs/40729396847/job/123000060437)),
 although nothing was yanked. The candidates the baseline pins are now kept 
while PyPI still serves them. A candidate gives way to its final once that is 
published, and a yanked one is dropped without counting as a downgrade.
   - **A candidate published mid-run is not lost.** The pins are chosen from 
the baseline read before the resolution, which takes minutes. Afterwards the 
generation re-reads the baseline and fails if its release-candidate pins 
changed in between, so a re-run picks them up rather than overwriting them.
   - **The final release passed over candidates silently.** A provider whose 
newest version is an rc that was neither released nor yanked now fails the 
`Release constraints` run for a final version. The failure lists each provider 
and says to release it or yank it. Yanked versions are skipped.
   - **The downgrade alert never reached Slack.** The `slack-github-action` 
step had no `method:`, so it failed with `Missing input! Either a method or 
webhook is required`.
   - **The CI notification announced "All passing" for a failing run.** It read 
the newest `ci-amd.yml` run on `v3-4-test` while that run was still in 
progress. With no conclusion yet, it saw no failures and posted a recovery. It 
now reads only completed runs.
   
   The release guide gains a "Release or yank the outstanding provider 
candidates" step before the final release, and the breeze docs describe both 
flags.
   
   Checks run locally:
   - `scripts/tests/in_container/test_run_generate_constraints.py`: 39 passed
   - `dev/breeze/tests/test_workflow_status.py` and `test_shell_params.py`: 56 
passed
   - prek pre-commit stage on the changed files: passed. The exceptions are 
`lychee`, which needs Docker and was not run, and `update-breeze-cmd-output`, 
which I skipped because the images were regenerated from the local breeze 
source and `--check-only` and `check-all-params-in-groups` both exit 0.
   
   ---
   
   ##### Was generative AI tooling used to co-author this PR?
   
   - [X] Yes (please specify the tool below)
   
   Generated-by: Claude Opus 5 following [the 
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to