Repository navigation
Commit 66d5cd6
ci(check-links): widen lychee's inputs to docs/** and the root history pages (#26313)
<!-- claude-projects-attribution: {"github_login":"os-steve"} -->
_Requested by **Steve** · [project
thread](https://claude.ai/code/project/chan_01FdL1XeUyvVNxLreh3F4Qi9?thread=cmsg_01FdL1XeUyvVNxLreh3F4Qi97jMShinfrgwb8tLuAanQ3t)_
Fixes #26087
Clause-②: no
Metadata-protocol: none
## What
`check-links.yml` handed lychee only `content/**`, `README.md` and
`ARCHITECTURE.md`, so a dead relative link anywhere in `docs/` or in the
root history pages was checked by nothing. This PR widens the **same
job's** input (no new workflow, no new gate, no path filter) and fixes
every link the wider run reports.
- `LYCHEE_ARGS` gains `'docs/**/*.md'`, `CHANGELOG.md`,
`RELEASE_NOTES.md`, `CONTRIBUTING.md`, `ROADMAP.md`, `LICENSING.md`,
`CODE_OF_CONDUCT.md`.
- `docs/adr/` is taken back out with `--exclude-path '^docs/adr/'`: the
`Check ADR cross-links` step in the same job owns that registry, with
its own shrink-only baseline, so one link gets one verdict. The
workflow's comment above the argv is rewritten to say that (it
previously justified the exclusion by "8 broken ADR links today", which
no longer holds, see Acceptance notes).
- `AGENTS.md` is not added and not edited (other cards hold it).
Measured separately: its 2 links resolve, 0 errors.
- `lychee.toml` is unchanged.
## Link fixes (6)
| Where | Dead target | Why it is gone | Fix |
|---|---|---|---|
| `CHANGELOG.md` (org-scoping entry) |
`packages/plugins/plugin-org-scoping/README.md` | package retired from
this repo (54e43db) | link removed, "(since retired from this
repository)" added |
| `CHANGELOG.md` (M9 formula entry) | `content/docs/guides/formula.mdx`
| same page renamed to `content/docs/data-modeling/formulas.mdx`
(f7606a1) | path updated |
| `CHANGELOG.md` (remote API commands entry) |
`./REMOTE_API_COMMANDS.md` | deleted as obsolete (e9ba126) | "See …
for full documentation" bullet removed |
| `RELEASE_NOTES.md` (v0.2.0 package list) |
`packages/plugins/driver-memory/CHANGELOG.md` | same file moved to
`packages/drivers/driver-memory/` (06ba036) | path updated |
| `RELEASE_NOTES.md` (v0.2.0 docs list) |
`internal/planning/DEVELOPMENT_ROADMAP.md` | deleted (9d9460b) |
bullet removed |
| `RELEASE_NOTES.md` (v0.2.0 docs list) |
`QUICK_START_IMPLEMENTATION.md` | deleted (9f9a4a2) | bullet removed
|
Deleted-on-purpose targets lose the sentence; nothing is pointed at a
different document. Two moves (same content, new path) get the new path.
The card's sampled `docs/NEXT_STEP.md` and
`docs/releases-maintenance.md` links are already gone on `main` (#26271,
#26021): `docs/**` reports 0 errors before this PR.
## Acceptance
lychee **0.24.2** (the pinned version, built from crates.io in the card
container), CI's argv read out of the workflow YAML with
`github.workspace` substituted, cache file removed before each run, tree
= `origin/main` 69aa630 for "before" and fceddfe for "after":
| Run | Inputs | Result |
|---|---|---|
| before, current CI set | 4 globs | 2520 total · 0 errors (exit 0) |
| **before, widened set** | 11 globs, `docs/adr/` excluded | 2887 total
· **6 errors** (exit 2): 3 in `CHANGELOG.md`, 3 in `RELEASE_NOTES.md`, 0
in `docs/**` |
| **after, this PR's argv** | 11 globs, `docs/adr/` excluded | 2883
total · **0 errors** (exit 0) |
- Exclusion syntax measured: `--exclude-path '^docs/adr/'` drops every
`docs/adr/` input and nothing else, and `lychee.toml`'s own
`exclude_path` (meta.json) keeps applying alongside it (`--dump-inputs`
with and without the flag).
- Negative control on fceddfe: a dead link planted in
`docs/HARDENING.md`, `ROADMAP.md` and an ADR → exit 2 with exactly 2
errors (the `docs/` and `ROADMAP.md` ones; the ADR one is not read).
Restored from `HEAD`, `git diff HEAD` empty.
- Time: lychee itself 63–66 ms → 70–94 ms locally (3 runs each). The
job's recent wall time on PRs is 31–36 s (runs 40393608080, 40393580234,
40393044766, 40392691453, 40392656950, 40391655111), almost all of it
checkout and the binary download, so no measurable growth is expected;
this PR's own `Check Links` run is the after reading.
- `node scripts/check-adr-links.mjs --self-test && node
scripts/check-adr-links.mjs` → exit 0, 807 destinations resolve.
- `pnpm check:doc-authoring` → exit 0.
## Gates
`node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack` on fceddfe derived 37 commands; all 37 ran
locally with stdin from `/dev/null`, every exit 0 (incl. `pnpm
check:pm-dispatch-gates`, fast tier, 243 s). `--ran` reconciliation:
**37 derived, 37 run, 0 NOT-MEASURED** (a derived zero). Every other
family is CI's, read from this PR's check-runs.
## Acceptance notes
- The ⛔ comment this PR replaces said adding `docs/adr/**` would report
8 broken links; measured today it reports **0** (the widened run with no
exclusion: 4217 total, the same 6 errors, none under `docs/adr/`), and
`check-adr-links.mjs`'s `KNOWN_DEAD_TARGETS` is empty. The exclusion is
kept on ownership grounds, not on rot. `scripts/check-adr-links.mjs`'s
header still says lychee runs "exactly three globs"; that prose is now
stale (observation only; outside this card's file surface).
- `docs/NORTH-STAR.md` is inside `docs/**` and is a governed file; it
reports 0 errors, so the widened glob reads it but this PR does not edit
it.
## Changeset
None: the diff touches a workflow and two root history files, which no
package publishes. `skip-changeset` is set at creation.
## 维护者速读(草稿)
**改了什么**:链接检查原来只看 `content/`、README 和 ARCHITECTURE,现在同一个任务也检查 `docs/`
下的文档(ADR 除外,ADR 已有自己的检查)和 6
个根目录文档(CHANGELOG、RELEASE_NOTES、CONTRIBUTING、ROADMAP、LICENSING、CODE_OF_CONDUCT)。顺手修掉扩大范围后查出的
6 个坏链,都在 CHANGELOG 和 RELEASE_NOTES 的历史条目里。
**为什么改**:读者从发布说明或路线图点链接会落到 404,而本该发现它的检查从来没看过这些文件。
**风险与代价(含回滚)**:这条检查是建议性的,不在必过集合里,不会挡合并。用时几乎不变(lychee 本身多几十毫秒)。将来有人在
`docs/` 或这些根文件里写坏链,这条检查会变红。回滚就是撤掉 `check-links.yml` 里新增的几行。
**席位意见**:
**你要做的**:这是受管文件(`.github/workflows/`)的改动,需要你审批后才能落地。PR 保持 draft,席位不会自己转
ready 或开自动合并。
---
_Generated by [Claude
Code](https://claude.ai/code/session_019PqtBRVkBPJHnCXGWvUQED)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent 7e6fca0 commit 66d5cd6
3 files changed
Lines changed: 28 additions & 22 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
80 | 81 | | |
81 | 82 | | |
82 | 83 | | |
83 | 84 | | |
84 | 85 | | |
| 86 | + | |
85 | 87 | | |
86 | 88 | | |
87 | 89 | | |
88 | 90 | | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
89 | 98 | | |
90 | 99 | | |
91 | 100 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
160 | 160 | | |
161 | 161 | | |
162 | 162 | | |
163 | | - | |
164 | | - | |
| 163 | + | |
| 164 | + | |
165 | 165 | | |
166 | 166 | | |
167 | 167 | | |
| |||
1027 | 1027 | | |
1028 | 1028 | | |
1029 | 1029 | | |
1030 | | - | |
| 1030 | + | |
1031 | 1031 | | |
1032 | 1032 | | |
1033 | 1033 | | |
| |||
1352 | 1352 | | |
1353 | 1353 | | |
1354 | 1354 | | |
1355 | | - | |
1356 | 1355 | | |
1357 | 1356 | | |
1358 | 1357 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
286 | 286 | | |
287 | 287 | | |
288 | 288 | | |
289 | | - | |
| 289 | + | |
290 | 290 | | |
291 | 291 | | |
292 | 292 | | |
| |||
321 | 321 | | |
322 | 322 | | |
323 | 323 | | |
324 | | - | |
325 | 324 | | |
326 | | - | |
327 | 325 | | |
328 | 326 | | |
329 | 327 | | |
| |||
0 commit comments