-
Notifications
You must be signed in to change notification settings - Fork 92
Expand file tree
/
Copy path.asf.yaml
More file actions
238 lines (230 loc) · 11.7 KB
/
Copy path.asf.yaml
File metadata and controls
238 lines (230 loc) · 11.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# https://cwiki.apache.org/confluence/display/INFRA/git+-+.asf.yaml+features
---
github:
description: "Agent-assisted maintainership and development framework for Apache projects — Triage, Mentoring, Drafting (agent-authored fixes with human review), and Pairing (developer-side dev-cycle) skills shipping; Agentic Autonomous (auto-merge) on the roadmap."
homepage: "https://magpie.apache.org/"
labels:
# Note that GitHub only supports <=20 labels/topics per repo! Pipeline
# will fail if you add more.
- apache
- security
- cve
- vulnerability-management
- vulnerability-disclosure
- agent-skills
- claude-code
- automation
features:
issues: true
projects: true
wiki: false
discussions: true
enabled_merge_buttons:
squash: true
merge: false
rebase: false
pull_requests:
allow_auto_merge: false
allow_update_branch: true
del_branch_on_merge: true
# External triage collaborators — GitHub IDs that get triage rights
# without being added to the apache org. ASF Infra caps this list
# at 10 entries; exceptions need a vp-infra@apache.org request.
collaborators:
# Non-ASF-members named in MISSION.md → "involved as
# collaborators on the project from day one":
- johnslavik # Bartosz Sławecki
# Also named in MISSION.md's non-ASF-members section (Apache
# Airflow committers):
- shahar1 # Shahar Epstein (Airflow committer)
- vincbeck # Vincent Beck (Airflow committer)
- bugraoz93 # Buğra Öztürk (Airflow committer)
# Disable GitHub Copilot completely on this repo. The framework's
# review workflow is human-driven (`pr-management-code-review`
# skill + maintainer review) and the agent-assisted authoring loop
# is Claude-Code-based; Copilot's per-PR comments and code-review
# ruleset duplicate / contradict both. The explicit `enabled:
# false` is required to actively remove the Copilot automatic-
# code-review ruleset if it was ever previously configured (per
# the asf.yaml `copilot_code_review` directive); this is the only
# lever asfyaml exposes for the Copilot integration today, and
# toggling it off is what "disable Copilot completely" reduces to
# in this config.
copilot_code_review:
enabled: false
# No `environments:` block by design — asfyaml's environment
# handler currently passes `prevent_self_review` as a kwarg to
# `Repository.create_environment()`, which the PyGithub version
# asfyaml ships does not accept ("Repository.create_environment()
# got an unexpected keyword argument 'prevent_self_review'"). The
# block is harmless to omit while no release workflow targets a
# deployment environment; re-add (with the `atr-release`
# protected-branches scaffold for ASF Trusted Releases) once the
# asfyaml / PyGithub interaction is fixed upstream and a release
# workflow exists that needs the environment.
# Branch protection on `main`. ASF Infra reconciles this within a
# few minutes of merge to main (asfyaml feature
# `protected_branches`). Earlier note about "configured directly in
# GitHub" was superseded by inspection — no direct-on-GitHub rule
# ever existed, so the protection now lives here next to the rest
# of the repo config.
#
# APPROVAL REQUIREMENT TEMPORARILY LIFTED ON `main`
# -------------------------------------------------
# During the framework's bootstrap phase (running under the Airflow
# PMC umbrella with a small set of committers, see MISSION.md) PR
# approvals were NOT required and a maintainer could self-merge
# after CI green. On becoming a Top-Level Project with its own PMC,
# every PR into `main` was made to require one approving review from
# a committer (#818).
#
# That requirement is **temporarily lifted** while the marketplace-
# installation replacement and the reworked permission handling are
# brought up: both land as many small, fast iterations that need to
# be tested against a real merged `main`, and a per-PR approval
# round-trip stalls that loop for hours at a time.
#
# This is a deliberate, time-boxed exception, not a governance
# change. Everything else that gates `main` stays on — the
# `zizmor` / `prek` / `tests-ok` status checks below still have to
# pass, review threads still have to be resolved, and history is
# still linear — so nothing merges unreviewed by CI.
#
# RESTORE by uncommenting the `required_pull_request_reviews` block
# below once that work has landed. ASF Infra reconciles the change
# within a few minutes of the merge to `main`.
protected_branches:
main:
# Required status checks. Listed contexts MUST run on every PR
# against `main` — path-filtered workflows are excluded
# (classic branch-protection has no "require only if run"
# semantics, so a path-filtered job that doesn't post a status
# would block the PR). Excluded for that reason:
# `asf-allowlist-check` (paths: `.github/**`) and
# `lint .claude/settings.json against baseline` from
# sandbox-lint (paths: `.claude/settings.json` +
# `tools/sandbox-lint/**`).
#
# CodeQL (`Analyze (python)`, `Analyze (actions)`) is NOT
# required. The framework repo is docs- and skills-heavy with
# no published runtime artefacts — the per-PR incremental
# value of CodeQL gating is low relative to the noise it
# produces on changes that do not touch real attack surface.
# The `codeql.yml` workflow still runs on every PR for
# visibility (findings surface in the Security tab), but a
# finding does not block merge. Re-introduce as a required
# gate if/when the project starts publishing runtime
# artefacts that warrant per-PR static analysis.
required_status_checks:
# `strict: false` — don't require the PR branch to be up
# to date with `main` before merging. With `strict: true`,
# every merge to `main` invalidates every other open PR and
# forces a rebase loop. False matches typical ASF practice
# for multi-contributor repos.
strict: false
contexts:
# zizmor — GitHub Actions security lint.
- "zizmor"
# Pre-commit (prek) — static checks across the repo,
# including the `lychee` link-check hook (link rot, broken
# `#anchor` fragments, dead external URLs). lychee was a
# standalone `link-check.yml` workflow with its own required
# `lychee` status; it is now a prek hook, so the `prek`
# context above is what gates link health. (Converting also
# dropped the old daily-cron rot sweep — link rot on files
# no PR touches is now only caught when a PR next edits them.)
- "prek"
# Per-project pytest matrix from tests.yml. Required via
# the single `tests-ok` umbrella job rather than the
# individual `pytest (<project>)` matrix entries — branch
# protection and rulesets both require exact-match status
# check names, so listing matrix entries here would force
# an `.asf.yaml` change on every matrix add / rename /
# removal. `tests-ok` `needs:` every matrix entry and
# fails unless all succeed, so the gate semantics are the
# same.
- "tests-ok"
# TEMPORARILY DISABLED — see the note above. Restore by removing
# the three leading `# ` markers; the values are the ones that were
# in force before, so restoring is a pure uncomment.
#
# One approving review from a committer is required before any
# PR merges into `main`. `dismiss_stale_reviews: false` — an
# approval survives later pushes to the branch, so a rebase or a
# review-comment fixup does not force a re-approval round-trip.
# `require_code_owner_reviews` is left off: there is no CODEOWNERS
# file, so any committer's approval satisfies the requirement.
# required_pull_request_reviews:
# required_approving_review_count: 1
# dismiss_stale_reviews: false
#
# Linear history matches `enabled_merge_buttons.squash: true`
# above — squash is the only enabled merge mode, so every
# merge results in a single commit on top of main.
required_linear_history: true
# Do NOT block merge on unresolved review threads. With the
# approval requirement lifted above, this was the one merge gate
# a reviewer could trip by accident: *any* open thread held the
# PR, including a nit the reviewer explicitly marked as
# non-blocking. The observed effect is reviewers resolving their
# own advisory comments purely to unblock the merge, which
# defeats the point of leaving the comment where the author can
# still see it. Unresolved threads remain visible in the PR UI;
# they are simply no longer a hard gate.
#
# Restore alongside `required_pull_request_reviews` above if the
# project later wants threads to gate merge again.
required_conversation_resolution: false
# Do NOT require signed commits. External contributors
# without configured GPG/SSH signing would be unable to
# contribute. Re-enable if/when the project adopts a
# committer-only signing policy.
required_signatures: false
notifications:
# Magpie is a Top-Level Project with its own mailing lists. All
# commit / PR / issue / discussion traffic routes to the project's
# own `commits@magpie.apache.org` list. (During the bootstrap phase
# the framework ran under the Airflow PMC umbrella and its events
# rode the Airflow PMC's lists; with TLP status Magpie now has its
# own `commits@` and the schemes below point at it.)
#
# Routing:
# - jobs → jobs@ (CI run notifications)
# - everything else → commits@
#
# ASF Infra defaults any *unset* notification field to
# `dev@<project>.apache.org`. The four `_status` / `_comment`
# schemes (`issues_status`, `issues_comment`, `pullrequests_status`,
# `pullrequests_comment`) are set explicitly to `commits@` here —
# **not** left to that default — so PR review comments, CI-status
# flips, and label / milestone changes go to the same list as the
# lifecycle events rather than landing on `dev@magpie.apache.org`.
# Per the ASF asf.yaml schema
# (https://github.com/apache/infrastructure-asfyaml/blob/main/asfyaml/feature/notifications.py
# `VALID_NOTIFICATION_SCHEMES`), if Infra adds a new scheme, set
# it explicitly in the same change to keep the `dev@` default
# suppressed.
commits: commits@magpie.apache.org
issues: commits@magpie.apache.org
issues_status: commits@magpie.apache.org
issues_comment: commits@magpie.apache.org
pullrequests: commits@magpie.apache.org
pullrequests_status: commits@magpie.apache.org
pullrequests_comment: commits@magpie.apache.org
discussions: commits@magpie.apache.org