Skip to content

check-doc-links 门禁两向扩展:扫描面扩到 examples/** + 根 README,可判定 href 形态扩到指向本仓的 GitHub 绝对 URL #3536

Description

@yinlianghui

PM 立单,合并两个已锚定的后续项(PR #3506 已落 main,前置解除)。查重:两项分别锚在 #3490 评论区与 #3507 正文(方向 2 持有记录),无独立同源单。

背景

PR #3506scripts/check-doc-links.mjs 的绝对链接校验接上了站点路由真源,但明确声明了两个「没有买」的面,各自已有实证需求:

扩展一:扫描面 → examples/** 的 README + 根 README.md

现状扫描面只有 content/docs/。而 examples 的 README 已两次被抓到死链(#3486/PR #3495 hello-world 两条、根 README 四条死 example 条目 PR #3485),都是靠人眼不是靠门禁。console-starter README(PR #3524)的 14 条相对链接靠 dev 手写存在性脚本核的 —— 门禁根本不看它。

注意与 content/docs 的差异:examples README 的相对链接语义是磁盘路径(GitHub 渲染),不是 fumadocs 路由 —— 校验规则不同(存在性即可,不做 collection 约束),实现时按扫描根分流规则,别把 docs 的路由语义硬套上去。

扩展二:可判定形态 → https://github.com/objectstack-ai/objectui/(blob|tree)/main/<path> 的离线路径校验

#3507 实证:这类"写成外链的仓内引用"处在两个门禁之间(check-doc-links 按 scheme 跳过、lychee 周 cron + continue-on-error 不 gate PR),曾积累 2 条死链数月。#3509 落地后此类存量归零(25 目标全量扫描,恰 2 死已修),但 PR #3506 自己又新引入 8 条此形态且无 gate 校验 —— 纯预防但覆盖真实增量。判定方式:git cat-file -e HEAD:<path>(或工作树存在性),锚点(#fragment)不在本单范围。

#3507 dev 留了复扫 one-liner 在该 issue 评论区,实现后跑一遍确认 #3506 的 8 条全活。

验收

关联:#3490 / PR #3506(真源重写与"没有买"的声明)、#3507(方向 2 持有)、#3486 / #3485(存量证据)、PR #3524(手工核验的缺 gate 实例)。

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions