scripts/fix_dead_external_links.py was referenced by the Makefile but never
committed, and check_external_links.py did not yet save linkcheck/external.json
(both were working-tree only), so external-fix/external-fix-apply failed on
any fresh clone. The fixer is deliberately conservative: only DNS-failed /
connection-failed / host-unreachable links are auto-commented; .onion links
and ambiguous failures (404/5xx/SSL/refused) go to manual review.
The old Makefile was a single 'run' target (hugo server + pagefind --serve).
Replace it with documented targets:
build hugo --gc -> public/
index build + pagefind --site public -> public/pagefind/
serve / run index + pagefind's own server on 127.0.0.1:1414 (local)
serve-lan static-serve public/ on 0.0.0.0:8090 for other machines
link-check offline internal-link scan (lychee --scheme file) -> JSON
link-fix comment out confirmed-dead internal links, then rebuild
external-check network scan of external links (report-only)
clean / all
Add scripts/:
serve_lan.py stdlib static server rooted at public/ (prints LAN IP)
fix_dead_links.py idempotent internal dead-link comment-out
check_external_links.py external link report (drives the daily cron job)
.gitignore: add linkcheck/, resources/_gen/ (regenerable Hugo asset cache),
__pycache__/, and .hermes/.