Skip to content

Remove the --exclude-mail flag that makes the link checker exit 2 - #8077

Open
Scottcjn wants to merge 1 commit into
mainfrom
fix/lychee-exclude-mail-flag
Open

Remove the --exclude-mail flag that makes the link checker exit 2#8077
Scottcjn wants to merge 1 commit into
mainfrom
fix/lychee-exclude-mail-flag

Conversation

@Scottcjn

Copy link
Copy Markdown
Owner

The link checker has not checked a link since 22 July

Every run of lychee.yml on main fails identically:

error: unexpected argument '--exclude-mail' found
##[error]Process completed with exit code 2.

lychee removed --exclude-mail; mail links are skipped by default now and --include-mail opts back in. The action resolves to a version that rejects the flag, so the binary exits before reading a single file. All three runs on main (22 July) failed this way.

Why it went unnoticed

The job did not report broken links. It reported that it could not start. A red check for an unparseable argument looks a lot like a red check for a genuinely broken link, so the workflow kept being treated as if it were guarding something while it guarded nothing.

That is the same shape as several other things found this week: a health CLI that exited 0 when the tip check failed, and a _tip_age_slots that returned a constant instead of an age. A check that cannot run is indistinguishable from a check that passes, unless you go and look.

Verification

A run with these args minus the flag checks 2,261 links and reports 0 errors, so the configuration is otherwise sound.

Note for the bounty

Bounty #16248 has drawn several PRs proposing brand new duplicate link-check workflows. None of them needed to. The existing workflow was one flag away from working, and at least one of those PRs achieves a green check by excluding the very URLs that are broken, which is worse than the failure it replaces.

The link-check job has not checked a link since 22 July. Every run on main
fails the same way:

  error: unexpected argument '--exclude-mail' found
  Process completed with exit code 2

lychee removed --exclude-mail; mail links are now skipped by default and
--include-mail opts back in. The action resolves to a lychee version that
rejects the flag, so the binary exits before it reads a single file.

This is the failure mode worth naming: the job did not report broken links,
it reported that it could not start, and a red check for an unparseable
argument looks much like a red check for a genuinely broken link. Three runs
on main failed this way and the workflow kept being treated as if it were
guarding something.

Verified after removing it: a run with the same args minus this flag checks
2,261 links and reports 0 errors.

Contributors have since opened several PRs against this bounty proposing
new duplicate link-check workflows. None of them needed to. The existing
workflow was one flag away from working.

Signed-off-by: Scott <scottbphone12@gmail.com>
@github-actions github-actions Bot added BCOS-L1 Beacon Certified Open Source tier BCOS-L1 (required for non-doc PRs) ci size/XS PR: 1-10 lines labels Jul 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

⚠️ BCOS v2 Scan Results

Metric Value
Trust Score 49/100
Certificate ID BCOS-c062a233
Tier L1 (not met)

BCOS Badge

What does this mean?

The BCOS (Beacon Certified Open Source) engine scans for:

  • SPDX license header compliance
  • Known CVE vulnerabilities (OSV database)
  • Static analysis findings (Semgrep)
  • SBOM completeness
  • Dependency freshness
  • Test infrastructure evidence
  • Review attestation tier

Full report | What is BCOS?


BCOS v2 Engine - Free & Open Source (MIT) - Elyan Labs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

BCOS-L1 Beacon Certified Open Source tier BCOS-L1 (required for non-doc PRs) ci size/XS PR: 1-10 lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants