feat(adr)!: #658 adr check verifies every file reference in a record #782

Merged
hexajon merged 1 commit from issue-658-file-references into main 2026-10-16 00:17:53 +00:00
Owner

Summary

adr check now reads every file reference in a record - a markdown link resolved
from the record folder, a backticked path from the repo root - and fails when a
referenced file does not exist in the committed tree. A full URL is read through
its forge (skipped when forge checks are off); ~/ and / paths, placeholders, and
globs are skipped; a line number after a path fails. This can fail an existing
tree, so it ships in the breaking release.

Refs #658

## Summary adr check now reads every file reference in a record - a markdown link resolved from the record folder, a backticked path from the repo root - and fails when a referenced file does not exist in the committed tree. A full URL is read through its forge (skipped when forge checks are off); ~/ and / paths, placeholders, and globs are skipped; a line number after a path fails. This can fail an existing tree, so it ships in the breaking release. Refs #658
feat(adr): verify every file reference in a record
Some checks failed
ci / mcp-conformance (pull_request) Successful in 2m41s
drift / govulncheck (pull_request) Has been skipped
drift / surface-diff (pull_request) Successful in 46s
drift / forgejo-smoke (pull_request) Has been skipped
ci / gate (pull_request) Failing after 17m35s
ci / mcp-conformance (push) Successful in -28s
drift / govulncheck (push) Has been skipped
drift / surface-diff (push) Successful in -34s
drift / forgejo-smoke (push) Has been skipped
ci / gate (push) Successful in 15m11s
f5a8416f19
adr check reads each file reference in a record and checks it resolves: a
markdown link (resolved from the record's own folder) or a backticked path
(resolved from the repo root). A plain path must exist in the committed
tree, not only on disk. A full forge URL is read through that forge, and
is skipped with --skip-remote-issues. A ~/ or / path, a placeholder or a
glob (NNNN, *, <name>, {...}), and a link inside a fenced code block are
not checked; a line number after a path fails. A backticked span counts as
a path only when it has a slash and a dotted final segment, so a command,
a flag, a config key, a directory, or an import path is left alone. The
rule is named references.

A forge-tagged test reads a real forge file URL; the unit tests cover the
committed-tree, line-number, placeholder, glob, and base-resolution cases.

Refs #658
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sixfold-space/madtea!782
No description provided.