Validate and update links (STF-557)#185
Conversation
There was a problem hiding this comment.
Code Review
This pull request integrates the Lychee link checker by adding its configuration file, updating the gitignore, updating a support link in the README, and defining a link-checking task in mise.toml. Feedback highlights two issues: the specified lychee version in mise.toml does not exist and should be changed to a valid version, and the status code ranges in lychee.toml should use standard exclusive syntax to prevent parsing errors.
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.
| @@ -0,0 +1,6 @@ | |||
| [tools] | |||
| lychee = "0.23.0" | |||
There was a problem hiding this comment.
There was a problem hiding this comment.
lychee 0.23.0 does exist (released 2026-02-13) and is the version dev-site pins; mise install resolves it and the Links workflow runs green here. This looks like an outdated assumption about the latest version.
— Claude (posted on Greg's behalf)
| # 429: Too Many Requests | ||
| # 500-599: Server errors (temporary issues shouldn't fail CI) | ||
| # 999: LinkedIn's custom status code | ||
| accept = ["100..=103", "200..=299", "403", "429", "500..=599", "999"] |
There was a problem hiding this comment.
Lychee's status code range parser expects standard exclusive ranges (e.g., 200..300) rather than inclusive Rust-style ranges with = (e.g., 200..=299). Using ..= may result in parsing errors. It is safer to use the standard exclusive range syntax.
| accept = ["100..=103", "200..=299", "403", "429", "500..=599", "999"] | |
| accept = ["100..104", "200..300", "403", "429", "500..600", "999"] |
There was a problem hiding this comment.
200..=299 (inclusive ..=) is valid lychee syntax — it's used by the dev-site/blog-site configs and this workflow runs green, so no change is needed.
— Claude (posted on Greg's behalf)
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. lychee is installed via mise so the version is pinned in mise.toml. 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: - www.maxmind.com/en/support -> support.maxmind.com/knowledge-base Part of STF-557. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Resolves zizmor ref-version-mismatch warnings on hash-pinned actions whose version comments omitted the leading v (the pinned commits already match the corresponding vX.Y.Z tags). Comment-only change. Part of STF-557. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
| @@ -0,0 +1,63 @@ | |||
| # Lychee link checker configuration | |||
There was a problem hiding this comment.
[nit] New config files ship inside the published gem The gemspec uses s.files = Dir['**/*'].difference([...]) and the exclusion list does not exclude lychee.toml, mise.toml, mise.lock, or .gitignore, so these get packaged into the maxmind-db gem. This is a pre-existing packaging pattern (the gemspec is NOT modified by this PR) and matches the rest of the fleet, but the newly added mise/lychee files now ride along in releases. Optional: add them to the gemspec difference list.
There was a problem hiding this comment.
Done in 2c9b3df — added lychee.toml, mise.toml, mise.lock, and .gitignore to the gemspec's difference exclusion list so they no longer ship in the published gem. Made the same change in GeoIP2-ruby and minfraud-api-ruby for consistency. (Confirmed the published npm and PyPI packages don't ship these — npm uses a files: [dist] allowlist, and the uv/setuptools sdists only include their declared source lists.)
— Claude (posted on Greg's behalf)
The gemspec packages Dir['**/*'] minus an exclusion list, which didn't cover the link-checking config added in this PR, so lychee.toml/mise.toml/mise.lock (and .gitignore) would ship in the published gem. Add them to the exclusion. Part of STF-557. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds a lychee link checker (config + Links GitHub Actions workflow, installed via mise) and fixes one stale/redirecting link surfaced by the check.
Link checker setup
lychee.tomlwithmax_redirects = 0so moved links surface and get updated to canonical destinations.mise.tomlpinslychee = "0.23.0"and defines acheck-linkstask scanning./**/*.md,./lib/**/*.rb, and./*.gemspec..github/workflows/links.ymlruns on push, pull request, weekly, and manual dispatch; installs only lychee via mise..lycheecacheadded to.gitignore.Links updated (old -> new)
https://www.maxmind.com/en/support->https://support.maxmind.com/knowledge-baseFinal lychee run: 15 OK, 0 errors, 3 excluded.
Part of STF-557.
🤖 Generated with Claude Code