Validate and update links (STF-557)#33
Conversation
There was a problem hiding this comment.
Code Review
This pull request configures the Lychee link checker by adding lychee.toml, ignoring its cache in .gitignore, and updating a GPG requirements link in README.dev.md. The feedback suggests refining the GitHub blob URL exclusion regex in lychee.toml to support branch names, and improving accessibility in README.dev.md by replacing the generic link text 'here' with more descriptive text.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| # Exclude URL patterns from checking (treated as regular expressions) | ||
| exclude = [ | ||
| # GitHub blob URLs with line-number fragments (not parseable as page anchors) | ||
| '^https://github\.com/[^/]+/[^/]+/blob/[0-9a-fA-F]+/.+#L\d+$', |
There was a problem hiding this comment.
The current regular expression only matches GitHub blob URLs that contain a hexadecimal commit hash (due to [0-9a-fA-F]+). If a link references a branch name (such as main or master) with a line number fragment (e.g., .../blob/main/README.md#L10), it will not be excluded. Since lychee can fail to resolve line-number fragments on GitHub pages, this can lead to unexpected CI failures. Replacing [0-9a-fA-F]+ with [^/]+ will correctly match and exclude URLs with any branch name or commit hash.
| '^https://github\.com/[^/]+/[^/]+/blob/[0-9a-fA-F]+/.+#L\d+$', | |
| '^https://github\\.com/[^/]+/[^/]+/blob/[^/]+/.+#L\\d+$', |
There was a problem hiding this comment.
This GitHub-blob exclude is taken verbatim from the dev-site lychee config and is intentionally narrow — it only skips unverifiable blob/<sha>#L.. line-fragment links. Branch-ref blob links are checked normally and resolve fine in these repos, so we kept the shared pattern.
— Claude (posted on Greg's behalf)
| Make sure you publish it to a keyserver. See | ||
| [here](http://central.sonatype.org/pages/working-with-pgp-signatures.html) for | ||
| more info. | ||
| [here](https://central.sonatype.org/publish/requirements/gpg/) for more info. |
There was a problem hiding this comment.
Using generic link text like 'here' is an accessibility anti-pattern because it does not provide descriptive context for screen readers or users scanning the document. Consider using more descriptive link text that clearly indicates the destination.
| [here](https://central.sonatype.org/publish/requirements/gpg/) for more info. | |
| [Sonatype's GPG requirements](https://central.sonatype.org/publish/requirements/gpg/) for more info. |
There was a problem hiding this comment.
This is pre-existing copy not changed by this PR (which only validates/updates link targets); leaving wording/accessibility edits out of scope here.
— Claude (posted on Greg's behalf)
05c9cd1 to
f1eccdd
Compare
Adds a lychee configuration and a Links GitHub Actions workflow so that stale or redirecting links are caught automatically going forward. The checker runs on push, pull request, and weekly to catch external link rot. max_redirects is 0 so links that have moved are surfaced and can be updated to their canonical destination. Part of STF-557. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Validated all links with lychee and updated the one that redirected, plus excluded placeholder example/test hosts that aren't real endpoints: - README.dev.md: http://central.sonatype.org/pages/working-with-pgp-signatures.html (301) -> https://central.sonatype.org/publish/requirements/gpg/ - lychee.toml: exclude placeholder hosts custom.maxmind.com and test.maxmind.com used only in docstring examples and unit tests. Historical CHANGELOG.md entries are intentionally left unchanged. Part of STF-557. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
mise.toml did not previously use a lockfile; enable it and commit mise.lock so the lychee version (floated to "latest" in mise.toml) is pinned for reproducible link checking. Part of STF-557. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Validates all repository links with lychee and adds a
lychee config plus a Links CI workflow so stale or redirecting links are caught
automatically going forward.
max_redirects = 0so moved links are surfaced andupdated to their canonical destination.
Changes
Config / CI (commit A):
lychee.toml— link checker configuration (mirrors the shared MaxMind config).github/workflows/links.yml— Links workflow (push, pull_request, weekly schedule, manual).gitignore— ignore.lycheecacheLink fixes (commit B):
README.dev.md:http://central.sonatype.org/pages/working-with-pgp-signatures.html(301) ->
https://central.sonatype.org/publish/requirements/gpg/lychee.toml: excluded placeholder hostscustom.maxmind.comandtest.maxmind.comthat appear only in a docstring example and unit tests(not real, resolvable endpoints).
Historical
CHANGELOG.mdentries are intentionally excluded from scanning andleft unchanged.
Final lychee result: 9 OK, 0 errors, 13 excluded.
Part of STF-557.
🤖 Generated with Claude Code