Repository navigation
Commit 86eafed
ci(check-links): 把 docs/adr/ 纳入断链检查,带围栏/行内代码判别与只减不增基线 (#6731)
`.github/workflows/check-links.yml` 只扫 content/** 与 README.md,docs/adr/
从未被检查过 —— 决策记录之间互相引用极密集(多数 `**Builds on**:` 行带
3-10 条相对链接),#5992 修掉的那条死链(0057 指向不存在的
`./0010-metadata-protection.md`)因此长期存活,久到一条 triage 评论把错误
归属继承并重复了一遍。
新增 `scripts/check-adr-links.mjs`(零依赖,`node` 直接跑),在同一条
advisory 车道(check-links.yml)里解析 docs/adr/ 的每一条相对链接目标。
判别机制:提取前先剥掉**围栏代码块与行内代码 span**。ADR-0046 是定义
package-docs 链接约定的那份记录,它按约定举例,故意写了本仓库不存在的
`./crm_lead_guide.md`(第 30 行代码 span、第 163 行 ```md 围栏、第 188 行
``)—— 这三处写法正确,该学会读它们的是门,不是让文档迁就门。
⛔ 按文件 exclude 是被记录在案的陷阱:那会永久遮蔽该记录的 4 条真实互链。
8 条既有死链(全部是 ADR → 源码树、目标已移出本仓库)冻结在
`KNOWN_DEAD_TARGETS` 只减不增基线上,形状与 `check-adr-anchors` 的
`KNOWN_NUMBER_COLLISIONS`、`check:role-word` 一致:新增死链红,基线条目
不再对应死链也红(stale),基线活不过它的理由。lychee 的 `.lycheeignore`
表达不了这一点,而实测把 `docs/adr/**/*.md` 直接加进 lychee glob 会当场
报 8 条错 —— 让一条 advisory 车道从落地那天起长红,就是没人再看的门。
Claude-Session: https://claude.ai/code/session_01F8q5J1MQyocgtNspb15fSn
Co-authored-by: Claude <noreply@anthropic.com>1 parent d5e9f6e commit 86eafed
3 files changed
Lines changed: 529 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
36 | 49 | | |
37 | 50 | | |
38 | 51 | | |
| |||
55 | 68 | | |
56 | 69 | | |
57 | 70 | | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
58 | 83 | | |
59 | 84 | | |
60 | 85 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
| 45 | + | |
45 | 46 | | |
46 | 47 | | |
47 | 48 | | |
| |||
0 commit comments