+1 binding.

This is mainly a PMC check for quality/legal checks of the release.

Validated:
- SVN checks
- Reproducible package checks
- License check
- Signature checks
- SHA512 checksum check


Thanks & Regards,
Amogh Desai


On Wed, Nov 11, 2026 at 8:37 PM dev.wei-lee.me via dev <
[email protected]> wrote:

> +1 (binding), checked:
>
> - SVN
> - Reproducible build
> - Licence
> - Signature
> - Checksums
>
> Best regards,
> Wei Lee
>
>
> On Wednesday, November 11th, 2026 at 5:11 AM, Kevin Yang <
> [email protected]> wrote:
>
> > +1 (non-binding)
> >
> > Thanks for preparing the release!
> >
> > I tested 3.4.0rc1 from PyPI against Airflow 3.4.0 in Breeze (SQLite,
> > example Dags), and the official smoke test passed. I also ran a few extra
> > checks: the client loads the details of all 246 example Dags, as well as
> > Dag runs and task instances, and the new 3.4.0 features I tried work as
> > expected (draining a Dag, filtering Dag runs by tags, the is_scheduled
> > filter, asset events by partition_key, job filters, Dag version diff and
> > bundle details). The SHA-512 of the SVN wheel matches, and the wheel
> > installs and passes the same smoke test.
> >
> > One non-blocking note: the "Non-interactive smoke test" commands in the
> > release guide don't work as written. The version variable is set on the
> > host and never reaches the Breeze container, and the wheel path should be
> > /dist instead of /opt/airflow/dist. The airflowctl guide has the same
> > issue. This only affects the docs, not the release, and I opened a PR to
> > update it: https://github.com/apache/airflow/pull/76870
> >
> > Best,
> > Kevin
> >
> > On Mon, Nov 9, 2026 at 7:14 AM Rahul Vats <[email protected]>
> wrote:
> >
> > > Hey fellow Airflowers,
> > >
> > > The release candidate for Apache Airflow Python Client 3.4.0rc1 is now
> > > available for testing!
> > >
> > > This email is calling for a vote on the release, which will last at
> least
> > > 72 hours, from Mon, Nov 9, 2026 at 12:00 PM UTC
> > > until Thursday, Nov 12, 2026 at 12:00 PM UTC, and until 3 binding +1
> votes
> > > have been received.
> > >
> > > Consider this my (binding) +1.
> > >
> > > Airflow Client 3.4.0rc1 is available at:
> > >
> https://dist.apache.org/repos/dist/dev/airflow/clients/python/3.4.0rc1/
> > >
> > > The apache_airflow_client-3.4.0.tar.gz is an sdist release that
> contains
> > > INSTALL instructions, and also
> > > is the official source release.
> > >
> > > The apache_airflow_client-3.4.0-py3-none-any.whl is a binary wheel
> release
> > > that pip can install.
> > >
> > > Those packages do not contain .rc* version as, when approved, they
> will be
> > > released as the final version.
> > >
> > > The rc packages are also available at PyPI (with rc suffix) and you can
> > > install it with pip as usual:
> > > https://pypi.org/project/apache-airflow-client/3.4.0rc1/
> > >
> > > Public keys are available at:
> > > https://dist.apache.org/repos/dist/release/airflow/KEYS
> > >
> > > Only votes from PMC members are binding, but all members of the
> community
> > > are encouraged to test the release and vote with "(non-binding)".
> > >
> > > The test procedure for PMC members is described in:
> > >
> > >
> https://github.com/apache/airflow/blob/main/dev/README_RELEASE_PYTHON_CLIENT.md\#verify-the-release-candidate-by-pmc-members
> > >
> > > The test procedure for contributors and members of the community who
> would
> > > like to test this RC is described in:
> > >
> > >
> https://github.com/apache/airflow/blob/main/dev/README_RELEASE_PYTHON_CLIENT.md\#verify-the-release-candidate-by-contributors
> > >
> > > *Changelog:*
> > >
> > > ## New Features:
> > >
> > > - Let plugins add their own actions to Dag, run and task instance rows
> > > (#75427)
> > > - Add an API endpoint comparing two stored Dag versions (#73322)
> > > - Allow filtering the Dag runs list by Dag tags (#70861)
> > > - Add a draining state for graceful Dag pausing (#72407)
> > > - Add bulk pause, drain and unpause actions to the Dags list (#73055)
> > > - Add a Dag bundle detail endpoint listing the files in a bundle
> (#73009)
> > > - Add an `is_scheduled` filter to the REST API (#72029)
> > > - Add an API endpoint for backfill Dag run entries (#67381)
> > > - Add a bundle-version parameter to the Dag run trigger endpoint
> (#61550)
> > > - Add an exact-match `uri` filter to `GET /assets` (#69489)
> > > - Add `partition_key` and `partition_key_regexp_pattern` filters for
> asset
> > > events (#64610)
> > > - Add extra-field filtering for asset events (#64611)
> > > - Add filters and pagination to the jobs list (#68616)
> > > - Add an Asset Tab plugin (#69986)
> > > - Add React plugin support to Dag and task overviews (#69992)
> > > - Add `owner_display_name` substring and prefix filters to the Dag list
> > > (#70583)
> > > - Add a team column and filter to the Dag run and task instance lists
> > > (#70241)
> > > - Add a team column and filter to the jobs list (#73295)
> > > - Add a team column and filter to the XComs list (#72158)
> > > - Add a team column and filter to the audit log (#71916)
> > > - Add a team filter to the Human-in-the-loop task instances listing
> > > (#73726)
> > > - Add Task Loops: expose loop iterations and outcomes via
> > > `loop_id`/`iteration` filters and a `LoopIterationResponse` (#74354)
> > > - Read current task executions by exact loop region
> > > (`region_id`/`region_index`) and try (#74350)
> > > - Clear selected task-loop work and regenerate only what was replaced
> > > (#74349)
> > > - Describe a task at a specific Dag version via the task endpoint
> (#74365)
> > > - Filter task instances by `loop_id` and a single loop pass (#74931)
> > >
> > > ## Improvements:
> > >
> > > - Expose the retry deadline on task instances and reset run fields
> when a
> > > retry starts (#76028)
> > > - Surface the retry-policy decision on task instances (#73030)
> > > - Attribute log, asset-event and asset-state writes to the task attempt
> > > (#74347)
> > > - Expose an `in_loop` flag on task instances (#74352)
> > > - Give every mapped expansion a loop region, including a `409` on
> region
> > > conflicts (#74346)
> > > - Let loop gates record human-readable decisions (#74932)
> > > - Number task loop iterations from one instead of zero (#75260)
> > > - Deprecate cyclic TaskGroup dependencies, adding a `task group cycle`
> Dag
> > > warning (#73746)
> > > - Scope plugin views on any entity field, not a fixed criteria set
> (#74278)
> > > - Allow scoping plugin tabs to specific Dags and tasks (#69148)
> > > - Add a `team_name` attribute to plugins for multi-team (#69502)
> > > - Allow a Job to be associated with several teams (#73561)
> > > - Expand the health endpoint reporting (#70416)
> > > - Add `source_reference` and `language` to the warning, import-error
> and
> > > Dag source models (#72474)
> > > - Add a `duplicate dag id` Dag warning type (#68791)
> > > - Show Dag bundle versions and refresh times (#72909)
> > > - Show the owning team in asset dependencies (#71446)
> > > - Show the owning team on Dag, Dag run and task instance detail
> responses
> > > (#70312)
> > > - Add `owner_display_name` to the audit log (#68833)
> > > - Return a `file_token` on Dag import errors for requesting a reparse
> > > (#72896)
> > > - Allow explicit runs to drain a paused Dag (#73763)
> > > - Type `asset_expression` in the REST API so consumers need not cast
> > > through unknown (#67725)
> > > - Document HTTP statuses that route helpers raise (#74027)
> > > - Keep OpenAPI error responses in sync with the statuses routes raise
> > > (#71647)
> > > - Document favorite Dag's 409 and return a readable conflict message
> > > (#73411)
> > > - Make `latest_dag_version` a required field on the Dag details
> response
> > > (#74247)
> > >
> > > ## Bug Fixes:
> > >
> > > - Clear retry-policy state when a task instance is cleared (#75646)
> > > - Reject non-positive `max_active_runs` when creating a backfill
> (#75320)
> > > - Reject blank pool names and variable keys in the REST API (#75258)
> > > - Fix HTTP 500 when ordering the Dag list by state or start date
> (#75148)
> > > - Refuse a Human-in-the-loop response for a request the task has since
> > > replaced (#74982)
> > > - Filter the jobs `is_alive` check in SQL so pagination stays correct
> > > (#73684)
> > > - Discard a task instance's stored task-state values when it is cleared
> > > (#72100)
> > > - Clear all task instances in a task group, not just the first page
> > > (#73547)
> > > - Require a request body on the asset materialize endpoint (#73328)
> > > - Hide unreadable assets in the asset expression served by
> > > `next_run_assets` (#72864)
> > > - Stop reporting components as degraded after an instance restart
> (#73222)
> > > - Return asset events for Dag runs without a start date (#71379)
> > > - Fix the Dag detail HTTP 500 for Dags without a `fileloc` (#69110)
> > >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to