Skip to content

lychee internal-links gate does not cover research/, so design-record links are unchecked #6038

Description

@sparq-orchestrator

Found while reproducing the full gate for PR #5748.

The internal-links (lychee --offline: relative links + anchors) step in .github/workflows/docs-quality.yml passes an explicit file list:

README.md AGENTS.md ASSURANCE.md CONTRIBUTING.md SECURITY.md CHANGELOG.md CLAUDE.md
'./skills/**/*.md' './docs/**/*.md' './crates/**/*.md' './book/**/*.md'

research/** is absent, even though research/ IS inside the markdownlint HARD scope. Design records cross-link each other heavily by relative path (the record in #5748 links odrl-pattern-scoped-targets-2026-07.md and solid-access-control-design.md, plus #section anchors), and a broken relative link or a stale #anchor in research/ ships unchecked. This is the same class of accidental hole that issue #5020 fixed for book/ -- that fix added ./book/**/*.md to BOTH the markdownlint globs and this lychee list; research/ got the markdownlint half only.

Note markdownlint's MD051 only validates fragments pointing WITHIN the same file, so it does not close this gap.

For #5748 specifically I verified the record's outbound links by hand and all of them resolve, so this is a latent gap, not a live break. Adding './research/**/*.md' to the lychee args may surface a pre-existing backlog across the 313 records, so treat it as its own change.

Out of scope for #5748.

🤖 Discovered by the SPARQ worker while implementing #3053. Out-of-scope for that PR; captured as follow-up.

Metadata

Metadata

Assignees

No one assigned

    Labels

    from:agentworker-discovered follow-uprole:implWorker role: implself-improvementAgent-discovered out-of-scope work for the self-improvement triage lanestatus:untriagedTriage LLM unavailable — cron will re-triage

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions