Skip to content

[PR] fix(verif): return after the guard-level solver skip so solver-less runs stay clean (#4270) - #4271

Closed
Zhishulo wants to merge 1 commit into
ranxianglei:masterfrom
Zhishulo:2026-10-22_verif-skip-return
Closed

Zhishulo wants to merge 1 commit into
ranxianglei:masterfrom
Zhishulo:2026-10-22_verif-skip-return

Conversation

@Zhishulo

Copy link
Copy Markdown
Contributor

Fixes #4270

问题

tests/verif-generic-append-stability.test.ts:50 与 tests/verif-responses-ingress.test.ts:52 的 guard 写的是裸 t.skip(...)。t.skip() 只置标记、不中断函数体,所以无求解器环境下「跳过」之后 body 继续执行,第一次碰文件或求解器就抛错:node:test 于是在日志尾部再列一个 ✖ failing tests: 段(CI TAP 上即 not ok … # SKIP no SMT solver available),把干净 skip 渲染成失败——就是 #4140 instance 3 里那条掉出所有计数桶的畸形行。

同目录另外 7 个 solver-gated verif 测试都写的是 return t.skip(...)(bug3676-wire-reorder / bug3691-oscillation / bug3769-orphan-window / induction-append-stability / symbolic-smoke)。本 PR 把这两处对齐。

改动

2 行,无其他改动:

-  if (!haveSolver) t.skip("no SMT solver available (set VERIF_PYTHON or VERIF_SOLVER_CMD)");
+  if (!haveSolver) return t.skip("no SMT solver available (set VERIF_PYTHON or VERIF_SOLVER_CMD)");

验证(本机,无求解器,编译产物)

before:

﹣ generic append-only stability: … # no SMT solver available (…)
﹣ responses-ingress: … # no SMT solver available (…)
ℹ tests 2 / pass 0 / fail 0 / skipped 2

✖ failing tests:
test at …verif-generic-append-stability.test.js:35:1
﹣ generic append-only stability: … # no SMT solver available (…)
  Error: ENOENT: no such file or directory, open '…\kernel\src\refs.ts'
      at readFileSync → loadModule (verif/symbolic.js:281) → loadImportGraph (:255) → translateFunction (:377) → runAssign

after:

﹣ generic append-only stability: … # no SMT solver available (…)
﹣ responses-ingress: … # no SMT solver available (…)
ℹ tests 2 / pass 0 / fail 0 / skipped 2

无 ✖ failing tests: 段。另:npx tsc --noEmit -p tsconfig.json 与 emit(--noEmit false --outDir … --rewriteRelativeImportExtensions)均绿。

与相邻票的关系(避免重复/冲突)

影响面

仅测试 harness;有求解器环境 haveSolver 为 true,执行路径逐字节不变。无产品代码、无新配置、无 cache/wire/折叠行为变更,因此不涉及 kernel-change:。

@ranxianglei ranxianglei changed the title fix(verif): return after the guard-level solver skip so solver-less runs stay clean (#4270) [PR] fix(verif): return after the guard-level solver skip so solver-less runs stay clean (#4270) Oct 22, 2026
@Zhishulo

Copy link
Copy Markdown
Contributor Author

重复提示:#4272(ework 对 #4270 的自动分诊 PR)与本 PR 是同一处 2 行改动、同一 base(0a9c639),内容逐字节相同;本 PR 先开(384bc12),#4272 在 #4270 分诊后由机器人补开。

两份都可合,建议只保留一个:

不阻塞任何一方;证据与 before/after 输出在 #4270。若之后要合,请注意与 #4269 的 hunk 不重叠(本 PR 在 generic :50 / ingress :52,#4269 在 generic :139+),两者可独立合入。

@Zhishulo

Copy link
Copy Markdown
Contributor Author

已 rebase 到当前 master 94f75cc(该 base 已含 #4195 的 df5e82412 fileURLToPath 修复),新 head c63b725,diff 仍恰好 2 行 × 1 行替换,与 #4269 的 body 内 hunk 不重叠。

新 base 上的本地复验(无求解器环境):kernel tsc / tsc --noEmit / emit 全部 exit 0;单跑这两个测试 = tests 2 / pass 0 / fail 0 / skipped 2,报告里没有 ✖ failing tests: 段。修前同环境是 skipped 2 加一段 Error: ENOENT … kernel/src/refs.ts(readFileSync → loadModule → loadImportGraph → translateFunction → runAssign)。

补一点完整性证据(语句级清点,不是按消息字符串匹配):tests/*.test.ts 共 64 个 .skip( 调用点 / 22 个文件。其中 15 个是同行 return t.skip(...),47 个是 t.skip(...) 后紧跟 return;(含 verif-bug3691-oscillation.test.ts:88 的 catch (e) { t.skip(...); return; } 同行收尾),裸调用只有本 PR 的这 2 处。所以这个缺陷形状在仓库里没有第三处;#4269 处理的是测试中途求解器丢失(body 内),位置不同,两者互补。

另:本 PR 与自动生成的 #4272 内容等价(同一 issue 的两条路径),合任意一个即可,剩下的我按 superseded 处理。

@Zhishulo
Zhishulo force-pushed the 2026-10-22_verif-skip-return branch from c63b725 to 37810b5 Compare October 22, 2026 09:44
@Zhishulo

Copy link
Copy Markdown
Contributor Author

CI 重跑说明(同一 diff,新 head 37810b5d5)

上一轮 run 39735594754(head c63b72541)的 1 条红与本 PR 无关:

处置:我没有上游 repo 的 Actions 重跑权限(POST /repos/ranxianglei/billion-context/actions/jobs/119681287575/rerun → 403 Must have admin rights to Repository.),因此通过改提交时间重触发同一 diff(head c63b72541 → 37810b5d5,改动仍为 2 files × 1 line,字节内容不变)。新 run 39757808610:8 条 e2e 车道 + PR Build Artifact 已 success,test 矩阵仍在跑。

@ranxianglei

Copy link
Copy Markdown
Owner

按取代关闭:与 #4272 平行的同题修复(verif 守卫 skip 缺 return),#4272 已于 2026-10-23 04:35 合并,#4270 已随之关闭。无遗留工作。

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

verif: guard-level solver skip never returns — solver-less runs still emit a failing-test entry instead of a clean skip

2 participants