Skip to content

Commit 6df52e2

Browse files
Merge branch 'apache:main' into fix/adls-to-gcs-return-destination-uris
2 parents b251621 + b656901 commit 6df52e2

File tree

1,205 files changed

+52062
-21818
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,205 files changed

+52062
-21818
lines changed

.gitattributes

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,14 @@ manifests export-ignore
1212
newsfragments export-ignore
1313
scripts export-ignore
1414

15-
Dockerfile.ci export-ignore
15+
.github export-ignore
16+
1617
CONTRIBUTING.rst export-ignore
1718
ISSUE_TRIAGE_PROCESS.rst export-ignore
18-
.github/PULL_REQUEST_TEMPLATE.md export-ignore
19+
20+
AGENTS.md export-ignore
21+
SKILLS.md export-ignore
22+
CLAUDE.md export-ignore
1923

2024
.asf.yaml export-ignore
2125
.bash_completion export-ignore

.github/CODEOWNERS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,3 +149,6 @@ Dockerfile.ci @potiuk @ashb @gopidesupavan @amoghrajesh @jscheffl @bugraoz93 @ka
149149

150150
# Shared Libraries
151151
/shared/ @ashb @amoghrajesh @potiuk
152+
153+
# RMs on release documents
154+
/dev/README_RELEASE_*.md @potiuk @jscheffl @vincbeck @shahar1 @jedcunningham @bugraoz93

.github/ISSUE_TEMPLATE/4-airflow_helmchart_bug_report.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ body:
3737
What Apache Airflow Helm Chart version are you using?
3838
multiple: false
3939
options:
40-
- "1.18.0 (latest released)"
40+
- "1.19.0 (latest released)"
41+
- "1.18.0"
4142
- "1.17.0"
4243
- "1.16.0"
4344
- "1.15.0"

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
<!-- SPDX-License-Identifier: Apache-2.0
2+
https://www.apache.org/licenses/LICENSE-2.0 -->
3+
14
<!--
25
Thank you for contributing!
36

.github/SECURITY.md

Lines changed: 19 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,22 @@
1-
<!--
2-
Licensed to the Apache Software Foundation (ASF) under one
3-
or more contributor license agreements. See the NOTICE file
4-
distributed with this work for additional information
5-
regarding copyright ownership. The ASF licenses this file
6-
to you under the Apache License, Version 2.0 (the
7-
"License"); you may not use this file except in compliance
8-
with the License. You may obtain a copy of the License at
9-
10-
http://www.apache.org/licenses/LICENSE-2.0
11-
12-
Unless required by applicable law or agreed to in writing,
13-
software distributed under the License is distributed on an
14-
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15-
KIND, either express or implied. See the License for the
16-
specific language governing permissions and limitations
17-
under the License.
18-
-->
1+
<!-- SPDX-License-Identifier: Apache-2.0
2+
https://www.apache.org/licenses/LICENSE-2.0 -->
193

204
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
215
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
226

