linkcheck.yml has never passed in this repository's retained run history, and the single dead link causing it is hiding two other genuinely broken links on published pages.
Surfaced while repointing mle.md's data download in #61, whose CI went red for reasons unrelated to that PR.
The check is not flaky — it has never been green
Queried via gh api --paginate .../workflows/linkcheck.yml/runs: 64 retained runs, 64 failures, zero successes, oldest retained 2025-06-27. That is over 13 months of a red check. It also fails on unrelated pull requests — four dependabot branches on 2026-08-10, and #61 — because the workflow triggers on pull_request: [opened, reopened] as well as the daily 0 12 * * * cron.
The finding set is stable, not intermittent: runs 31595997149 (2026-08-12) and 31387608029 (2026-08-10) are byte-identical. 58 working, 39 unchecked, 3 redirected, 2 broken.
What is actually broken
1. lectures/troubleshooting.md:68 — https://discourse.quantecon.org/ does not resolve.
The forum was deliberately retired in March 2025 (announced in QuantEcon/website #157). The DNS record is gone entirely — host returns NXDOMAIN, not a missing A record — so the failure is NameResolutionError rather than a 404.
There is no replacement forum to point at: the closure announcement said QuantEcon "will be evaluating new platforms", the Hivebrite evaluation was declined, and GitHub Discussions is disabled on every public QuantEcon repo except meta. So the fix is to delete the sentence, not substitute a URL — and that is exactly what QuantEcon/lecture-python.myst did in commit 19a6874, which removed the line outright and left the issue tracker and contact@quantecon.org as the remaining feedback routes. lecture-python-intro and lecture-python-advanced.myst are already clean the same way. This repo is drift from a fix that was applied to three repos and never swept.
2. lectures/wald_friedman.md:761 — nbviewer 404, and it is a one-word fix.
The link is https://nbviewer.org/github/QuantEcon/lecture-python.notebooks/blob/master/wald_friedman.ipynb. The branch segment says master; that repository's default branch is main. The notebook exists (72,661 bytes) and the same URL with /main/ returns 200. Independently reproduced with curl. This has been sitting behind the red check the entire time.
3. lectures/troubleshooting.md:63 — the issue-tracker link lands on an archived, read-only tracker.
https://github.com/QuantEcon/lecture-python/issues redirects to https://github.com/QuantEcon/lecture-python.rst/issues, and that repository is archived. Readers cannot open an issue there.
Reported as a redirect rather than as broken, so linkcheck will not fail on it — but combined with item 1 it means both feedback routes this page offers are dead ends: the forum does not resolve, and the tracker does not accept.
Suggested fix
All three are in two files and can land in one PR, after which the check should go green:
| File |
Line |
Change |
lectures/troubleshooting.md |
68 |
delete the discourse sentence (follow lecture-python.myst@19a6874) |
lectures/troubleshooting.md |
63 |
repoint the tracker to this repository's own issues |
lectures/wald_friedman.md |
761 |
master → main in the nbviewer URL |
Two notes for whoever picks this up
Merging will not clear the live site. This repo publishes on a publish* tag, so stats.quantecon.org keeps serving the current build — and the dead link — until a publish is tagged. The generated lecture-stats.notebooks mirror regenerates at that same moment.
The boilerplate problem is wider than this repo, and is tracked upstream. An org-wide sweep found discourse.quantecon.org in 55 repositories / 165 lines, including 13 lecture-series repos and 11 live published pages. The issue-tracker defect in item 3 is also boilerplate-wide — 9 of 12 live troubleshooting.md files point at the same archived tracker. That whole surface is QuantEcon/meta#356; this issue is deliberately scoped to the one repository where a check is actually red and the fix needs no decision from anyone.
linkcheck.ymlhas never passed in this repository's retained run history, and the single dead link causing it is hiding two other genuinely broken links on published pages.Surfaced while repointing
mle.md's data download in #61, whose CI went red for reasons unrelated to that PR.The check is not flaky — it has never been green
Queried via
gh api --paginate .../workflows/linkcheck.yml/runs: 64 retained runs, 64 failures, zero successes, oldest retained 2025-06-27. That is over 13 months of a red check. It also fails on unrelated pull requests — four dependabot branches on 2026-08-10, and #61 — because the workflow triggers onpull_request: [opened, reopened]as well as the daily0 12 * * *cron.The finding set is stable, not intermittent: runs
31595997149(2026-08-12) and31387608029(2026-08-10) are byte-identical. 58 working, 39 unchecked, 3 redirected, 2 broken.What is actually broken
1.
lectures/troubleshooting.md:68—https://discourse.quantecon.org/does not resolve.The forum was deliberately retired in March 2025 (announced in
QuantEcon/website#157). The DNS record is gone entirely —hostreturnsNXDOMAIN, not a missing A record — so the failure isNameResolutionErrorrather than a 404.There is no replacement forum to point at: the closure announcement said QuantEcon "will be evaluating new platforms", the Hivebrite evaluation was declined, and GitHub Discussions is disabled on every public QuantEcon repo except
meta. So the fix is to delete the sentence, not substitute a URL — and that is exactly whatQuantEcon/lecture-python.mystdid in commit19a6874, which removed the line outright and left the issue tracker andcontact@quantecon.orgas the remaining feedback routes.lecture-python-introandlecture-python-advanced.mystare already clean the same way. This repo is drift from a fix that was applied to three repos and never swept.2.
lectures/wald_friedman.md:761— nbviewer 404, and it is a one-word fix.The link is
https://nbviewer.org/github/QuantEcon/lecture-python.notebooks/blob/master/wald_friedman.ipynb. The branch segment saysmaster; that repository's default branch ismain. The notebook exists (72,661 bytes) and the same URL with/main/returns 200. Independently reproduced withcurl. This has been sitting behind the red check the entire time.3.
lectures/troubleshooting.md:63— the issue-tracker link lands on an archived, read-only tracker.https://github.com/QuantEcon/lecture-python/issuesredirects tohttps://github.com/QuantEcon/lecture-python.rst/issues, and that repository is archived. Readers cannot open an issue there.Reported as a redirect rather than as broken, so linkcheck will not fail on it — but combined with item 1 it means both feedback routes this page offers are dead ends: the forum does not resolve, and the tracker does not accept.
Suggested fix
All three are in two files and can land in one PR, after which the check should go green:
lectures/troubleshooting.mdlecture-python.myst@19a6874)lectures/troubleshooting.mdlectures/wald_friedman.mdmaster→mainin the nbviewer URLTwo notes for whoever picks this up
Merging will not clear the live site. This repo publishes on a
publish*tag, sostats.quantecon.orgkeeps serving the current build — and the dead link — until a publish is tagged. The generatedlecture-stats.notebooksmirror regenerates at that same moment.The boilerplate problem is wider than this repo, and is tracked upstream. An org-wide sweep found
discourse.quantecon.orgin 55 repositories / 165 lines, including 13 lecture-series repos and 11 live published pages. The issue-tracker defect in item 3 is also boilerplate-wide — 9 of 12 livetroubleshooting.mdfiles point at the same archived tracker. That whole surface is QuantEcon/meta#356; this issue is deliberately scoped to the one repository where a check is actually red and the fix needs no decision from anyone.