维护者速读
事情:我们在自己的源代码里用 GitHub 的工单/PR 编号当作「这条规则是哪来的」的凭据。现在实测出来:这些编号会消失 —— 同一周已合并的 PR 编号里,一成多(11.7%–15.1%,两把独立仪器同向)今天在 GitHub 上已经打不开了,而且是被删除、不是被转移,所以「改指到新地址」这条路没有靶子。最刺眼的一条:有个 PR 的标题就叫「修复陈旧引用」,它自己的编号今天也是 404。
为什么现在要你拍板:这不是清理杂务。AGENTS.md 现在明文规定一条规则的出处住在落地它的那个 PR 里 —— 也就是说,换形式是改约定,席位不能自己选。而代价已经落在两个真实的地方:已发运的 tarball 里有两行把客户送去 404;还有一条打印给作者看的拒绝消息,在他正要决定「这次失败算不算测不了」的那一刻,递给他一个不存在的编号 —— 而那条规则存在的全部理由就是不让这种事发生。这个形状已经造成过一次实测事故。
四个选项,一句话各自的代价:
- A 什么都不改 —— 零风险,但上面那两处继续烂下去。
- B 每个死号改指落地它的 PR —— ⚠️ 实测盖不住:15 行里有 2 行的 PR 对象本身就没了;而且每个新号都带着同样一成多的概率一年内再死一次。
- C 改锚到 commit sha(我们自己的仓里,永不 404,可附 PR 号作便利链接)—— 15 行重写,但换来的是一个我们掌控的对象;代价是 sha 不可点、不带故事,散文得自己说清那个 commit 裁了什么。
- D 去掉编号,把教训直接写进正文 —— ⭐ 这对运行时字符串其实已经裁过了:
check-doc-authoring 对其余每个包都在强制它,引的就是你自己的原话「处理 issue 时犯的错应该总结成经验,保留 issue id没有意义」。此后没有东西会再腐烂。
席位意见:施工席推荐 运行时字符串取 D、承重的内部锚取 C,分期做,A 作回退;四棱里①③④ 同向指 C/D,② 只影响先做哪一段、不改字母。⚠️ 两个没测的要说在前面:全树 9174 个编号只探了约 1250 个,所以清理的真实规模未知;而且看不出那 133 个对象为什么没了 —— 如果这是持续的仓维护,下季度会更糟,如果是一次性清扫,可能再不复发。这两种世界支持不同的字母。
⚠️ 还有一件相关但不要混在一起的:选项 D 今天够不到 packages/spec/scripts/**(门禁有个声明过的盲区),那是兄弟卡 #19124 的事 —— 本卡定形式,那张定这形式能不能被强制。
你要做的:回一个字母 —— A / B / C / D(若同意分期,回「C+D」即可)。
Governing text: AGENTS.md(一条规则的出处住在落地它的那个 PR 里)· scripts/check-doc-authoring.mjs 里 #13179 的裁决(运行时字符串去编号,含维护者原话)。
Filed by the domain:spec 执行席 2(座位帖 #18549,会话 session_01JbZnqu8bt6YqfJsr9vaFb3)⏱️ 2026-09-18T21:22Z,从 #17698 那一轮的 open_questions 接出。那一轮零编辑、零 PR:卡面自己的栅栏写着「在『删除还是转移』有答案前 ⛔ 不要动任何引用」,而答案改变了修法的形状,⛔ 不是解锁卡面假设的那一种。⛔ 本席只陈述,不打分。
一句话
这个仓在自己的源码里用追踪器编号当出处凭据,而那些编号会消失:同一周已合并 PR 的编号里,有一成多今天在 GitHub 上不存在。⇒ 路标指向空地,而我们正在继续立同样的路标。
测量 —— 两把独立仪器
(1) 那三个号确实死了,而且是删除、⛔ 不是转移
⏱️ 2026-09-18T21:22Z,origin/main = b7eaf6a617,本席第一手复核:
#16714 -> 404 #16715 -> 404 #16697 -> 404
LIT controls(同一分钟、同一令牌): #16712 -> 200 #16862 -> 200 #17698 -> 200
任何通道都没有 301。GitHub 对转移的 issue 答 301 Moved Permanently ⇒ 判据落在 DELETED,所以「重新指向」那条修法没有靶子。
(2) ⭐ 决定性仪器:问 GitHub「这个 commit 归哪个 PR 对象所有」
7936b29ce5 (squash 后缀写着 #16697) -> [] ← PR 对象没了
b37f0b1767 (squash 后缀写着 #16847) -> [16847] ← LIT,仪器发火
1124c45641 (squash 后缀写着 #19107) -> [19107] ← LIT,仪器发火
⇒ 不是「本会话的路由够不着」,是对象本身不在了。而那些 commit 今天就在 origin/main 的历史里、后缀就写着那个号 ⇒ 被引用者确实存在过、确实产出过已发运的代码。
(3) 这是仓级状况,⛔ 不是两张卡的意外 —— 两次独立普查
| 仪器 |
总体 |
读数 |
| #17698 施工席:全量普查 |
2026-09-05..09-12 的 882 个 squash 后缀(全是已合并的 PR 号) |
133 dead / 882 = 15.1% |
| 本席:独立提取 + 抽样 |
本席用自己的提取式得到同样的 882;均匀抽 120 个 |
14 dead / 120 = 11.7% |
| 近期对照(两边都做) |
最近的 squash 后缀 |
施工席 300/300 live;本席 60/60 live = 0.0% dead |
⚠️ 两个数不同,而两个都别当「那个数」:15.1% 是全量,11.7% 是 120 个的抽样,抽样在这个量级上本就有可观区间。⭐ 站得住的是两把独立仪器同向,以及近期对照两边都读到 0 ⇒ 这是分代的真实衰减,⛔ 不是路由或令牌的假象。
⚠️ ⛔ 未测:全树有 9174 个不同的追踪器形状 token,两轮合计只探了约 1250 个。仓级死引用的真实规模没测过,清理成本因此未知。
⭐ 样本里最刺眼的一条:#16575 的标题就是「repoint stale last-admin-ban-guard.ts citations」 —— 一次「修复陈旧引用」的 PR,它自己的编号现在也是 404。
问题
在这个仓的源码里,承重的出处凭据该用什么形式?
⚠️ AGENTS.md 现在写着一条规则的出处住在落地它的那个 PR 里 ⇒ 改这个形式是约定裁决,⛔ 不是执行席或施工席能选的。
| 选项 |
做什么 |
可感知的代价(有实测的注明) |
| A |
15 行一字不动,只立本卡 |
已发运 tarball 里两行继续把读者送去 404;那条作者面的拒绝消息继续在作者决定是否报 NOT MEASURED 的那一刻递给他一个死号。零改动零风险。 |
| B |
每个死号改指落地它的 PR |
⚠️ 实测:B 盖不住 15 行里的 2 行 —— #16697 自己的 PR 对象就是没了的那个,没有活号可指;每个新号又带着实测的分代 11.7–15.1% 再死一次的概率。 |
| C |
改锚到不可变对象 —— 本仓历史里的 commit sha(#16714→4cfc93b802、#16715→b37f0b1767、#16697→7936b29ce5),可留 PR 号作便利链接 |
15 行重写;sha 只要仓还在就不会 404;但不可点、不带叙事 ⇒ 散文得自己说清那个 commit 裁了什么。需约定裁决。 |
| D |
去掉编号,把教训写进正文 |
⭐ 对运行时字符串这已经是裁过的:scripts/check-doc-authoring.mjs 对其余每个包都强制这一条,并逐字引着维护者的话:「处理 issue 时犯的错应该总结成经验,保留 issue id没有意义」。15 行重写;没有东西再会腐烂。 |
⚠️ D 今天够不到 manifest-prescription.ts:78 那条运行时拒绝消息,因为该文件落在一个声明过的扫描盲区里 —— 见兄弟卡。
os-decision-facets
- ① 项目长远合理性 — 散文里每一个追踪器编号都是对一个我们不掌控的对象的永久依赖,而我们现在自己测到了自己在销毁它。D 取消这个依赖,C 换成我们自己拥有的对象,B 是把它续期 15 次。两年后的终态:出处活得比追踪器久 —— 成熟平台引 commit 或 ADR,⛔ 不是工单号。
- ② 实际业务拉动 — 今天真正的拉力是:已发运 tarball 里的两行,加一条作者面的拒绝消息。其余由内部席位读,他们能退回 git。⇒ 这只决定分期顺序(先发运行与拒绝串),⛔ 不改字母。
- ③ 防 AI 犯错 — 当下失效是静默的:读
app.zod.ts docblock 的 agent 分不出「被裁决刻意保留的容忍」与「没人知道这为什么在这」。⚠️ 这个形状已造成过一次实测事故:一个 dev 读了陈旧处方,把一个本地可跑的门禁报成 EXTERNAL_INPUT_REQUIRED / NOT MEASURED,而这样的申报进了交付物。C 与 D 都永不这样失效;B 会在一年内再静默失效一次。
- ④ 创业阶段不扩散 — D 是取消一项义务;C 把它留在仓内;B 是对着第三方「声明并长期维护」。
施工席的推荐(⛔ 不是本席的,转述其要点):运行时字符串取 D,承重的内部锚取 C,分期执行,A 作为回退 —— 也正是这一轮实际留下的树的状态。自检行:「只看①选 D/C;②③④ 是否翻转:否 —— ② 只重排分期,不动字母」。
置信缺口(施工席自陈,本席原样保留):(i) 只探了约 1250 个而非全树 9174 个 ⇒ 清理的真实规模未测;(ii) 看不出那 133 个对象为什么没了 ⇒ 说不准这是不是稳态 —— 若是持续的仓维护,下季度可能更糟;若是一次性清扫,可能永不复发。这两个世界支持不同的字母。
Prior rulings read: scripts/check-doc-authoring.mjs 里 #13179 的裁决(运行时字符串去编号,含维护者原话)—— 它对其余包已成文;本卡问的是它是否该扩到承重的内部锚与 packages/spec/scripts/**。
兄弟卡
同轮另立 #19124:check-doc-authoring 的两条腿都排除 packages/spec/scripts/**,所以 D 的补救今天够不到 manifest-prescription.ts:78。⚠️ 那张与本卡是同一场对话的两半:本卡定形式,那张决定形式能不能被强制。
查重词
merged PR number 404 · citation decay · commit pulls association empty · provenance durability · era-scoped tracker id rot
⛔ 本席按章程不查重(「立卡者不查重、只附 3–5 查重词」);以上是查重词,不是查重结论。
Generated by Claude Code
维护者速读
事情:我们在自己的源代码里用 GitHub 的工单/PR 编号当作「这条规则是哪来的」的凭据。现在实测出来:这些编号会消失 —— 同一周已合并的 PR 编号里,一成多(11.7%–15.1%,两把独立仪器同向)今天在 GitHub 上已经打不开了,而且是被删除、不是被转移,所以「改指到新地址」这条路没有靶子。最刺眼的一条:有个 PR 的标题就叫「修复陈旧引用」,它自己的编号今天也是 404。
为什么现在要你拍板:这不是清理杂务。
AGENTS.md现在明文规定一条规则的出处住在落地它的那个 PR 里 —— 也就是说,换形式是改约定,席位不能自己选。而代价已经落在两个真实的地方:已发运的 tarball 里有两行把客户送去 404;还有一条打印给作者看的拒绝消息,在他正要决定「这次失败算不算测不了」的那一刻,递给他一个不存在的编号 —— 而那条规则存在的全部理由就是不让这种事发生。这个形状已经造成过一次实测事故。四个选项,一句话各自的代价:
check-doc-authoring对其余每个包都在强制它,引的就是你自己的原话「处理 issue 时犯的错应该总结成经验,保留 issue id没有意义」。此后没有东西会再腐烂。席位意见:施工席推荐 运行时字符串取 D、承重的内部锚取 C,分期做,A 作回退;四棱里①③④ 同向指 C/D,② 只影响先做哪一段、不改字母。⚠️ 两个没测的要说在前面:全树 9174 个编号只探了约 1250 个,所以清理的真实规模未知;而且看不出那 133 个对象为什么没了 —— 如果这是持续的仓维护,下季度会更糟,如果是一次性清扫,可能再不复发。这两种世界支持不同的字母。
packages/spec/scripts/**(门禁有个声明过的盲区),那是兄弟卡 #19124 的事 —— 本卡定形式,那张定这形式能不能被强制。你要做的:回一个字母 —— A / B / C / D(若同意分期,回「C+D」即可)。
Governing text:
AGENTS.md(一条规则的出处住在落地它的那个 PR 里)·scripts/check-doc-authoring.mjs里 #13179 的裁决(运行时字符串去编号,含维护者原话)。Filed by the
domain:spec执行席 2(座位帖 #18549,会话session_01JbZnqu8bt6YqfJsr9vaFb3)⏱️ 2026-09-18T21:22Z,从 #17698 那一轮的open_questions接出。那一轮零编辑、零 PR:卡面自己的栅栏写着「在『删除还是转移』有答案前 ⛔ 不要动任何引用」,而答案改变了修法的形状,⛔ 不是解锁卡面假设的那一种。⛔ 本席只陈述,不打分。一句话
这个仓在自己的源码里用追踪器编号当出处凭据,而那些编号会消失:同一周已合并 PR 的编号里,有一成多今天在 GitHub 上不存在。⇒ 路标指向空地,而我们正在继续立同样的路标。
测量 —— 两把独立仪器
(1) 那三个号确实死了,而且是删除、⛔ 不是转移
⏱️ 2026-09-18T21:22Z,
origin/main=b7eaf6a617,本席第一手复核:任何通道都没有 301。GitHub 对转移的 issue 答 301 Moved Permanently ⇒ 判据落在 DELETED,所以「重新指向」那条修法没有靶子。
(2) ⭐ 决定性仪器:问 GitHub「这个 commit 归哪个 PR 对象所有」
⇒ 不是「本会话的路由够不着」,是对象本身不在了。而那些 commit 今天就在
origin/main的历史里、后缀就写着那个号 ⇒ 被引用者确实存在过、确实产出过已发运的代码。(3) 这是仓级状况,⛔ 不是两张卡的意外 —— 两次独立普查
⭐ 样本里最刺眼的一条:#16575 的标题就是「repoint stale last-admin-ban-guard.ts citations」 —— 一次「修复陈旧引用」的 PR,它自己的编号现在也是 404。
问题
在这个仓的源码里,承重的出处凭据该用什么形式?
4cfc93b802、#16715→b37f0b1767、#16697→7936b29ce5),可留 PR 号作便利链接scripts/check-doc-authoring.mjs对其余每个包都强制这一条,并逐字引着维护者的话:「处理 issue 时犯的错应该总结成经验,保留 issue id没有意义」。15 行重写;没有东西再会腐烂。manifest-prescription.ts:78那条运行时拒绝消息,因为该文件落在一个声明过的扫描盲区里 —— 见兄弟卡。os-decision-facets
app.zod.tsdocblock 的 agent 分不出「被裁决刻意保留的容忍」与「没人知道这为什么在这」。施工席的推荐(⛔ 不是本席的,转述其要点):运行时字符串取 D,承重的内部锚取 C,分期执行,A 作为回退 —— 也正是这一轮实际留下的树的状态。自检行:「只看①选 D/C;②③④ 是否翻转:否 —— ② 只重排分期,不动字母」。
置信缺口(施工席自陈,本席原样保留):(i) 只探了约 1250 个而非全树 9174 个 ⇒ 清理的真实规模未测;(ii) 看不出那 133 个对象为什么没了 ⇒ 说不准这是不是稳态 —— 若是持续的仓维护,下季度可能更糟;若是一次性清扫,可能永不复发。这两个世界支持不同的字母。
Prior rulings read:
scripts/check-doc-authoring.mjs里 #13179 的裁决(运行时字符串去编号,含维护者原话)—— 它对其余包已成文;本卡问的是它是否该扩到承重的内部锚与packages/spec/scripts/**。兄弟卡
同轮另立 #19124:⚠️ 那张与本卡是同一场对话的两半:本卡定形式,那张决定形式能不能被强制。
check-doc-authoring的两条腿都排除packages/spec/scripts/**,所以 D 的补救今天够不到manifest-prescription.ts:78。查重词
merged PR number 404·citation decay·commit pulls association empty·provenance durability·era-scoped tracker id rot⛔ 本席按章程不查重(「立卡者不查重、只附 3–5 查重词」);以上是查重词,不是查重结论。
Generated by Claude Code