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 280d595  docs: lychee is already a hard gate — strip stale 
'informational' wording (#425)
280d595 is described below

commit 280d5950a85e040abc2eeb6ce907f13046e661c9
Author: Jarek Potiuk <[email protected]>
AuthorDate: Sun May 31 20:59:06 2026 +0200

    docs: lychee is already a hard gate — strip stale 'informational' wording 
(#425)
    
    PR #47 (2026-05-04) flipped the link-check workflow to a hard
    gate by setting `fail: true` + `continue-on-error: false` after
    driving the broken-link baseline to zero, and `lychee` was added
    to `.asf.yaml`'s required_status_checks list. Three places in
    the tree still describe it as informational, contradicting the
    actual behaviour:
    
    - `.github/workflows/link-check.yml` header — claimed lychee was
      in informational mode and to "flip continue-on-error off once
      the baseline reaches zero". The flag has been off since #47;
      update the comment to describe the current state plus a
      pointer to the lychee.toml exclude bar for genuinely-
      placeholder targets.
    
    - `CONTRIBUTING.md` § CI workflows entry — claimed
      `continue-on-error: true` (it is false) and pitched lychee as
      baseline-pending. Update to describe the hard gate + point
      contributors at the AGENTS.md `Before submitting` guidance to
      run lychee locally before pushing.
    
    - `CONTRIBUTING.md` § CI gates bullet — listed prek + zizmor as
      the gates and called link-check informational. Update to list
      the actual gate set (prek, zizmor, lychee, every tests-ok
      matrix entry).
    
    Pure documentation; the workflow itself is unchanged.
---
 .github/workflows/link-check.yml | 14 ++++++++------
 CONTRIBUTING.md                  | 16 +++++++++-------
 2 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/.github/workflows/link-check.yml b/.github/workflows/link-check.yml
index bf49f25..1f94aef 100644
--- a/.github/workflows/link-check.yml
+++ b/.github/workflows/link-check.yml
@@ -18,12 +18,14 @@
 ---
 name: link-check
 
-# Lychee runs in informational mode for now: it surfaces broken
-# internal links and broken external URLs, but does not block PR
-# merges. The existing tree has a known set of pre-existing broken
-# references (to files like `config/active-project.md` that this
-# repository plans to add later) which would otherwise fail every
-# PR. Once the baseline reaches zero, flip `continue-on-error` off.
+# Lychee is a hard gate: every broken internal link or unreachable
+# external URL fails this workflow, and `lychee` is one of the
+# required status checks in `.asf.yaml`. Promoted from
+# informational mode in PR #47 after the pre-existing baseline
+# was driven to zero. Anyone adding a broken link to a PR fails
+# this check and cannot merge until the link is fixed (or
+# excluded via `.lychee.toml` if the target is genuinely
+# placeholder-style — but the bar for adding excludes is high).
 
 on:  # yamllint disable-line rule:truthy
   pull_request:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 631cca5..51743fd 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -795,10 +795,12 @@ Separate GitHub workflows:
 - **`zizmor.yml`** — lints GitHub Actions workflows for known-bad
   patterns; runs on every PR.
 - **`link-check.yml`** — runs [lychee](https://lychee.cli.rs/) on
-  every PR and daily on a schedule. **Informational only** today
-  (`continue-on-error: true`) because the tree carries a known set
-  of placeholder / not-yet-created file references; once the
-  baseline reaches zero the workflow flips to a hard gate.
+  every PR and daily on a schedule. **Hard gate** (`fail: true`,
+  `continue-on-error: false`); a single broken internal link or
+  unreachable external URL fails the workflow and blocks merge.
+  Run lychee locally before pushing (see *Before submitting* in
+  [`AGENTS.md`](AGENTS.md#before-submitting)) — the local invocation
+  catches the same errors and avoids a CI round-trip.
 
 To run a single Python package's tests directly:
 
@@ -849,9 +851,9 @@ agent self-eval mode).
 - **PR description:** one `## Summary` section (1–3 bullets of
   *what changed and why*) and one `## Test plan` section (how you
   verified). The `gh pr create` template in this repo matches.
-- **CI gates:** `prek run --all-files` must pass; `zizmor` must
-  pass. `link-check` is informational. All gates run automatically
-  on every PR.
+- **CI gates:** `prek run --all-files`, `zizmor`, `lychee`, and
+  every entry in the `tests-ok` pytest-matrix umbrella must pass.
+  All gates run automatically on every PR.
 - **Reviews:** at least one approval from a repo collaborator. Any
   change that edits [`AGENTS.md`](AGENTS.md), an RFC, or a skill
   file should get an extra set of eyes because those ripple into

Reply via email to