Skip to content

Apageoflove/DSH-changeproof

51Last commit Aug 15, 2026

DSH-changeproof DSH plugin

ChangeProof solves the problem that 'tests pass' does not mean 'changed lines are verified'. It automatically finds tests related to the code change, runs them, and checks each changed line for coverage. The plugin also binds evidence to a code fingerprint, so any modification invalidates the old conclusion.

How to install the DSH-changeproof DSH plugin

dsh plugin add dsh-changeproof

Copying does not run this command. Review the repository and version before installing the DSH-changeproof DSH plugin.

DSH-changeproof DSH plugin data source

DSH-changeproof DSH plugin snapshot date: Aug 16, 2026

discovered

What the DSH-changeproof DSH plugin can do

  • Automatically identifies relevant tests based on code reference relationships, not guesswork
  • Executes tests and performs line-level coverage verification, blocking pass if changed lines are not covered
  • Binds verification evidence to a code fingerprint; any code change automatically invalidates the conclusion
  • Supports multiple test adapters (vitest, jest, pytest) with Istanbul/Coverage.py coverage formats

Where the DSH-changeproof DSH plugin fits

  • Ensure that every line of code changed in a pull request is actually covered by tests before merging
  • Prevent false positives where tests pass but only cover unrelated files or partial lines
  • Automatically detect stale verification results when code is modified after testing
  • Integrate into CI/CD pipelines to enforce coverage evidence for every change

Who the DSH-changeproof DSH plugin is for

  • Developers who want to ensure their code changes are thoroughly tested
  • QA engineers and code reviewers who need objective evidence of test coverage for changes

DSH-changeproof DSH plugin limitations

  • Requires a .changeproof.yml configuration file in the project root to define packages, test adapters, and coverage paths
  • Depends on DSH (DeepSeek Harness) and a model with API key to automatically trigger verification after code modification
  • Currently only supports test adapters that output Istanbul-format coverage (vitest, jest) or coverage.py for pytest; other frameworks require manual configuration

DSH-changeproof DSH plugin: from the repository README

Quoted from the Apageoflove/DSH-changeproof README, the upstream source of the DSH-changeproof DSH plugin. Copyright remains with the original authors.

DeepSeek Harness(DSH)插件:代码改动后,确认改动的行真的被测试覆盖到。 ## 解决的问题 "测试通过"不等于"改动被验证": - 改的是 A 文件,测试跑的是 B 文件,全绿但改动没被测到; - 测试跑了,但只执行到改动行的一部分,剩余行没测到,照样报通过; - 验证完成后代码又被修改,旧结论仍然有效,无人察觉。 插件做三件事: 1. **关联测试**:根据代码引用关系,找出与本次改动相关的测试(不是全量跑,也不是猜); 2. **行级核对**:执行测试后逐行核对,改动行未被执行到则不予通过,并明确指出未覆盖的行; 3. **结论过期**:证据绑定代码指纹,代码一变,旧结论自动失效。 结论状态:`VERIFIED`(通过)、`PARTIAL`(部分覆盖)、`FAILED`(测试失败)、`STALE`(结论过期)、`UNVERIFIED`(无有效证据)、`NOT_APPLICABLE`(无可验证内容)。 底线:**没有覆盖证据,或证据与当前代码不一致,一律不给 VERIFIED。** ## 部署到 DSH 以下步骤在 Windows 实测通过(macOS / Linux 命令相同)。 ### 前提 - Node.js ≥ 24(DSH 要求 `^22.19 || >=24`) - pnpm 11.7(`npm install -g pnpm@11.7.0`) - Git ### 1. 获取 DSH 源码 ```bash git clone --depth 1 https://gitee.com/mirrors/deepseek-harness.git DSH # GitHub 直连:git clone --depth 1 https://github.com/deepseek-ai/deepseek-harness.git DSH cd DSH ``` ### 2. 构建 DSH ```bash pnpm install pnpm run build:lib pnpm run build:web # 仅使用 headless 可跳过 ``` ### 3. 构建插件 ```bash cd <插件目录> # 如 E:\agent\dsh-changeproof npm install npm run build # 产物在 dist/ ``` ### 4. 安装到 profile ```bash cd <DSH 目录> pnpm dsh plugin --profile web add <插件目录> # 需要命令行模式再加:pnpm dsh plugin --

Read the full READMERepository license: MIT

DSH-changeproof DSH plugin questions

How do I install ChangeProof as a DSH plugin?

First, ensure you have DSH (DeepSeek Harness) built and ready. Then run 'npm install && npm run build' in the plugin directory. Finally, add the plugin to a DSH profile with 'pnpm dsh plugin --profile web add <plugin-directory>'. Verify with 'pnpm dsh --profile web --dump-config | grep changeproof'.

Does ChangeProof require a specific test framework?

ChangeProof supports vitest, jest, and pytest via coverage adapters. For vitest and jest it uses Istanbul-format coverage; for pytest it uses coverage.py. You need to configure the test adapter in .changeproof.yml and ensure the test runner produces a coverage file in the expected format.

What does the conclusion status 'STALE' mean?

'STALE' means the verification evidence is no longer valid because the code has changed since the verification was performed. ChangeProof binds evidence to a code fingerprint; any modification to source files, test files, lockfiles, or configuration files will invalidate the previous conclusion. You need to re-run verification to get a fresh status.

Can I use ChangeProof without DSH?

Yes, ChangeProof provides a standalone CLI. After building the plugin with 'npm install && npm run build', you can run commands like 'node dist/host/cli.mjs verify --workspace <project-path> --yes' to execute tests and get coverage verification. The standalone mode does not require DSH or a model.

How does ChangeProof prevent false positives from shell injection?

ChangeProof uses an argv-only execution model: the test command is specified as an array of arguments, which is passed directly to Node.js spawn without shell interpretation. It also validates that no argument contains shell metacharacters (like &&, ||, ;) by default. The 'CP_ALLOW_SHELLY_ARGV' environment variable can override this but is off by default.