Summary
The lychee link checker added in PR #32 surfaced ~30 dead links across older _posts/ (2015-2018). The site-health.yml workflow currently excludes the entire blog directory (--exclude-path _site/blog) so these don't gate PRs.
Sample of what's broken
http://people.duke.edu/~sni/* (5+ deleted personal-page assets)
http://nasher.duke.edu/faculty/... (site reorganized)
https://dibs.duke.edu/scholars/elizabeth-johnson and dibs.duke.edu/events/... (pages moved/deleted)
https://bassconnections.duke.edu/project-teams/... (old project page)
https://medschool.duke.edu/research/.../basic-science-day (moved)
https://www.neuro.duke.edu/people/faculty/eva-naumann (moved)
https://livestream.com/naturalsciences/Cafe (livestream URLs gone)
http://www.upenn.edu/pennnews/news/michael-platt-... (Penn news article moved)
http://research.vtc.vt.edu/people/read-montague/team (moved)
http://www.sdsc.edu/~bourne/ (gone)
http://emuseum.nasher.duke.edu/... (returns 400 Bad Request; API changed)
- 3-4
[ERROR] connection failures (changlab.net, kellyraechi.com, etc. — possibly defunct)
Full list available by running lychee --config ./lychee.toml --no-progress --root-dir "$(pwd)/_site" _site locally without the blog exclude (or just see the lychee report from PR #32 commit 59c3abb).
Acceptance
For each error, decide one of:
- Update: replace with the page's current URL
- Archive: swap to an Internet Archive snapshot (
https://web.archive.org/web/<timestamp>/<url>)
- Remove link: keep the surrounding prose, drop the
<a> / [text](url) markup
- Remove sentence: rare; only if the linked content was the entire point
Then drop --exclude-path _site/blog from .github/workflows/site-health.yml so blog posts get ongoing checking.
Notes
- This is editorial work, not infrastructure. Could be split into one issue per post if helpful.
- Consider doing this after the dibs-web01 migration so we know the link checker is reliably catching the relevant cases.
Summary
The lychee link checker added in PR #32 surfaced ~30 dead links across older
_posts/(2015-2018). Thesite-health.ymlworkflow currently excludes the entire blog directory (--exclude-path _site/blog) so these don't gate PRs.Sample of what's broken
http://people.duke.edu/~sni/*(5+ deleted personal-page assets)http://nasher.duke.edu/faculty/...(site reorganized)https://dibs.duke.edu/scholars/elizabeth-johnsonanddibs.duke.edu/events/...(pages moved/deleted)https://bassconnections.duke.edu/project-teams/...(old project page)https://medschool.duke.edu/research/.../basic-science-day(moved)https://www.neuro.duke.edu/people/faculty/eva-naumann(moved)https://livestream.com/naturalsciences/Cafe(livestream URLs gone)http://www.upenn.edu/pennnews/news/michael-platt-...(Penn news article moved)http://research.vtc.vt.edu/people/read-montague/team(moved)http://www.sdsc.edu/~bourne/(gone)http://emuseum.nasher.duke.edu/...(returns 400 Bad Request; API changed)[ERROR]connection failures (changlab.net, kellyraechi.com, etc. — possibly defunct)Full list available by running
lychee --config ./lychee.toml --no-progress --root-dir "$(pwd)/_site" _sitelocally without the blog exclude (or just see the lychee report from PR #32 commit59c3abb).Acceptance
For each error, decide one of:
https://web.archive.org/web/<timestamp>/<url>)<a>/[text](url)markupThen drop
--exclude-path _site/blogfrom.github/workflows/site-health.ymlso blog posts get ongoing checking.Notes