All plugins

DSH / BUNDLE / BUNDLES

dsh-culprit

v0.1.0ca610 / dsh-culprit6a6080b682

InstallableBundlesBundles & other modulesCommunity · Topic auto-analysis

Overview

dsh-culprit

Regression culprit finder: bisect a failing predicate to the exact commit that broke it, with evidence.

README / EN

Package documentation

Registry summary

Regression culprit finder: bisect a failing predicate to the exact commit that broke it, with evidence.

dsh.pub verifies the pinned bundle contract, runtime facts, and distribution semantics. The complete README remains in the source repository.

Read the full README on GitHub

LIMITATIONS

Known limitations

- **只看 `--first-parent` 历史。** 快、确定,但如果肇事者藏在某个已合并分支内部, 肇事点会落在那个 merge commit 上(结果里会用警告点明这一点)。 - **merge commit 的 diff** 默认拿不到(git 的 combined diff 默认关闭), 插件会自动退回 `git diff <sha>^1 <sha>`。 - **旧提交上跑不起来的东西会被跳过**,跳太多就是 `inconclusive`——这是诚实的失败, 不是 bug。给一个更近的 `goodRef` 通常就能收敛。 - **需要 `git` 和能启动子进程的环境。** 沙箱里如果禁止管道 stdio, git 拿不到输出,工具会报 `not-a-repo`。 ### 一个值得记下来的 Windows 坑 Windows PowerShell **会把任何非零退出码压成 1**: ``` node skip.mjs; exit=125 powershell -Command "node skip.mjs" exit=1 ← 真实码丢了 powershell -Command "node skip.mjs; exit $LASTEXITCODE" exit=125 ← 只能这么写 ``` 所以插件在 Windows 上是把判据包成 `... ; exit $LASTEXITCODE` 再执行的 (`cmd` 那条路用 `/v:on` 加 `!ERRORLEVEL!`,因为 `%ERRORLEVEL%` 在解析期就展开了)。 不这么干,"退出码 125 = 跳过"这条约定在 Windows 上直接失效。 ---