Skip to content

docs: 修正 CONTRIBUTING.md / ROADMAP.md 的 3 条死链 - #3571

Merged
yinlianghui merged 1 commit into
mainfrom
claude/issue-3545-contrib-roadmap-links
Aug 7, 2026
Merged

docs: 修正 CONTRIBUTING.md / ROADMAP.md 的 3 条死链#3571
yinlianghui merged 1 commit into
mainfrom
claude/issue-3545-contrib-roadmap-links

Conversation

@yinlianghui

Copy link
Copy Markdown
Collaborator

Fixes#3545

只做 issue 的第 1 步(3 条死链)。第 2 步(把这两个文件与 docs/** 纳入 SCAN_ROOTS)刻意留下,见文末。

逐条处置

1. CONTRIBUTING.md:153 — 改指 content/docs/guide/architecture.md(与 issue 的建议不同)

-See [Architecture Documentation](./docs/spec/architecture.md) for details.+See the [Architecture Overview](./content/docs/guide/architecture.md) guide for details.

docs/spec/ 目录根本不存在。issue 建议改指 docs/ARCHITECTURE.md —— 该文件确实存在,但读过之后认为它不是这句话承诺的东西:

  • docs/ARCHITECTURE.md 的 H1 是 # Console Streamlining - Architecture Guide,开篇即 "This document describes the refactored architecture that enables third-party systems to use ObjectUI components without inheriting the full console infrastructure";它的 "New Packages" 一节讲的是 app-shell / providers,主体是 Before vs After、Migration Path —— 一份重构设计文档。
  • 而链接所在的 ## Architecture Overview 一节,正文是 packages/ 目录树(types、core、react、components、designer、plugin-*)加 5 条设计原则(Protocol Agnostic / Tailwind Native / Type Safety / Tree Shakable / Zero React in Core)。它要的 "details" 是包结构与设计原则的展开
  • content/docs/guide/architecture.md 的 frontmatter title 就是 Architecture Overview,含 ## Core Philosophy## Architecture Layers## Package Structure## Type Safety —— 正是本节的展开版。

链接文字同时从 "Architecture Documentation" 改成目标文档的真实标题 "Architecture Overview",避免 #3506 / #3509 反复强调的那个坑:用旧标签包装另一个目标

2. CONTRIBUTING.md:469 — 整句删除

 Link validation runs automatically via GitHub Actions on all PRs using lychee-action. This checks for broken internal and external links.
--See [Documentation Guide](./docs/README.md) for details.

docs/README.md 不存在,且仓库里没有任何一份叫 "Documentation Guide" 的文档(docs/ 下只有 ARCHITECTURE.mdCONSOLE-STREAMLINING-SUMMARY.mdadr/audits/screenshots/)。这句承诺的细节其实就在它自己所处的 ## Documentation 一节里(Writing Documentation / Documentation Guidelines / Documentation Link Conventions / Validating Links 四个小节),前一句也已自成完整陈述。没有可诚实改指的目标 ⇒ 按 issue 给的第二种处置删句,而不是随手指一个别的文档。

3. ROADMAP.md:1892 — 扩展名 .mdx.md

-- [Plugin Development Guide](./content/docs/guide/plugin-development.mdx)+- [Plugin Development Guide](./content/docs/guide/plugin-development.md)

真实文件是 .md。保持相对文件链接的写法(而不是 issue 提到的站内路由 /docs/guide/plugin-development),与同一 Reference 列表里的 ./CONTRIBUTING.md./QUICK_REFERENCE.md 一致 —— 这三行是给 GitHub 上读 ROADMAP 的人看的,GitHub 供的是文件不是路由。

验证

这两个文件在任何门禁的扫描面之外 —— 即便 PR #3542 落地之后也是:SCAN_ROOTS 现在是 content/docs / examples / README.md,lychee 扫的是 content/docs/**docs/**README.md。所以本 PR 没有"某个门禁由红转绿"的证据可给,磁盘存在性就是全部证据,如实说明:

$ for p in content/docs/guide/architecture.md content/docs/guide/plugin-development.md \
docs/spec/architecture.md docs/README.md content/docs/guide/plugin-development.mdx; do
test -e "$p" && echo "OK $p" || echo "DEAD $p"; done
OK content/docs/guide/architecture.md ← 新目标
OK content/docs/guide/plugin-development.md ← 新目标
DEAD docs/spec/architecture.md ← 旧目标
DEAD docs/README.md ← 旧目标
DEAD content/docs/guide/plugin-development.mdx ← 旧目标

另外用脚本自己导出的 collectFiles / stripCode / diskPathExists(只读,未改脚本)按 rule: 'disk' 预跑了这三个候选面,改前 / 改后:

改前: CONTRIBUTING.md links=16 judged=2 broken=2 ROADMAP.md links=6 judged=4 broken=1 docs/ files=15 links=49 judged=47 broken=0
改后: CONTRIBUTING.md links=15 judged=1 broken=0 ROADMAP.md links=6 judged=4 broken=0 docs/ files=15 links=49 judged=47 broken=0

现有门禁保持绿:

$ node scripts/check-control-bytes.mjs
✅ check-control-bytes: OK (scanned 3631 tracked text file(s); skipped 85 binary).
$ pnpm docs:check-links
Links are valid across 3 scan roots.
$ pnpm exec vitest run scripts/ --maxWorkers=2
Test Files 16 passed (16)
Tests 275 passed (275)

无 changeset:根仓贡献者文档,非发布产物。未触碰 content/docs/releases/

刻意未做:第 2 步(扫描面)

scripts/check-doc-links.mjs本 PR 一行未动#3545 第 2 步(给 SCAN_ROOTSCONTRIBUTING.md / ROADMAP.md / docs 三行)留在 #3545 里,给下一个座位。

顺带把分诊评论里"docs/** 从没被量过"这个 caveat 量掉了(见上表):docs/** 15 个文件、49 条链接、47 条会被 disk 规则判定、0 条死链。所以第 2 步的成本是"3 行配置 + 0 条清理",本 PR 落地后这三个面即刻就是绿的 —— 但这只是一次预跑,不构成实施。

附带发现(未在本 PR 修)

#3570:同一节相邻散文的两处过期陈述 —— CONTRIBUTING.md:467 把 lychee 说成 PR 门禁(实为周扫 + workflow_dispatch,真正 gate PR 的是 docs-links.yml),以及 "✅ Correct Link Patterns" 示例里 3 条路由(/docs/reference/api/core/docs/reference/protocol/overview/docs/architecture/component)用仓库自己的 routeExists() 判定为死。两者都不是死链,#3545 的修复不覆盖;且因为在代码围栏里被 stripCode() 抹掉,即便第 2 步落地也扫不到。


Generated by Claude Code

三条链接的目标在磁盘上都不存在,且这两个文件不在任何门禁的扫描面内
(check-doc-links 的 SCAN_ROOTS 是 content/docs + examples + 根 README;
lychee 扫 content/docs、docs、README.md),所以一直静默失效。
- CONTRIBUTING.md:153 `./docs/spec/architecture.md`(`docs/spec/` 目录根本不存在)
→ `./content/docs/guide/architecture.md`。未按 issue 建议指向 `docs/ARCHITECTURE.md`:
该文件的 H1 是 "Console Streamlining - Architecture Guide",讲的是 app-shell/providers
那次重构的迁移路径,而链接所在的 "Architecture Overview" 一节讲的是 monorepo 包结构与
设计原则 —— `content/docs/guide/architecture.md`(标题即 "Architecture Overview",
含 Package Structure / Core Philosophy 两节)才是这句 "for details" 真正承诺的内容。
链接文字同时改成目标文档的真实标题,避免用旧标签包装另一个目标。
- CONTRIBUTING.md:469 `./docs/README.md` → 删除整句。仓库里没有、也从未有过
"Documentation Guide" 这份文档;它承诺的细节就在它所处的 Documentation 一节里
(Writing Documentation / Documentation Guidelines / Link Conventions / Validating Links),
前一句也已自成完整陈述。按 #3506/#3509 的先例,如实删除而不是改指别的文档。
- ROADMAP.md:1892 扩展名错 `.mdx` → `.md`。真实文件是
`content/docs/guide/plugin-development.md`;保持相对文件链接的写法,与同一列表里
`./CONTRIBUTING.md`、`./QUICK_REFERENCE.md` 一致。
本 PR 只做第 1 步。issue 的第 2 步(把这两个文件与 `docs/**` 纳入 SCAN_ROOTS)
刻意留下,不碰 scripts/check-doc-links.mjs。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
@vercel

vercelBot commented Aug 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
ProjectDeploymentActionsUpdated (UTC)
objectuiIgnoredIgnoredAug 7, 2026 2:10pm

Request Review

@github-actionsgithub-actionsBot added the documentation Improvements or additions to documentation label Aug 7, 2026
@yinlianghui
yinlianghui marked this pull request as ready for review August 7, 2026 14:12
@yinlianghui
yinlianghui added this pull request to the merge queueAug 7, 2026
Merged via the queue into main with commit d126607Aug 7, 2026
6 checks passed
@yinlianghui
yinlianghui deleted the claude/issue-3545-contrib-roadmap-links branch August 7, 2026 14:13
akarma-synetal pushed a commit to akarma-synetal/objectui that referenced this pull request Aug 10, 2026
…ctstack-ai#3572) (objectstack-ai#3589)
`SCAN_ROOTS` 追加三行,全部沿用既有的 `disk` 规则:
{ path: 'CONTRIBUTING.md', rule: 'disk' },
{ path: 'ROADMAP.md', rule: 'disk' },
{ path: 'docs', rule: 'disk' },
这三面正是 objectstack-ai#3536 头注释里「Still not bought」点名的下一批,当时标价
「one SCAN_ROOTS row each — plus fixing what that turns red」。红账已由
objectstack-ai#3545 / PR objectstack-ai#3571 单独付清(3 条死链),所以本次是纯三行:实测 70 条链接、
52 条可判定、落地当日零死链——扩展该有的形状,对照 objectstack-ai#3479(16 个死目标)
与 objectstack-ai#3490(18 个)那种「门禁与欠账同时到货」。
`docs/**` 是三者中从未被量过的一面:Lychee 的扫描范围虽然列了它,但那个
工作流只有 schedule + workflow_dispatch,`pull_request`/`push` 按 objectstack-ai#3213
ruling B 被刻意注释掉,拦不住任何 PR;它的 49 条链接里有 47 条此前从未被
任何能让构建失败的东西解析过。
不新增规则类、不新增 reason、不新增 hint。
头注释如实写下已知边界:`stripCode()` 在扫描前抹掉围栏与行内代码,所以
**围栏内的链接对本门禁不可见,死活都不可见**。这不是假想——CONTRIBUTING.md
的 25 条链接里 10 条在围栏内,门禁真正判定的只有 1 条。那 10 条正是 objectstack-ai#3570
的实例类(演示 docs 链接写法的围栏,其"正确示例"路由自己是死的);修那段
文字是 objectstack-ai#3570 的事,指出没有门禁够得着它是本注释的事。
测试(+8):
- 两个既有 pin 测试用 toEqual 硬钉 SCAN_ROOTS,新行会让它们**响亮地红**
——不是自动覆盖。逐根的 count 断言那一半才是不会自我扩展的:补齐三行
各自的下限,否则某行打错字导致整棵树扫空时上面的测试仍会绿。
- 新 describe 覆盖三面的 reject/accept,含 docs/ 递归遍历、离开 docs/ 的
链接照收(无 collection 可逃)、无扩展名拼写与绝对 `/...` 照拒。
- 围栏边界作为**决定**钉住,而非留成日后被误读为覆盖的静默缺口。该测试
与 docs/ vs content/docs 对照测试都带一条 control 链接:否则删掉扫描行
它们会因「什么都没扫」而空绿——本文件存在的意义就是防这个。
ci-cd-pipeline.md 三处被证伪,做最小事实订正:扫描面清单、disk 规则的
适用文件、双检查器对照表那一行;并把「若改用 docs 规则会拒掉 61 条」按新
扫描面重算为 111。另加一段说明围栏边界,以免读者把该表读成全覆盖。
Fixesobjectstack-ai#3572
Claude-Session: https://claude.ai/code/session_01GTRjn8xBqp75dk7kFupVRt
Co-authored-by: Claude <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

CONTRIBUTING.md / ROADMAP.md 共 3 条死链:处在 check-doc-links 与 lychee 的双重扫描盲区

2 participants

@yinlianghui@claude