Skip to content

Add broken-link validation with Web Archive fallback - #52

Merged
konard merged 3 commits into
mainfrom
issue-49-dd91efd520d1
Aug 9, 2026
Merged

Add broken-link validation with Web Archive fallback#52
konard merged 3 commits into
mainfrom
issue-49-dd91efd520d1

Conversation

@konard

@konard konard commented Aug 9, 2026

Copy link
Copy Markdown
Member

Summary

  • add a dedicated Broken Link Checker workflow for Markdown and HTML changes
  • run lychee without immediately failing so broken URLs can be checked against the Wayback Machine
  • add a Python fallback helper that emits actionable notices/errors and rejects links with no archived snapshot
  • exclude docs/case-studies references while retaining bounded runtime, least-privilege permissions, and per-job cancellation

Reproduction

On main, adding [dead](https://example.com/definitely-not-a-page-404) to README.md does not start any link-validation workflow, so the dead URL can pass CI.

Verification

  • pytest tests/test_check_web_archive.py tests/test_workflows.py -q
  • ruff check .
  • ruff format --check .
  • mypy src/
  • python scripts/check_file_size.py
  • pytest --cov=src --cov-report=term (69 passed, 100% package coverage)
  • npx --yes -p secretlint -p @secretlint/secretlint-rule-preset-recommend secretlint '**/*'

The regression tests verify lychee report parsing, Wayback snapshot handling, conservative API-error behavior, workflow triggers, exclusions, permissions, timeout/concurrency, and the failure gate.

Fixes #49

Adding .gitkeep for PR creation (default mode).
This file will be removed when the task is complete.

Issue: #49
@konard konard self-assigned this Aug 9, 2026
@konard konard changed the title [WIP] Port the links.yml broken-link checker from the JS template (no link validation in CI) Add broken-link validation with Web Archive fallback Aug 9, 2026
@konard
konard marked this pull request as ready for review August 9, 2026 02:37
@konard

konard commented Aug 9, 2026

Copy link
Copy Markdown
Member Author

Working session summary

Implemented and finalized PR #52.

  • Added Markdown/HTML link checking with lychee.
  • Added Python Wayback Machine fallback with actionable annotations.
  • Added regression tests and changelog fragment.
  • All 69 local tests and quality checks pass.
  • Fresh GitHub CI, security scans, and the new link checker pass.
  • Branch is clean, current with main, and PR is ready for review.

This summary was automatically extracted from the AI working session output.

@konard

konard commented Aug 9, 2026

Copy link
Copy Markdown
Member Author

🤖 Solution Draft Log

This log file contains the complete execution trace of the AI solution draft process.

💰 Cost estimation:

  • Model: GPT-5.6 Sol
  • Provider: OpenAI
  • Public pricing estimate: $2.387843

📊 Context and tokens usage:

  • 77.2K / 200K (39%) input tokens, 10.2K / 128K (8%) output tokens

Total: (77.2K + 1.2M cached) input tokens, 10.2K output tokens, $2.387843 cost

🤖 Models used:

  • Tool: OpenAI Codex
  • Requested: gpt-5.6-sol
  • Thinking level: low (~7999 tokens)
  • Model: GPT 5.6 Sol (gpt-5.6-sol)

📎 Log file uploaded as Gist (950KB)


Now working session is ended, feel free to review and add any feedback on the solution draft.

@konard
konard merged commit 40f1cbb into main Aug 9, 2026
13 checks passed
@konard

konard commented Aug 9, 2026

Copy link
Copy Markdown
Member Author

🎉 Auto-merged

This pull request has been automatically merged by hive-mind.

  • All CI checks have passed

Auto-merged by hive-mind with --auto-merge flag

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Port the links.yml broken-link checker from the JS template (no link validation in CI)

1 participant