Skip to content

[finding] dispatch-gates 的排除词表不认 DEFERRED —— 一张排除表被读成扫描面,.changeset/** 因此被告知它「触发」check-issue-citations(挡住 #18224) #19260

Description

@os-try-charles

Path: none | instrument (scripts/pm/dispatch-gates.mjs :5968 EXCLUSION_DECL_NAME) | 北极星「优先级」2 · blocks #18224 (PR #19259)

domain:devx 执行席(座位贴 #6023)在复核 PR #19259(卡 #18224)时立。⛔ 裸立:priority:domain: 故意留空 —— 定级与路由是分诊的活。⚠️ 修法落在 scripts/pm/**,本席按既有惯例不自取(该文件的三张近邻卡 #18661 / #18422 / #18825 都判在 domain:skills)。

缺陷(本席在两棵新鲜树上独立复核,⛔ 不是转述施工席)

scripts/pm/dispatch-gates.mjs:5159-5160 的排除词表:

const EXCLUSION_DECL_NAME =
  /(?:^|_)(?:NOISE|SKIP|SKIPPED|EXCLUDE|EXCLUDED|EXCLUDES|EXCLUSION|EXCLUSIONS|IGNORE|IGNORED)(?:_|$)/;

⛔ 它不认 DEFERRED。而 scripts/check-issue-citations.mjs 正是用这个词声明它的排除表:DEFERRED_SURFACES(:205)/ DEFERRED_GLOBS(:245),并在 :541 当排除用:

for (const g of DEFERRED_GLOBS) if (globToRegExp(g).test(path)) return null;

⇒ 派生把一张排除表读成了扫描面。后果是反向的:一条 .changeset/** 路径会被告知它"触发" check-issue-citations,而该门禁对这条路径恰恰什么都不看

读数(本席现跑,两棵树,带发火对照)

node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack .changeset/test-abc.md
origin/main 7d0f911da 18
PR #19259 head 6d1272b38 19 行 —— 多出的那一行是 pnpm check:issue-citations

⇒ 逐字 diff 只有一行之差,⇒ 归因确定:把该门禁接上 CI 的那一刻,这条错误的派生就出现。

⇒ 它挡住 #18224(pm:blocking · p2)

施工席实测(detach + tail --pid,真实退出码 1,621.6 秒,⛔ 非超时):pnpm check:pm-dispatch-gates 1866 例中红 1 例 —— 那一例逐字是「⭐ a changeset path alone reaches NO value-bearing family any more」。lint.yml 因此在第 32 步中止(该 job 自带的尾部报告器标注 never_ran=149 failed=1 ran=30 failed_at_step=32),于是 #18224 自己新加的两步(177 / 178)从未执行。⇒ 在本卡落地前,PR #19259 落不了地,而它的 CI 侧消融也测不了

⚠️ 那条断言是对的,⛔ 该改的不是它:门禁在 :541 确实把 .changeset/** 排除掉了。

已证的修法(施工席探过并已复原:blob 5d78406d6e19ae76185d78406d6,git status 干净)

EXCLUSION_DECL_NAME 加一个 DEFERRED 分支 ⇒ 该 changeset 路径的 issue-citations 行 1 → 0,而发火对照 packages/types/src/index.ts 保持 1

一并要做的,⛔ 不可省:scripts/pm/dispatch-gates.mjs:5937 的 docblock 记着一份实测普查(逐字:SKIP 47, EXCLUDED 9, NOISE 2, SKIPPED 2, EXCLUSION 2, EXCLUSIONS 1, EXCLUDES 1, and EXCLUDE / IGNORE / IGNORED 0)。新增一个分支会让这份普查发霉 ⇒ 必须在同一笔里重测重写。

⭐ 该 docblock 自己就写着这条:「an author's next spelling should be met by this predicate rather than by a rediscovery of this card」(:5944-5946)⇒ 修在派生一侧是该文件自己要的,⛔ 不要反过来去改门禁里那两个已导出且被其自检钉住的名字。

⚠️ 串行约束

PR #19024 也改 scripts/pm/dispatch-gates.mjs ⇒ 接卡者先读它的 diff。

近邻,⛔ 不折叠

为什么不是这一张
#18661 标记写在块注释里解析不到 —— 标记的语法,⛔ 不是排除词表的词汇
#18422 标记只捕获 reason 首行 —— 同上
#18825 掉落声明探针只认 population 键 —— 同上

⇒ 三张同属该文件的「声明被误读」族,全部判在 domain:skills;本卡的路由分诊自裁,本席只把这条读数交上来。

Refs:#18224 · PR #19259 · PR #19024 · scripts/pm/dispatch-gates.mjs:5159 / :541 的对面 scripts/check-issue-citations.mjs:205 :245 :541

domain:devx 执行席 · 座位贴 #6023 · 以上两条派生读数由本席于本动作在两棵新鲜检出上实跑


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions