This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow-steward.git


The following commit(s) were added to refs/heads/main by this push:
     new 3acbb53  chore(asf.yaml): remove CodeQL from required checks; add 
lychee (#284)
3acbb53 is described below

commit 3acbb5398ce8d425a4516249194d43a86321c0a8
Author: Jarek Potiuk <[email protected]>
AuthorDate: Mon May 25 19:18:58 2026 +0200

    chore(asf.yaml): remove CodeQL from required checks; add lychee (#284)
    
    Two `required_status_checks` changes to `protected_branches.main`:
    
    1. **CodeQL un-gated.** `Analyze (python)` and `Analyze (actions)`
       are no longer required to merge. The `codeql.yml` workflow still
       runs on every PR and surfaces findings in the Security tab -- a
       finding just stops blocking merge. The framework repo is docs-
       and skills-heavy with no published runtime artefacts, so 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. Re-introduce as a required gate if/when the project
       starts publishing runtime artefacts that warrant per-PR static
       analysis.
    
    2. **Lychee now required.** The link-checker (`lychee`) was
       previously excluded with a "link rot is a daily-schedule
       maintenance concern" rationale. It runs on every PR (no path
       filter), so requiring it gates merge on link rot introduced in
       the PR itself. The daily schedule run still catches drift on
       files the PR did not touch -- the daily run is now the *second*
       line of defence rather than the only one.
    
    Not changed:
    
    - The two path-filtered exclusions stay: `asf-allowlist-check`
      (`.github/**`) and `lint .claude/settings.json against baseline`
      (sandbox-lint, `.claude/settings.json` + `tools/sandbox-lint/**`).
      Classic branch-protection has no "require only if run" semantics,
      so a path-filtered job that does not post a status on every PR
      blocks merge. Requiring those needs the workflows to emit a
      no-op success status when skipped -- separate work.
    - `strict: false`, `required_linear_history: true`,
      `required_conversation_resolution: true`,
      `required_signatures: false`, and the absence of
      `required_pull_request_reviews:` (per the TEMPORARY POSTURE
      block) all carry over unchanged.
    
    Final required-contexts list (10):
    zizmor, prek, lychee, and the seven `pytest (<project>)` matrix
    legs (oauth-draft, generate-cve-json, skill-validator,
    privacy-llm-checker, privacy-llm-redactor, vulnogram-oauth-api,
    sandbox-lint).
    
    Generated-by: Claude Code (Opus 4.7)
---
 .asf.yaml | 26 ++++++++++++++++++--------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/.asf.yaml b/.asf.yaml
index a6bb856..66d317f 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -132,10 +132,18 @@ github:
       # `asf-allowlist-check` (paths: `.github/**`) and
       # `lint .claude/settings.json against baseline` from
       # sandbox-lint (paths: `.claude/settings.json` +
-      # `tools/sandbox-lint/**`). Also excluded: `lychee` (the
-      # link-check runs on every PR, but external link rot is a
-      # maintenance concern handled by the daily schedule — it is
-      # not a merge-blocker).
+      # `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`,
@@ -144,13 +152,15 @@ github:
         # for multi-contributor repos.
         strict: false
         contexts:
-          # CodeQL — two matrix legs (Python + GitHub Actions YAML).
-          - "Analyze (python)"
-          - "Analyze (actions)"
-          # zizmor (GitHub Actions security lint; complements CodeQL).
+          # zizmor — GitHub Actions security lint.
           - "zizmor"
           # Pre-commit (prek) — static checks across the repo.
           - "prek"
+          # Lychee — link checker. Runs on every PR (no path
+          # filter), so it gates merge on link rot introduced in
+          # the PR. The daily schedule run still catches drift on
+          # files the PR did not touch.
+          - "lychee"
           # Per-project pytest matrix from tests.yml. Mirrors the
           # `matrix.project[].name` list there; keep these two
           # lists in sync when projects are added or renamed.

Reply via email to