Skip to content

ci(check-links): widen lychee's inputs to docs/** and the root history pages - #26313

Merged
os-zhuang merged 1 commit into
mainfrom
claude/project-thread-ji83kj
Oct 26, 2026
Merged

os-zhuang merged 1 commit into
mainfrom
claude/project-thread-ji83kj

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Steve · project thread
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

…y pages

Add 'docs/**/*.md' (with docs/adr/ excluded via --exclude-path, since the
Check ADR cross-links step owns that registry) and CHANGELOG.md,
RELEASE_NOTES.md, CONTRIBUTING.md, ROADMAP.md, LICENSING.md and
CODE_OF_CONDUCT.md to the job's LYCHEE_ARGS.

Fix the six dead links the widened run reported on origin/main: two
targets that moved (the formula guide, the driver-memory changelog) now
point at their new paths; four whose targets were deleted on purpose
(plugin-org-scoping's README, REMOTE_API_COMMANDS.md, the internal
roadmap and the quick-start doc) lose the link or the sentence.

Claude-Session: https://claude.ai/code/session_019PqtBRVkBPJHnCXGWvUQED
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 26, 2026
@github-actions github-actions Bot added size/s ci/cd documentation Improvements or additions to documentation labels Oct 26, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · devx seat 2 · 2026-10-26T20:23Z

Seat domain:devx#2 (#20163) · session_01Q4MDXRbEJCNdPAP4SiXwp9 · reviewed head fceddfe9d7 · card #26087, claim 6425912272 (wave 7, delta R). PR carries Fixes #26087.

  • Scope: 3 files, +28/−22: .github/workflows/check-links.yml (LYCHEE_ARGS and the comment above it), CHANGELOG.md, RELEASE_NOTES.md. ⛔ Tier H (.github/workflows/**). This seat ACCEPT does not lift the gate: the PR stays a draft until a GOVERNED_APPROVERS approval, and the seat will neither ready nor queue it before that. No AGENTS.md, no docs/adr/**, no ui/, no root ci.yml, no new workflow, gate or path filter.
  • Inputs: 'docs/**/*.md' plus the six root pages the card names, with --exclude-path '^docs/adr/' keeping the ADR directory with its single owner (the Check ADR cross-links step). The dev measured on the pinned 0.24.2 that the flag drops exactly that directory and adds to lychee.toml's exclude_path rather than replacing it. The rewritten comment says so and drops the stale "8 broken ADR links" figure, which the dev re-measured at 0.
  • Link fixes, checked against main: two targets moved, and the new paths exist (content/docs/data-modeling/formulas.mdx, packages/drivers/driver-memory/CHANGELOG.md). Four targets were deleted on purpose, so their link or sentence is removed rather than repointed (plugin-org-scoping README, REMOTE_API_COMMANDS.md, two RELEASE_NOTES planning links). That follows Wanted 2. The history text is otherwise untouched.
  • Evidence from the dev thread: on origin/main the widened set reported 6 errors (CHANGELOG 3, RELEASE_NOTES 3, docs/** 0). The PR head reports 0. The negative control fails as it should. 37/37 derived gates exit 0, with 0 NOT-MEASURED.
  • Risk: check-links.yml is an advisory lane (not in the required set, no merge_group), so a later rot in the newly covered pages reds an advisory check, not the queue.
  • Landing: after a GOVERNED_APPROVERS approval on this head, and once every check is green or skipped, the seat runs ready + auto-merge.

Generated by Claude Code

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

Labels

ci/cd documentation Improvements or additions to documentation size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

3 participants