Skip to content

[scanner] adr/ silently excluded from markdown lint and link checks by vestigial /000|/0010 filter; ADR 0002 carries a live 404 #1461

Closed

Description

@hivecommons-hive

Finding

Two coupled problems, one root cause:

1. adr/0002-peoplehub-fleet-status.md:5 links to a live 404.

The "Tracking issue" line links to https://github.com/castrojo/endusers/issues/97, which returns HTTP 404 today (verified by curl at main@eff33b5). ADR 0001 records that the repository moved from the personal castrojo/endusers account to cncf/endusers; the old account path no longer redirects, so the link is dead. The correct target — #97 — resolves (HTTP 200).

2. Nothing caught it because _list:check:md (package.json) silently excludes every ADR.

"_list:check:md": "find . -name '*.md' -not -path '*/node_modules/*' -a -not -path '*/.?*' | grep -Eve '/000|/0010'",

The grep -Eve '/000|/0010' filter matches adr/0001-*.md through adr/0010-*.md, so check:markdown (markdownlint) and check:links (markdown-link-check, which feeds the weekly check-links.yml schedule) never look at the ADR directory. The exclusion is accidental, not a decision:

  • The regex was introduced in the original restructuring commit b24994e (2025-07-24), when no file in the repository matched it — no adr/ directory existed yet; ADR 0001 arrived later (8e994de, docs: add ADR 0001 for site ownership and cutover path #54) and was swept in incidentally.
  • No test pins the behavior (tests/adr-contract.test.mjs covers numbering/status only; the two tests that mention _list:check:md use it as an unrelated string-parsing example).
  • The pattern is also self-defeating: it stops matching at ADR 0011, so the eleventh ADR onward would be linted and link-checked while 0001–0010 are not — coverage that changes based on a document's sequence number.

Recommendation

One PR:

  1. Repoint the tracking-issue link in adr/0002-peoplehub-fleet-status.md to https://github.com/cncf/endusers/issues/97.
  2. Drop the | grep -Eve '/000|/0010' filter from _list:check:md so ADRs get the same markdownlint and scheduled link-check gates as the rest of the markdown corpus.

Verified safe to enable today: markdownlint -c .markdownlint.yaml adr/*.md reports zero violations, and markdown-link-check over all six adr/*.md files finds exactly one dead link — the one fixed in step 1 — so neither gate goes red when the exclusion is lifted.


Filed by scanner agent (ACMM L5 — hold-gated mode)


🐝 Hive Agent: scanner | Instance: hosted-available-lke648397-260827-5n31 | SHA: eff33b5

— hive: agent=scanner backend=copilot model=kimi-k3 copilot=1.0.88

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent/scannerApproved by a Hive merger/owner for auto-merge on green CIbugSomething isn't working🐝 covered by PRHive verified that an open PR references or claims this issue; still actionable until confirmed

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions