+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] > >
