This is an automated email from the ASF dual-hosted git repository.
vatsrahul1001 pushed a change to branch v3-4-stable
in repository https://gitbox.apache.org/repos/asf/airflow.git
from bdd847f5b5d [v3-4-test] Fix upgrade guide sections showing as separate
pages in the docs sidebar (#75468) (#75470)
add 562230169a4 Revert "Make Java SDK context signal-aware (#74690)"
(#75421) (#75462)
add de6d3193c35 [v3-4-test] Bump sphinx-airflow-theme to 0.3.15 for a more
readable docs sidebar (#75471) (#75475)
add 9d0f56657f4 [v3-4-test] Go SDK: fail a task whose return-value XCom
push fails (#75443) (#75476)
add 7ec2757290c Revert "[v3-4-test] Enforce execution_timeout for tasks
run by a language SDK (#74869)" (#75376) (#75469)
add bdf2384d0ff [v3-4-test] Show Dag version diff occurrence count on the
path (#75433) (#75441)
add c2563f04074 [v3-4-test] Fix docs pages listing their sections as
separate pages in the sidebar (#75478) (#75481)
add dc00fa69a9a [v3-4-test] Add consolidated Language SDK compatibility
matrix (#71757) (#75482)
add e2426205e2f [v3-4-test] Remove the gap above docs pages left from the
old site banner (#75485) (#75487)
add d4706f122b9 [v3-4-test] Bump sphinx-airflow-theme to 0.3.16 to align
the docs' On this page list (#75491) (#75495)
add 81cc1caf39e [v3-4-test] Add missing zh-TW translations for Dag version
path tooltips (#75450) (#75484)
add 9e16507b5a3 [v3-4-test] Keep the token cookie set by a route in
JWTRefreshMiddleware (#75217) (#75454)
add 57e21d22ecf [v3-4-test] Limit the CLI reference's page contents to
top-level commands (#75483) (#75501)
add e5ba7beb7e1 [v3-4-test] Link task instances of task loops to their own
page (#75458) (#75494)
add 248e6f9e8b3 [v3-4-test] Fix deferral paths in task lifecycle diagram
(#75428) (#75515)
add 4e25f4a9610 Bump swagger-ui-dist from 5.33.3 to 5.34.0 in /registry in
the registry-package-updates group across 1 directory (#75506)
add de969396280 Bump @tanstack/react-query (#75508)
add 4ac335d817f Bump the ts-sdk-package-updates group across 1 directory
with 3 updates (#74874) (#75488)
add 9a2c293e9d5 Bump eslint in /ts-sdk in the ts-sdk-package-updates group
(#75285) (#75489)
add 47c17f54d0d [v3-4-test] fix stat timing (#72553) (#75459)
add b06c51bfe82 [v3-4-test] Redact secrets written through
RedactedIO.writelines() (#72063) (#75463)
add 063bdb907cf [v3-4-test] Guard register_at_fork in shared stats for
Windows compatibility (#73680) (#75464)
add 0027394328d [v3-4-test] Clarify backfill reprocessing options (#72590)
(#75465)
add ff84def609e [v3-4-test] Enable auto-merge, gated on a dedicated CI
passed check (#75142) (#75550)
add 88b06744bde [v3-4-test] Allow building docs with a local
sphinx_airflow_theme checkout (#75001) (#75537)
add 80e64ec6a79 [v3-4-test] Allow jason810496 to publish docs to S3
(#75548) (#75549)
add 6c46571772a [v3-4-test] Run the Kerberos renewer without metadata
database checks (#75000) (#75467)
add 3cf210dcd24 [v3-4-test] Make Dags sidebar button a link and move Dag
Runs and Task Instances to Browse (#75422) (#75517)
add 79a3a5637a5 [v3-4-test] Show the filtered task count in the Dag Tasks
tab heading (#75448) (#75490)
add 1541e66929f [v3-4-test] Keep .airflowignore rules when the Dags folder
symlink is switched (#74853) (#75466)
add 32da57961da [v3-4-test] Remove info tooltip from Dag version
comparison (#75526) (#75535)
add 79e1aea617c [v3-4-test] Reject non-positive max_active_runs when
creating a backfill (#75071) (#75320)
add f14de21c591 [v3-4-test] Show states of task groups as stacked cards in
Grid view (#75442) (#75486)
add 2e056cccc45 [v3-4-test] Fix breeze ci_group crash when the title is
skipped in GitHub Actions (#75401) (#75410)
add 2104e114168 [v3-4-test] Go SDK: stop log attributes from displacing
standard log fields (#73820) (#75564)
add 0500ec80138 [v3-4-test] Keep Breeze unit tests independent of the CI
repository (#75587) (#75591)
add 864f1077ef2 [v3-4-test] Commit pre-release constraints onto the shared
constraints-X-Y branch (#75329) (#75592)
add 9375102ada9 [v3-4-test] UI: Fix visual and console-error bugs in Dag
list and details (#75418) (#75593)
add b1d111e303d [v3-4-test] Fix Go SDK install command breaking the first
bundle build (#75574) (#75594)
add 5fbbb908236 [v3-4-test] Cover YAML-generated TypeScript Dags in the
ts_sdk e2e test (#75054) (#75595)
add 214bee48f29 [v3-4-test] Fix "Dynamic require" error for CommonJS
packages in airflow-ts-pack (#75067) (#75603)
add f5b20a98fe3 [v3-4-test] Stop the cdxgen server containers when SBOM
generation ends (#75613) (#75614)
add eff1d81ddd1 [v3-4-test] Backport today's CI changes (#75589, #74566,
#74889, #75612, #75615) (#75617)
add 8eb4cee4028 [v3-4-test] Bring CI tooling level with main (#73785,
#73998, #73823, #74819, #74820, #74822, #74823, #74825, #75578, #75588, #75611)
(#75618)
add d09396754c9 [v3-4-test] Run only the component's tests on chart and
airflow-ctl release branches (#75621) (#75624)
add 82849bc6694 [v3-4-test] Run the component branch selection tests
against main on every branch (#75633) (#75637)
add 19447faac66 [v3-4-test] Add missing German Dag trigger translations
(#75519) (#75568)
add caa31e80ba3 [v3-4-test] Decide min_one_success trigger rules per index
in mapped task groups (#75417) (#75511)
add 17fc103a609 [v3-4-test] Fix scheduler crash when retrying a task that
timed out or was killed externally (#75472) (#75582)
add d486547dc45 [v3-4-test] TS SDK: Reject a blank queue in Dag and task
specs (#75573) (#75605)
add 2ec306eda1c [v3-4-test] Fetch provider release tags from
apache/airflow in fork CI runs (#75632) (#75636)
add 1d4207fa82f [v3-4-test] Complete German UI translations (#75301)
(#75567)
add 8e189c0f96c [v3-4-test] Add asset ID filtering to database cleanup
(#74498) (#75581)
add 54610d8c7b0 [v3-4-test] Use EXISTS instead of a fan-out join in asset
orphanage (#75404) (#75644)
add 7d329d97e85 [v3-4-test] Build no images on the airflow-ctl release
branches (#75628) (#75638)
add 5cc50c59997 [v3-4-test] Clear retry policy state when a TI is cleared
(#73889) (#75646)
add 5436b0bec99 [v3-4-test] Run the database test jobs on RunsOn with
docker in RAM (#75625) (#75629)
add 1873b86cd74 [v3-4-test] Fix serialization of datetimes with a fixed
UTC offset (#74922) (#75647)
add fe283b93611 [v3-4-test] Reset Dag autoregistration state when a Python
Dag file fails to load (#74911) (#75648)
add 22538bf9593 [v3-4-test] Return 5xx on database deadlock when updating
task state (#75368) (#75652)
add 62e3b1a1dce [v3-4-test] Stop a commented executable_resumable from
marking a module durable (#73607) (#75660)
add c477e4e9213 [v3-4-test] Update zh-TW plural form guidance for
translators (#75669) (#75671)
add b902cb51f1a [v3-4-test] Normalize zh-TW plural forms and wording
(#75504) (#75664)
add 1a578ef43ba [v3-4-test] Backport fork CI auto-approval (#75616,
#75619, #75455, #75654, #75655) (#75680)
add 89c64264511 [v3-4-test] Keep the spot interruption notice green on
transient GitHub errors (#75681) (#75688)
add ee375024ffd [v3-4-test] Cancel the runs of merged pull requests when
they merge (#75683) (#75687)
add 03bc8311d61 [v3-4-test] Add emailer utilities to the SMTP provider
(#74623) (#75704)
add b85a3e61bf3 Refuse Human-in-the-loop responses once the task stopped
waiting (#75645) (#75706)
add ea6499b886e [v3-4-test] Retry GitHub server errors in the fork CI
monitor (#75692) (#75693)
add 9a5d1256439 [v3-4-test] Restart crashed Breeze components under mprocs
(#75585) (#75710)
add 39209780898 [v3-4-test] Deprecate airflow.utils.email in favor of the
SMTP provider (#75414) (#75709)
add 0ff47dc6658 [v3-4-test] Allow FastAPI 0.137+ by requiring cadwyn 8.1
(#75689) (#75715)
add 639d37d5aa5 [v3-4-test] Let listeners see the end date of a skipped
task instance (#75685) (#75722)
add e2edfff0418 [v3-4-test] Run a language SDK runtime in its own process
group (#75707) (#75731)
add 256c89137ec [v3-4-test] Make the Kubernetes, E2E and Helm release jobs
pass on fork CI (#75699) (#75705)
add 1409c90ea1a [v3-4-test] Keep cancelled CI runs from showing a failed
CI passed check (#75720) (#75738)
add 87577b644b8 [v3-4-test] Add dag_id and task_id tags to resumable_job
metrics (#75721) (#75732)
add 3ebfc093e5d [v3-4-test] Upgrade important CI environment (#75719)
add 602730282aa [v3-4-test] Add metrics for task and asset state store
access (#75729) (#75735)
add ea342be8ed8 [v3-4-test] Wait for a maintainer when a fork PR changes
any CI-defining file (#75718) (#75733)
add 9f5e63d61e6 [v3-4-test] Report language SDK runtime launch failures in
the task log (#75561) (#75741)
add e25535ebfdb [v3-4-test] Fix Go SDK build on 32-bit targets (#75551)
(#75742)
add 78eae1f337f [v3-4-test] Guard scheduler against Dag deserialization
failures (#75263) (#75745)
add 80bb11f39f1 [v3-4-test] Update uv.lock for the SMTP provider 3.2.0
version (#75757)
add d563b90edd5 [v3-4-test] Hide empty log groups in the task log view
(#75686) (#75801)
add 65515bde8e0 [v3-4-test] UI: Fix slow pending Dag run checks on large
databases (#75674) (#75799)
add 9764cdb34a7 [v3-4-test] UI: Fix labels that render as raw translation
keys (#75326) (#75798)
add 3928f61089a [v3-4-test] UI: Don't fire keyboard shortcuts while typing
in a Monaco editor (#75684) (#75797)
add ee42ee6e059 [v3-4-test] Fix UI crash by validating unresolvable
Windows PT timezone (#75723) (#75800)
add 669f3b4acbc [v3-4-test] Run automatic backport PRs on RunsOn runners
(#75749) (#75792)
add 5b34acf67a9 [v3-4-test] Sync recent CI changes from main (#75824)
add e55e92a15e4 [v3-4-test] UI: Scope partitioned Dag run asset list to
readable assets (#75213) (#75817)
add e64db034db3 [v3-4-test] Hide the scheduled run icon in the grid legend
(#75775) (#75806)
add 905a81976cc [v3-4-test] UI: Warn when the logical date is outside the
Dag's dates (#75223) (#75354)
add fd417e212b0 [v3-4-test] Raise the stale bot operation budget so it
reaches older PRs (#75761) (#75794)
add 7aa410686c4 [v3-4-test] Load the serialized Dag in ti_run only for
stub tasks (#75795) (#75802)
add 1ec002129d6 [v3-4-test] Isolate otel config-priority test from ambient
OTEL env vars (#75842) (#75844)
add 2731400d7c9 [v3-4-test] Widen the Spot pool for RunsOn runners: more
families, capacity-optimized, size ranges (#75822) (#75825)
add e723e682b5d [v3-4-test] Run the flynt prek hook in parallel batches
(#75274) (#75836)
add 3821b658df8 [v3-4-test] Stop running OpenLineage e2e compat tests when
full tests are derived (#75262) (#75837)
add 27e709d1d89 [v3-4-test] Show why external contributors' workflow runs
wait for approval (#75832) (#75840)
add 6f88b453038 [v3-4-test] Skip spotless and the Java SDK Dag schema sync
on unrelated PRs (#75268) (#75845)
add cccca45116e [v3-4-test] Avoid loading timetables for dags in Execution
API endpoints (#75765) (#75846)
add 4786e740a7a Add release notes for 3.4.0rc1
No new revisions were added by this update.
Summary of changes:
.../skills/airflow-translations/locales/zh-TW.md | 33 +-
.asf.yaml | 64 +-
.github/AGENTS.md | 38 +
.github/actions/breeze/action.yml | 2 +
.../actions/prepare_breeze_and_image/action.yml | 5 +-
.github/actions/prepare_single_ci_image/action.yml | 5 +-
.../actions/runs-on-cost-summary/action.yml | 27 +-
.github/actions/stash-restore/action.yml | 137 +
.github/actions/stash-save/action.yml | 129 +
.github/fork-ci-gate.toml | 52 +
.github/workflows/additional-ci-image-checks.yml | 2 +-
.github/workflows/additional-prod-image-tests.yml | 80 +-
.github/workflows/auto-approve-workflow-runs.yml | 73 +
.github/workflows/basic-tests.yml | 76 +-
.github/workflows/cancel-merged-pr-runs.yml | 119 +
.github/workflows/check-newsfragment-pr-number.yml | 60 -
.github/workflows/ci-amd.yml | 412 ++-
.github/workflows/ci-arm.yml | 294 +-
.github/workflows/ci-image-build.yml | 36 +-
.github/workflows/ci-image-checks.yml | 25 +-
.github/workflows/finalize-tests.yml | 12 +-
.github/workflows/fork-ci-monitor.yml | 238 ++
.github/workflows/generate-constraints.yml | 6 +-
.github/workflows/helm-tests.yml | 8 +-
.github/workflows/integration-system-tests.yml | 6 +-
.github/workflows/k8s-tests.yml | 4 +-
.github/workflows/kustomize-overlays-tests.yml | 8 +-
.github/workflows/mark-workflow-runs-approved.yml | 85 +
.github/workflows/prod-image-build.yml | 8 +-
.github/workflows/publish-docs-to-s3.yml | 1 +
.github/workflows/push-image-cache.yml | 4 +-
.github/workflows/release-constraints.yml | 46 +-
.../scheduled-legacy-prod-image-canary.yml | 1 +
.github/workflows/special-tests.yml | 26 +-
.github/workflows/spot-interruption-notice.yml | 57 +
.github/workflows/stale.yml | 1 +
.github/workflows/test-providers.yml | 6 +-
.github/workflows/ui-e2e-tests.yml | 2 +-
.pre-commit-config.yaml | 362 ++-
Dockerfile | 2 +-
Dockerfile.ci | 6 +-
README.md | 2 +
RELEASE_NOTES.rst | 294 +-
airflow-core/.pre-commit-config.yaml | 62 +
.../dagfile-processing.rst | 12 +-
.../logging-monitoring/metrics.rst | 2 +-
.../authoring-and-scheduling/language-sdks/go.rst | 11 +-
.../language-sdks/index.rst | 251 ++
.../language-sdks/java.rst | 33 -
.../language-sdks/typescript.rst | 2 +-
airflow-core/docs/best-practices.rst | 2 +-
airflow-core/docs/cli-and-env-variables-ref.rst | 3 +
airflow-core/docs/core-concepts/backfill.rst | 10 +-
airflow-core/docs/core-concepts/debug.rst | 2 +-
airflow-core/docs/core-concepts/tasks.rst | 8 +-
.../docs/howto/create-custom-decorator.rst | 2 +-
airflow-core/docs/howto/custom-view-plugin.rst | 22 +-
airflow-core/docs/howto/customize-ui.rst | 12 +-
airflow-core/docs/howto/email-config.rst | 80 +-
airflow-core/docs/howto/notifications.rst | 2 +-
airflow-core/docs/howto/set-config.rst | 2 +-
airflow-core/docs/howto/usage-cli.rst | 9 +
.../docs/img/diagram_task_lifecycle.md5sum | 2 +-
airflow-core/docs/img/diagram_task_lifecycle.png | Bin 671852 -> 643516
bytes
airflow-core/docs/img/diagram_task_lifecycle.py | 18 +-
airflow-core/docs/migrations-ref.rst | 4 +-
airflow-core/newsfragments/74896.bugfix.rst | 1 -
airflow-core/pyproject.toml | 11 +-
airflow-core/src/airflow/api_fastapi/app.py | 2 +
.../auth/managers/simple/ui/package.json | 2 +-
.../auth/managers/simple/ui/pnpm-lock.yaml | 30 +-
.../api_fastapi/auth/middlewares/refresh_token.py | 23 +-
.../common/telemetry.py} | 29 +-
.../api_fastapi/core_api/datamodels/backfills.py | 2 +-
.../api_fastapi/core_api/datamodels/common.py | 16 +
.../core_api/datamodels/task_instance_history.py | 4 +-
.../core_api/datamodels/task_instances.py | 2 +-
.../core_api/datamodels/ui/partitioned_dag_runs.py | 12 +-
.../api_fastapi/core_api/openapi/_private_ui.yaml | 22 +-
.../core_api/openapi/v2-rest-api-generated.yaml | 12 +-
.../api_fastapi/core_api/routes/public/dags.py | 25 +-
.../api_fastapi/core_api/routes/public/hitl.py | 32 +-
.../airflow/api_fastapi/core_api/routes/ui/dags.py | 8 +-
.../core_api/routes/ui/partitioned_dag_runs.py | 28 +-
.../src/airflow/api_fastapi/execution_api/app.py | 41 +-
.../execution_api/datamodels/taskinstance.py | 10 +-
.../execution_api/routes/task_instances.py | 26 +-
.../airflow/api_fastapi/execution_api/security.py | 10 +-
.../execution_api/services/task_instances.py | 32 +-
.../api_fastapi/execution_api/versions/__init__.py | 2 -
.../execution_api/versions/v2026_10_30.py | 14 -
.../airflow/callbacks/database_callback_sink.py | 14 +-
airflow-core/src/airflow/cli/cli_config.py | 13 +-
.../src/airflow/cli/commands/db_command.py | 1 +
.../src/airflow/cli/commands/kerberos_command.py | 2 +-
airflow-core/src/airflow/dag_processing/manager.py | 2 +-
.../src/airflow/executors/base_executor.py | 2 +
.../src/airflow/jobs/scheduler_job_runner.py | 80 +-
.../0149_3_4_0_add_is_stub_to_task_instance.py | 54 +
airflow-core/src/airflow/models/dagrun.py | 5 +
airflow-core/src/airflow/models/taskinstance.py | 44 +-
.../src/airflow/serialization/definitions/dag.py | 29 +-
.../airflow/serialization/serialized_objects.py | 37 +-
.../src/airflow/ti_deps/deps/trigger_rule_dep.py | 32 +-
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 37 +-
.../airflow/ui/openapi-gen/requests/types.gen.ts | 11 +-
.../airflow/ui/public/i18n/locales/ar/common.json | 1 -
.../ui/public/i18n/locales/ar/components.json | 7 +
.../airflow/ui/public/i18n/locales/ca/common.json | 1 -
.../ui/public/i18n/locales/ca/components.json | 7 +
.../src/airflow/ui/public/i18n/locales/ca/dag.json | 3 -
.../airflow/ui/public/i18n/locales/de/admin.json | 4 +-
.../airflow/ui/public/i18n/locales/de/common.json | 9 +-
.../ui/public/i18n/locales/de/components.json | 13 +
.../src/airflow/ui/public/i18n/locales/de/dag.json | 19 +-
.../airflow/ui/public/i18n/locales/de/dags.json | 2 +-
.../airflow/ui/public/i18n/locales/el/common.json | 1 -
.../ui/public/i18n/locales/el/components.json | 7 +
.../src/airflow/ui/public/i18n/locales/el/dag.json | 3 -
.../airflow/ui/public/i18n/locales/en/browse.json | 1 +
.../airflow/ui/public/i18n/locales/en/common.json | 2 +-
.../ui/public/i18n/locales/en/components.json | 14 +
.../src/airflow/ui/public/i18n/locales/en/dag.json | 7 +-
.../airflow/ui/public/i18n/locales/es/common.json | 1 -
.../ui/public/i18n/locales/es/components.json | 7 +
.../airflow/ui/public/i18n/locales/fr/common.json | 1 -
.../ui/public/i18n/locales/fr/components.json | 7 +
.../src/airflow/ui/public/i18n/locales/fr/dag.json | 3 -
.../airflow/ui/public/i18n/locales/he/common.json | 1 -
.../ui/public/i18n/locales/he/components.json | 7 +
.../src/airflow/ui/public/i18n/locales/he/dag.json | 3 -
.../airflow/ui/public/i18n/locales/hi/common.json | 1 -
.../ui/public/i18n/locales/hi/components.json | 7 +
.../src/airflow/ui/public/i18n/locales/hi/dag.json | 3 -
.../airflow/ui/public/i18n/locales/hu/common.json | 1 -
.../ui/public/i18n/locales/hu/components.json | 7 +
.../airflow/ui/public/i18n/locales/it/common.json | 1 -
.../ui/public/i18n/locales/it/components.json | 7 +
.../airflow/ui/public/i18n/locales/ja/common.json | 1 -
.../ui/public/i18n/locales/ja/components.json | 7 +
.../airflow/ui/public/i18n/locales/ko/common.json | 1 -
.../ui/public/i18n/locales/ko/components.json | 7 +
.../src/airflow/ui/public/i18n/locales/ko/dag.json | 3 -
.../airflow/ui/public/i18n/locales/nl/common.json | 1 -
.../ui/public/i18n/locales/nl/components.json | 7 +
.../airflow/ui/public/i18n/locales/pl/common.json | 1 -
.../ui/public/i18n/locales/pl/components.json | 7 +
.../src/airflow/ui/public/i18n/locales/pl/dag.json | 3 -
.../airflow/ui/public/i18n/locales/pt/common.json | 1 -
.../ui/public/i18n/locales/pt/components.json | 7 +
.../airflow/ui/public/i18n/locales/ru/common.json | 1 -
.../ui/public/i18n/locales/ru/components.json | 7 +
.../airflow/ui/public/i18n/locales/th/common.json | 1 -
.../ui/public/i18n/locales/th/components.json | 7 +
.../airflow/ui/public/i18n/locales/tr/common.json | 1 -
.../ui/public/i18n/locales/tr/components.json | 7 +
.../ui/public/i18n/locales/zh-CN/common.json | 1 -
.../ui/public/i18n/locales/zh-CN/components.json | 7 +
.../ui/public/i18n/locales/zh-TW/common.json | 7 +-
.../ui/public/i18n/locales/zh-TW/components.json | 9 +-
.../airflow/ui/public/i18n/locales/zh-TW/dag.json | 17 +-
.../ui/public/i18n/locales/zh-TW/dashboard.json | 4 +-
.../airflow/ui/public/i18n/locales/zh-TW/hitl.json | 4 +-
.../ui/src/components/AssetProgressCell.test.tsx | 63 +-
.../ui/src/components/AssetProgressCell.tsx | 54 +-
.../src/airflow/ui/src/components/ConfigForm.tsx | 2 +-
.../ui/src/components/DAGWarningsModal.test.tsx | 33 -
.../airflow/ui/src/components/DAGWarningsModal.tsx | 62 +-
.../ui/src/components/DagDeactivatedChip.test.tsx | 154 -
.../ui/src/components/DagDeactivatedChip.tsx | 70 -
...ortErrorModal.tsx => DagImportErrorDetails.tsx} | 20 +-
.../ui/src/components/DagImportErrorModal.tsx | 52 +-
.../ui/src/components/DagStatusChip.test.tsx | 161 +
.../airflow/ui/src/components/DagStatusChip.tsx | 90 +
.../ui/src/components/DataTable/DataTable.tsx | 1 +
.../src/airflow/ui/src/components/ErrorAlert.tsx | 15 +-
.../ui/src/components/FilterBar/FilterBar.test.tsx | 15 +
.../ui/src/components/FilterBar/FilterPill.tsx | 29 +-
.../airflow/ui/src/components/StatusMessage.tsx | 52 +
.../components/TriggerDag/TriggerDAGForm.test.tsx | 46 +
.../src/components/TriggerDag/TriggerDAGForm.tsx | 43 +-
.../src/airflow/ui/src/components/WarningAlert.tsx | 28 +-
.../src/context/timezone/TimezoneProvider.test.tsx | 59 +
.../ui/src/context/timezone/TimezoneProvider.tsx | 17 +-
.../ui/src/hooks/useRequiredActionTabs.test.tsx | 66 +
.../airflow/ui/src/hooks/useRequiredActionTabs.ts | 31 +-
.../src/airflow/ui/src/hooks/useShortcut.test.tsx | 64 +-
.../src/airflow/ui/src/hooks/useShortcut.ts | 16 +-
.../src/airflow/ui/src/i18n/locales.test.ts | 60 +-
.../ui/src/layouts/Details/DetailsLayout.tsx | 46 +-
.../ui/src/layouts/Details/Gantt/utils.test.ts | 18 +-
.../airflow/ui/src/layouts/Details/Gantt/utils.ts | 13 +-
.../ui/src/layouts/Details/Grid/GridTI.test.tsx | 25 +
.../airflow/ui/src/layouts/Details/Grid/GridTI.tsx | 9 +-
.../ui/src/layouts/Details/Grid/RunTypeLegend.tsx | 7 +-
.../ui/src/layouts/Nav/BrowseButton.test.tsx | 83 +
.../airflow/ui/src/layouts/Nav/BrowseButton.tsx | 32 +-
.../airflow/ui/src/layouts/Nav/DagsButton.test.tsx | 54 +-
.../src/airflow/ui/src/layouts/Nav/DagsButton.tsx | 41 +-
.../ui/src/pages/AssetsList/AssetsList.test.tsx | 14 +-
.../ui/src/pages/Connections/ConnectionForm.tsx | 3 +-
.../airflow/ui/src/pages/Dag/Tasks/Tasks.test.tsx | 3 +
.../src/airflow/ui/src/pages/Dag/Tasks/Tasks.tsx | 2 +-
.../airflow/ui/src/pages/Dag/Versions/PathText.tsx | 33 +-
.../ui/src/pages/Dag/Versions/VersionDiff.test.tsx | 35 +-
.../ui/src/pages/Dag/Versions/VersionDiff.tsx | 41 +-
.../src/airflow/ui/src/pages/DagsList/DagCard.tsx | 8 +-
.../DagsList/DagsFilters/DagsFilters.test.tsx | 6 +-
.../ui/src/pages/DagsList/RecentRuns.test.tsx | 58 +
.../airflow/ui/src/pages/DagsList/RecentRuns.tsx | 10 +-
.../src/airflow/ui/src/pages/DagsList/Schedule.tsx | 14 +-
.../HITLTaskInstances/HITLResponseForm.test.tsx | 104 +-
.../src/airflow/ui/src/pages/Pools/PoolForm.tsx | 2 +-
.../src/airflow/ui/src/pages/XCom/XCom.tsx | 2 +-
.../src/airflow/ui/src/queries/useLogs.test.ts | 38 +
.../src/airflow/ui/src/queries/useLogs.tsx | 11 +-
.../airflow/ui/src/queries/useUpdateHITLDetail.ts | 16 +-
.../src/airflow/ui/src/utils/dagStatus.test.ts | 84 +
airflow-core/src/airflow/ui/src/utils/dagStatus.ts | 75 +
.../src/airflow/ui/src/utils/errorHandling.ts | 23 +
airflow-core/src/airflow/ui/src/utils/index.ts | 3 +-
.../src/airflow/ui/src/utils/query.test.ts | 50 +
airflow-core/src/airflow/ui/src/utils/query.ts | 7 +-
airflow-core/src/airflow/ui/testsSetup.ts | 29 +
airflow-core/src/airflow/utils/db.py | 2 +-
airflow-core/src/airflow/utils/db_cleanup.py | 24 +-
airflow-core/src/airflow/utils/email.py | 350 +--
.../src/airflow/utils/serve_logs/log_server.py | 3 +-
airflow-core/src/airflow/utils/sqlalchemy.py | 17 +
.../auth/middlewares/test_refresh_token.py | 51 +
.../core_api/routes/public/test_assets.py | 5 +-
.../core_api/routes/public/test_backfills.py | 28 +
.../core_api/routes/public/test_dags.py | 41 +
.../core_api/routes/public/test_hitl.py | 135 +-
.../api_fastapi/core_api/routes/test_routes.py | 8 +-
.../api_fastapi/core_api/routes/ui/test_dags.py | 36 +
.../routes/ui/test_partitioned_dag_runs.py | 122 +-
.../unit/api_fastapi/execution_api/test_app.py | 29 +-
.../execution_api/test_token_scope_boundaries.py | 27 +-
.../versions/head/test_task_instances.py | 123 +-
.../versions/v2026_10_30/test_task_instances.py | 34 -
.../unit/api_fastapi/logging/test_decorators.py | 18 +-
airflow-core/tests/unit/api_fastapi/test_app.py | 25 +
.../tests/unit/cli/commands/test_db_command.py | 84 +
.../unit/cli/commands/test_kerberos_command.py | 36 +
airflow-core/tests/unit/cli/test_cli_parser.py | 13 +
.../lang_sdk_fixtures/go_native.json | 2 +
.../lang_sdk_fixtures/java_native.json | 3 +
.../tests/unit/dag_processing/test_dagbag.py | 9 +
.../tests/unit/dag_processing/test_manager.py | 6 +-
.../tests/unit/dag_processing/test_processor.py | 2 +-
airflow-core/tests/unit/jobs/test_scheduler_job.py | 247 ++
airflow-core/tests/unit/jobs/test_triggerer_job.py | 2 +-
airflow-core/tests/unit/models/test_dag.py | 6 +-
airflow-core/tests/unit/models/test_dagrun.py | 41 +-
.../tests/unit/models/test_mappedoperator.py | 92 +-
.../tests/unit/models/test_taskinstance.py | 147 +
.../unit/serialization/test_dag_serialization.py | 43 +-
airflow-core/tests/unit/utils/test_db_cleanup.py | 178 ++
airflow-core/tests/unit/utils/test_email.py | 447 +--
airflow-core/tests/unit/utils/test_sqlalchemy.py | 60 +-
airflow-ctl-tests/.pre-commit-config.yaml | 4 +
airflow-ctl/.pre-commit-config.yaml | 8 +
airflow-ctl/docs/cli-and-env-variables-ref.rst | 3 +
.../airflowctl/api/datamodels/auth_generated.py | 2 +-
.../src/airflowctl/api/datamodels/generated.py | 11 +-
airflow-e2e-tests/.pre-commit-config.yaml | 2 +
airflow-e2e-tests/docker/ts.yml | 6 +
.../org/apache/airflow/e2e/TestBundleBuilder.java | 33 +-
.../src/resources/dags/java_test_dags.py | 12 -
airflow-e2e-tests/pyproject.toml | 2 +-
.../tests/airflow_e2e_tests/conftest.py | 16 +-
.../airflow_e2e_tests/e2e_test_utils/clients.py | 8 -
.../java_sdk_tests/test_java_sdk_dag.py | 56 -
.../ts_sdk_tests/test_ts_sdk_dynamic_dag.py | 89 +
chart/.pre-commit-config.yaml | 28 +
contributing-docs/03_contributors_quick_start.rst | 13 +
.../03a_contributors_quick_start_beginners.rst | 5 +
contributing-docs/05_pull_requests.rst | 59 +-
contributing-docs/10_working_with_git.rst | 3 +
contributing-docs/11_documentation_building.rst | 11 +
contributing-docs/18_contribution_workflow.rst | 77 +-
contributing-docs/25_maintainer_pr_triage.md | 39 +
contributing-docs/30_new_language_sdk.rst | 171 +-
contributing-docs/mprocs/mprocs.yaml | 14 +-
contributing-docs/testing/k8s_tests.rst | 9 +-
dev/.pre-commit-config.yaml | 2 +
dev/AGENTS.md | 17 +
dev/README_AIRFLOW3_DEV.md | 45 +
dev/README_RELEASE_AIRFLOW.md | 19 +-
dev/breeze/doc/05_test_commands.rst | 2 +-
dev/breeze/doc/08_ci_tasks.rst | 63 +
...0-run-ci-for-external-contributions-in-forks.md | 173 ++
dev/breeze/doc/ci/02_images.md | 4 +-
dev/breeze/doc/ci/04_selective_checks.md | 221 +-
dev/breeze/doc/ci/05_workflows.md | 182 ++
dev/breeze/doc/ci/06_debugging.md | 6 +-
.../doc/ci/08_fork_ci_for_external_contributors.md | 1163 ++++++++
dev/breeze/doc/ci/README.md | 1 +
dev/breeze/doc/images/output_build-docs.svg | 52 +-
dev/breeze/doc/images/output_build-docs.txt | 2 +-
dev/breeze/doc/images/output_ci.svg | 46 +-
dev/breeze/doc/images/output_ci.txt | 2 +-
.../doc/images/output_ci_approve-workflow-runs.svg | 150 +
.../doc/images/output_ci_approve-workflow-runs.txt | 1 +
dev/breeze/doc/images/output_ci_audit.svg | 116 +
dev/breeze/doc/images/output_ci_audit.txt | 1 +
.../doc/images/output_ci_fork-ci-reconcile.svg | 148 +
.../doc/images/output_ci_fork-ci-reconcile.txt | 1 +
.../doc/images/output_k8s_build-k8s-image.svg | 48 +-
.../doc/images/output_k8s_build-k8s-image.txt | 2 +-
.../doc/images/output_k8s_deploy-airflow.svg | 46 +-
.../doc/images/output_k8s_deploy-airflow.txt | 2 +-
.../doc/images/output_k8s_deploy-cluster.svg | 30 +-
.../doc/images/output_k8s_deploy-cluster.txt | 2 +-
dev/breeze/doc/images/output_k8s_dev.svg | 22 +-
dev/breeze/doc/images/output_k8s_dev.txt | 2 +-
.../doc/images/output_k8s_run-complete-tests.svg | 84 +-
.../doc/images/output_k8s_run-complete-tests.txt | 2 +-
.../doc/images/output_k8s_setup-lang-sdk-test.svg | 22 +-
.../doc/images/output_k8s_setup-lang-sdk-test.txt | 2 +-
.../doc/images/output_k8s_upload-k8s-image.svg | 46 +-
.../doc/images/output_k8s_upload-k8s-image.txt | 2 +-
.../output_setup_check-all-params-in-groups.svg | 96 +-
.../output_setup_check-all-params-in-groups.txt | 2 +-
.../output_setup_regenerate-command-images.svg | 104 +-
.../output_setup_regenerate-command-images.txt | 2 +-
dev/breeze/pyproject.toml | 2 +-
.../src/airflow_breeze/commands/ci_commands.py | 243 +-
.../airflow_breeze/commands/ci_commands_config.py | 40 +
.../airflow_breeze/commands/developer_commands.py | 27 +
.../commands/developer_commands_config.py | 1 +
.../airflow_breeze/commands/kubernetes_commands.py | 76 +-
.../commands/kubernetes_commands_config.py | 11 +-
.../commands/kubernetes_kustomize_commands.py | 2 +-
.../commands/release_management_commands.py | 4 +-
.../src/airflow_breeze/commands/verify_commands.py | 10 +-
dev/breeze/src/airflow_breeze/global_constants.py | 26 +-
.../src/airflow_breeze/params/shell_params.py | 5 +
dev/breeze/src/airflow_breeze/utils/cdxgen.py | 74 +-
dev/breeze/src/airflow_breeze/utils/ci_audit.py | 391 +++
dev/breeze/src/airflow_breeze/utils/ci_group.py | 22 +-
.../airflow_breeze/utils/ci_minutes_estimate.py | 226 ++
.../src/airflow_breeze/utils/fork_ci_gate.py | 347 +++
.../src/airflow_breeze/utils/fork_ci_github.py | 238 ++
.../src/airflow_breeze/utils/fork_ci_messages.py | 342 +++
.../src/airflow_breeze/utils/fork_ci_reconcile.py | 1887 ++++++++++++
.../src/airflow_breeze/utils/fork_compare.py | 151 +
dev/breeze/src/airflow_breeze/utils/git_remotes.py | 79 +
.../src/airflow_breeze/utils/kubernetes_utils.py | 37 +-
dev/breeze/src/airflow_breeze/utils/path_utils.py | 9 +
.../src/airflow_breeze/utils/selective_checks.py | 387 ++-
.../src/airflow_breeze/utils/verification_plan.py | 2 +
.../airflow_breeze/utils/workflow_run_approval.py | 920 ++++++
dev/breeze/tests/conftest.py | 15 +
.../tests/test_calibrate_ci_minutes_estimates.py | 101 +
dev/breeze/tests/test_cdxgen.py | 73 +
dev/breeze/tests/test_ci_audit.py | 440 +++
dev/breeze/tests/test_ci_commands.py | 52 +
.../breeze/tests/test_ci_group.py | 31 +-
dev/breeze/tests/test_ci_minutes_estimate.py | 229 ++
dev/breeze/tests/test_developer_commands.py | 96 +-
dev/breeze/tests/test_fork_ci_gate.py | 430 +++
dev/breeze/tests/test_fork_ci_github.py | 236 ++
dev/breeze/tests/test_fork_ci_messages.py | 174 ++
dev/breeze/tests/test_fork_ci_reconcile.py | 2609 +++++++++++++++++
dev/breeze/tests/test_fork_compare.py | 134 +
dev/breeze/tests/test_git_remotes.py | 103 +
dev/breeze/tests/test_kubernetes_commands.py | 144 +
.../tests/test_kubernetes_kustomize_commands.py | 20 +
.../tests/test_kubernetes_lang_sdk_commands.py | 18 +-
dev/breeze/tests/test_kubernetes_utils.py | 93 +
dev/breeze/tests/test_path_utils.py | 51 +
dev/breeze/tests/test_selective_checks.py | 987 ++++++-
dev/breeze/tests/test_shell_params.py | 14 +
dev/breeze/tests/test_verify_commands.py | 15 +
dev/breeze/tests/test_workflow_run_approval.py | 1310 +++++++++
dev/breeze/uv.lock | 158 +-
dev/calibrate_ci_minutes_estimates.py | 270 ++
dev/mypy/.pre-commit-config.yaml | 4 +
dev/registry/extract_parameters.py | 12 +-
dev/registry/tests/test_extract_parameters.py | 97 +
.../tests/test_registry_contract_models.py | 10 +-
devel-common/pyproject.toml | 4 +-
devel-common/sphinx_design/static/custom.css | 12 +-
.../src/tests_common/test_utils/api_fastapi.py | 23 +
docker-tests/.pre-commit-config.yaml | 2 +
docs/README.md | 4 +-
docs/spelling_wordlist.txt | 3 +
go-sdk/.pre-commit-config.yaml | 14 +
go-sdk/README.md | 98 +-
go-sdk/airflow/serialize.go | 9 +-
go-sdk/airflow/serialize_test.go | 3 +-
go-sdk/capabilities.yaml | 153 +-
go-sdk/cmd/airflow-go-pack/sources.go | 2 +-
go-sdk/internal/bundle/task.go | 58 +-
go-sdk/internal/bundle/task_test.go | 116 +-
go-sdk/internal/bundlefooter/footer.go | 5 +-
go-sdk/pkg/execution/client.go | 7 +-
go-sdk/pkg/execution/client_test.go | 17 +-
go-sdk/pkg/execution/frames.go | 16 +-
go-sdk/pkg/execution/frames_oversized_test.go | 4 +-
go-sdk/pkg/execution/frames_test.go | 14 +
.../pkg/execution/genmodels/discriminators.gen.go | 8 +-
go-sdk/pkg/execution/genmodels/models.gen.go | 159 +-
go-sdk/pkg/execution/logger.go | 36 +-
go-sdk/pkg/execution/logger_test.go | 38 +
go-sdk/schema/supervisor-schema.json | 46 +-
java-sdk/README.md | 96 +-
java-sdk/capabilities.yaml | 153 +-
java-sdk/sdk/module.md | 96 +-
.../main/kotlin/org/apache/airflow/sdk/Context.kt | 50 -
.../main/kotlin/org/apache/airflow/sdk/Server.kt | 29 +-
.../apache/airflow/sdk/execution/Cancellation.kt | 134 -
.../org/apache/airflow/sdk/execution/Logger.kt | 4 -
.../org/apache/airflow/sdk/execution/Serde.kt | 11 +-
.../kotlin/org/apache/airflow/sdk/ContextTest.kt | 14 -
.../kotlin/org/apache/airflow/sdk/ServerTest.kt | 292 --
.../org/apache/airflow/sdk/TriggerDagRunTest.kt | 5 +-
.../airflow/sdk/execution/CancellationTest.kt | 205 --
.../apache/airflow/sdk/execution/LogSenderTest.kt | 94 -
kubernetes-tests/.pre-commit-config.yaml | 2 +
providers/.pre-commit-config.yaml | 60 +
providers/amazon/.pre-commit-config.yaml | 2 +
providers/amazon/README.rst | 4 +-
providers/amazon/docs/index.rst | 4 +-
providers/amazon/pyproject.toml | 4 +-
providers/common/ai/.pre-commit-config.yaml | 6 +
providers/common/compat/.pre-commit-config.yaml | 2 +
providers/edge3/.pre-commit-config.yaml | 12 +
.../edge3/tests/unit/edge3/worker_api/test_app.py | 5 +-
providers/fab/.pre-commit-config.yaml | 12 +
providers/hashicorp/docs/index.rst | 2 +-
providers/hashicorp/pyproject.toml | 2 +-
providers/keycloak/.pre-commit-config.yaml | 4 +
providers/microsoft/azure/README.rst | 2 +-
providers/microsoft/azure/docs/index.rst | 2 +-
providers/microsoft/azure/pyproject.toml | 2 +-
providers/smtp/README.rst | 6 +-
providers/smtp/docs/changelog.rst | 16 +
providers/smtp/docs/index.rst | 7 +-
providers/smtp/docs/utils/emailer.rst | 35 +
providers/smtp/provider.yaml | 6 +-
providers/smtp/pyproject.toml | 6 +-
.../smtp/src/airflow/providers/smtp/__init__.py | 2 +-
.../airflow/providers/smtp/get_provider_info.py | 1 +
.../src/airflow/providers/smtp/utils}/__init__.py | 0
.../src/airflow/providers/smtp/utils/emailer.py | 9 +-
.../smtp/tests/unit/smtp/utils}/__init__.py | 0
.../smtp/tests/unit/smtp/utils/test_emailer.py | 185 +-
pyproject.toml | 2 +-
registry/package.json | 2 +-
registry/pnpm-lock.yaml | 10 +-
reproducible_build.yaml | 4 +-
scripts/.pre-commit-config.yaml | 2 +
scripts/ci/analyze_e2e_flaky_tests.py | 19 +-
.../mount-sphinx-airflow-theme.yml} | 23 +-
scripts/ci/kubernetes/kind-cluster-conf.yaml | 5 +-
scripts/ci/make_mnt_writeable.sh | 21 +-
scripts/ci/move_docker_to_mnt.sh | 7 +-
scripts/ci/prek/AGENTS.md | 4 +
scripts/ci/prek/check_ci_gate_needs.py | 85 +
scripts/ci/prek/check_ci_workflows_in_sync.py | 174 +-
scripts/ci/prek/check_fork_ci_gate_config.py | 149 +
scripts/ci/prek/check_imports_in_providers.py | 2 +-
scripts/ci/prek/check_prek_hooks_pycache_prefix.py | 76 +
scripts/ci/prek/check_shared_mypy_hooks.py | 2 +
scripts/ci/prek/lang_sdk_compat_matrix.py | 326 ++-
scripts/ci/prek/local_yml_mounts.py | 2 +
scripts/ci/prek/newsfragments.py | 69 +
scripts/ci/prek/ruff_format.py | 2 +-
...un_mypy_full_dist_local_venv_or_breeze_in_ci.py | 4 +-
scripts/ci/prek/update_go_sdk_readme_matrix.py | 6 +-
scripts/ci/prek/update_java_sdk_readme_matrix.py | 6 +-
scripts/ci/prek/update_lang_sdk_central_matrix.py | 152 +
scripts/ci/prek/update_ts_sdk_readme_matrix.py | 6 +-
scripts/ci/spot_interruptions.py | 428 +++
scripts/in_container/bin/generate_mprocs_config.py | 18 +-
scripts/in_container/in_container_utils.py | 18 +-
scripts/in_container/run_docs_build.sh | 6 +
scripts/in_container/run_generate_constraints.py | 45 +-
scripts/tests/ci/prek/conftest.py | 55 +
scripts/tests/ci/prek/test_check_ci_gate_needs.py | 83 +
.../ci/prek/test_check_fork_ci_gate_config.py | 115 +
.../prek/test_check_prek_hooks_pycache_prefix.py | 46 +-
.../tests/ci/prek/test_lang_sdk_compat_matrix.py | 330 ++-
scripts/tests/ci/prek/test_local_yml_mounts.py | 79 +
scripts/tests/ci/prek/test_newsfragments.py | 128 +-
.../ci/prek/test_update_go_sdk_readme_matrix.py | 25 +-
.../ci/prek/test_update_java_sdk_readme_matrix.py | 27 +-
.../ci/prek/test_update_lang_sdk_central_matrix.py | 148 +
.../ci/prek/test_update_ts_sdk_readme_matrix.py | 27 +-
scripts/tests/ci/test_analyze_e2e_flaky_tests.py | 16 +
scripts/tests/ci/test_spot_interruptions.py | 445 +++
.../in_container/test_generate_mprocs_config.py | 30 +
.../in_container/test_run_generate_constraints.py | 69 +
scripts/tools/setup_breeze | 2 +-
shared/configuration/.pre-commit-config.yaml | 2 +
shared/dagnode/.pre-commit-config.yaml | 2 +
shared/listeners/.pre-commit-config.yaml | 2 +
shared/logging/.pre-commit-config.yaml | 2 +
shared/module_loading/.pre-commit-config.yaml | 2 +
.../module_loading/file_discovery.py | 11 +-
.../tests/module_loading/test_file_discovery.py | 18 +
shared/observability/.pre-commit-config.yaml | 2 +
.../observability/metrics/metrics_registry.py | 6 +-
.../observability/metrics/metrics_template.yaml | 84 +-
.../airflow_shared/observability/metrics/stats.py | 3 +-
.../observability/metrics/test_otel_logger.py | 9 +
shared/plugins_manager/.pre-commit-config.yaml | 2 +
shared/providers_discovery/.pre-commit-config.yaml | 2 +
shared/secrets_backend/.pre-commit-config.yaml | 2 +
shared/secrets_masker/.pre-commit-config.yaml | 2 +
.../secrets_masker/secrets_masker.py | 2 +-
.../tests/secrets_masker/test_secrets_masker.py | 6 +
shared/serialization/.pre-commit-config.yaml | 2 +
shared/state/.pre-commit-config.yaml | 2 +
shared/template_rendering/.pre-commit-config.yaml | 2 +
shared/timezones/.pre-commit-config.yaml | 2 +
task-sdk-integration-tests/.pre-commit-config.yaml | 2 +
task-sdk/.pre-commit-config.yaml | 6 +
task-sdk/pyproject.toml | 2 +-
.../src/airflow/sdk/api/datamodels/_generated.py | 3 +-
.../src/airflow/sdk/bases/resumablejobmixin.py | 7 +-
.../src/airflow/sdk/coordinators/_subprocess.py | 349 ++-
task-sdk/src/airflow/sdk/execution_time/comms.py | 9 +-
task-sdk/src/airflow/sdk/execution_time/context.py | 50 +-
.../src/airflow/sdk/execution_time/coordinator.py | 14 +-
.../airflow/sdk/execution_time/schema/schema.json | 46 +-
.../sdk/execution_time/schema/versions/__init__.py | 2 -
.../execution_time/schema/versions/v2026_10_30.py | 15 -
.../src/airflow/sdk/execution_time/supervisor.py | 93 +-
.../src/airflow/sdk/execution_time/task_runner.py | 32 +-
.../src/airflow/sdk/importers/python_importer.py | 8 +-
.../src/airflow/sdk/serde/serializers/timezone.py | 8 +-
.../tests/task_sdk/bases/test_resumablejobmixin.py | 47 +-
.../tests/task_sdk/coordinators/test_subprocess.py | 519 +++-
.../execution_time/schema/test_migrator.py | 10 -
.../tests/task_sdk/execution_time/test_context.py | 97 +
.../task_sdk/execution_time/test_supervisor.py | 84 +-
.../task_sdk/execution_time/test_task_runner.py | 36 +-
.../task_sdk/importers/test_python_importer.py | 37 +
task-sdk/tests/task_sdk/serde/test_serializers.py | 17 +-
ts-sdk/.pre-commit-config.yaml | 14 +
ts-sdk/README.md | 96 +-
ts-sdk/capabilities.yaml | 172 +-
ts-sdk/example/package.json | 1 +
ts-sdk/example/src/dynamic.ts | 51 +
ts-sdk/example/src/main.ts | 8 +-
ts-sdk/pnpm-lock.yaml | 244 +-
ts-sdk/schema/supervisor-schema.json | 46 +-
ts-sdk/src/cli/pack.ts | 6 +
ts-sdk/src/coordinator/serde.ts | 8 +-
ts-sdk/src/generated/supervisor.ts | 42 +-
ts-sdk/src/sdk/dag.ts | 9 +
ts-sdk/tests/cli/pack.test.ts | 31 +
ts-sdk/tests/sdk/dag.test.ts | 14 +
uv.lock | 3088 +++++++++++---------
558 files changed, 30568 insertions(+), 6994 deletions(-)
create mode 100644 .github/AGENTS.md
copy kubernetes-tests/.pre-commit-config.yaml =>
.github/actions/runs-on-cost-summary/action.yml (59%)
create mode 100644 .github/actions/stash-restore/action.yml
create mode 100644 .github/actions/stash-save/action.yml
create mode 100644 .github/fork-ci-gate.toml
create mode 100644 .github/workflows/auto-approve-workflow-runs.yml
create mode 100644 .github/workflows/cancel-merged-pr-runs.yml
delete mode 100644 .github/workflows/check-newsfragment-pr-number.yml
create mode 100644 .github/workflows/fork-ci-monitor.yml
create mode 100644 .github/workflows/mark-workflow-runs-approved.yml
create mode 100644 .github/workflows/spot-interruption-notice.yml
delete mode 100644 airflow-core/newsfragments/74896.bugfix.rst
copy airflow-core/src/airflow/{callbacks/database_callback_sink.py =>
api_fastapi/common/telemetry.py} (55%)
create mode 100644
airflow-core/src/airflow/migrations/versions/0149_3_4_0_add_is_stub_to_task_instance.py
delete mode 100644
airflow-core/src/airflow/ui/src/components/DAGWarningsModal.test.tsx
delete mode 100644
airflow-core/src/airflow/ui/src/components/DagDeactivatedChip.test.tsx
delete mode 100644
airflow-core/src/airflow/ui/src/components/DagDeactivatedChip.tsx
copy airflow-core/src/airflow/ui/src/components/{DagImportErrorModal.tsx =>
DagImportErrorDetails.tsx} (85%)
create mode 100644
airflow-core/src/airflow/ui/src/components/DagStatusChip.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/DagStatusChip.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/StatusMessage.tsx
create mode 100644
airflow-core/src/airflow/ui/src/context/timezone/TimezoneProvider.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/hooks/useRequiredActionTabs.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/layouts/Nav/BrowseButton.test.tsx
create mode 100644
airflow-core/src/airflow/ui/src/pages/DagsList/RecentRuns.test.tsx
create mode 100644 airflow-core/src/airflow/ui/src/utils/dagStatus.test.ts
create mode 100644 airflow-core/src/airflow/ui/src/utils/dagStatus.ts
create mode 100644 airflow-core/src/airflow/ui/src/utils/query.test.ts
create mode 100644
airflow-e2e-tests/tests/airflow_e2e_tests/ts_sdk_tests/test_ts_sdk_dynamic_dag.py
create mode 100644
dev/breeze/doc/adr/0020-run-ci-for-external-contributions-in-forks.md
create mode 100644 dev/breeze/doc/ci/08_fork_ci_for_external_contributors.md
create mode 100644 dev/breeze/doc/images/output_ci_approve-workflow-runs.svg
create mode 100644 dev/breeze/doc/images/output_ci_approve-workflow-runs.txt
create mode 100644 dev/breeze/doc/images/output_ci_audit.svg
create mode 100644 dev/breeze/doc/images/output_ci_audit.txt
create mode 100644 dev/breeze/doc/images/output_ci_fork-ci-reconcile.svg
create mode 100644 dev/breeze/doc/images/output_ci_fork-ci-reconcile.txt
create mode 100644 dev/breeze/src/airflow_breeze/utils/ci_audit.py
create mode 100644 dev/breeze/src/airflow_breeze/utils/ci_minutes_estimate.py
create mode 100644 dev/breeze/src/airflow_breeze/utils/fork_ci_gate.py
create mode 100644 dev/breeze/src/airflow_breeze/utils/fork_ci_github.py
create mode 100644 dev/breeze/src/airflow_breeze/utils/fork_ci_messages.py
create mode 100644 dev/breeze/src/airflow_breeze/utils/fork_ci_reconcile.py
create mode 100644 dev/breeze/src/airflow_breeze/utils/fork_compare.py
create mode 100644 dev/breeze/src/airflow_breeze/utils/git_remotes.py
create mode 100644 dev/breeze/src/airflow_breeze/utils/workflow_run_approval.py
create mode 100644 dev/breeze/tests/test_calibrate_ci_minutes_estimates.py
create mode 100644 dev/breeze/tests/test_cdxgen.py
create mode 100644 dev/breeze/tests/test_ci_audit.py
copy scripts/tests/in_container/test_generate_mprocs_config.py =>
dev/breeze/tests/test_ci_group.py (55%)
create mode 100644 dev/breeze/tests/test_ci_minutes_estimate.py
create mode 100644 dev/breeze/tests/test_fork_ci_gate.py
create mode 100644 dev/breeze/tests/test_fork_ci_github.py
create mode 100644 dev/breeze/tests/test_fork_ci_messages.py
create mode 100644 dev/breeze/tests/test_fork_ci_reconcile.py
create mode 100644 dev/breeze/tests/test_fork_compare.py
create mode 100644 dev/breeze/tests/test_git_remotes.py
create mode 100644 dev/breeze/tests/test_kubernetes_commands.py
create mode 100644 dev/breeze/tests/test_kubernetes_utils.py
create mode 100644 dev/breeze/tests/test_path_utils.py
create mode 100644 dev/breeze/tests/test_workflow_run_approval.py
create mode 100644 dev/calibrate_ci_minutes_estimates.py
delete mode 100644
java-sdk/sdk/src/main/kotlin/org/apache/airflow/sdk/execution/Cancellation.kt
delete mode 100644
java-sdk/sdk/src/test/kotlin/org/apache/airflow/sdk/execution/CancellationTest.kt
delete mode 100644
java-sdk/sdk/src/test/kotlin/org/apache/airflow/sdk/execution/LogSenderTest.kt
create mode 100644 providers/smtp/docs/utils/emailer.rst
copy {airflow-core/src/airflow/_shared =>
providers/smtp/src/airflow/providers/smtp/utils}/__init__.py (100%)
copy airflow-core/src/airflow/utils/email.py =>
providers/smtp/src/airflow/providers/smtp/utils/emailer.py (98%)
copy {airflow-core/src/airflow/_shared =>
providers/smtp/tests/unit/smtp/utils}/__init__.py (100%)
copy airflow-core/tests/unit/utils/test_email.py =>
providers/smtp/tests/unit/smtp/utils/test_emailer.py (65%)
copy scripts/ci/{kubernetes/kind-cluster-conf.yaml =>
docker-compose/mount-sphinx-airflow-theme.yml} (69%)
create mode 100755 scripts/ci/prek/check_ci_gate_needs.py
create mode 100755 scripts/ci/prek/check_fork_ci_gate_config.py
create mode 100755 scripts/ci/prek/check_prek_hooks_pycache_prefix.py
create mode 100755 scripts/ci/prek/update_lang_sdk_central_matrix.py
create mode 100755 scripts/ci/spot_interruptions.py
create mode 100644 scripts/tests/ci/prek/test_check_ci_gate_needs.py
create mode 100644 scripts/tests/ci/prek/test_check_fork_ci_gate_config.py
copy providers/smtp/src/airflow/providers/smtp/__init__.py =>
scripts/tests/ci/prek/test_check_prek_hooks_pycache_prefix.py (50%)
create mode 100644 scripts/tests/ci/prek/test_local_yml_mounts.py
create mode 100644 scripts/tests/ci/prek/test_update_lang_sdk_central_matrix.py
create mode 100644 scripts/tests/ci/test_spot_interruptions.py
create mode 100644 ts-sdk/example/src/dynamic.ts