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