Skip to content

[finding] Check Links 工作流的 push / pull_request 触发器被注释掉 —— lychee 断链门只剩 workflow_dispatch,文档断链在 CI 里无人把守 #6028

Description

@hotlong

在做 #5878(client-sdk.mdx 的退役矩阵链接)时顺带观察到,非本单范围,按 Prime Directive #10 独立记录。

观察

.github/workflows/check-links.yml 今天的触发器段落:

on:
  workflow_dispatch:
  # push:
  #   branches:
  #     - main
  # pull_request:
  #   branches:
  #     - main

pushpull_request 两个触发器都被注释掉了,只剩 workflow_dispatch。⇒ 这道 lychee 断链门在 PR 上不跑、在 main 推送上也不跑,只有人工手点才会执行。

为什么不容易被发现

门本身看起来是活的,配套件也还在维护:

  • lychee.toml 存在且有内容(1865 bytes,含 path remapping 与 settings);
  • job 里写着 fail: true(发现断链就红);
  • 扫描面覆盖 content/**/*.mdcontent/**/*.mdxREADME.md

也就是说,除了那两行注释之外,整条链路都是「已配置好」的样子。翻 workflow 列表的人会数出一道断链门,PR 作者也会默认文档链接有人守。

影响面(据实,不夸大)

⚠️ 这道门不会捕获 #5878 那一类缺陷:#5878 的链接指向的文件仍然存在(墓碑文件是有意保留的),HTTP 上不是断链,坏的是描述与被链接内容不符。lychee 检的是可达性,不是描述准确性。

它守的是另一类:content/** 里指向已删除文件 / 已改名路径 / 失效外链的真断链。今天这一类在 CI 里没有任何守卫 —— 例如 #5824/PR #5874 那种「删掉两份仓内文档 + 逐条处置引用面」的改动,引用面若漏一条,不会有门拦。

未判定的部分

没有查到当初为什么注释掉(本地是浅克隆,git log -S"# pull_request:" 只回溯到 d97f2a2,拿不到真实的引入提交)。合理猜测是外链抖动导致假红,但这是猜测,未经证实 —— 如果确实如此,那么「收窄到只检仓内相对链接、外链降级为告警」可能比「整体注释掉」更合适。请分诊时以实际历史为准。

处置建议(不预设结论)

三个方向,成本递增:

  1. 恢复 pull_request 触发,并在 lychee.toml 里把外链列入 --exclude / 只作告警 —— 保住仓内断链这条最有价值的守卫,同时不引入外网抖动的假红;
  2. 保持现状,但在 workflow 顶部写明为什么停用、以及断链改由什么替代 —— 至少让下一个读到它的人不误以为有门;
  3. 确认这道门不再需要 → 按「declared = enforced」删掉整个 workflow 与 lychee.toml,不留看起来还在的空壳。

倾向 1 或 2:一道看起来在守而实际不守的门,比没有门更容易误导人(本仓对这类「declared-but-unenforced」的态度是一贯的)。

⚠️ 归类为 observation-class:今天没有已知用户因此踩坑,只是一道守卫处于休眠;不加 pm:queue,留待分诊定级。


Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions