This is an automated email from the ASF dual-hosted git repository.
ephraimbuddy pushed a change to branch dag-processor-deployment
in repository https://gitbox.apache.org/repos/asf/airflow.git
discard 8c93ca1ad66 Fix the isolated Dag processor deployment examples and
chart checks
discard 755371145ca Handle invalid input in the Dag processor token provisioner
discard 0771b8de37c Use the trusted bundle catalog command in deployment
guidance
discard d1f2ae1cb45 Clarify the Dag processor rollout status check
discard be9426255a4 Clarify isolated Dag processor credential and migration
guidance
discard a4ec29cc633 Rotate Dag processor session tokens in Kubernetes Secrets
discard ef018ef8e7e Add API-mode Dag processor deployment support
discard 660581d2928 Correct the Dag processor API-mode docs and Compose example
discard 7f6b9ea6cfb Fix Dag processor API-mode shutdown, completion and claim
capacity
discard fc000fc47fc Release Dag processor claims for unpublishable sources
discard 95922ab03d2 Separate trusted Dag bundle catalog provisioning from
processing
discard 08a0f9e84dc Restore isolated Dag processor regression coverage
discard 23b96ebca27 Keep API Dag processors recoverable through delivery
failures
discard 2894eb87bb0 Move API work delivery state out of the Dag processor
manager
discard 5ed69dcbbc0 Allow independent priority parses to finish in either
order in recovery tests
discard d022603d2f0 Preserve requested Dag processing work during bundle
failures
discard 33b6c056a58 Wait for fresh inventories before running priority parses
discard fb9dc34c8ea Preserve Dag processor work across retries and reparses
discard 496e3667de4 Run Dag processors without metadata database access
discard e2211cf515e Keep publishing a Dag archive that has an unrepresentable
member
discard da51f49cdb7 Close gaps in the Dag processor's API-mode tests
discard 49843fe2e49 Handle Execution API failures in the API-mode Dag processor
discard ce69b1bee5b Filter invalid Dag discovery paths and deduplicate parse
sources
discard 217729551c6 Recover failed Dag parses and bound inventory publication
discard ca91d0dbd41 Introduce a source interface for requested Dag processing
work
discard 2b18245e46f Avoid database sessions when collecting API-mode Dag
results
discard c82279c9627 Back off inventory retries and report results the API
would refuse
discard 3befb52a0fb Publish Dag processor results through the Execution API
discard 7b53ef60a33 Tighten test coverage of Dag processor requested-work
delivery
discard a78ef16cdbc Fix Dag processor maintenance logs and stale Dag warning
cleanup
discard 1f43f0132a0 Carry publication receipts through Dag processor
maintenance
discard e44b432cc0c Preserve Dag cleanup and exact priority reparse targets
discard df291f5a729 Fix Dag processor requested-work cleanup and delivery
discard fe6187ca758 Adapt legacy Dag upgrade regression to bundle discovery
results
discard 6321e5c0496 Align Dag processor claim migrations with main
discard 4fbf8f373ec Test legacy Dag deactivation after bundle-name backfill
discard 696e7853522 Fix Dag processor work retries and metadata cleanup
discard cc78654d756 Retain Dag processor work until delivery is acknowledged
discard b90c25695ca Reject only the invalid Dags in a Dag processor publication
discard 0940033311a Cover publication API rejections and clarify its docs and
names
discard e3aba00a3ce Reject Dags without a timetable or with incomplete
deadline alerts
discard fa432308864 Preserve compact source publications and actionable Dag
diagnostics
discard 4e908b30b03 Clean asset references for stale Dags removed from bundles
discard ecd0a48bd1f Align API-mode Dag publication with DB-mode cleanup
discard a88a53aa8bf Allow Dag processors to publish metadata through the
Execution API
discard 56b6f8855ba Describe the git provider's refresh-error probe accurately
discard ad0aa740087 Stop repeated bundle drains and keep cleanup overrides
working
discard e7a502d87a4 Keep Dag parsing and metrics healthy during bundle outages
discard f37b1a9f5b6 Revise Dag bundle refresh compatibility guidance
discard d503ddd8ba0 Clarify bundle refresh compatibility and simplify its
regression test
discard 523bb5804e9 Keep Git bundles importable on Airflow 3.4
discard 5cb241c3b35 Keep Dag parsing responsive during bundle refresh failures
discard f8e30a00b63 Make the bundle refresh regression test independent of
uptime
discard 89fcad03b72 Avoid parsing stalls while a bundle refresh waits for
imports
discard 7b17f64bc2d Keep Dag parsing results aligned with refreshed bundle
sources
add ecb95734544 UI: Fix select filter pills staying open in Safari (#76013)
add 527f92e15ca Allow selecting task groups in the Grid view (#75856)
add d2e60aefea2 Retry GitHub calls that drop the connection in the Spot
interruption notices (#75829)
add 460f7a08bf8 Close fork CI pull requests that change jobs running in
gated runs (#75827)
add aa3a5239652 Fix 404 error on looped task group breadcrump and add test
(#76050)
add a2d4b2ec053 Document virtual-hosted-style S3 addressing for AWS
connections (#75135)
add 60a240a4511 Stop airflowctl from resending writes after ambiguous
failures (#74382)
add 608e41e333b Add the first external contributors to the fork CI pilot
(#75696)
add 2064ab5af2b Make asset state store entries scrollable (#75870)
add 86c64598200 UI: Fix Portuguese and Hungarian labels that show a raw
placeholder (#75964)
add 8d4a47f72e9 UI: Expose list filters the API already supported (#74764)
add c2c461f375b Bump eslint-plugin-unicorn (#76061)
add e211b451148 Stop airflowctl connection-refused test depending on the
local network (#76077)
add 1c3b3def869 Fix airflowctl operations create command validation error
(#69317)
add 1bcc8e6bdbc Validate the file structure in airflowctl connections
import (#75176)
add fbc18bccfb7 Report missing required airflowctl options as readable
errors (#75177)
add f014690eb38 UI: Translate the aria-labels on icon-only buttons (#75965)
add 740d8bda336 Fix airflowctl commands failing against older Airflow
servers (#70954)
add 5f213c70e2c Make the celery visibility_timeout redelivery docs
version-conditional (#75373)
add 4c4a1d94280 Fix cron mixin DST tests failing with tzdata 2026f (#76112)
add 95ba43c0347 Keep RunsOn runners off the Spot pools reclaimed most
often (#76084)
add 1cbcc306be6 Stop BigQueryStreamingBufferEmptySensor reporting empty
too early (#69118)
add 9c164b5891f Fix airflowctl required-option test broken by concurrent
merges (#76092)
add 2cdc403cd19 Convert BigQueryAsyncHook.get_records to async method
(#72286)
add 89ab81f6f41 Report airflowctl response validation errors instead of a
traceback (#76120)
add 03b0af96e50 Write common.io state store values in chunks instead of
one bytes copy (#76108)
add a8c80c88b8c Remove deprecated client property from Yandex DataprocHook
(#76128)
add 4e02d39e16b Remove deprecated cleanup_stuck_queued_tasks from Celery
and Kubernetes executors (#76129)
add ecc79a45970 Remove deprecated get_hook property from OSSKeySensor
(#76127)
add f3b4fec993a Let airflowctl and its integration tests use a non-default
API server port (#76124)
add 956d8cd2d6b Keep airflowctl dags pause/unpause/drain output parseable
(#76133)
add 1bb64c55b6e Stop airflowctl timing out after 5 seconds on slow API
servers (#76125)
add 81976d301f2 Stop triggerer tests leaking runner processes (#76139)
add 2e8f6f983b4 Report missing and invalid fields in airflowctl
connections import (#76090)
add 6086dac8b61 Remove deprecated TimeDeltaSensorAsync (#76131)
add 924b52eb08b Remove types-protobuf from google provider runtime
dependencies (#73775)
add 161cff0d95e Normalize empty project id in credential config file
branch (#73886)
add 3e63200b81c Lowercase the fork's image name in the PROD image example
tests (#76143)
add 841d51e3636 Enforce execution_timeout in deferrable
DataprocSubmitJobOperator (#72030)
add 615068e7cfb Remove deprecated get_pandas_df methods from SQL hooks
(#76130)
add a3567e948eb Show fork CI progress sooner and gate rebased pilot pull
requests (#76148)
add c67fbcb8e9b Fix airflowctl sending ids with URL special characters to
the wrong path (#76147)
add 9b66db8c54b Update the Go SDK doc for schema hooks that now run on
every commit (#76144)
add 58ad621c274 Keep retrying CI image downloads through artifact egress
throttling (#76150)
add 165e5ec69bc Do not draft fork CI pull requests while their fork run is
in progress (#76151)
add 44e8ff3e44f [main] Upgrade important CI environment (#75270)
add 35b6e857c19 Make the CI test segfault fallback find the JUnit XML
report (#74280)
add 468ab0a5834 Spend fewer GitHub writes on fork CI job statuses and
watch the limits (#76154)
add 4616b88380c TS-SDK: inherit the Dag queue when a task passes queue
undefined (#76123)
add 2d68f1a769a Remove the certifi cooldown bypass (#76164)
add fe579ea0752 Keep Java SDK snapshot docs out of the published
documentation (#76165)
add 2e62fd86037 Mount the checkout read-only in the hadolint and RAT prek
hooks (#76162)
add d9dbe635255 Report Kubernetes API 403 errors from the deferrable pod
trigger (#76081)
add b95498cd566 Restore the on_operator_resuming callback in
KubernetesPodOperator (#76035)
add 7b47022bf69 Document all Google Cloud connection fields (#76160)
add 77d15dc2c62 Prepare Common AI 1.1.0 RC3 for 2026-10-31 (#76169)
add c30f6c9ea0f Run docs publishing and provider registry workflows on
self-hosted runners (#76168)
add 9b114c8deee Reuse locked CI dependencies across workspace source
changes (#74466)
add ca6861474f1 Run dependency explanations separately from main AMD
canaries (#74311)
add bf177e29485 Accelerate CI image materialization with same-run
snapshots (#74173)
add 6230b32fa06 Fix flaky first test of the Docker decorator tests on
fresh CI runners (#76179)
add f7e28eec730 Fix stale cursor descriptions between SnowflakeHook runs
(#76163)
add 152e5344ef1 Handle connection and request timeouts in airflowctl
(#76132)
add 283ab98d659 Keep airflowctl auth token stdout limited to the token
(#76134)
add 122f7b43fd7 Report invalid variables in airflowctl variables import as
readable errors (#76174)
add 26448b2341d Refresh the Magpie reconciliation stamp (#76197)
add 72d752a00c1 Install OS dependencies on hardened images after dhi.io
renumbering (#76200)
add a96c3273868 Warn agents against loading the serialized Dag on hot
paths (#75932)
add 9cde6aa11db Stop airflowctl updates from resetting omitted bool fields
(#74383)
add 4eba3515cee Report invalid pools in airflowctl pools import as
readable errors (#76173)
add 117f1151872 Show square brackets in airflowctl table and plain output
as typed (#76175)
add 24b8db04adc Add tests for airflowctl dag run selector resolution
(#75609)
add 71617c77bb2 Record that StrictBaseModel is for request bodies only
(#75639)
add bdcb7eddd85 Skip Kubernetes volume internals when discovering Dag and
plugin files (#76186)
add b32439ef253 Derive the expected CI image name from the branch in
Breeze CI image tests (#76206)
add 84719cfb009 Fix airflowctl tracebacks on an unusable credentials file
(#72468)
add 0d2f7490e53 UI: Keep Dag card columns aligned across cards (#76004)
add 9c038c1d483 Add airflowctl tasks get and list operations (#76145)
add 1d1d17bb718 Fix LocalExecutor deadlock when a workload put blocks
(#75086)
add 8400915021a Mask the whole secret when another secret is its prefix
(#76142)
add 77609e83c22 Align Snowflake Cortex Agent hook with the Common AI
managed-agent contract (#74672)
add c82f0ee58a3 Add airflowctl tasks logs command for retrieving task
instance logs (#71763)
add cf4525db121 Report CI run started for release branches that do not run
ci-amd.yml (#76226)
add 2ebb8dd5d7b Verify S3 TLS certificates by default in
S3ToAzureBlobStorageOperator (#76222)
add e54a6af12d6 Scope asset event created Dag runs to readable Dags
(#76234)
add bee3b030be7 Fix formatting in chart/NOTICE file (#76237)
add bee03ecccb9 Run the RunsOn jobs on the Flex stack in all three
us-east-2 zones (#76239)
add d88ca3109e0 Update providers metadata 2026-11-01 (#76242)
add ce01a733e93 Fix scheduler memory spike when a Dag run has a large conf
(#73907)
add 7831e8e6ae2 Format the RunsOn label constants in the selective checks
tests (#76246)
add a7c481d84cc Keep executor loader tests patched after another test
reloads the module (#76233)
add a5ab822160c Skip scheduled workflows in forks that enable Actions
(#76243)
add e109bfdb45e Skip CI runs deleted while the Spot interruption notices
handle them (#76249)
add 8b178f59feb Record trigger failures and owner on its row; tag metrics
by kind (#76101)
add 5d886dd7414 Build only required prek hook environments in CI jobs on a
cache miss (#76111)
add 0cc7842e6d9 Start the whole test matrix at once on the RunsOn runners
(#76250)
add 7bfc8d32dbb Update provider metadata for Common AI 1.1.0 (#76257)
add eb47cc9f154 Add --json output to breeze ui
check-translation-completeness (#75831)
add a1f1a491db1 Return null from Java SDK getVariable for missing
Variables (#75920)
add 1c3252e5805 Add `callback` and `source` to context to differentiate
between Dag and task callbacks (#76110)
add 5444dabe85f Redact non-string values when the key name is sensitive
(#71279)
add 85bf28f1660 Move Snowflake trigger tests to match the trigger module
name (#73760)
add 1b43dce4466 Mask sensitive values in airflow config update dry-run
output (#73265)
add 92e42ed8ab1 Stop the provider registry from publishing unreleased
providers (#76109)
add 5b4f23b1c8f Go SDK: fail tasks that return non-JSON values instead of
hanging (#75601)
add 9afb30c5a09 Go SDK: Keep nested Conf validation test compatible across
Go versions (#75971)
add 27b8c82f54d Restore "Nothing to clear." in airflow tasks clear (#76277)
add 1d3d8f533fb Catch lazy timetable errors when starting queued runs
(#76288)
add 336cd40a863 Rename TypeScript SDK npm package to
@apache-airflow/ts-sdk (#75959)
add 1ab249327b5 Speed up trigger cleanup callback lookups (#75228)
add d7b830037e4 Bump TypeScript SDK to 1.0.0-beta2 (#76299)
add bbe441e75dc Render only the returned value in TaskFlow decorators that
template it (#76244)
add 4c110e645d0 Stop labelling fork CI PRs that change CI files for
workflow approval (#76289)
add 1d5644d9de2 Check that the fork's GitHub Actions can run in breeze ci
audit (#76136)
add ffbf25e4375 Stop encoding whole state store values to check the size
warning (#76107)
add ffd9a2d126a Keep masked Variable values when saving an edited Variable
(#76012)
add 19d80a886bf Use one chips editor for all simple array params (#76018)
add 7a7935754ed Stop airflowctl auth commands sending the stored token to
--api-url (#76280)
add 3318b88ba4c Exit non-zero when airflowctl connections test fails
(#76281)
add cfbd70b66d1 [main] Upgrade important CI environment (#76278)
add 88e5c356eaa Fix layout of CI diagram for clarity and consistency
(#76272)
add 3e20d9054d7 Log the AWS identity used by AwsDuckDBHook (#75997)
add f942cca74d7 Send the Python task's execution_timeout to the supervisor
(#75387)
add 31b558a6076 Fix Dag id collision in the Java SDK example bundle
(#76019)
add a9ad129058a Skip allowlisted non-PEP 440 docs versions when publishing
docs to S3 (#76020)
add d80672e6d06 Close German Translation Gaps 2026-11-02 (#76324)
add 51140809d2a Load Java Dags from a bundle path that contains a colon
(#76314)
add 4df59b9a03f Add AssetEventSensor to standard provider (#70225)
add 43ec43ac877 Refresh the Magpie reconciliation stamp (#76333)
add 8693c0854fe Retry fork CI job listings in smaller pages (#76327)
add c8ebaa8c8e9 Remove unused Spark application expectation helper (#75877)
add fdeff70fc0b Add on_kill support to SageMakerTrainingOperator (#76033)
add 50a2f28840c Use bulk ingest in AdbcHook.insert_rows when
fast_executemany is set (#76363)
add 9a6ef0a4217 Inline the masked Variable merge and drop unused merge
depth args (#76306)
add 36aee53a46e Show the external services each provider reaches in the
registry (#72940)
add ff22d7313ca Add tests for airflowctl utils helpers and module loading
(#76271)
add 6f7cb34ea42 Keep airflowctl stdout parseable when a request is retried
or fails (#76347)
add 5040171c3e6 Give Dag bundles their own read permission (#76329)
add 29368e8ac5a Fix airflowctl dagrun list ignoring --start-date and
--end-date (#76348)
add cdd3de5ecd0 Add code owners for the cncf.kubernetes provider (#76371)
add 5936c8d87a2 Revert "Load Java Dags from a bundle path that contains a
colon (#76314)" (#76350)
add 3a524716f84 Use standard iso format for dates in the Kafka
EventProducer plugin messages (#76052)
add 6aae6784031 Allow deleting queued partitioned asset events via REST
API (#73119)
add ab39e956969 Escape error text in airflowctl safe_call_command messages
(#76264)
add 1e27518c2de Run Kerberos worker sidecars as Kubernetes native sidecars
(#72555)
add eea312fc7cf Allow selecting loop tasks in the Grid view (#76291)
add be2829b9175 Show which skills an agent was offered and used in the AI
Model tab (#76309)
add 9612ea5846d Document the Dag Versions comparison tab in the UI
overview (#76387)
add 8df64a7dd3c UI: Refresh Dag cards after Dag run changes (#76274)
add 3edd0521b6c Hold back only build-info changes in fork CI and stop
drafting them (#76282)
add d3e29e1c6dd Add Git-Sync to GitDagBundle migration guide for the Helm
chart (#73082)
add bb50310d823 Cache FTPS connections only after setup succeeds (#74183)
add 5b8d2065934 Bump the typescript group across 1 directory with 4
updates (#76054)
add 82456dd938a Report failing fork job statuses only when the failure
persists (#76185)
add 9d4cdd7802a UI: Reduce initial JavaScript payload (#74663)
add 1367f021657 Fix env var names in AWS ECS and Lambda executor setup
docs (#76155)
add f721cac5e5c Fix scheduler refusing to start when [scheduler] only_idle
is enabled (#76262)
add b45f859d718 Complete the missing zh-TW UI translations (#76398)
add 5e903931b2a Enable DMS task logging in example_dms system test (#76336)
add d7711340f84 Run the dependency upgrade summary beside the tests
instead of after them (#76251)
add 6ca7a3be6b9 Build the PROD packages beside the CI image and
constraints (#76261)
add 47c02d36015 Upgrade the Airflow version to 3.5.0 and Task SDK version
to 1.5.0 (#76388)
add 45edb1750f1 Use only the configured auth type when creating tokens in
the FAB auth manager (#76231)
add 5afb353fd08 Add script to remove constraints for unsupported Python
versions (#75333)
add 1631eccfc2d Fix retry policy docs and the example Dag's
`ConnectionError` rules (#76313)
add f34cae8fa6f Suggest common model providers in the pydanticai
connection form (#76053)
add 4495e92002c Decode state store vals through backend; treat null as
missing (#76009)
add 2ab01dae67f Java SDK: Read the Dag run conf into a class with typed
fields (#75542)
add 5308480f2ee Fix airflowctl list pagination when the server caps the
page size (#76268)
add aa0d6506b4a Build CI and release images on pinned OS-dependencies
images (#76225)
add 0c69d652a89 Build CI and release images on pinned OS-dependencies
images (#76225)
add 76f290f3f80 Implement Python task handler and support it in YAML Dags
(#75405)
add 7badc9f42a1 Include table names in db clean progress output (#74243)
add 575d8af602f Keep the audit log off the API server event loop (#76416)
add bd8cad6b729 Let non task callers set and delete variables over
execution API (#76375)
add 671be47b20e Note that the API server uses a second database connection
pool (#76430)
add b503e692da0 Fix `SSHRemoteJobOperator` on Windows hosts (#73352)
add fc172d09a5b Add deferrable mode to `SqlSensor` (#76270)
add 2aa4ae811d8 Rewrite the OpenAI Agents SDK guide to stand on its own
(#76340)
add a427286b8d2 Add screenshots and a review loop example to the task
loops docs (#76435)
add 6e6e0f7ae9b Document how to create a TypeScript SDK project (#76374)
add 31b0dfef865 Fix docs build on Task SDK task handler page ref (#76440)
add cf5017be3c1 UI: Complete the Italian translation (#76411)
add 37d4d9395f7 UI: Fix task groups not expanding when localStorage is
full (#76302)
add 11baedfd86c Add OpenLineage e2e tests for manual state changes, clears
and failures (#75908)
add 629729a9913 Describe where the dependency upgrade summary runs now
(#76439)
add caf26246c1c Stop pydantic-ai providers that models cannot use from
failing the common.ai vendor check (#76312)
add bcfe0128623 Bump UI dependencies and fix log tests for react-virtual
(#76444)
add 77c29134b37 Load Java Dags from a bundle path that holds a colon
(#76432)
add 3fd90eb41c0 UI: Complete the Spanish (es) translation (#76087)
add 4ef770b91d6 Let asset watchers write asset state over the Execution
API (#76376)
add cd3ae408a1a Keep mapped tasks when clearing with run on latest version
(#76420)
add 5d70b49e9ea UI: Label the Dag bundle file table as Parsed Files and
say what it lists (#76462)
add 240e6eed65c Parametrize GCS-to-GCS wildcard and retention tests.
(#76094)
add d07cb5f727d Fix airflowctl backfill create-dry-run printing one
all-null row (#76224)
add 7b00cf0835a Add GET /triggers to list every trigger of every kind and
its status (#76260)
add 596dd41485c Stop airflowctl sending an old token to a new API URL
(#76287)
add 6920d2c25f4 Escape Rich markup in airflowctl variable and pool
commands (#76419)
add 6f2de5abe97 add stephen-bracken to fork-ci-gate (#76316)
add 0ae09c32182 Install apt-utils matching the image's apt on hardened
images (#76484)
add b2f327748b8 Restore default ELK node placement in Graph view (#76488)
add 1b792598b6d Support native asset partitions in watcher events (#74852)
add 953d7ff3d6a Hide "View error" on bundle files the user cannot read
(#76479)
add 6858cb6c3a2 Refresh expired AWS credentials in AwsDuckDBHook (#76086)
add f05c32e10e1 Lower severity of handled XCom misses (#73198)
add 94018444cdf Ship the Dag bundle permission in Airflow 3.4.1 (#76474)
add 9391e6a7a48 Remove machine-global pnpm config causing .pnpm-store dir
to be created in places (#76498)
add c52946c9c9c Clarify Dag bundle permission upgrade notes (#76499)
add a1be2c1ce30 Fix Google Cloud connection IdP extra request parameters
being ignored (#76161)
add 494f65e0f68 Fix async engine datetimes being shifted on non-UTC MySQL
servers (#76505)
add 8ee215945aa Apply timeout_seconds and connection proxies to dbt Cloud
sync requests (#74684)
add 0d5f53297a0 Add unit tests for Dataproc, GKE and Translate provider
links (#75694)
add 7ee853093ec Apply note before state in bulk Dag run update so
listeners see it (#74890)
add 1948af1fedb Add unit tests for PrestoToGCSOperator (#75559)
add 57793d01d9b Import TriggerRule from airflow.sdk in docs examples
(#76522)
add 1ddb3f937ae Keep Dag parsing results aligned with refreshed bundle
sources
add c68d64cfdcd Avoid parsing stalls while a bundle refresh waits for
imports
add 205af8d60e4 Make the bundle refresh regression test independent of
uptime
add 0507b82aab1 Keep Dag parsing responsive during bundle refresh failures
add 2e38c400318 Keep Git bundles importable on Airflow 3.4
add 956fffc57ca Clarify bundle refresh compatibility and simplify its
regression test
add 55ed93f368d Revise Dag bundle refresh compatibility guidance
add 2206f896bd7 Keep Dag parsing and metrics healthy during bundle outages
add 48fb3362e3e Stop repeated bundle drains and keep cleanup overrides
working
add 1eccbc65c8d Describe the git provider's refresh-error probe accurately
add 165076ccd43 Allow Dag processors to publish metadata through the
Execution API
add 5f9490eb8f8 Align API-mode Dag publication with DB-mode cleanup
add a12c698ab74 Clean asset references for stale Dags removed from bundles
add 7515c4bdba5 Preserve compact source publications and actionable Dag
diagnostics
add 31fce26fd3c Reject Dags without a timetable or with incomplete
deadline alerts
add 5ed8d1e034d Cover publication API rejections and clarify its docs and
names
add 4122f70b737 Reject only the invalid Dags in a Dag processor publication
add ca49ca30589 Fix which Dags a Dag processor publication marks stale
add 46c0eae8075 Retain Dag processor work until delivery is acknowledged
add 63ca662ed58 Fix Dag processor work retries and metadata cleanup
add 03705af75ab Test legacy Dag deactivation after bundle-name backfill
add 9d6fd27aa37 Align Dag processor claim migrations with main
add 6f7a187c2ee Adapt legacy Dag upgrade regression to bundle discovery
results
add a297b84e8cf Fix Dag processor requested-work cleanup and delivery
add 2a53dda7ab3 Preserve Dag cleanup and exact priority reparse targets
add b53799ee804 Carry publication receipts through Dag processor
maintenance
add f1a594ecb44 Fix Dag processor maintenance logs and stale Dag warning
cleanup
add 935537f5f9c Tighten test coverage of Dag processor requested-work
delivery
add 6eb02ca6c29 Clarify which Dag processors parsing cleanup expires
add 1519b9cc762 Publish Dag processor results through the Execution API
add 4e43816e83e Back off inventory retries and report results the API
would refuse
add 7bde027c6c2 Avoid database sessions when collecting API-mode Dag
results
add 359ac1175ae Introduce a source interface for requested Dag processing
work
add 0da7cb13920 Recover failed Dag parses and bound inventory publication
add 9c18a39c932 Filter invalid Dag discovery paths and deduplicate parse
sources
add da0eb756c93 Handle Execution API failures in the API-mode Dag processor
add 62766357936 Close gaps in the Dag processor's API-mode tests
add e86a04f21ce Keep publishing a Dag archive that has an unrepresentable
member
add 561040614dd Show a failed parse's import error at once without
deactivating Dags
add 6c52e0fa424 Run Dag processors without metadata database access
add a4ff7d8cdbd Preserve Dag processor work across retries and reparses
add 88957cd19ed Wait for fresh inventories before running priority parses
add d598cf6d30b Preserve requested Dag processing work during bundle
failures
add 5ee4f283049 Allow independent priority parses to finish in either
order in recovery tests
add 9c0edc87552 Move API work delivery state out of the Dag processor
manager
add c8bdf490b06 Keep API Dag processors recoverable through delivery
failures
add c0742d72e4b Restore isolated Dag processor regression coverage
add af6cfccf3c4 Separate trusted Dag bundle catalog provisioning from
processing
add 86e1896d065 Release Dag processor claims for unpublishable sources
add 2a189ebaa3a Fix Dag processor API-mode shutdown, completion and claim
capacity
add 34b9decff69 Correct the Dag processor API-mode docs and Compose example
add 7b3a9c92950 Keep Dag processor callbacks and reparses through
transient failures
add 8f263bf9aba Add API-mode Dag processor deployment support
add 28903c65675 Rotate Dag processor session tokens in Kubernetes Secrets
add 67121da05ce Clarify isolated Dag processor credential and migration
guidance
add d33f382c7c2 Clarify the Dag processor rollout status check
add 8fd8975681b Use the trusted bundle catalog command in deployment
guidance
add b37c671959c Handle invalid input in the Dag processor token provisioner
add 0eaf120f46c Fix the isolated Dag processor deployment examples and
chart checks
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (8c93ca1ad66)
\
N -- N -- N refs/heads/dag-processor-deployment (0eaf120f46c)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
No new revisions were added by this update.
Summary of changes:
.agents/skills/airflow-translations/SKILL.md | 7 +
.agents/skills/airflow-translations/locales/es.md | 34 +-
.agents/skills/airflow-translations/locales/it.md | 65 +-
.apache-magpie.lock | 6 +-
.asf.yaml | 10 +-
.github/CODEOWNERS | 2 +-
.github/actions/install-prek/action.yml | 26 +-
.github/actions/load_image/action.yml | 116 +
.../actions/prepare_breeze_and_image/action.yml | 25 +-
.github/actions/prepare_single_ci_image/action.yml | 19 +-
.github/actions/stash-restore/action.yml | 14 +
.github/fork-ci-gate.toml | 8 +
.github/workflows/additional-prod-image-tests.yml | 2 +-
.github/workflows/airflow-distributions-tests.yml | 4 +-
.github/workflows/auto-approve-workflow-runs.yml | 8 +-
.github/workflows/ci-amd.yml | 48 +-
.github/workflows/ci-arm.yml | 39 +-
.github/workflows/ci-duration-monitor.yml | 1 +
.github/workflows/ci-image-build.yml | 67 +
.github/workflows/ci-notification.yml | 1 +
.github/workflows/codeql-analysis.yml | 1 +
.github/workflows/dependency-upgrade-report.yml | 254 +
.github/workflows/dependency-upgrade-summary.yml | 104 +
.github/workflows/e2e-flaky-tests-report.yml | 1 +
.github/workflows/finalize-tests.yml | 39 -
.github/workflows/generate-constraints.yml | 2 +
.github/workflows/helm-tests.yml | 4 +-
.github/workflows/integration-system-tests.yml | 8 +-
.github/workflows/java-sdk-dependency-security.yml | 1 +
.github/workflows/k8s-tests.yml | 4 +-
.github/workflows/mirror-hardened-base-images.yml | 173 +-
.github/workflows/prod-image-build.yml | 102 +-
.github/workflows/prod-packages-build.yml | 129 +
.github/workflows/publish-docs-to-s3.yml | 66 +-
.github/workflows/recheck-old-bug-report.yml | 1 +
.github/workflows/registry-backfill.yml | 42 +-
.github/workflows/registry-build.yml | 49 +-
.github/workflows/run-unit-tests.yml | 4 +-
.github/workflows/scheduled-upgrade-check-main.yml | 1 +
.../scheduled-upgrade-check-v3-4-test.yml | 1 +
.../scheduled-verify-release-calendar.yml | 1 +
.github/workflows/stale.yml | 1 +
.github/workflows/test-providers.yml | 4 +
.github/workflows/ts-sdk-release.yml | 15 +-
.github/workflows/upgrade-check.yml | 5 +-
.pre-commit-config.yaml | 6 +-
Dockerfile | 277 +-
Dockerfile.ci | 251 +-
.../administration-and-deployment/dag-bundles.rst | 27 +-
.../logging-monitoring/callbacks.rst | 2 +
.../logging-monitoring/index.rst | 1 +
.../logging-monitoring/triggers.rst | 122 +
.../task-and-asset-state-store.rst | 2 +
.../docs/authoring-and-scheduling/assets.rst | 2 +
.../authoring-and-scheduling/event-scheduling.rst | 13 +
.../language-sdks/index.rst | 8 +-
.../language-sdks/java.rst | 50 +
.../language-sdks/typescript.rst | 64 +-
.../docs/authoring-and-scheduling/loops.rst | 155 +-
.../docs/authoring-and-scheduling/yaml-dags.rst | 23 +-
airflow-core/docs/best-practices.rst | 6 +-
airflow-core/docs/core-concepts/tasks.rst | 33 +-
airflow-core/docs/faq.rst | 3 +-
.../docs/howto/docker-compose/docker-compose.yaml | 2 +-
airflow-core/docs/howto/docker-compose/index.rst | 6 +-
.../docs/img/ui-dark/dag_overview_versions.png | Bin 0 -> 115759 bytes
airflow-core/docs/img/ui-dark/loops_clear.png | Bin 0 -> 271661 bytes
airflow-core/docs/img/ui-dark/loops_decision.png | Bin 0 -> 73779 bytes
airflow-core/docs/img/ui-dark/loops_graph.png | Bin 0 -> 77163 bytes
airflow-core/docs/img/ui-dark/loops_iterations.png | Bin 0 -> 191319 bytes
.../docs/img/ui-dark/loops_iterations_tab.png | Bin 0 -> 156522 bytes
airflow-core/docs/img/ui-dark/loops_mapped.png | Bin 0 -> 179885 bytes
airflow-core/docs/img/ui-dark/loops_review.png | Bin 0 -> 244676 bytes
.../docs/img/ui-light/dag_overview_versions.png | Bin 0 -> 112317 bytes
airflow-core/docs/img/ui-light/loops_clear.png | Bin 0 -> 268407 bytes
airflow-core/docs/img/ui-light/loops_decision.png | Bin 0 -> 72201 bytes
airflow-core/docs/img/ui-light/loops_graph.png | Bin 0 -> 78174 bytes
.../docs/img/ui-light/loops_iterations.png | Bin 0 -> 189121 bytes
.../docs/img/ui-light/loops_iterations_tab.png | Bin 0 -> 155523 bytes
airflow-core/docs/img/ui-light/loops_mapped.png | Bin 0 -> 177810 bytes
airflow-core/docs/img/ui-light/loops_review.png | Bin 0 -> 243231 bytes
airflow-core/docs/migrations-ref.rst | 6 +-
airflow-core/docs/security/api_permissions_ref.rst | 20 +-
airflow-core/docs/ui.rst | 37 +-
airflow-core/newsfragments/76234.bugfix.rst | 1 +
airflow-core/newsfragments/76430.significant.rst | 11 +
airflow-core/newsfragments/76474.significant.rst | 15 +
airflow-core/pyproject.toml | 10 +-
airflow-core/src/airflow/__init__.py | 2 +-
.../auth/managers/models/resource_details.py | 3 +
.../auth/managers/simple/simple_auth_manager.py | 16 +-
.../auth/managers/simple/ui/package.json | 2 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 68 +-
.../src/airflow/api_fastapi/common/db/assets.py | 5 +-
.../api_fastapi/common/parameters/trigger.py | 133 +
.../src/airflow/api_fastapi/core_api/base.py | 5 +-
.../api_fastapi/core_api/datamodels/assets.py | 5 +-
.../api_fastapi/core_api/datamodels/dag_bundles.py | 32 +-
.../api_fastapi/core_api/datamodels/trigger.py | 74 +
.../core_api/datamodels/ui/dag_bundles.py | 11 +-
.../api_fastapi/core_api/openapi/_private_ui.yaml | 60 +
.../core_api/openapi/v2-rest-api-generated.yaml | 565 +-
.../api_fastapi/core_api/routes/public/__init__.py | 2 +
.../api_fastapi/core_api/routes/public/assets.py | 216 +-
.../core_api/routes/public/dag_bundles.py | 272 +-
.../api_fastapi/core_api/routes/public/dag_run.py | 4 +-
.../api_fastapi/core_api/routes/public/triggers.py | 285 +
.../api_fastapi/core_api/routes/ui/__init__.py | 2 +
.../api_fastapi/core_api/routes/ui/dag_bundles.py | 81 +
.../src/airflow/api_fastapi/core_api/security.py | 211 +-
.../api_fastapi/core_api/services/public/assets.py | 17 +-
.../core_api/services/public/dag_run.py | 4 +-
.../core_api/services/public/import_errors.py | 76 +
.../core_api/services/public/variables.py | 20 +
.../airflow/api_fastapi/execution_api/AGENTS.md | 1 +
.../execution_api/datamodels/dag_parsing.py | 14 +
.../execution_api/datamodels/taskinstance.py | 16 +-
.../api_fastapi/execution_api/in_process.py | 3 +-
.../execution_api/routes/asset_state_store.py | 28 +-
.../execution_api/routes/dag_parsing.py | 59 +-
.../execution_api/routes/task_instances.py | 62 +-
.../execution_api/routes/task_state_store.py | 5 +-
.../api_fastapi/execution_api/routes/variables.py | 3 +
.../airflow/api_fastapi/execution_api/security.py | 37 +
.../execution_api/services/task_instances.py | 16 +-
.../api_fastapi/execution_api/versions/__init__.py | 9 +-
.../execution_api/versions/v2026_10_30.py | 25 +-
.../execution_api/versions/v2027_02_28.py | 18 +-
.../src/airflow/api_fastapi/logging/decorators.py | 36 +-
airflow-core/src/airflow/cli/cli_config.py | 21 +-
.../src/airflow/cli/commands/config_command.py | 13 +
.../src/airflow/cli/commands/scheduler_command.py | 17 +-
.../src/airflow/cli/commands/task_command.py | 5 +-
.../src/airflow/config_templates/config.yml | 5 +-
airflow-core/src/airflow/configuration.py | 18 +-
.../airflow/dag_processing/api_requested_work.py | 86 +-
.../src/airflow/dag_processing/collection.py | 55 +-
.../src/airflow/dag_processing/maintenance.py | 11 +-
airflow-core/src/airflow/dag_processing/manager.py | 53 +-
.../src/airflow/dag_processing/processor.py | 6 +
.../src/airflow/dag_processing/requested_work.py | 3 +
.../airflow/example_dags/example_retry_policy.py | 13 +-
.../src/airflow/example_dags/example_task_loops.py | 4 +-
.../src/airflow/executors/local_executor.py | 66 +-
.../src/airflow/jobs/scheduler_job_runner.py | 2 +
.../src/airflow/jobs/triggerer_job_runner.py | 188 +-
.../0152_3_5_0_add_state_and_owner_to_trigger.py | 134 +
.../0153_3_5_0_add_index_on_callback_trigger_id.py | 71 +
...4_3_5_0_add_dag_processor_publication_state.py} | 4 +-
....py => 0155_3_5_0_add_processor_work_claims.py} | 0
airflow-core/src/airflow/models/callback.py | 17 +-
airflow-core/src/airflow/models/dagrun.py | 23 +-
airflow-core/src/airflow/models/taskinstance.py | 2 +
airflow-core/src/airflow/models/trigger.py | 230 +-
airflow-core/src/airflow/sensors/__init__.py | 1 -
airflow-core/src/airflow/settings.py | 1 +
airflow-core/src/airflow/triggers/base.py | 31 +-
.../src/airflow/ui/openapi-gen/queries/common.ts | 28 +-
.../ui/openapi-gen/queries/ensureQueryData.ts | 75 +-
.../src/airflow/ui/openapi-gen/queries/prefetch.ts | 75 +-
.../src/airflow/ui/openapi-gen/queries/queries.ts | 90 +-
.../src/airflow/ui/openapi-gen/queries/suspense.ts | 75 +-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 374 +-
.../ui/openapi-gen/requests/services.gen.ts | 120 +-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 257 +-
airflow-core/src/airflow/ui/package.json | 58 +-
airflow-core/src/airflow/ui/pnpm-lock.yaml | 957 +--
airflow-core/src/airflow/ui/public/i18n/README.md | 6 +
.../airflow/ui/public/i18n/locales/ar/browse.json | 13 +-
.../airflow/ui/public/i18n/locales/ca/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/de/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/de/common.json | 10 +-
.../ui/public/i18n/locales/de/components.json | 4 +
.../src/airflow/ui/public/i18n/locales/de/dag.json | 4 +-
.../airflow/ui/public/i18n/locales/de/dags.json | 1 +
.../ui/public/i18n/locales/de/dashboard.json | 1 +
.../airflow/ui/public/i18n/locales/el/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/en/browse.json | 6 +-
.../airflow/ui/public/i18n/locales/en/common.json | 12 +-
.../ui/public/i18n/locales/en/components.json | 6 +-
.../src/airflow/ui/public/i18n/locales/en/dag.json | 4 +-
.../airflow/ui/public/i18n/locales/en/dags.json | 1 +
.../airflow/ui/public/i18n/locales/es/admin.json | 15 +
.../airflow/ui/public/i18n/locales/es/assets.json | 5 +
.../airflow/ui/public/i18n/locales/es/browse.json | 35 +
.../airflow/ui/public/i18n/locales/es/common.json | 82 +-
.../ui/public/i18n/locales/es/components.json | 41 +-
.../src/airflow/ui/public/i18n/locales/es/dag.json | 134 +
.../airflow/ui/public/i18n/locales/es/dags.json | 38 +-
.../ui/public/i18n/locales/es/dashboard.json | 22 +-
.../airflow/ui/public/i18n/locales/es/hitl.json | 3 +
.../airflow/ui/public/i18n/locales/fr/browse.json | 7 +-
.../airflow/ui/public/i18n/locales/he/browse.json | 7 +-
.../airflow/ui/public/i18n/locales/hi/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/hu/hitl.json | 2 +-
.../airflow/ui/public/i18n/locales/it/admin.json | 55 +-
.../airflow/ui/public/i18n/locales/it/assets.json | 46 +-
.../airflow/ui/public/i18n/locales/it/browse.json | 86 +-
.../airflow/ui/public/i18n/locales/it/common.json | 352 +-
.../ui/public/i18n/locales/it/components.json | 115 +-
.../src/airflow/ui/public/i18n/locales/it/dag.json | 267 +-
.../airflow/ui/public/i18n/locales/it/dags.json | 69 +-
.../ui/public/i18n/locales/it/dashboard.json | 47 +-
.../airflow/ui/public/i18n/locales/it/hitl.json | 18 +-
.../airflow/ui/public/i18n/locales/ko/browse.json | 5 +-
.../airflow/ui/public/i18n/locales/pl/browse.json | 9 +-
.../airflow/ui/public/i18n/locales/pt/common.json | 8 +-
.../ui/public/i18n/locales/zh-CN/browse.json | 5 +-
.../ui/public/i18n/locales/zh-TW/browse.json | 7 +-
.../ui/public/i18n/locales/zh-TW/common.json | 11 +-
.../ui/public/i18n/locales/zh-TW/components.json | 5 +
.../airflow/ui/public/i18n/locales/zh-TW/dag.json | 4 +-
.../airflow/ui/public/i18n/locales/zh-TW/dags.json | 1 +
.../ui/public/i18n/locales/zh-TW/dashboard.json | 1 +
.../ui/src/components/AdvancedSearchToggle.tsx | 4 +-
.../ui/src/components/Assets/AssetEventsFilter.tsx | 3 +
.../ui/src/components/DagImportErrorModal.test.tsx | 6 +-
.../ui/src/components/DataTable/DataTable.tsx | 4 +-
.../ui/src/components/FilterBar/FilterBar.test.tsx | 20 +
.../components/FilterBar/filters/LoopFilter.tsx | 17 +-
.../FilterBar/filters/MultiSelectPill.tsx | 4 +-
.../FilterBar/filters/RunStateFilter.tsx | 27 +-
.../components/FilterBar/filters/SelectFilter.tsx | 21 +-
.../FilterBar/filters/TagsFilter.test.tsx | 2 +-
.../FilterBar/filters/TextSearchFilter.tsx | 4 +-
.../components/FlexibleForm/FieldArray.test.tsx | 182 +
.../ui/src/components/FlexibleForm/FieldArray.tsx | 141 +
.../components/FlexibleForm/FieldMultiSelect.tsx | 4 +
.../components/FlexibleForm/FieldSelector.test.tsx | 87 +
.../src/components/FlexibleForm/FieldSelector.tsx | 17 +-
.../components/FlexibleForm/FieldStringArray.tsx | 70 -
.../components/FlexibleForm/parseArrayElement.ts | 62 +
.../ui/src/components/Graph/elkGraphUtils.test.ts | 14 +
.../ui/src/components/Graph/elkGraphUtils.ts | 3 -
.../airflow/ui/src/components/ImportErrorCount.tsx | 13 +-
.../ui/src/components/PresetFiltersMenu.test.tsx | 6 +-
.../ui/src/components/PresetFiltersMenu.tsx | 2 +-
.../src/airflow/ui/src/constants/filterConfigs.tsx | 37 +
.../src/airflow/ui/src/constants/searchParams.ts | 5 +
.../ui/src/context/groups/GroupsProvider.test.tsx | 34 +-
.../ui/src/context/groups/GroupsProvider.tsx | 45 +-
.../src/airflow/ui/src/i18n/ariaLabels.test.ts | 50 +
.../src/airflow/ui/src/i18n/locales.test.ts | 78 +
.../src/airflow/ui/src/layouts/BaseLayout.test.tsx | 23 +-
.../src/airflow/ui/src/layouts/BaseLayout.tsx | 18 +-
.../ui/src/layouts/Details/DagBreadcrumb.test.tsx | 21 +-
.../ui/src/layouts/Details/DagBreadcrumb.tsx | 1 -
.../airflow/ui/src/layouts/Details/Grid/Grid.tsx | 11 +-
.../Details/Grid/GridSelectionActionBar.test.tsx | 80 +
.../Details/Grid/GridSelectionActionBar.tsx | 37 +-
.../layouts/Details/Grid/TaskInstancesColumn.tsx | 11 +-
.../Grid/useGridSelectedTaskInstances.test.tsx | 44 +-
.../Details/Grid/useGridSelectedTaskInstances.ts | 22 +-
.../layouts/Details/Grid/useGridSelection.test.tsx | 93 +-
.../src/layouts/Details/Grid/useGridSelection.ts | 74 +-
.../src/airflow/ui/src/mocks/handlers/admin.ts | 1 +
.../src/airflow/ui/src/mocks/handlers/assets.ts | 47 +-
.../src/airflow/ui/src/mocks/handlers/backfills.ts | 24 +-
.../src/airflow/ui/src/mocks/handlers/dags.ts | 23 +-
.../src/airflow/ui/src/pages/Asset/AssetEvents.tsx | 7 +-
.../ui/src/pages/Asset/AssetEventsFilters.test.tsx | 50 +
.../src/airflow/ui/src/pages/Asset/AssetLayout.tsx | 3 +
.../Asset/AssetStateStore/AssetStateStore.tsx | 2 +-
.../src/airflow/ui/src/pages/Asset/Header.test.tsx | 6 +-
.../ui/src/pages/AssetsList/AssetsList.test.tsx | 6 +-
.../ui/src/pages/Dag/Backfills/Backfills.tsx | 4 +
.../Dag/Backfills/BackfillsDateFilter.test.tsx | 38 +-
.../src/pages/Dag/Backfills/BackfillsFilters.tsx | 1 +
.../ui/src/pages/Dag/RequiredActionsRoute.test.tsx | 6 +-
.../ui/src/pages/DagBundle/BundleFiles.test.tsx | 62 +
.../airflow/ui/src/pages/DagBundle/BundleFiles.tsx | 29 +-
.../src/pages/DagBundle/FileImportError.test.tsx | 147 +
.../ui/src/pages/DagBundle/FileImportError.tsx | 62 +-
.../ui/src/pages/DagBundles/DagBundles.test.tsx | 6 +-
.../airflow/ui/src/pages/DagRuns/DagRuns.test.tsx | 6 +-
.../src/airflow/ui/src/pages/DagsList/DagCard.tsx | 14 +-
.../src/pages/DagsList/DagRunStateCounts.test.tsx | 5 +
.../ui/src/pages/DagsList/DagRunStateCounts.tsx | 2 +-
.../DagsList/DagsFilters/DagsFilters.test.tsx | 51 +-
.../src/pages/DagsList/DagsFilters/DagsFilters.tsx | 1 +
.../ui/src/pages/DagsList/DagsList.test.tsx | 6 +-
.../src/airflow/ui/src/pages/DagsList/DagsList.tsx | 14 +-
.../airflow/ui/src/pages/DagsList/RecentRuns.tsx | 6 +-
.../DagsList/recentRunsLayout.ts} | 12 +-
.../src/airflow/ui/src/pages/Error.test.tsx | 100 +
airflow-core/src/airflow/ui/src/pages/Error.tsx | 13 +
.../airflow/ui/src/pages/Run/CallbackLogs.test.tsx | 1 +
.../airflow/ui/src/pages/Run/Callbacks.test.tsx | 1 +
.../TaskInstance/Logs/LogSearchInput.test.tsx | 16 +-
.../src/pages/TaskInstance/Logs/LogSearchInput.tsx | 4 +-
.../ui/src/pages/TaskInstance/Logs/Logs.test.tsx | 28 +-
.../pages/TaskInstance/Logs/LogsSelection.test.tsx | 6 +
.../src/pages/TaskInstances/TaskInstances.test.tsx | 36 +
.../ui/src/pages/TaskInstances/TaskInstances.tsx | 6 +
.../TaskInstances/TaskInstancesFilter.test.tsx | 48 +
.../pages/TaskInstances/TaskInstancesFilter.tsx | 2 +
.../src/airflow/ui/src/pages/XCom/XCom.test.tsx | 6 +-
.../airflow/ui/src/pages/documentTitle.test.tsx | 62 +-
.../ui/src/queries/dagListQueryKeys.test.tsx | 134 +
.../airflow/ui/src/queries/gridViewQueryKeys.ts | 10 +
.../airflow/ui/src/queries/useBulkClearDagRuns.ts | 3 +-
.../airflow/ui/src/queries/useBulkDeleteDagRuns.ts | 9 +-
.../airflow/ui/src/queries/useBulkPatchDagRun.ts | 5 +-
.../src/airflow/ui/src/queries/useClearRun.ts | 3 +-
.../ui/src/queries/useClearTaskInstances.ts | 3 +-
.../ui/src/queries/useCreateBackfill.test.tsx | 9 +-
.../airflow/ui/src/queries/useCreateBackfill.ts | 6 +-
.../src/airflow/ui/src/queries/useDags.tsx | 3 +
.../src/airflow/ui/src/queries/useDeleteDagRun.ts | 9 +-
.../ui/src/queries/useHasMultipleDagBundles.ts | 6 +-
.../src/airflow/ui/src/queries/usePatchDagRun.ts | 3 +-
.../src/airflow/ui/src/queries/useTrigger.ts | 15 +-
airflow-core/src/airflow/ui/src/router.test.tsx | 71 +-
airflow-core/src/airflow/ui/src/router.tsx | 316 +-
.../src/airflow/ui/src/utils/AppWrapper.tsx | 16 +-
.../src/airflow/ui/src/utils/routeModule.ts | 45 +
.../src/airflow/ui/src/utils/useFiltersHandler.ts | 5 +
.../src/airflow/ui/tests/e2e/pages/DagsPage.ts | 4 +-
.../src/airflow/ui/tests/e2e/specs/asset.spec.ts | 75 +
.../airflow/ui/tests/e2e/specs/dag-bundles.spec.ts | 4 +-
airflow-core/src/airflow/utils/db_cleanup.py | 25 +-
.../tests/unit/always/test_project_structure.py | 5 -
.../managers/simple/test_simple_auth_manager.py | 17 +
.../tests/unit/api_fastapi/core_api/conftest.py | 30 +-
.../core_api/routes/public/test_assets.py | 501 +-
.../core_api/routes/public/test_dag_bundles.py | 757 +--
.../core_api/routes/public/test_dag_run.py | 129 +
.../core_api/routes/public/test_execution.py | 1 +
.../core_api/routes/public/test_triggers.py | 688 +++
.../core_api/routes/public/test_variables.py | 104 +
.../core_api/routes/ui/test_dag_bundles.py | 103 +
.../api_fastapi/execution_api/test_security.py | 102 +-
.../versions/head/test_asset_events.py | 49 +-
.../versions/head/test_asset_state_store.py | 99 +-
.../versions/head/test_dag_parsing.py | 111 +-
.../versions/head/test_task_instances.py | 6 +-
.../versions/head/test_task_state_store.py | 22 +
.../versions/v2026_10_30/test_task_instances.py | 34 -
.../versions/v2027_02_28/test_task_instances.py | 84 +
.../unit/api_fastapi/logging/test_decorators.py | 45 +-
.../tests/unit/cli/commands/test_config_command.py | 59 +
.../tests/unit/cli/commands/test_dag_command.py | 8 +-
.../unit/cli/commands/test_scheduler_command.py | 38 +
.../tests/unit/cli/commands/test_task_command.py | 18 +
airflow-core/tests/unit/cli/test_cli_parser.py | 21 +
airflow-core/tests/unit/core/test_settings.py | 44 +-
.../unit/dag_processing/test_api_requested_work.py | 79 +-
.../tests/unit/dag_processing/test_manager.py | 114 +-
.../dag_processing/test_manager_api_failures.py | 54 +-
.../dag_processing/test_manager_api_inventory.py | 7 +-
.../dag_processing/test_manager_api_results.py | 61 +-
.../tests/unit/dag_processing/test_processor.py | 11 +-
.../dag_processing/test_requested_work_recovery.py | 62 +-
.../tests/unit/executors/test_executor_loader.py | 6 +-
.../tests/unit/executors/test_local_executor.py | 232 +-
airflow-core/tests/unit/jobs/test_scheduler_job.py | 200 +-
airflow-core/tests/unit/jobs/test_triggerer_job.py | 645 +-
.../test_0152_add_state_and_owner_to_trigger.py | 207 +
.../test_0153_add_index_on_callback_trigger_id.py | 249 +
...s.py => test_0155_add_processor_work_claims.py} | 2 +-
airflow-core/tests/unit/models/test_callback.py | 17 +
airflow-core/tests/unit/models/test_cleartasks.py | 77 +
airflow-core/tests/unit/models/test_dagrun.py | 70 +-
.../tests/unit/models/test_taskinstance.py | 1 +
airflow-core/tests/unit/models/test_trigger.py | 281 +-
airflow-core/tests/unit/state/test_metastore.py | 7 +
.../tests/unit/timetables/test_cron_mixin.py | 40 +-
.../tests/unit/triggers/test_base_trigger.py | 15 +-
airflow-core/tests/unit/utils/test_db_cleanup.py | 93 +-
airflow-ctl-tests/pyproject.toml | 6 +-
.../tests/airflowctl_tests/conftest.py | 9 +
.../airflowctl_tests/test_airflowctl_commands.py | 24 +-
.../tests/airflowctl_tests/test_dag_run_wait.py | 15 +
airflow-ctl/docs/cli-and-env-variables-ref.rst | 28 +-
airflow-ctl/docs/howto/index.rst | 1 +
airflow-ctl/docs/images/command_hashes.txt | 4 +-
airflow-ctl/docs/images/output_taskinstances.svg | 86 +-
airflow-ctl/docs/images/output_tasks.svg | 94 +-
airflow-ctl/pyproject.toml | 6 +-
airflow-ctl/src/airflowctl/__main__.py | 5 +
airflow-ctl/src/airflowctl/api/client.py | 197 +-
.../airflowctl/api/datamodels/auth_generated.py | 2 +-
.../src/airflowctl/api/datamodels/generated.py | 240 +-
airflow-ctl/src/airflowctl/api/operations.py | 474 +-
airflow-ctl/src/airflowctl/ctl/cli_config.py | 206 +-
.../src/airflowctl/ctl/commands/auth_command.py | 67 +-
.../airflowctl/ctl/commands/connection_command.py | 52 +-
.../src/airflowctl/ctl/commands/dag_command.py | 7 +-
.../src/airflowctl/ctl/commands/pool_command.py | 34 +-
.../src/airflowctl/ctl/commands/task_command.py | 26 +-
.../airflowctl/ctl/commands/variable_command.py | 26 +-
.../src/airflowctl/ctl/console_formatting.py | 7 +-
airflow-ctl/src/airflowctl/ctl/help_texts.yaml | 3 +
airflow-ctl/src/airflowctl/ctl/utils/validation.py | 48 +
airflow-ctl/src/airflowctl/exceptions.py | 4 +
airflow-ctl/tests/airflow_ctl/api/test_client.py | 297 +-
.../tests/airflow_ctl/api/test_operations.py | 585 +-
.../airflow_ctl/ctl/commands/test_auth_command.py | 186 +
.../ctl/commands/test_connections_command.py | 63 +
.../airflow_ctl/ctl/commands/test_dag_command.py | 48 +
.../airflow_ctl/ctl/commands/test_pool_command.py | 89 +
.../airflow_ctl/ctl/commands/test_task_command.py | 121 +
.../ctl/commands/test_variable_command.py | 85 +
.../tests/airflow_ctl/ctl/test_cli_config.py | 500 +-
.../airflow_ctl/ctl/test_console_formatting.py | 29 +
.../tests/airflow_ctl/ctl/utils}/__init__.py | 0
.../tests/airflow_ctl/ctl/utils/test_dag_run.py | 207 +
.../__main__.py => tests/airflow_ctl/test_main.py} | 35 +-
.../tests/airflow_ctl/utils}/__init__.py | 0
.../airflow_ctl/utils/test_helpers.py} | 35 +-
.../airflow_ctl/utils/test_module_loading.py} | 33 +-
airflow-e2e-tests/docker/openlineage.yml | 69 +-
.../org/apache/airflow/e2e/TestBundleBuilder.java | 6 +-
airflow-e2e-tests/pyproject.toml | 8 +-
.../tests/airflow_e2e_tests/conftest.py | 5 +
.../java_sdk_tests/test_java_sdk_dag.py | 10 +-
.../dags_extra/openlineage_inlet_assets_dag.py | 64 +
.../airflow_e2e_tests/openlineage_tests/harness.py | 256 +-
.../openlineage_tests/prepare_dags.py | 2 +-
.../openlineage_tests/remove_unused_providers.py | 89 +
.../openlineage_tests/test_openlineage_e2e.py | 13 +-
chart/NOTICE | 2 +-
chart/docs/index.rst | 1 +
chart/docs/migrate-to-git-dag-bundle.rst | 226 +
chart/files/pod-template-file.kubernetes-helm-yaml | 87 +-
chart/kustomize-overlays/kerberos/README.rst | 3 +-
chart/newsfragments/72555.significant.rst | 10 +
chart/pyproject.toml | 6 +-
chart/templates/workers/worker-deployment.yaml | 84 +-
.../airflow_aux/test_container_lifecycle.py | 8 +-
.../airflow_aux/test_pod_template_file.py | 221 +-
chart/tests/helm_tests/airflow_core/test_worker.py | 92 +-
.../helm_tests/airflow_core/test_worker_sets.py | 211 +-
chart/tests/helm_tests/security/test_kerberos.py | 100 +-
.../helm_tests/security/test_security_context.py | 25 +-
chart/values.schema.json | 170 +-
chart/values.yaml | 54 +-
clients/python/pyproject.toml | 6 +-
contributing-docs/05_pull_requests.rst | 23 +-
contributing-docs/18_contribution_workflow.rst | 20 +-
contributing-docs/25_maintainer_pr_triage.md | 18 +-
dev/AGENTS.md | 8 +-
dev/breeze/doc/08_ci_tasks.rst | 10 +-
dev/breeze/doc/09_release_management_tasks.rst | 72 +
dev/breeze/doc/10_ui_tasks.rst | 3 +
dev/breeze/doc/11_registry_tasks.rst | 8 +-
...0-run-ci-for-external-contributions-in-forks.md | 5 +-
.../doc/adr/0021-pin-os-dependencies-images.md | 123 +
dev/breeze/doc/ci/02_images.md | 52 +-
dev/breeze/doc/ci/04_selective_checks.md | 12 +-
dev/breeze/doc/ci/05_workflows.md | 75 +-
.../doc/ci/08_fork_ci_for_external_contributors.md | 286 +-
dev/breeze/doc/images/output_ci-image_build.svg | 178 +-
dev/breeze/doc/images/output_ci-image_build.txt | 2 +-
dev/breeze/doc/images/output_ci-image_load.svg | 32 +-
dev/breeze/doc/images/output_ci-image_load.txt | 2 +-
dev/breeze/doc/images/output_ci-image_save.svg | 26 +-
dev/breeze/doc/images/output_ci-image_save.txt | 2 +-
dev/breeze/doc/images/output_prod-image_build.svg | 238 +-
dev/breeze/doc/images/output_prod-image_build.txt | 2 +-
.../doc/images/output_release-management.svg | 48 +-
.../doc/images/output_release-management.txt | 2 +-
...put_release-management_build-os-deps-images.svg | 146 +
...put_release-management_build-os-deps-images.txt | 1 +
...elease-management_constraints-version-check.svg | 60 +-
...elease-management_constraints-version-check.txt | 2 +-
...t_release-management_publish-os-deps-images.svg | 136 +
...t_release-management_publish-os-deps-images.txt | 1 +
.../output_setup_check-all-params-in-groups.svg | 66 +-
.../output_setup_check-all-params-in-groups.txt | 2 +-
.../output_setup_regenerate-command-images.svg | 76 +-
.../output_setup_regenerate-command-images.txt | 2 +-
.../output_ui_check-translation-completeness.svg | 22 +-
.../output_ui_check-translation-completeness.txt | 2 +-
.../output_workflow-run_mirror-base-images.svg | 30 +-
.../output_workflow-run_mirror-base-images.txt | 2 +-
dev/breeze/pyproject.toml | 10 +-
.../src/airflow_breeze/commands/ci_commands.py | 8 +-
.../airflow_breeze/commands/ci_image_commands.py | 57 +-
.../commands/ci_image_commands_config.py | 3 +
.../commands/common_image_options.py | 20 +
.../airflow_breeze/commands/kubernetes_commands.py | 2 +-
.../commands/production_image_commands.py | 4 +
.../commands/production_image_commands_config.py | 1 +
.../airflow_breeze/commands/registry_commands.py | 26 +-
.../commands/release_management_commands.py | 376 +-
.../commands/release_management_commands_config.py | 25 +
.../src/airflow_breeze/commands/ui_commands.py | 329 +-
.../airflow_breeze/commands/ui_commands_config.py | 1 +
.../airflow_breeze/commands/workflow_commands.py | 15 +-
.../commands/workflow_commands_config.py | 1 +
.../files/hardened_os_deps_image_digests.json | 1 +
.../files/hardened_python_image_digests.json | 10 +-
dev/breeze/src/airflow_breeze/global_constants.py | 89 +-
.../src/airflow_breeze/params/build_ci_params.py | 2 +
.../src/airflow_breeze/params/build_prod_params.py | 26 +
.../airflow_breeze/params/common_build_params.py | 37 +
.../templates/pyproject_TEMPLATE.toml.jinja2 | 2 +-
dev/breeze/src/airflow_breeze/utils/ci_audit.py | 177 +-
.../utils/constraints_version_check.py | 67 +-
.../src/airflow_breeze/utils/fork_ci_gate.py | 53 +-
.../src/airflow_breeze/utils/fork_ci_github.py | 62 +-
.../src/airflow_breeze/utils/fork_ci_messages.py | 51 +-
.../src/airflow_breeze/utils/fork_ci_reconcile.py | 680 ++-
.../src/airflow_breeze/utils/gh_workflow_utils.py | 8 +-
dev/breeze/src/airflow_breeze/utils/github.py | 58 +-
.../airflow_breeze/utils/provider_dependencies.py | 6 +-
.../src/airflow_breeze/utils/publish_docs_to_s3.py | 32 +-
.../src/airflow_breeze/utils/selective_checks.py | 18 +
.../airflow_breeze/utils/workflow_run_approval.py | 127 +-
dev/breeze/tests/test_ci_audit.py | 236 +-
dev/breeze/tests/test_ci_image_commands.py | 105 +-
dev/breeze/tests/test_ci_upgrade.py | 1 +
dev/breeze/tests/test_constraints_version_check.py | 140 +
dev/breeze/tests/test_dependency_upgrade_report.py | 398 ++
dev/breeze/tests/test_fork_ci_gate.py | 110 +
dev/breeze/tests/test_fork_ci_github.py | 75 +-
dev/breeze/tests/test_fork_ci_messages.py | 29 +-
dev/breeze/tests/test_fork_ci_reconcile.py | 936 ++-
dev/breeze/tests/test_gh_workflow_utils.py | 6 +-
dev/breeze/tests/test_github_utils.py | 81 +
dev/breeze/tests/test_mirror_base_images.py | 36 +-
dev/breeze/tests/test_os_deps_images.py | 732 +++
dev/breeze/tests/test_provider_dependencies.py | 11 +
dev/breeze/tests/test_publish_docs_to_s3.py | 64 +-
dev/breeze/tests/test_registry_extract_data.py | 90 +
.../tests/test_release_management_commands.py | 2 +-
dev/breeze/tests/test_selective_checks.py | 63 +-
dev/breeze/tests/test_ui_commands.py | 269 +
dev/breeze/tests/test_workflow_commands.py | 19 +-
dev/breeze/tests/test_workflow_run_approval.py | 205 +-
dev/breeze/uv.lock | 206 +-
dev/mypy/pyproject.toml | 6 +-
dev/pyproject.toml | 6 +-
dev/registry/extract_metadata.py | 22 +-
dev/registry/pyproject.toml | 6 +-
dev/registry/tests/test_extract_metadata.py | 72 +-
dev/remove_unsupported_python_constraints.py | 300 +
devel-common/pyproject.toml | 9 +-
devel-common/src/sphinx_exts/exampleinclude.py | 47 +-
.../src/tests_common/test_utils/asserts.py | 12 +-
docker-stack-docs/README.md | 10 +-
docker-stack-docs/build-arg-ref.rst | 14 +
docker-stack-docs/build.rst | 12 +
.../extending/add-airflow-configuration/Dockerfile | 2 +-
.../extending/add-apt-packages/Dockerfile | 2 +-
.../add-build-essential-extend/Dockerfile | 2 +-
.../extending/add-providers/Dockerfile | 2 +-
.../add-pypi-packages-constraints/Dockerfile | 2 +-
.../extending/add-pypi-packages-uv/Dockerfile | 2 +-
.../extending/add-pypi-packages/Dockerfile | 2 +-
.../extending/add-python-venv/Dockerfile | 2 +-
.../extending/add-requirement-packages/Dockerfile | 2 +-
.../extending/custom-providers/Dockerfile | 2 +-
.../extending/embedding-dags/Dockerfile | 2 +-
.../extending/writable-directory/Dockerfile | 2 +-
docker-stack-docs/entrypoint.rst | 14 +-
docker-stack-docs/pyproject.toml | 6 +-
docker-tests/pyproject.toml | 6 +-
generated/provider_metadata.json | 12 +
go-sdk/DEVELOPMENT.md | 29 +-
go-sdk/README.md | 2 +-
go-sdk/airflow/trigger_dag_run_test.go | 22 +-
go-sdk/capabilities.yaml | 4 +-
go-sdk/pkg/execution/client.go | 76 +-
go-sdk/pkg/execution/client_test.go | 76 +
.../pkg/execution/genmodels/discriminators.gen.go | 8 +-
go-sdk/pkg/execution/genmodels/models.gen.go | 22 +-
go-sdk/pkg/execution/messages.go | 2 +-
go-sdk/schema/supervisor-schema.json | 37 +-
go-sdk/sdk/sdk.go | 4 +
java-sdk/example/README.md | 16 +-
.../apache/airflow/example/AnnotationExample.java | 10 +-
.../airflow/example/ExampleBundleBuilder.java | 11 +-
.../airflow/example/InterfaceExampleBuilder.java | 7 -
.../apache/airflow/example/XComCastingExample.java | 16 +-
.../example/src/resources/dags/java_examples.py | 18 +-
.../main/kotlin/org/apache/airflow/sdk/Client.kt | 2 +-
.../main/kotlin/org/apache/airflow/sdk/Context.kt | 66 +-
.../org/apache/airflow/sdk/execution/Client.kt | 8 +-
.../org/apache/airflow/sdk/internal/ConfBinding.kt | 184 +
.../kotlin/org/apache/airflow/sdk/ContextTest.kt | 311 +
.../org/apache/airflow/sdk/execution/CommTest.kt | 91 +-
kubernetes-tests/lang_sdk/ts_example/package.json | 4 +-
.../lang_sdk/ts_example/pnpm-lock.yaml | 34 +-
kubernetes-tests/lang_sdk/ts_example/src/main.ts | 2 +-
kubernetes-tests/pyproject.toml | 6 +-
.../test_kubernetes_pod_operator.py | 2 +-
performance/pyproject.toml | 2 +-
providers-summary-docs/pyproject.toml | 6 +-
providers/.last_release_date.txt | 2 +-
providers/.pre-commit-config.yaml | 2 +-
providers/airbyte/pyproject.toml | 2 +-
providers/akeyless/pyproject.toml | 2 +-
providers/alibaba/docs/changelog.rst | 3 +
providers/alibaba/pyproject.toml | 2 +-
.../providers/alibaba/cloud/sensors/oss_key.py | 9 -
providers/amazon/README.rst | 4 +-
providers/amazon/docs/connections/aws.rst | 24 +-
providers/amazon/docs/executors/ecs-executor.rst | 4 +-
.../amazon/docs/executors/lambda-executor.rst | 2 +-
providers/amazon/docs/index.rst | 6 +-
providers/amazon/docs/operators/duckdb.rst | 11 +-
providers/amazon/pyproject.toml | 10 +-
.../airflow/providers/amazon/aws/hooks/duckdb.py | 48 +-
.../providers/amazon/aws/hooks/sagemaker.py | 19 +
.../providers/amazon/aws/operators/sagemaker.py | 19 +-
.../providers/amazon/aws/triggers/sagemaker.py | 26 +-
.../amazon/tests/system/amazon/aws/example_dms.py | 31 +
.../tests/unit/amazon/aws/hooks/test_duckdb.py | 60 +
.../tests/unit/amazon/aws/hooks/test_sagemaker.py | 59 +
.../aws/operators/test_sagemaker_training.py | 87 +
.../unit/amazon/aws/triggers/test_sagemaker.py | 55 +
providers/anthropic/pyproject.toml | 2 +-
providers/apache/arrow/docs/connections/adbc.rst | 4 +-
providers/apache/arrow/pyproject.toml | 2 +-
.../airflow/providers/apache/arrow/hooks/adbc.py | 109 +-
.../tests/unit/apache/arrow/hooks/test_adbc.py | 191 +-
providers/apache/beam/pyproject.toml | 2 +-
providers/apache/cassandra/pyproject.toml | 2 +-
providers/apache/drill/pyproject.toml | 2 +-
providers/apache/druid/pyproject.toml | 2 +-
providers/apache/flink/pyproject.toml | 2 +-
providers/apache/hdfs/pyproject.toml | 2 +-
providers/apache/hive/docs/changelog.rst | 3 +
providers/apache/hive/pyproject.toml | 2 +-
.../airflow/providers/apache/hive/hooks/hive.py | 18 +-
providers/apache/iceberg/pyproject.toml | 2 +-
providers/apache/impala/pyproject.toml | 2 +-
providers/apache/kafka/docs/changelog.rst | 8 +
providers/apache/kafka/pyproject.toml | 2 +-
.../apache/kafka/plugins/event_producer.py | 13 +-
.../apache/kafka/plugins/test_event_producer.py | 26 +-
providers/apache/kylin/pyproject.toml | 2 +-
providers/apache/livy/pyproject.toml | 2 +-
providers/apache/pig/pyproject.toml | 2 +-
providers/apache/pinot/pyproject.toml | 2 +-
providers/apache/spark/pyproject.toml | 2 +-
providers/apache/tinkerpop/pyproject.toml | 2 +-
providers/apprise/pyproject.toml | 2 +-
providers/arangodb/pyproject.toml | 2 +-
providers/asana/pyproject.toml | 2 +-
providers/atlassian/jira/pyproject.toml | 2 +-
providers/celery/docs/celery_executor.rst | 29 +-
providers/celery/docs/changelog.rst | 3 +
providers/celery/provider.yaml | 13 +-
providers/celery/pyproject.toml | 2 +-
.../providers/celery/executors/celery_executor.py | 19 -
.../celery/executors/celery_kubernetes_executor.py | 19 +-
.../providers/celery/executors/default_celery.py | 4 +-
.../airflow/providers/celery/get_provider_info.py | 2 +-
.../unit/celery/executors/test_celery_executor.py | 38 -
providers/clickhousedb/pyproject.toml | 2 +-
providers/cloudant/pyproject.toml | 2 +-
providers/cncf/kubernetes/docs/changelog.rst | 8 +
providers/cncf/kubernetes/docs/operators.rst | 7 +-
providers/cncf/kubernetes/pyproject.toml | 2 +-
.../airflow/providers/cncf/kubernetes/callbacks.py | 7 +-
.../cncf/kubernetes/decorators/kubernetes_cmd.py | 7 +-
.../kubernetes/executors/kubernetes_executor.py | 25 +-
.../executors/local_kubernetes_executor.py | 14 -
.../providers/cncf/kubernetes/hooks/kubernetes.py | 23 +-
.../providers/cncf/kubernetes/operators/pod.py | 13 +
.../cncf/kubernetes/utils/xcom_sidecar.py | 2 +-
.../system/cncf/kubernetes/example_kubernetes.py | 2 +-
.../cncf/kubernetes/example_kubernetes_async.py | 2 +-
.../kubernetes/decorators/test_kubernetes_cmd.py | 23 +
.../decorators/test_kubernetes_commons.py | 5 +-
.../executors/test_kubernetes_executor.py | 62 +-
.../unit/cncf/kubernetes/hooks/test_kubernetes.py | 57 +
.../unit/cncf/kubernetes/operators/test_pod.py | 90 +-
.../kubernetes/operators/test_spark_kubernetes.py | 44 -
providers/cohere/pyproject.toml | 2 +-
providers/common/ai/docs/changelog.rst | 11 +
.../common/ai/docs/connections/pydantic_ai.rst | 4 +
.../common/ai/docs/frameworks/openai_agents.rst | 629 +-
providers/common/ai/docs/observability.rst | 7 +-
providers/common/ai/docs/operators/llm.rst | 15 +
providers/common/ai/docs/toolsets/skills.rst | 20 +
providers/common/ai/provider.yaml | 20 +-
providers/common/ai/pyproject.toml | 6 +-
.../providers/common/ai/decorators/agent.py | 9 +-
.../airflow/providers/common/ai/decorators/llm.py | 11 +-
.../providers/common/ai/decorators/llm_branch.py | 11 +-
.../common/ai/decorators/llm_file_analysis.py | 7 +-
.../common/ai/decorators/llm_schema_compare.py | 7 +-
.../providers/common/ai/decorators/llm_sql.py | 7 +-
.../providers/common/ai/durable/capability.py | 9 +-
.../common/ai/example_dags/example_llm.py | 4 +-
.../example_dags/example_llm_analysis_pipeline.py | 7 +-
.../ai/example_dags/example_llm_review_loop.py | 81 +
.../example_openai_agents_data_access.py | 101 +
.../providers/common/ai/get_provider_info.py | 19 +-
.../airflow/providers/common/ai/operators/agent.py | 3 +-
.../ai/plugins/www/src/components/ModelPanel.tsx | 7 +-
.../plugins/www/src/components/SkillsSection.tsx | 94 +
.../ai/plugins/www/src/hooks/useModelInfo.ts | 27 +-
.../common/ai/plugins/www/src/model-api.ts | 9 +-
.../common/ai/plugins/www/src/skill-source.ts | 54 +
.../common/ai/plugins/www/src/types/model.ts | 17 +
.../common/ai/plugins/www/tests/model.test.mjs | 44 +-
.../ai/plugins/www/tests/skill-source.test.ts | 69 +
.../providers/common/ai/sandbox/opensandbox.py | 2 +-
.../ai/src/airflow/providers/common/ai/skills.py | 34 +-
.../airflow/providers/common/ai/toolsets/skills.py | 97 +-
.../airflow/providers/common/ai/utils/logging.py | 4 +
.../airflow/providers/common/ai/utils/prompt.py | 20 +-
.../tests/unit/common/ai/decorators/test_agent.py | 20 +
.../ai/tests/unit/common/ai/decorators/test_llm.py | 72 +
.../unit/common/ai/decorators/test_llm_branch.py | 17 +
.../common/ai/decorators/test_llm_file_analysis.py | 21 +
.../ai/decorators/test_llm_schema_compare.py | 22 +
.../unit/common/ai/decorators/test_llm_sql.py | 17 +
.../unit/common/ai/durable/test_capability.py | 7 +-
.../tests/unit/common/ai/hooks/test_pydantic_ai.py | 14 +-
.../tests/unit/common/ai/operators/test_agent.py | 5 +-
.../ai/operators/test_agent_tool_approval.py | 5 +-
.../unit/common/ai/sandbox/test_opensandbox.py | 15 +
.../tests/unit/common/ai/test_provider_metadata.py | 125 +-
.../common/ai/tests/unit/common/ai/test_skills.py | 15 +-
.../common/ai/tests/unit/common/ai/tool_parts.py | 28 +-
.../ai/tests/unit/common/ai/toolsets/test_hook.py | 12 +-
.../unit/common/ai/toolsets/test_managed_agent.py | 12 +-
.../unit/common/ai/toolsets/test_retry_budget.py | 5 +-
.../tests/unit/common/ai/toolsets/test_skills.py | 213 +-
providers/common/compat/pyproject.toml | 2 +-
providers/common/dataquality/pyproject.toml | 2 +-
providers/common/io/pyproject.toml | 2 +-
.../providers/common/io/state_store/backend.py | 13 +-
.../unit/common/io/state_store/test_backend.py | 104 +-
providers/common/messaging/pyproject.toml | 2 +-
providers/common/sql/docs/changelog.rst | 8 +
providers/common/sql/docs/operators.rst | 47 +
providers/common/sql/pyproject.toml | 2 +-
.../providers/common/sql/decorators/analytics.py | 4 +-
.../airflow/providers/common/sql/decorators/sql.py | 4 +-
.../src/airflow/providers/common/sql/hooks/sql.py | 37 -
.../src/airflow/providers/common/sql/hooks/sql.pyi | 6 -
.../airflow/providers/common/sql/sensors/sql.py | 86 +-
.../airflow/providers/common/sql/sensors/sql.pyi | 10 +-
.../airflow/providers/common/sql/triggers/sql.py | 85 +-
.../airflow/providers/common/sql/triggers/sql.pyi | 26 +-
.../airflow/providers/common/sql/version_compat.py | 2 +
.../tests/system/common/sql/example_sql_sensor.py | 50 +
.../unit/common/sql/decorators/test_analytics.py | 20 +
.../tests/unit/common/sql/decorators/test_sql.py | 19 +
.../sql/tests/unit/common/sql/sensors/test_sql.py | 200 +-
.../sql/tests/unit/common/sql/triggers/test_sql.py | 94 +-
providers/databricks/pyproject.toml | 2 +-
providers/datadog/pyproject.toml | 2 +-
providers/dbt/cloud/pyproject.toml | 2 +-
.../src/airflow/providers/dbt/cloud/hooks/dbt.py | 8 +-
.../cloud/tests/unit/dbt/cloud/hooks/test_dbt.py | 13 +
providers/dingding/pyproject.toml | 2 +-
providers/discord/pyproject.toml | 2 +-
providers/docker/pyproject.toml | 2 +-
.../tests/unit/docker/decorators/test_docker.py | 63 +-
providers/duckdb/pyproject.toml | 2 +-
providers/edge3/pyproject.toml | 6 +-
providers/elasticsearch/pyproject.toml | 2 +-
providers/exasol/docs/changelog.rst | 3 +
providers/exasol/pyproject.toml | 2 +-
.../src/airflow/providers/exasol/hooks/exasol.py | 22 -
providers/fab/docs/auth-manager/access-control.rst | 20 +-
providers/fab/docs/changelog.rst | 11 +
providers/fab/pyproject.toml | 6 +-
.../providers/fab/auth_manager/fab_auth_manager.py | 50 +-
.../fab/auth_manager/security_manager/override.py | 2 +
.../providers/fab/www/security/permissions.py | 1 +
.../unit/fab/auth_manager/test_fab_auth_manager.py | 60 +-
providers/facebook/pyproject.toml | 2 +-
providers/ftp/pyproject.toml | 2 +-
.../ftp/src/airflow/providers/ftp/hooks/ftp.py | 17 +-
providers/ftp/tests/unit/ftp/hooks/test_ftp.py | 27 +
providers/git/pyproject.toml | 2 +-
providers/github/pyproject.toml | 2 +-
providers/google/README.rst | 5 +-
providers/google/docs/connections/gcp.rst | 30 +
providers/google/docs/index.rst | 5 +-
providers/google/pyproject.toml | 8 +-
.../providers/google/cloud/hooks/bigquery.py | 46 +-
.../providers/google/cloud/operators/dataproc.py | 24 +-
.../providers/google/cloud/sensors/bigquery.py | 73 +-
.../providers/google/cloud/triggers/bigquery.py | 45 +-
.../providers/google/cloud/triggers/dataproc.py | 39 +-
.../google/cloud/utils/credentials_provider.py | 7 +-
.../google/cloud/utils/external_token_supplier.py | 10 +-
.../providers/google/common/hooks/base_google.py | 6 +-
.../example_bigquery_streaming_buffer_sensor.py | 19 +-
.../tests/unit/google/cloud/hooks/test_bigquery.py | 89 +-
.../tests/unit/google/cloud/links/test_dataproc.py | 199 +
.../google/cloud/links/test_kubernetes_engine.py | 152 +
.../unit/google/cloud/links/test_translate.py | 212 +
.../unit/google/cloud/operators/test_dataproc.py | 45 +
.../unit/google/cloud/sensors/test_bigquery.py | 140 +-
.../unit/google/cloud/transfers/test_gcs_to_gcs.py | 110 +-
.../google/cloud/transfers/test_presto_to_gcs.py | 314 +
.../unit/google/cloud/triggers/test_bigquery.py | 106 +-
.../unit/google/cloud/triggers/test_dataproc.py | 95 +
.../cloud/utils/test_credentials_provider.py | 27 +
.../cloud/utils/test_external_token_supplier.py | 50 +
.../unit/google/common/hooks/test_base_google.py | 23 +
providers/grpc/pyproject.toml | 2 +-
providers/hashicorp/docs/index.rst | 2 +-
providers/hashicorp/pyproject.toml | 4 +-
providers/http/pyproject.toml | 2 +-
providers/ibm/db2/pyproject.toml | 2 +-
providers/ibm/mq/pyproject.toml | 2 +-
providers/imap/pyproject.toml | 2 +-
providers/influxdb/pyproject.toml | 2 +-
providers/informatica/pyproject.toml | 2 +-
providers/jdbc/pyproject.toml | 2 +-
providers/jenkins/pyproject.toml | 2 +-
.../docs/auth-manager/manage/permissions.rst | 4 +-
providers/keycloak/docs/changelog.rst | 9 +
providers/keycloak/pyproject.toml | 2 +-
.../keycloak/auth_manager/cli/commands.py | 9 +-
.../keycloak/auth_manager/keycloak_auth_manager.py | 7 +-
.../keycloak/auth_manager/cli/test_commands.py | 11 +-
.../auth_manager/test_keycloak_auth_manager.py | 2 +
providers/microsoft/azure/README.rst | 4 +-
providers/microsoft/azure/docs/changelog.rst | 6 +
providers/microsoft/azure/docs/index.rst | 4 +-
providers/microsoft/azure/pyproject.toml | 6 +-
.../microsoft/azure/transfers/s3_to_wasb.py | 4 +-
.../microsoft/azure/transfers/test_s3_to_wasb.py | 4 +-
providers/microsoft/mssql/pyproject.toml | 2 +-
providers/microsoft/psrp/pyproject.toml | 2 +-
providers/microsoft/winrm/pyproject.toml | 2 +-
providers/modal/pyproject.toml | 2 +-
providers/mongo/pyproject.toml | 2 +-
providers/mysql/pyproject.toml | 2 +-
providers/neo4j/pyproject.toml | 2 +-
providers/odbc/pyproject.toml | 2 +-
providers/openai/pyproject.toml | 2 +-
providers/openfaas/pyproject.toml | 2 +-
providers/openlineage/pyproject.toml | 2 +-
.../tests/system/openlineage/constants.py | 6 +
.../openlineage/example_openlineage_clear_dag.py | 169 +
.../example_openlineage_edge_labels_dag.py | 16 +-
.../example_openlineage_manual_lineage_dag.py | 17 +-
.../example_openlineage_manual_state_dag.py | 274 +
.../example_openlineage_mapped_simple_dag.py | 7 +-
.../example_openlineage_policy_conf_locked_dag.py | 59 -
...le_openlineage_policy_dag_events_trigger_dag.py | 6 +-
...xample_openlineage_policy_full_task_info_dag.py | 57 -
...ample_openlineage_schedule_asset_or_time_dag.py | 2 +-
.../example_openlineage_schedule_cron_dag.py | 2 +-
...openlineage_schedule_list_complex_assets_dag.py | 2 +-
...penlineage_schedule_list_multiple_assets_dag.py | 2 +-
...e_openlineage_schedule_list_single_asset_dag.py | 2 +-
...ple_openlineage_schedule_multiple_assets_dag.py | 2 +-
...xample_openlineage_schedule_single_asset_dag.py | 2 +-
.../example_openlineage_schedule_timetable_dag.py | 2 +-
.../example_openlineage_short_circuit_dag.py | 4 +-
.../example_openlineage_task_groups_dag.py | 4 +-
.../example_openlineage_task_loop_dag.py | 4 +-
.../example_openlineage_task_loop_groups_dag.py | 4 +-
.../example_openlineage_task_loop_state_dag.py | 240 +
.../example_openlineage_task_outcomes_dag.py | 285 +
.../example_openlineage_task_states_dag.py | 8 +-
.../openlineage/example_openlineage_trigger_dag.py | 74 +-
.../example_openlineage_trigger_dag_deferrable.py | 65 +-
.../example_openlineage_trigger_failed_dag.py | 11 +-
.../openlineage_all_facets_dag.json | 1 +
.../openlineage_base_complex_dag__af3.json | 114 +-
.../openlineage_base_simple_dag__af3.json | 12 +-
.../expected_events/openlineage_clear_dag.json | 1268 ++++
.../openlineage_custom_operator_failure_dag.json | 16 +-
...openlineage_custom_operator_ol_methods_dag.json | 1 +
.../openlineage_defer_simple_dag__af2.json | 13 +-
.../openlineage_defer_simple_dag__af3.json | 1 +
...openlineage_defer_simple_dag__af3_2_2_plus.json | 1 +
.../expected_events/openlineage_docs_file_dag.json | 26 +
.../expected_events/openlineage_hitl_dag.json | 83 +
.../openlineage_manual_lineage_dag.json | 171 +-
.../openlineage_manual_state_dag.json | 1195 ++++
.../openlineage_mapped_simple_dag.json | 13 +-
.../openlineage_policy_conf_locked_dag.json | 26 -
.../openlineage_policy_full_task_info_dag.json | 38 -
.../openlineage_sensor_reschedule_dag.json | 8 +-
.../openlineage_sensor_reschedule_dag__af3_0.json | 8 +-
.../openlineage_setup_teardown_dag__af3.json | 104 +
.../openlineage_short_circuit_dag.json | 50 +-
.../openlineage_task_groups_dag.json | 29 +
.../openlineage_task_loop_state_dag.json | 3062 ++++++++++
.../openlineage_task_outcomes_dag.json | 1164 ++++
.../openlineage_task_states_dag.json | 30 +
.../openlineage_task_states_dag__af3_0.json | 30 +
.../openlineage_taskflow_simple_dag.json | 12 +-
.../expected_events/openlineage_trigger_dag.json | 309 +
.../openlineage_trigger_dag__af3_3_plus.json | 309 +
.../openlineage_trigger_dag_deferrable.json | 61 +-
...lineage_trigger_dag_deferrable__af3_3_plus.json | 61 +-
.../openlineage_trigger_failed_dag.json | 87 +-
...openlineage_trigger_failed_dag__af3_3_plus.json | 87 +-
.../openlineage_versioned_dag__af3.json | 14 +-
.../tests/system/openlineage/manual_state.py | 438 ++
.../tests/system/openlineage/operator.py | 79 +-
.../tests/system/openlineage/triggers.py | 24 +-
providers/opensearch/pyproject.toml | 2 +-
providers/opsgenie/pyproject.toml | 2 +-
providers/oracle/pyproject.toml | 2 +-
providers/pagerduty/pyproject.toml | 2 +-
providers/papermill/pyproject.toml | 2 +-
providers/pgvector/pyproject.toml | 2 +-
providers/pinecone/pyproject.toml | 2 +-
providers/postgres/pyproject.toml | 2 +-
providers/presto/docs/changelog.rst | 3 +
providers/presto/pyproject.toml | 2 +-
.../src/airflow/providers/presto/hooks/presto.py | 10 -
providers/qdrant/pyproject.toml | 2 +-
providers/redis/pyproject.toml | 2 +-
providers/salesforce/pyproject.toml | 2 +-
providers/samba/pyproject.toml | 2 +-
providers/segment/pyproject.toml | 2 +-
providers/sendgrid/pyproject.toml | 2 +-
providers/sftp/pyproject.toml | 2 +-
providers/singularity/pyproject.toml | 2 +-
providers/slack/pyproject.toml | 2 +-
providers/smtp/pyproject.toml | 2 +-
providers/snowflake/pyproject.toml | 4 +-
.../providers/snowflake/hooks/cortex_agent.py | 182 +-
.../airflow/providers/snowflake/hooks/snowflake.py | 1 +
.../unit/snowflake/hooks/test_cortex_agent.py | 475 +-
.../tests/unit/snowflake/hooks/test_snowflake.py | 45 +-
...test_snowflake.py => test_snowflake_trigger.py} | 43 +
providers/sqlite/pyproject.toml | 2 +-
providers/ssh/docs/operators/ssh_remote_job.rst | 23 +-
providers/ssh/pyproject.toml | 2 +-
.../providers/ssh/operators/ssh_remote_job.py | 6 +-
.../src/airflow/providers/ssh/utils/remote_job.py | 174 +-
.../ssh/tests/unit/ssh/utils/test_remote_job.py | 227 +-
providers/standard/docs/changelog.rst | 9 +
providers/standard/docs/sensors/asset.rst | 304 +
providers/standard/provider.yaml | 2 +
providers/standard/pyproject.toml | 2 +-
.../airflow/providers/standard/decorators/bash.py | 4 +-
.../standard/example_dags/example_asset_sensor.py | 85 +
.../providers/standard/get_provider_info.py | 2 +
.../airflow/providers/standard/sensors/asset.py | 330 ++
.../providers/standard/sensors/time_delta.py | 23 -
.../tests/unit/standard/decorators/test_bash.py | 21 +
.../tests/unit/standard/sensors/test_asset.py | 806 +++
.../tests/unit/standard/sensors/test_time_delta.py | 47 +-
providers/tableau/pyproject.toml | 2 +-
providers/telegram/pyproject.toml | 2 +-
providers/teradata/pyproject.toml | 2 +-
providers/trino/docs/changelog.rst | 3 +
providers/trino/pyproject.toml | 2 +-
.../src/airflow/providers/trino/hooks/trino.py | 10 -
providers/vertica/pyproject.toml | 2 +-
providers/vespa/pyproject.toml | 2 +-
providers/weaviate/pyproject.toml | 2 +-
providers/yandex/docs/changelog.rst | 4 +
providers/yandex/pyproject.toml | 2 +-
.../src/airflow/providers/yandex/hooks/dataproc.py | 15 -
providers/ydb/pyproject.toml | 2 +-
providers/zendesk/pyproject.toml | 2 +-
pyproject.toml | 24 +-
registry/.eleventy.js | 5 +
registry/README.md | 4 +
registry/src/css/main.css | 37 +-
registry/src/provider-version.njk | 54 +-
scripts/ci/docker_data_root_snapshot.sh | 207 +
.../ci/prek/check_airflowctl_command_coverage.py | 1 -
scripts/ci/prek/check_ci_workflows_in_sync.py | 9 +-
scripts/ci/prek/check_extra_packages_ref.py | 2 +-
scripts/ci/prek/check_imports_in_providers.py | 2 +-
scripts/ci/prek/check_license.py | 2 +-
.../check_template_context_variable_in_sync.py | 4 +-
scripts/ci/prek/extract_permissions.py | 6 +-
scripts/ci/prek/fab_permissions_doc.py | 41 +-
scripts/ci/prek/lint_dockerfile.py | 2 +-
scripts/ci/prek/ruff_format.py | 2 +-
scripts/ci/prek/upgrade_important_versions.py | 103 +-
scripts/ci/spot_interruptions.py | 21 +-
.../docker/install_airflow_when_building_images.sh | 48 +-
scripts/docker/install_os_dependencies.sh | 123 +-
scripts/in_container/check_junitxml_result.py | 2 +-
scripts/in_container/run_ci_tests.sh | 12 +
scripts/pyproject.toml | 6 +-
.../tests/ci/prek/test_compile_provider_assets.py | 1 -
scripts/tests/ci/prek/test_compile_ui_assets.py | 1 -
scripts/tests/ci/prek/test_extract_permissions.py | 50 +
.../tests/ci/prek/test_fab_permissions_doc.py | 33 +-
.../ci/prek/test_upgrade_important_versions.py | 114 +-
scripts/tests/ci/test_docker_data_root_snapshot.py | 459 ++
scripts/tests/ci/test_prek_cache_optimizations.py | 84 +-
scripts/tests/ci/test_spot_interruptions.py | 78 +-
scripts/tools/setup_breeze | 2 +-
shared/configuration/pyproject.toml | 6 +-
shared/dagnode/pyproject.toml | 6 +-
shared/listeners/pyproject.toml | 6 +-
shared/logging/pyproject.toml | 6 +-
shared/module_loading/pyproject.toml | 6 +-
.../module_loading/file_discovery.py | 3 +
.../tests/module_loading/test_file_discovery.py | 17 +
shared/observability/pyproject.toml | 6 +-
.../observability/metrics/metrics_template.yaml | 13 +-
shared/plugins_manager/pyproject.toml | 6 +-
shared/providers_discovery/pyproject.toml | 6 +-
shared/secrets_backend/pyproject.toml | 6 +-
shared/secrets_masker/pyproject.toml | 6 +-
.../secrets_masker/secrets_masker.py | 32 +-
.../tests/secrets_masker/test_secrets_masker.py | 103 +-
shared/serialization/pyproject.toml | 6 +-
shared/state/pyproject.toml | 6 +-
shared/state/src/airflow_shared/state/__init__.py | 30 +-
shared/state/tests/state/test_state.py | 45 +
shared/template_rendering/pyproject.toml | 6 +-
shared/timezones/pyproject.toml | 6 +-
task-sdk-integration-tests/pyproject.toml | 6 +-
task-sdk/docs/api.rst | 6 +
task-sdk/docs/index.rst | 1 +
task-sdk/docs/task-handler.rst | 127 +
task-sdk/docs/ts-bundle-spec.rst | 2 +-
task-sdk/pyproject.toml | 8 +-
task-sdk/src/airflow/sdk/__init__.py | 17 +-
task-sdk/src/airflow/sdk/__init__.pyi | 4 +
task-sdk/src/airflow/sdk/api/client.py | 4 +-
.../src/airflow/sdk/api/datamodels/_generated.py | 17 +-
.../src/airflow/sdk/coordinators/_subprocess.py | 38 +-
.../airflow/sdk/coordinators/java/coordinator.py | 95 +-
task-sdk/src/airflow/sdk/coordinators/python.py | 212 +
task-sdk/src/airflow/sdk/definitions/context.py | 26 +
.../sdk/definitions/task_handlers/__init__.py | 40 +-
.../sdk/definitions/task_handlers/binding.py | 79 +
.../sdk/definitions/task_handlers/declaration.py | 79 +
.../sdk/definitions/task_handlers/loader.py | 115 +
.../sdk/definitions/task_handlers/registry.py | 65 +
task-sdk/src/airflow/sdk/execution_time/bundles.py | 29 +-
task-sdk/src/airflow/sdk/execution_time/comms.py | 9 +-
task-sdk/src/airflow/sdk/execution_time/context.py | 49 +-
.../src/airflow/sdk/execution_time/coordinator.py | 127 +-
.../airflow/sdk/execution_time/schema/schema.json | 37 +-
.../sdk/execution_time/schema/versions/__init__.py | 6 +-
.../execution_time/schema/versions/v2026_10_30.py | 15 -
.../execution_time/schema/versions/v2027_02_28.py | 29 +-
.../src/airflow/sdk/execution_time/supervisor.py | 27 +-
.../src/airflow/sdk/execution_time/task_runner.py | 131 +-
.../airflow/sdk/importers/yaml_importer/builder.py | 62 +-
task-sdk/tests/task_sdk/api/test_client.py | 50 +
task-sdk/tests/task_sdk/conftest.py | 53 +
.../coordinators/executable/test_coordinator.py | 2 +-
.../task_sdk/coordinators/java/test_coordinator.py | 242 +-
.../coordinators/node/test_bundle_reader.py | 2 +-
.../task_sdk/coordinators/node/test_coordinator.py | 2 +-
.../tests/task_sdk/coordinators/test_subprocess.py | 30 +-
.../definitions/task_handlers/test_loader.py | 164 +
.../task_handlers/test_task_handlers.py | 143 +
.../execution_time/schema/test_migrator.py | 10 +-
.../tests/task_sdk/execution_time/test_context.py | 68 +-
.../task_sdk/execution_time/test_coordinator.py | 7 +-
.../execution_time/test_python_coordinator.py | 156 +
.../execution_time/test_run_task_handler.py | 149 +
.../task_sdk/execution_time/test_supervisor.py | 29 +-
.../task_sdk/execution_time/test_task_runner.py | 42 +-
.../yaml_importer/test_builder_validation.py | 182 +
ts-sdk/DEVELOPMENT.md | 22 +-
ts-sdk/README.md | 8 +-
ts-sdk/adr/0001-mixed-lang-dag-interface.md | 2 +-
ts-sdk/adr/0002-native-dag-interface.md | 2 +-
ts-sdk/capabilities.yaml | 4 +-
ts-sdk/docs/index.md | 6 +-
ts-sdk/docs/package-lock.json | 4 +-
ts-sdk/docs/package.json | 2 +-
ts-sdk/docs/tests/deployment-checks.test.mjs | 4 +-
ts-sdk/example/package.json | 4 +-
ts-sdk/example/src/ai-approval.ts | 6 +-
ts-sdk/example/src/dynamic.ts | 2 +-
ts-sdk/example/src/hitl.ts | 6 +-
ts-sdk/example/src/main.ts | 2 +-
ts-sdk/example/src/native.ts | 2 +-
ts-sdk/example/src/taskflow.ts | 2 +-
ts-sdk/package.json | 5 +-
ts-sdk/pnpm-lock.yaml | 34 +-
ts-sdk/schema/supervisor-schema.json | 37 +-
ts-sdk/scripts/ci/prek/check_dag_schema.py | 1 -
ts-sdk/scripts/validate-release-inputs.mjs | 7 +-
ts-sdk/scripts/validate-release-inputs.test.mjs | 6 +-
ts-sdk/scripts/verify-package.test.mjs | 10 +-
ts-sdk/src/coordinator/arg-binding.ts | 2 +-
ts-sdk/src/coordinator/serde.ts | 2 +-
ts-sdk/src/generated/supervisor.ts | 45 +-
ts-sdk/src/sdk/brand.ts | 2 +-
ts-sdk/src/sdk/client-types.ts | 2 +-
ts-sdk/tests/cli/fixtures/bundle-v1.min.mjs | 4 +-
ts-sdk/tests/cli/pack.test.ts | 2 +-
ts-sdk/tests/coordinator/arg-binding.test.ts | 2 +-
ts-sdk/tests/coordinator/serde.test.ts | 8 +
ts-sdk/tests/hitl/operator.test.ts | 2 +-
ts-sdk/tests/public-api.test.ts | 2 +-
ts-sdk/tests/sdk/bundle.test.ts | 2 +-
ts-sdk/tsconfig.json | 6 +-
ts-sdk/vitest.config.ts | 6 +-
uv.lock | 6191 ++++++++++----------
1097 files changed, 53960 insertions(+), 11188 deletions(-)
create mode 100644 .github/actions/load_image/action.yml
create mode 100644 .github/workflows/dependency-upgrade-report.yml
create mode 100644 .github/workflows/dependency-upgrade-summary.yml
create mode 100644 .github/workflows/prod-packages-build.yml
create mode 100644
airflow-core/docs/administration-and-deployment/logging-monitoring/triggers.rst
create mode 100644 airflow-core/docs/img/ui-dark/dag_overview_versions.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_clear.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_decision.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_graph.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_iterations.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_iterations_tab.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_mapped.png
create mode 100644 airflow-core/docs/img/ui-dark/loops_review.png
create mode 100644 airflow-core/docs/img/ui-light/dag_overview_versions.png
create mode 100644 airflow-core/docs/img/ui-light/loops_clear.png
create mode 100644 airflow-core/docs/img/ui-light/loops_decision.png
create mode 100644 airflow-core/docs/img/ui-light/loops_graph.png
create mode 100644 airflow-core/docs/img/ui-light/loops_iterations.png
create mode 100644 airflow-core/docs/img/ui-light/loops_iterations_tab.png
create mode 100644 airflow-core/docs/img/ui-light/loops_mapped.png
create mode 100644 airflow-core/docs/img/ui-light/loops_review.png
create mode 100644 airflow-core/newsfragments/76234.bugfix.rst
create mode 100644 airflow-core/newsfragments/76430.significant.rst
create mode 100644 airflow-core/newsfragments/76474.significant.rst
create mode 100644
airflow-core/src/airflow/api_fastapi/common/parameters/trigger.py
copy docker-stack-docs/docker-examples/extending/embedding-dags/Dockerfile =>
airflow-core/src/airflow/api_fastapi/core_api/datamodels/ui/dag_bundles.py (76%)
create mode 100644
airflow-core/src/airflow/api_fastapi/core_api/routes/public/triggers.py
create mode 100644
airflow-core/src/airflow/api_fastapi/core_api/routes/ui/dag_bundles.py
create mode 100644
airflow-core/src/airflow/api_fastapi/core_api/services/public/import_errors.py
create mode 100644
airflow-core/src/airflow/migrations/versions/0152_3_5_0_add_state_and_owner_to_trigger.py
create mode 100644
airflow-core/src/airflow/migrations/versions/0153_3_5_0_add_index_on_callback_trigger_id.py
rename
airflow-core/src/airflow/migrations/versions/{0152_3_5_0_add_dag_processor_publication_state.py
=> 0154_3_5_0_add_dag_processor_publication_state.py} (98%)
rename
airflow-core/src/airflow/migrations/versions/{0153_3_5_0_add_processor_work_claims.py
=> 0155_3_5_0_add_processor_work_claims.py} (100%)
create mode 100644
airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldArray.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldArray.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldSelector.test.tsx
delete mode 100644
airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldStringArray.tsx
create mode 100644
airflow-core/src/airflow/ui/src/components/FlexibleForm/parseArrayElement.ts
create mode 100644 airflow-core/src/airflow/ui/src/i18n/ariaLabels.test.ts
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Details/Grid/GridSelectionActionBar.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/Asset/AssetEventsFilters.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/DagBundle/BundleFiles.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/DagBundle/FileImportError.test.tsx
copy airflow-core/src/airflow/ui/src/{queries/useHasMultipleDagBundles.ts =>
pages/DagsList/recentRunsLayout.ts} (66%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/Error.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstancesFilter.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/queries/dagListQueryKeys.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/utils/routeModule.ts
copy airflow-ctl/src/airflowctl/__main__.py =>
airflow-core/tests/unit/api_fastapi/core_api/conftest.py (55%)
create mode 100644
airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_triggers.py
create mode 100644
airflow-core/tests/unit/api_fastapi/core_api/routes/ui/test_dag_bundles.py
create mode 100644
airflow-core/tests/unit/api_fastapi/execution_api/versions/v2027_02_28/test_task_instances.py
create mode 100644
airflow-core/tests/unit/migrations/test_0152_add_state_and_owner_to_trigger.py
create mode 100644
airflow-core/tests/unit/migrations/test_0153_add_index_on_callback_trigger_id.py
rename
airflow-core/tests/unit/migrations/{test_0153_add_processor_work_claims.py =>
test_0155_add_processor_work_claims.py} (98%)
create mode 100644 airflow-ctl/src/airflowctl/ctl/utils/validation.py
copy {airflow-core/src/airflow/_shared =>
airflow-ctl/tests/airflow_ctl/ctl/utils}/__init__.py (100%)
create mode 100644 airflow-ctl/tests/airflow_ctl/ctl/utils/test_dag_run.py
copy airflow-ctl/{src/airflowctl/__main__.py =>
tests/airflow_ctl/test_main.py} (54%)
copy {airflow-core/src/airflow/_shared =>
airflow-ctl/tests/airflow_ctl/utils}/__init__.py (100%)
copy airflow-ctl/{src/airflowctl/__main__.py =>
tests/airflow_ctl/utils/test_helpers.py} (51%)
copy airflow-ctl/{src/airflowctl/__main__.py =>
tests/airflow_ctl/utils/test_module_loading.py} (51%)
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/openlineage_tests/dags_extra/openlineage_inlet_assets_dag.py
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/openlineage_tests/remove_unused_providers.py
create mode 100644 chart/docs/migrate-to-git-dag-bundle.rst
create mode 100644 chart/newsfragments/72555.significant.rst
create mode 100644 dev/breeze/doc/adr/0021-pin-os-dependencies-images.md
create mode 100644
dev/breeze/doc/images/output_release-management_build-os-deps-images.svg
create mode 100644
dev/breeze/doc/images/output_release-management_build-os-deps-images.txt
create mode 100644
dev/breeze/doc/images/output_release-management_publish-os-deps-images.svg
create mode 100644
dev/breeze/doc/images/output_release-management_publish-os-deps-images.txt
create mode 100644
dev/breeze/src/airflow_breeze/files/hardened_os_deps_image_digests.json
create mode 100644 dev/breeze/tests/test_dependency_upgrade_report.py
create mode 100644 dev/breeze/tests/test_os_deps_images.py
create mode 100644 dev/breeze/tests/test_registry_extract_data.py
create mode 100755 dev/remove_unsupported_python_constraints.py
create mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/internal/ConfBinding.kt
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_llm_review_loop.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/example_dags/example_openai_agents_data_access.py
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/plugins/www/src/components/SkillsSection.tsx
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/plugins/www/src/skill-source.ts
create mode 100644
providers/common/ai/src/airflow/providers/common/ai/plugins/www/tests/skill-source.test.ts
copy airflow-ctl/src/airflowctl/__main__.py =>
providers/common/ai/tests/unit/common/ai/tool_parts.py (53%)
create mode 100644
providers/common/sql/tests/system/common/sql/example_sql_sensor.py
create mode 100644
providers/google/tests/unit/google/cloud/links/test_dataproc.py
create mode 100644
providers/google/tests/unit/google/cloud/links/test_kubernetes_engine.py
create mode 100644
providers/google/tests/unit/google/cloud/links/test_translate.py
create mode 100644
providers/google/tests/unit/google/cloud/transfers/test_presto_to_gcs.py
create mode 100644
providers/openlineage/tests/system/openlineage/example_openlineage_clear_dag.py
create mode 100644
providers/openlineage/tests/system/openlineage/example_openlineage_manual_state_dag.py
delete mode 100644
providers/openlineage/tests/system/openlineage/example_openlineage_policy_conf_locked_dag.py
delete mode 100644
providers/openlineage/tests/system/openlineage/example_openlineage_policy_full_task_info_dag.py
create mode 100644
providers/openlineage/tests/system/openlineage/example_openlineage_task_loop_state_dag.py
create mode 100644
providers/openlineage/tests/system/openlineage/example_openlineage_task_outcomes_dag.py
create mode 100644
providers/openlineage/tests/system/openlineage/expected_events/openlineage_clear_dag.json
create mode 100644
providers/openlineage/tests/system/openlineage/expected_events/openlineage_manual_state_dag.json
delete mode 100644
providers/openlineage/tests/system/openlineage/expected_events/openlineage_policy_conf_locked_dag.json
delete mode 100644
providers/openlineage/tests/system/openlineage/expected_events/openlineage_policy_full_task_info_dag.json
create mode 100644
providers/openlineage/tests/system/openlineage/expected_events/openlineage_task_loop_state_dag.json
create mode 100644
providers/openlineage/tests/system/openlineage/expected_events/openlineage_task_outcomes_dag.json
create mode 100644
providers/openlineage/tests/system/openlineage/manual_state.py
copy airflow-ctl/src/airflowctl/__main__.py =>
providers/openlineage/tests/system/openlineage/triggers.py (59%)
rename providers/snowflake/tests/unit/snowflake/triggers/{test_snowflake.py =>
test_snowflake_trigger.py} (80%)
create mode 100644 providers/standard/docs/sensors/asset.rst
create mode 100644
providers/standard/src/airflow/providers/standard/example_dags/example_asset_sensor.py
create mode 100644
providers/standard/src/airflow/providers/standard/sensors/asset.py
create mode 100644 providers/standard/tests/unit/standard/sensors/test_asset.py
create mode 100755 scripts/ci/docker_data_root_snapshot.sh
copy airflow-ctl/src/airflowctl/__main__.py =>
scripts/tests/ci/prek/test_fab_permissions_doc.py (53%)
create mode 100644 scripts/tests/ci/test_docker_data_root_snapshot.py
create mode 100644 task-sdk/docs/task-handler.rst
create mode 100644 task-sdk/src/airflow/sdk/coordinators/python.py
copy scripts/ci/prek/check_imports_in_providers.py =>
task-sdk/src/airflow/sdk/definitions/task_handlers/__init__.py (53%)
mode change 100755 => 100644
create mode 100644
task-sdk/src/airflow/sdk/definitions/task_handlers/binding.py
create mode 100644
task-sdk/src/airflow/sdk/definitions/task_handlers/declaration.py
create mode 100644 task-sdk/src/airflow/sdk/definitions/task_handlers/loader.py
create mode 100644
task-sdk/src/airflow/sdk/definitions/task_handlers/registry.py
copy airflow-ctl/src/airflowctl/__main__.py =>
task-sdk/src/airflow/sdk/execution_time/schema/versions/v2027_02_28.py (56%)
create mode 100644 task-sdk/tests/task_sdk/conftest.py
create mode 100644
task-sdk/tests/task_sdk/definitions/task_handlers/test_loader.py
create mode 100644
task-sdk/tests/task_sdk/definitions/task_handlers/test_task_handlers.py
create mode 100644
task-sdk/tests/task_sdk/execution_time/test_python_coordinator.py
create mode 100644
task-sdk/tests/task_sdk/execution_time/test_run_task_handler.py
create mode 100644
task-sdk/tests/task_sdk/importers/yaml_importer/test_builder_validation.py