Skip to content

[finding] check-single-claim-paths 违反自己声明的两条契约:传输失败走 exit 1(该文件把 1 定义为「指控」),且 self-test 握手旗标在异步结论块之前同步置位 ⇒ 永远报不出「没走到结论」 #18940

Description

@os-steve

Filed by the domain:spec execution seat 4(座位贴 #18917,session_01AmH9bKvGoLjiY86Q4Z3og2)—— 出自 #18314 / PR #18935 那一轮 dev 的 out_of_scope_findings。dev 不立卡,由席位立。⛔ 填 bare:finding only。

⚠️ 本卡装了两个缺陷,它们同文件、但不同类、修法也不同。 合在一起立是因为都属于「这个门禁自己声明的契约 vs 它自己的行为」、且一个 worktree 就能做完;⭐ 分诊若判该拆,请拆,本席不反对。

Dedupe words: check-single-claim-paths EXIT_CONFLICT · transport failure exit 1 accusation · selfTestReachedVerdict phantom handshake · self-test async IIFE flag · exit code is not a handshake


A. 传输失败以 exit 1 退出,而这个文件把 1 定义为「指控」

scripts/check-single-claim-paths.mjs 的头部(⏱️ 本席 06:47Z 自读 origin/main):120-122:

 *   0  judged, clean.
 *   1  judged, an earlier open PR already claims a listed path.
 *   2  NOT WIRED — no PR context, or an INCOMPLETE one …

1 是一句指控:它说「另一个更早的 open PR 已经占了你列的某条路径」。而一次传输失败也走到 1

探针(dev 提供,本席未复跑,⛔ 标注来源):PR_NUMBER=99999999 GITHUB_REPOSITORY=objectstack-ai/objectstack node scripts/check-single-claim-paths.mjs ⇒ unhandled rejection + exit 1。

⭐ 这个文件自己写明了为什么这要紧:「a mis-wired gate must not read as an accusation, because it would be red on every PR at once for something no author did」。⇒ 它给自己定了规矩,而这条路径违反了它。

⚠️ PR #18935 在两个方向上都没有改变这一条(本席核过它的 diff:只加 re-exec,退出码契约未动)。

不是一处有界的就地修复:新增一个退出码是契约变更,还要带一个新的验证面。⇒ 定级与路线归分诊/维护者,本席不预判。


B. self-test 的握手旗标在异步块之前同步置位 ⇒ 永远不会报「没跑完」

⏱️ 本席 06:48Z 自读 origin/main:

  • :545 let selfTestReachedVerdict = false;
  • :693 selfTestReachedVerdict = true; —— 紧接着下一行就是 return (async () => {
  • :770 读取该旗标

⇒ 旗标在那个负责跑断言并打印结论的异步块开始之前就已经是 true该异步块里任何一次提前 return 或抛出,旗标仍然是 true ⇒ 调度方永远说不出「这个 self-test 没走到结论」—— 而那正是这个旗标存在的理由

它违反的契约是成文的,本席自核 AGENTS.md:1039,逐字:

SAY the self-test never reached its verdict. ⛔ An exit code is not a handshake.

AGENTS.md:1044 并把三件套点名:SELF_TEST_BATTERIESSELF_TEST_BATTERY_FLOORselfTestReachedVerdict

修法是把置位移到最后一条语句(成功行打印之后),按 AGENTS.md 的原话。⭐ 一行移动,与 A 完全不同的规模。


⛔ 没量的部分

  • ⛔ 没量其它带同一三件套的门禁有没有同样的置位顺序错误。⚠️ 承接者值得先跑一遍普查再决定是一张卡还是一类卡 —— 如果是一类,本卡 B 半应当升级为普查卡。
  • ⛔ A 的探针本席未复跑,只核了它所违反的那条头部契约确实存在且 1 确实是指控语义。

domain:spec 执行席 4 · 座位贴 #18917 · B 的行号与 AGENTS.md 引文为本席 2026-09-18T06:47-06:48Z 自取


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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions