[PR #1552] [MERGED] fix(links): suppress link-rot tracker noise + remove gitignored .claude link #8260

Closed
opened 2026-04-27 17:37:12 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/harvard-edge/cs249r_book/pull/1552
Author: @profvjreddi
Created: 4/26/2026
Status: Merged
Merged: 4/26/2026
Merged by: @profvjreddi

Base: devHead: fix/link-rot-tracker-noise


📝 Commits (1)

  • 460d385 fix(links): suppress link-rot tracker noise + remove gitignored .claude link

📊 Changes

2 files changed (+16 additions, -1 deletions)

View changed files

📝 shared/config/.lycheeignore (+15 -0)
📝 slides/teaching.qmd (+1 -1)

📄 Description

Two surgical fixes for the nightly link-rot tracker (#1424).

1. lycheeignore — suppress confirmed false positives

Add two patterns to shared/config/.lycheeignore:

JS template-literal residue

When Lychee parses a .qmd containing JavaScript with template literals like https://github.com/\${m.github}, the literal is URL-encoded as \$%7B…%7D and reported as broken — but it is never a real URL (it is substituted at runtime). Pattern: ^https?://[^/]+/[^?#\s]*\$%7B[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*%7D

GitHub avatar URLs

https://github.com/<user>.png?size=N returns 200 in a browser but Lychee regularly returns transient 4xx/timeout against these (avatar HEAD throttling). I manually verified profvjreddi.png?size=96, Mjrovai.png?size=96, etc. all return 200. Pattern: ^https://github\.com/[A-Za-z0-9][A-Za-z0-9-]*\.png(\?size=\d+)?\$

Together these cover the 8 remaining "broken" Unified Site URLs reported by #1424 that aren't actual failures.

Line 94 had:

```markdown
2. Follow the SVG style guide for colors and typography
```

The .claude/ directory is gitignored in this repo, so the URL 404s. Replaced with plain prose mentioning the SVG style guide.

Out of scope

The 329 tinyMLx/courseware/raw/master/edX/... links in slides/ that 404 against real-but-different file numbers in the upstream repo. That's a content question (upload missing PDFs / switch repos / remove links) requiring strategic input.

Test plan

  • Manually verified each avatar URL and the discuss.tinymlx.org link return 200 in a browser
  • Confirmed ${m.github} is JS source code in site/about/people.qmd, not authored URL
  • Confirmed AIConfigs is not a public repo (no obvious replacement target for the .claude link)
  • Next nightly link-rot run should report Unified Site as clean and Slides count down by 1

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/harvard-edge/cs249r_book/pull/1552 **Author:** [@profvjreddi](https://github.com/profvjreddi) **Created:** 4/26/2026 **Status:** ✅ Merged **Merged:** 4/26/2026 **Merged by:** [@profvjreddi](https://github.com/profvjreddi) **Base:** `dev` ← **Head:** `fix/link-rot-tracker-noise` --- ### 📝 Commits (1) - [`460d385`](https://github.com/harvard-edge/cs249r_book/commit/460d385446d2d6332882195baef18c03d64fa153) fix(links): suppress link-rot tracker noise + remove gitignored .claude link ### 📊 Changes **2 files changed** (+16 additions, -1 deletions) <details> <summary>View changed files</summary> 📝 `shared/config/.lycheeignore` (+15 -0) 📝 `slides/teaching.qmd` (+1 -1) </details> ### 📄 Description Two surgical fixes for the nightly link-rot tracker (#1424). ## 1. lycheeignore — suppress confirmed false positives Add two patterns to `shared/config/.lycheeignore`: ### JS template-literal residue When Lychee parses a `.qmd` containing JavaScript with template literals like `https://github.com/\${m.github}`, the literal is URL-encoded as `\$%7B…%7D` and reported as broken — but it is never a real URL (it is substituted at runtime). Pattern: `^https?://[^/]+/[^?#\s]*\$%7B[A-Za-z_][A-Za-z0-9_]*\.[A-Za-z_][A-Za-z0-9_]*%7D` ### GitHub avatar URLs `https://github.com/<user>.png?size=N` returns 200 in a browser but Lychee regularly returns transient 4xx/timeout against these (avatar HEAD throttling). I manually verified `profvjreddi.png?size=96`, `Mjrovai.png?size=96`, etc. all return 200. Pattern: `^https://github\.com/[A-Za-z0-9][A-Za-z0-9-]*\.png(\?size=\d+)?\$` Together these cover the 8 remaining "broken" Unified Site URLs reported by #1424 that aren't actual failures. ## 2. slides/teaching.qmd — remove gitignored `.claude` link Line 94 had: \`\`\`markdown 2. Follow the [SVG style guide](https://github.com/harvard-edge/cs249r_book/blob/main/.claude/rules/svg-style.md) for colors and typography \`\`\` The `.claude/` directory is gitignored in this repo, so the URL 404s. Replaced with plain prose mentioning the SVG style guide. ## Out of scope The 329 `tinyMLx/courseware/raw/master/edX/...` links in `slides/` that 404 against real-but-different file numbers in the upstream repo. That's a content question (upload missing PDFs / switch repos / remove links) requiring strategic input. ## Test plan - [x] Manually verified each avatar URL and the discuss.tinymlx.org link return 200 in a browser - [x] Confirmed `${m.github}` is JS source code in `site/about/people.qmd`, not authored URL - [x] Confirmed AIConfigs is not a public repo (no obvious replacement target for the .claude link) - [ ] Next nightly link-rot run should report Unified Site as clean and Slides count down by 1 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-27 17:37:12 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/cs249r_book#8260