23-
- [What should be and should NOT be reported ?](#what-should-be-and-should-not-be-reported-)
24-
- [How to report the issue ?](#how-to-report-the-issue-)
25-
- [Is this really a security vulnerability ?](#is-this-really-a-security-vulnerability-)
26-
- [How do we assess severity of the issue ?](#how-do-we-assess-severity-of-the-issue-)
27-
- [What happens after you report the issue ?](#what-happens-after-you-report-the-issue-)
28-
- [Does CVE in Airflow Providers impact Airflow core package ?](#does-cve-in-airflow-providers-impact-airflow-core-package-)
29-
- [Where do I find more information about Airflow Security ?](#where-do-i-find-more-information-about-airflow-security-)
7+
- [Apache Airflow Security](#apache-airflow-security)
8+
- [What should be and should NOT be reported ?](#what-should-be-and-should-not-be-reported-)
9+
- [How to report the issue ?](#how-to-report-the-issue-)
10+
- [Is this really a security vulnerability ?](#is-this-really-a-security-vulnerability-)
11+
- [How do we assess severity of the issue ?](#how-do-we-assess-severity-of-the-issue-)
12+
- [What happens after you report the issue ?](#what-happens-after-you-report-the-issue-)
13+
- [Does CVE in Airflow Providers impact Airflow core package ?](#does-cve-in-airflow-providers-impact-airflow-core-package-)
14+
- [Where do I find more information about Airflow Security ?](#where-do-i-find-more-information-about-airflow-security-)
3015

3116
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
3217

18+
# Apache Airflow Security
19+
3320
This document contains information on how to report security vulnerabilities in Apache Airflow and
3421
how security issues reported to the Apache Airflow security team are handled. If you would like
3522
to learn more, head to the
@@ -46,7 +33,7 @@ e-mail address [security@airflow.apache.org](mailto:security@airflow.apache.org)
4633
Before sending the report, however, please read the following guidelines first. The guidelines should
4734
answer the most common questions you might have about reporting vulnerabilities.
4835

49-
### What should be and should NOT be reported ?
36+
## What should be and should NOT be reported ?
5037

5138
**Only** use the security e-mail address to report undisclosed security vulnerabilities in Apache
5239
Airflow and to manage the process of fixing such vulnerabilities. We do not accept regular
@@ -61,13 +48,13 @@ with dependencies in Airflow Docker reference image - there is a page that descr
6148
[Airflow reference Image is fixed at release time](https://airflow.apache.org/docs/docker-stack/index.html#fixing-images-at-release-time) and providing helpful instructions explaining
6249
how you can build your own image and manage dependencies of Airflow in your own image.
6350

64-
### How to report the issue ?
51+
## How to report the issue ?
6552

6653
Please send one plain-text email for each vulnerability you are reporting including an explanation
6754
of how it affects Airflow security. We may ask that you resubmit your report if you send it as an image,
6855
movie, HTML, or PDF attachment when you could as easily describe it with plain text.
6956

70-
### Is this really a security vulnerability ?
57+
## Is this really a security vulnerability ?
7158

7259
Before reporting vulnerabilities, please make sure to read and understand the [security model](https://airflow.apache.org/docs/apache-airflow/stable/security/security_model.html)
7360
of Airflow, because some of the potential security vulnerabilities that are valid for projects that are
@@ -85,7 +72,7 @@ a lot of time on preparing the issue report to follow the guidelines above and w
8572
save time for yourself and for the Airflow Security team by reading and understanding the security model
8673
before reporting the issue.
8774

88-
### How do we assess severity of the issue ?
75+
## How do we assess severity of the issue ?
8976

9077
Severity of the issue is determined based on the criteria described in
9178
the [Severity Rating blog post](https://security.apache.org/blog/severityrating/) by the Apache Software Foundation Security team.
@@ -95,7 +82,7 @@ do not apply to Airflow, or have a different severity than some generic scoring
9582
(for example `CVSS`) calculation suggests. So we are not using any generic scoring system.
9683

9784

98-
### What happens after you report the issue ?
85+
## What happens after you report the issue ?
9986

10087
The Airflow Security Team will get back to you after assessing the report. You will usually get
10188
confirmation that the issue is being worked (or that we quickly assessed it as invalid) within several
@@ -116,7 +103,7 @@ Security issues in Airflow are handled by the Airflow Security Team. Details abo
116103
Team and how members of it are chosen can be found in the
117104
[Contributing documentation](https://github.com/apache/airflow/blob/main/contributing-docs/01_roles_in_airflow_project.rst#security-team).
118105

119-
### Does CVE in Airflow Providers impact Airflow core package ?
106+
## Does CVE in Airflow Providers impact Airflow core package ?
120107

121108
Airflow core package is released separately from provider distributions. While Airflow comes with ``constraints``
122109
which describe which version of providers have been tested when the version of Airflow was released, the
@@ -126,7 +113,7 @@ not apply to the Airflow core package. There are also Airflow providers released
126113
Airflow community is not responsible for releasing and announcing security vulnerabilities in them, this
127114
is handled entirely by the 3rd-parties that release their own providers.
128115

129-
### Where do I find more information about Airflow Security ?
116+
## Where do I find more information about Airflow Security ?
130117

131118
If you wish to know more about the ASF security process,
132119
the [ASF Security team's page](https://www.apache.org/security/) describes

.github/actions/breeze/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ inputs:
2424
default: "3.10"
2525
uv-version:
2626
description: 'uv version to use'
27-
default: "0.10.2" # Keep this comment to allow automatic replacement of uv version
27+
default: "0.10.6" # Keep this comment to allow automatic replacement of uv version
2828
outputs:
2929
host-python-version:
3030
description: Python version used in host

.github/actions/install-prek/action.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ inputs:
2424
default: "3.10"
2525
uv-version:
2626
description: 'uv version to use'
27-
default: "0.10.2" # Keep this comment to allow automatic replacement of uv version
27+
default: "0.10.6" # Keep this comment to allow automatic replacement of uv version
2828
prek-version:
2929
description: 'prek version to use'
30-
default: "0.3.2" # Keep this comment to allow automatic replacement of prek version
30+
default: "0.3.3" # Keep this comment to allow automatic replacement of prek version
3131
save-cache:
3232
description: "Whether to save prek cache"
3333
required: true
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
---
2+
applyTo: "**"
3+
excludeAgent: "coding-agent"
4+
---
5+
6+
# Airflow Code Review Instructions
7+
8+
Use these rules when reviewing pull requests to the Apache Airflow repository.
9+
10+
## Architecture Boundaries
11+
12+
- **Scheduler must never run user code.** It only processes serialized Dags. Flag any scheduler-path code that deserializes or executes Dag/task code.
13+
- **Workers must not access the metadata DB directly.** Task execution communicates with the API server through the Execution API (`/execution` endpoints) only.
14+
- **Dag Processor and Triggerer run user code in isolated processes.** Code in these components should maintain that isolation.
15+
- **Providers must not import core internals** like `SUPERVISOR_COMMS` or task-runner plumbing. Providers interact through the public SDK and execution API only.
16+
17+
## Database and Query Correctness
18+
19+
- **N+1 queries**: Flag SQLAlchemy queries that access relationships inside loops without `joinedload()` or `selectinload()`.
20+
- **`run_id` is only unique per Dag.** Queries that group, partition, or join on `run_id` alone (without `dag_id`) will collide across Dags. Always require `(dag_id, run_id)` together.
21+
- **Cross-database compatibility**: SQL changes must work on PostgreSQL, MySQL, and SQLite. Flag database-specific features (lateral joins, window functions) without cross-DB handling.
22+
- **Session discipline**: In `airflow-core`, functions receiving a `session` parameter must not call `session.commit()`. Use keyword-only `session` parameters.
23+
24+
## Code Quality Rules
25+
26+
- No `assert` in production code (stripped in optimized Python).
27+
- `time.monotonic()` for durations, not `time.time()`.
28+
- Imports at top of file. Valid exceptions: circular imports, lazy loading for worker isolation, `TYPE_CHECKING` blocks.
29+
- Guard heavy type-only imports (e.g., `kubernetes.client`) with `TYPE_CHECKING` in multi-process code paths.
30+
- Unbounded caches are bugs: all `@lru_cache` must have `maxsize`.
31+
- Resources (files, connections, sessions) must use context managers or `try/finally`.
32+
33+
## Testing Requirements
34+
35+
- New behavior requires tests covering success, failure, and edge cases.
36+
- Use pytest patterns, not `unittest.TestCase`.
37+
- Use `spec`/`autospec` when mocking.
38+
- Use `time_machine` for time-dependent tests.
39+
- Imports belong at the top of test files, not inside test functions.
40+
- Issue numbers do not belong in test docstrings.
41+
42+
## API Correctness
43+
44+
- `map_index` must be handled correctly for mapped tasks. Queries without `map_index` filtering may return arbitrary task instances.
45+
- Execution API changes must follow Cadwyn versioning (CalVer format).
46+
47+
## UI Code (React/TypeScript)
48+
49+
- Avoid `useState + useEffect` to sync derived state. Use nullish coalescing or nullable override patterns instead.
50+
- Extract shared logic into custom hooks rather than copy-pasting across components.
51+
52+
## AI-Generated Code Signals
53+
54+
Flag these patterns that indicate low-quality AI-generated contributions:
55+
56+
- **Fabricated diffs**: Changes to files or code paths that don't exist in the repository.
57+
- **Unrelated files included**: Changes to files that have nothing to do with the stated purpose of the PR.
58+
- **Description doesn't match code**: PR description describes something different from what the code actually does.
59+
- **No evidence of testing**: Claims of fixes without test evidence, or author admitting they cannot run the test suite.
60+
- **Over-engineered solutions**: Adding caching layers, complex locking, or benchmark scripts for problems that don't exist or are misunderstood.
61+
- **Narrating comments**: Comments that restate what the next line does (e.g., `# Add the item to the list` before `list.append(item)`).
62+
- **Empty PR descriptions**: PRs with just the template filled in and no actual description of the changes.
63+
64+
## Quality Signals to Check
65+
66+
The absence of these signals in a "fix" or "optimization" PR is itself a red flag:
67+
68+
- **Bug fixes need regression tests**: A test that fails without the fix and passes with it.
69+
- **Existing tests must still pass without modification**: If existing tests need changes to pass, the PR may introduce a behavioral regression.

0 commit comments

Comments
 (0)