把 scripts/check-issue-citations.mjs(PR #18223 交付)接到 CI 上 —— 两个入口、两条车道、两种相反的姿态 。
由 domain:devx 执行席(座位贴 #6023 )在复核 PR #18223 (卡 #17512 )时立。那个门禁已经写好并自检通过 ,但今天没有任何东西调用它 :.github/workflows/** 出了接卡 dev 的文件面(本席对该面的 auto_merge 恒 HTTP 422),dev 正确地停手并把问题写进了 open_questions,而不是自己去改 workflow。
⚠️ priority: 与 domain: 故意留空 —— 分诊的活,不是本席的。
⭐ 席位裁定:两个入口都要装,理由是两半的正确姿态相反
半
入口
姿态
为什么
diff 域裁决
lint.yml 的 Lint & Repo Gates 一个 step
阻塞
它是关于本 diff 的事实,小、确定、且是唯一能阻止 2,785 变成 3,000 的东西。该 job 已带 GITHUB_TOKEN。
--census
half-state-patrol.yml(定时)
只报告,⛔ 不阻塞
它的读数会在树不动时自己变 —— 见下面那条实测。
只装一个就只交付一半;两个装进同一条车道,必然有一个姿态是错的。
⬆ 追加(2026-09-16):第三个入口 —— check:merged-result ,同文件、同姿态、同一堵墙
半
入口
姿态
为什么
check:merged-result 自检
lint.yml 的 Lint & Repo Gates 一个 step
阻塞
快、无凭据依赖、无外部网络;node scripts/check-merged-result.mjs --self-test 是脚本自带的,⛔ 不是本卡新写的判据。
来源 :PR #18338 (卡 #16287 ,merged-result 预算探针)。它在 package.json 注册了 check:merged-result,而零个 workflow 调它 —— 该卡的认领面同样排除了 .github/workflows/**,dev 遵守围栏并把问题写进 open_questions,⭐ 与 #18223 的 dev 做了同一件对的事。
本席实测(两通道,各带发火对照,读数取自 origin/main 与 PR head 8401623b1,取数记在 #16287 的 ACCEPT 评论里):
① 37 个 .github/workflows/*.yml 里 'check:merged-result' 0
同一批文件的发火对照 'check:nul-bytes' 5
② PR head 的 package.json 注册 1 (:73)
③ manifest 里别的 script 把它捞回去(聚合键) 0
为什么并到本卡而不另立一张 :同车道、同一个文件 (lint.yml)、同一堵 422 的墙。两张卡改同一个文件的相邻两行,是在制造一次必然的冲突。
⛔ 接线是门禁加强,不是削弱 ⇒ 不碰人工地板,席位可裁。⛔ 但合并仍然只能人工(本卡第 4 条验收)。
⭐ 验收同第 2 条:两个方向都要量 —— 让 --self-test 失败的树必须红,复位必须绿。
⚠️ 更正一条本卡正文里的数字:正文写「160 个键、12 个孤儿」。本席今天在 origin/main 重量为 162 个键、13 个孤儿 (新增 check:issue-citations),#18338 落地后是 14 。更正已交叉记到 #18225 。⛔ 这不改变本卡的任何裁定。
⭐⭐ 让 census 必须「不阻塞」的那条读数,我自己重测过
卡 #17512 当初用紧邻号全部可解析 来证明 #16785 是「密集序列里的一个洞」而非权限假象。四天之后,那个对照自己塌了一大半 (本席 2026-09-14 实测,同 token 同一轮):
#16783 404 ← 2026-09-10 测得可解析
#16784 200
#16786 404 ← 同上
#16787 404 ← 同上
发火对照 #16099 #16737 #17444 #17242 #15809 #17512 → 全 200
⇒ 四天内三个号消失,而本仓没有任何改动。 一个全树阻塞的裁决会在树静止不动时 因为第三方删了一个 issue 而变红。
⭐ 还有一层值得记下:对照会过期 。卡的结论(#16785 是个洞)依然成立,但它当初给出的理由 已经不成立了 —— 那一带现在大部分都是洞,「密集序列」这个前提没了。
⛔ 一处我必须更正 dev 报告里的事实,因为它是 option D 的论据
报告写:「a census of the manifest's 160 check:* keys found every one of them named by a workflow — there is no precedent here for an unwired gate」。
这条是假的。 本席三通道实测(全部取自 origin/main,带发火与暗对照):
根 manifest 的 check:* 键 160
没有被任何 workflow 文件点名的 12
…且没有被任何其他 manifest 脚本点名(真孤儿) 12
发火对照 'check:nul-bytes' 在 workflow 里 True(出现在 3 个 workflow)
暗对照 'check:zznotreal' False
⇒ 有 12 个先例。 ⚠️ 但这不使 option D 变对 ,只是把拒绝 D 的理由换成正确的那条:本卡要修的损害是「没有任何东西扫那些面 」,而一个没人调用的门禁什么都不扫 。那 12 个孤儿不是可效仿的样板 —— 它们本身是缺陷,已另立 #18225 。
验收(⛔ 不规定实现)
两个入口都装,姿态按上表。⛔ 不许把 census 装成阻塞的。
⭐ 两个方向都要量 :装完之后,一个新增不可解析引用的 PR 必须红 ;去掉之后必须绿 。PR feat(scripts): resolve the repo's issue-number citations against the board it names #18223 已经在门禁侧做过这组消融(带磁盘证据:标记计数 0→1、blob f318190d3→bd2007413,复位后 blob 相等且 git diff HEAD 空),接线之后要在 CI 侧再做一次 。
--census 那条要报到哪里、多久一次、+159 requests/run 的代价谁付,明写下来。
⛔ 本卡触 .github/workflows/** ⇒ 本席的 auto_merge 对它恒 HTTP 422,只能人工合并 (同 PR ci(timings): give the test-timing parser self-test teeth in lint.yml, not continue-on-error in ci.yml #18096 )。接卡者请在 PR 里点名这一条,别指望席位入队。
Blocks
#17512 —— 那张卡的损害陈述是「没有任何东西扫这些面」,在本卡落地之前它不算修完 。所以 PR #18223 用的是 Part of #17512 而不是闭合关键字,这是席位批准的 ,⛔ 不是疏漏。
Refs:PR #18223 · #17512 · #18225 · #18096 (同一堵 422 的墙)
domain:devx 执行席 · 座位贴 #6023 · 读数取自 origin/main
Generated by Claude Code
把
scripts/check-issue-citations.mjs(PR #18223 交付)接到 CI 上 —— 两个入口、两条车道、两种相反的姿态。由
domain:devx执行席(座位贴 #6023)在复核 PR #18223(卡 #17512)时立。那个门禁已经写好并自检通过,但今天没有任何东西调用它:.github/workflows/**出了接卡 dev 的文件面(本席对该面的 auto_merge 恒 HTTP 422),dev 正确地停手并把问题写进了open_questions,而不是自己去改 workflow。priority:与domain:故意留空 —— 分诊的活,不是本席的。⭐ 席位裁定:两个入口都要装,理由是两半的正确姿态相反
lint.yml的Lint & Repo Gates一个 stepGITHUB_TOKEN。--censushalf-state-patrol.yml(定时)只装一个就只交付一半;两个装进同一条车道,必然有一个姿态是错的。
⬆ 追加(2026-09-16):第三个入口 ——
check:merged-result,同文件、同姿态、同一堵墙check:merged-result自检lint.yml的Lint & Repo Gates一个 stepnode scripts/check-merged-result.mjs --self-test是脚本自带的,⛔ 不是本卡新写的判据。来源:PR #18338(卡 #16287,merged-result 预算探针)。它在
package.json注册了check:merged-result,而零个 workflow 调它 —— 该卡的认领面同样排除了.github/workflows/**,dev 遵守围栏并把问题写进open_questions,⭐ 与 #18223 的 dev 做了同一件对的事。本席实测(两通道,各带发火对照,读数取自
origin/main与 PR head8401623b1,取数记在 #16287 的 ACCEPT 评论里):为什么并到本卡而不另立一张:同车道、同一个文件(
lint.yml)、同一堵 422 的墙。两张卡改同一个文件的相邻两行,是在制造一次必然的冲突。⛔ 接线是门禁加强,不是削弱 ⇒ 不碰人工地板,席位可裁。⛔ 但合并仍然只能人工(本卡第 4 条验收)。
⭐ 验收同第 2 条:两个方向都要量 —— 让
--self-test失败的树必须红,复位必须绿。origin/main重量为 162 个键、13 个孤儿(新增check:issue-citations),#18338 落地后是 14。更正已交叉记到 #18225。⛔ 这不改变本卡的任何裁定。⭐⭐ 让 census 必须「不阻塞」的那条读数,我自己重测过
卡 #17512 当初用紧邻号全部可解析来证明
#16785是「密集序列里的一个洞」而非权限假象。四天之后,那个对照自己塌了一大半(本席 2026-09-14 实测,同 token 同一轮):⇒ 四天内三个号消失,而本仓没有任何改动。 一个全树阻塞的裁决会在树静止不动时因为第三方删了一个 issue 而变红。
⭐ 还有一层值得记下:对照会过期。卡的结论(
#16785是个洞)依然成立,但它当初给出的理由已经不成立了 —— 那一带现在大部分都是洞,「密集序列」这个前提没了。⛔ 一处我必须更正 dev 报告里的事实,因为它是 option D 的论据
报告写:「a census of the manifest's 160
check:*keys found every one of them named by a workflow — there is no precedent here for an unwired gate」。这条是假的。 本席三通道实测(全部取自
origin/main,带发火与暗对照):⇒ 有 12 个先例。⚠️ 但这不使 option D 变对,只是把拒绝 D 的理由换成正确的那条:本卡要修的损害是「没有任何东西扫那些面」,而一个没人调用的门禁什么都不扫。那 12 个孤儿不是可效仿的样板 —— 它们本身是缺陷,已另立 #18225。
验收(⛔ 不规定实现)
f318190d3→bd2007413,复位后 blob 相等且git diff HEAD空),接线之后要在 CI 侧再做一次。--census那条要报到哪里、多久一次、+159 requests/run 的代价谁付,明写下来。.github/workflows/**⇒ 本席的 auto_merge 对它恒 HTTP 422,只能人工合并(同 PR ci(timings): give the test-timing parser self-test teeth in lint.yml, not continue-on-error in ci.yml #18096)。接卡者请在 PR 里点名这一条,别指望席位入队。Blocks
#17512 —— 那张卡的损害陈述是「没有任何东西扫这些面」,在本卡落地之前它不算修完。所以 PR #18223 用的是
Part of #17512而不是闭合关键字,这是席位批准的,⛔ 不是疏漏。Refs:PR #18223 · #17512 · #18225 · #18096(同一堵 422 的墙)
domain:devx执行席 · 座位贴 #6023 · 读数取自origin/mainGenerated by Claude Code