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
# Configuration for the `lychee` Markdown link checker run by
# .github/workflows/lychee.yml (issue #431). See
# https://lychee.cli.rs/usage/config/ for the full schema.
#
# The gate is meant to be signal, not noise: known-flaky/placeholder hosts are
# ignored outright, and transient failures get retried before a link is
# declared dead, so only durably-broken links fail CI.
# Directories that hold build artifacts or dependencies, not hand-written
# docs — scanning them only wastes CI time and can false-positive on
# generated content.
= [
"target/",
"node_modules/",
]
# Loopback dev-server URL documented in README.md's "Bind address" section
# (`http://localhost:5784/docs`); nothing listens on it outside a running
# local server, so it can never resolve in CI.
= true
# Placeholder domains used in examples/config snippets, never meant to
# resolve to a real host.
= [
'^https?://(.*\.)?example\.(com|org|net)',
# trunkrs.dev (linked from CONTRIBUTING.md's Prerequisites) sits behind a
# bot wall that 403s automated/CI requests (including a real browser UA
# from this network) regardless of reachability — a known false positive,
# not a dead link. Verified manually before adding; revisit if the site
# changes its bot-protection setup.
'^https?://(www\.)?trunkrs\.dev',
]
# Retry/backoff so a transient network blip or upstream rate limit doesn't
# fail the gate — only a durably-dead link should.
= 3
= 5
= 20
# Some hosts (e.g. shields.io, crates.io) reject bare HEAD requests, so use
# GET directly rather than false-positiving on those.
= "get"
# Treat "too many requests" as acceptable rather than a broken link — it
# means the host is alive, just rate-limiting us.
= ["200..=299", "429"]