Skip to content

Verify Blocked Documentation Links With Public Probes - #41

Merged
PSchmiedmayer merged 1 commit into
mainfrom
feature/link-check-fallback
Oct 12, 2026
Merged

PSchmiedmayer merged 1 commit into
mainfrom
feature/link-check-fallback

Conversation

@PSchmiedmayer

@PSchmiedmayer PSchmiedmayer commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

♻️ Current situation & Problem

The documentation checks in Grove #119 encounter HTTP 403 responses from Bluetooth and Zenodo, even though those pages are reachable from other networks. Ignoring the URLs would also hide future broken links.

⚙️ Release Notes

  • Run Linkspector once and retain its structured results. Only HTTP 403 findings on explicitly configured public hosts receive a second check through Globalping; no account or API key is needed.
  • Require two successful responses with verified TLS to resolve a finding. Confirmed 404/410 results remain failures. Blocked or inconclusive measurements remain visible as unverified warnings, not successful verification. Other Linkspector errors retain their existing behavior.
  • Add globalping_hosts to the Markdown Links and Repository Standards workflows. The fallback is disabled by default. For example: globalping_hosts: 'www.bluetooth.com,zenodo.org'.
  • Keep the shared workflow and its action at the same revision through self-repository references. Existing callers need an updated workflow release before enabling the new input.
  • Use major-version action tags and the latest Linkspector 0.5.x release. Use the runner's installed Chrome and its sandbox configuration rather than downloading a separate browser build.

📚 Documentation

The README documents configuration, limits, outcomes, and the live regression checks. Globalping measurements are public: only opt-in public documentation hosts are eligible, and URLs containing credentials, query strings, fragments, or nonstandard ports are not submitted. Reports are retained for seven days; findings use workflow annotations rather than PR comments.

✅ Testing

  • 16 local unit tests passed, including outages, quotas, invalid reports, TLS failures, deduplication, and preservation of other link errors.
  • Executed the shared action's shell locally with Linkspector 0.5.6. Bluetooth's initial 403 was verified through Globalping; a valid local document passed and the deliberately missing document still failed.
  • Explicitly exercised the live fallback for both Bluetooth and Zenodo; both returned successful responses with verified TLS from two probes.
  • Added a permanent GitHub check on every PR, pushes to main, and weekly. It runs the shared action against the four fixtures, asserts the expected broken-link failure, and separately requires verified live results for both public URLs. Inconclusive measurements fail this regression even though they are warnings in the reusable workflow.
  • Workflow/YAML lint, ShellCheck, workflow documentation validation, REUSE, and whitespace checks passed locally. The live regression and all repository checks also passed on GitHub at 4790994.

Code of Conduct & Contributing Guidelines

Copilot AI balanced review requested due to automatic review settings October 12, 2026 21:27
@coderabbitai

coderabbitai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 52ac0459-1af0-412c-ab77-563c08a6137e

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@PSchmiedmayer
PSchmiedmayer force-pushed the feature/link-check-fallback branch from ce9a6c0 to 4790994 Compare October 12, 2026 21:31

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The implementation is fail-closed where required, limits public disclosure, and includes comprehensive automated coverage.

0 open findings

What changed in this PR

Adds an opt-in Globalping fallback for Linkspector 403 responses while preserving strict handling for confirmed failures.

Changes:

  • Adds secure public-probe verification and annotations.
  • Adds unit and live regression coverage.
  • Exposes and documents globalping_hosts.
File Description
README.md Documents fallback behavior and limits.
actions/​markdown-links/​test_check_links.py Tests processing and regression behavior.
actions/​markdown-links/​live_check.py Implements live regression verification.
actions/​markdown-links/​check_links.py Processes reports and Globalping results.
actions/​markdown-links/​action.yml Defines the shared composite action.
.gitignore Ignores Python caches.
.github/​workflows/​self-standards.yml Runs fallback unit tests.
.github/​workflows/​repository-standards.yml Forwards the new input.
.github/​workflows/​markdown-links.yml Uses the new shared action.
.github/​workflows/​link-check-regressions.yml Adds scheduled and PR regression checks.
.github/​actionlint.yaml Permits self-repository action syntax.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@PSchmiedmayer
PSchmiedmayer merged commit 71c03a2 into main Oct 12, 2026
7 checks passed
@PSchmiedmayer
PSchmiedmayer deleted the feature/link-check-fallback branch October 12, 2026 21:49
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.

2 participants