Releases: SpeedosDK/predictive-debugger
Release list
0.9.0
Measured on 49 benchmark files in full agent sessions with Claude, Copilot and Codex:
this release finds as many bugs as an agent reading the files itself, or more, with
32–69% fewer tokens, and matches v0.8.2's accuracy with Claude at 78% fewer tokens.
With Copilot, v0.8.2 found two more bugs over two sessions at 2.5 times the tokens.
See the results.
Added
check_typesreturns selected JavaScript/TypeScript files' compiler diagnostics
without model calls. It preserves configured project declarations and options,
reports incomplete context and limits, and bundles TypeScript's standard libraries.
Compiler diagnostics are separate from model confidence and runtime predictions.- Imported definitions now include CommonJS:
require()bindings and exports from
module.exports/exports. When a required name provably is not exported (the
module's exports are one complete object literal), the model is told so; in any
less certain shape nothing is claimed. Not yet benchmarked. - Replies to
predict_failuresincludeproviderVersion, the CLI version that
produced the verdicts, andcached: truefor a reused verdict (below). npm run bench:canary -- --provider=<id>checks an installed CLI against 12
held-out benchmark files in about a minute and reports PASS or DRIFT.
Changed
- Small files share model calls: up to eight per call, with a bounded prompt, each
keeping its own verdict and line validation. Large files still run alone. A file
whose group verdict names a defect with a score under 0.80, or that the group
calls clean although it reads, awaits and writes back shared state, is reviewed
again on its own, and that verdict replaces the group's. Missing or malformed
group verdicts are unavailable, never clean. - Scores are anchored to a trigger the shown code permits and a result the shown
code contradicts, and the expected behavior must come from the code, not from the
model's own assumptions. uncertainresults are no longer something to ignore: replies containing one add
check, asking the calling agent to read the cited lines and confirm or dismiss it.- Re-reviewing a set after editing one file no longer pays for the unchanged ones.
Within a server session, identical review input returns the earlier verdict with
cached: true; failed and unavailable verdicts are never reused. - After two failed provider calls in a row, the remaining files fail at once with
the reason instead of each waiting out its timeout. Re-checks start as soon as
their group finishes, and files are read and parsed in parallel. - Claude reviews no longer make a hidden side call that sent every prompt uncached,
and no longer load your skills, MCP servers or session files. concurrencycounts model calls in flight, each covering up to eight files.bench/RESULTS.mdsummarizes the current comparison; older reports remain at the
release tags.npm run benchis replaced bynpm run bench:canary.
Security
- Only JavaScript/TypeScript source files are sent to the model. A path to a
.env
or key file is refused before any provider call, imports resolve only to source
files, and one call accepts at most 100 files. - Each review call starts the CLI in a new, empty temporary folder, deleted
afterwards. In the project folder, all three CLIs loaded itsCLAUDE.md/AGENTS.md
into every review, costing tokens and letting the repository under review instruct
its reviewer. See SECURITY.md. - Codex reviews turn off Codex's agent tools (shell, patching, web, browser, computer
use, plugins, sub-agents, image generation). With its defaults, asked to read a
file, the reviewing Codex called its shell. Each Codex call now sends about 9k more
uncached tokens, because its shared prompt cache no longer applies. - Copilot reviews expose no tools to the model, including MCP tools from your own
configuration. - MCP tools declare themselves read-only and non-destructive, which also lets Codex
call them with approvals off; v0.8.2 could not run there.
Fixed
- Brackets in prose before a model's verdict (
checked [x],line [12]) no longer
make the verdict unavailable. - An explicit
unknownverdict stays unavailable instead of becoming a clean result.
v0.8.2
Metadata and documentation patch. The analysis code and prediction behavior are unchanged.
- Link the website, predictivedebugger.dev, from the README and set it as the npm homepage.
- Add
mcpNameandserver.jsonfor the official MCP Registry.
Validation: 240 tests passed, the production six-tool MCP smoke check passed, and the npm publish dry run verified an isolated npx installation. GitHub CI covers Windows, macOS and Linux on Node 22 and 24.
v0.8.1
Documentation-only patch. The analysis code and prediction behavior are unchanged.
- Put setup first, with expandable instructions for Claude Code, Codex and Copilot CLI.
- Add example prompts and a concise overview of the six tools.
- Move advanced setup, tool details and VS Code settings into linked guides.
- Consolidate privacy and execution details in the security policy.
This patch version is required to update the README displayed on npm. With the version identifier held at 0.8.0, the rebuilt MCP bundle matches the previous release exactly.
Updated README · Documentation · Changelog
Validation: 240 tests passed, the production six-tool MCP smoke check passed, and the npm publish dry run verified an isolated npx installation. GitHub CI covers Windows, macOS and Linux on Node 22 and 24. Documentation links, configuration examples and GitHub Markdown rendering were checked.
v0.8.0
Predictive Debugger 0.8.0 adds dependency mapping and installation through npm.
- Run the MCP server with
npx -y predictive-debugger@latest, without cloning or building the source.--versionand--helpare available. - Use
map_dependenciesfor imports, reverse imports and connected test files, with source-line evidence and explicit coverage limits. - Predictions resolve more wildcard exports, forwarded imports, constructors and large class/object members.
- Benchmark reports and graphs now use v0.8.0. The measured candidate identified 51/51 planted bug trials with no false alarms. Broader dependency evidence used 3% more total tokens than v0.7.1. These are development cases, not a held-out accuracy estimate; cache differences prevent a monetary savings claim. Results and accounting.
Requires Node.js 22 or later and a supported Claude Code, Codex or Copilot CLI already installed and signed in. The VS Code extension remains an unfinished preview.
npx -y predictive-debugger@0.8.0 --versionAgent setup · Changelog · Release build and benchmark hashes
Validation: 240 tests passed on Windows, the production six-tool MCP smoke check passed, and the npm publish dry run verified an isolated offline npx installation and the packaged Python helper. The GitHub CI matrix covers Windows, macOS and Linux on Node 22 and 24.
v0.7.1
Predictive Debugger v0.7.1
Security and reliability patch for v0.7.0. Existing users should update to this version.
- Reject unsafe Windows CLI arguments before starting a process, preventing command injection through model overrides.
- Enforce a 4 MB source-file limit before prediction, including files that grow during reading.
- Stop the Windows CLI process tree on timeout or cancellation; stop the process group on Unix.
- Update the README download link to v0.7.1.
The analysis rules and model prompt are unchanged. Existing v0.7 demos remain representative; benchmark results were not rerun for this patch.
Validation: 196 tests passed locally on Windows, production build succeeded, and the bundled MCP server passed its smoke test.
Install
Download Source code (zip) from this release, extract it, then run:
npm install
npm run buildUpdate your MCP configuration to point to dist/mcp-server.js in the extracted folder. Requires Node.js 22 or later and a supported CLI already installed and signed in. JavaScript and TypeScript are supported. The VS Code extension remains an unfinished preview.
v0.7.0
Predictive Debugger now brings imported types, object methods, re-exports and TypeScript path aliases into its bounded dependency context. Large-file reviews retain complete declarations, and stricter evidence requirements reduce speculative bug reports.
In the Sonnet development benchmark, v0.7 identified 38/39 planted defect trials plus one verified alternative, with zero false alarms across 45 clean-control trials. Observed complete-workflow cost was $1.294, compared with $1.490 for v0.6 and $1.553 for direct reading.
These results cover 13 buggy files and 15 clean controls, repeated three times. The cases informed prompt development, baseline sessions were reused, and cache conditions differed. They are development results, not a guarantee of accuracy or cost on other projects.
Also included:
- Malformed model verdicts report unavailable instead of clean.
- Imported bindings respect local shadowing; complexity metrics include do-while loops.
- Batch reviews share log analysis across files.
- Superseded benchmarks are removed, and temporary worktrees are excluded from installation packages.
All 192 tests pass. Release-commit CI passes on Windows, macOS and Linux with Node 22 and 24.
Results and graphs | Changelog
This is a prerelease for testing and feedback.
v0.6.0
predict_failures can now review several files in one call. Verdicts run concurrently, stay in request order, and report per-file failures without discarding completed work. The existing single-file input and response shape still work unchanged.
The VS Code project-wide command now uses the same bounded concurrency pool.
Changed
- Verification guidance now applies whenever an agent checks code it wrote during the session, including new features.
- Single-file changes get a fresh
predict_failurespass. Multi-file changes get a scoped sub-agent review because correctness may depend on how the files fit together. - The response field formerly named
onFixis nowreviewand is always present, including on clean verdicts.
Full detail is in CHANGELOG.md.
v0.5.2
Two real bugs in the analysis core, both found by running this project's own predict_failures over its src/core/, and both missed by the test suite.
Fixed
A model verdict was thrown away when the reply had prose after it. The end of the JSON was located with lastIndexOf, so commentary containing a } or ] — "the guard at if (a) { return; } already covers it" — moved the cut past the reply and a correct, confident finding was reported as unknown. The end of the value is now found by scanning forward with depth tracking, string- and escape-aware.
export default foo; sent the model const foo = foo instead of the function. An identifier naming a declaration made earlier in the file fell through to the range covering the identifier itself, so the callee excerpt spent tokens to say a function is itself — inside the feature that exists to make the model more accurate. It now resolves through the same alias path a named export uses.
A third report from the same sweep was a false positive and was correctly not acted on: rank() guarantees the finding list is never empty, on a path the model could not see from one module away.
Also in 0.5.x
scan_projectno longer ranks test files (includeTeststo opt back in)- The MCP server ships a fix-verification rule as
instructionsplus anonFixhint - README has a beginner primer; the benchmark report defines its terms before using them
- Code contributions are closed for now; bug reports are open and wanted
Full detail in CHANGELOG.md.
v0.5.1
First public build. This bundles what previously was 0.5.0 (never published as a release) together with 0.5.1, so the notes below cover both.
[0.5.1] — 2026-09-01
Project
-
README gets a beginner on-ramp; the benchmark report defines its terms up
front. A "New to this?" section now sits right after the opening pitch,
ahead of the existing developer-facing content: what the tool does in one
sentence, what MCP means, which of the two shapes (VS Code extension or MCP
server) a reader wants, and the three prerequisites — Node.js, an
already-signed-in AI coding CLI, and a built checkout.bench/RESULTS.mdopens with a plain-language paragraph on what the test
actually did before naming it, and its glossary now appears before the
Bottom line table uses the terms rather than partway through the report.
Edited inbench/markdown.mjs, the generator, and regenerated rather than
hand-edited, so the wording survives the nextnpm run bench. No measured
number changed; the charts came back byte-identical.
[0.5.0] — 2026-09-01
Project
- Code contributions are closed for now; bug reports stay open. The
interfaces are still moving between releases, so pull requests against them
would be work spent against decisions that have not settled. Documented in
CONTRIBUTING.md with the reasoning and the fact that it is temporary. The
feature-request issue template is gone; the bug template stays, because a
report from a codebase the author cannot see is what the generated-corpus
benchmark cannot provide.
Changed
-
scan_projectno longer ranks test files (#10).*.spec.*,*.test.*
and anything under__tests__/__mocks__/test/tests/specare left
out;includeTests: truebrings them back, and the reply reports
excludedTestswhen any were withheld.They were never ranked high for a real reason.
DENSITY_WEIGHTSscores
asyncCalls, and a spec file full of mocked awaits reads as async
complexity while carrying none of the defect risk that weight stands in
for. Four of the top 25 hits on a real backend were.spec.tsfiles; on
this project's ownsrc/, tests took five of the top six slots. Those are
wasted slots in the one tool whose whole job is spending a limited reading
budget well.The filter is applied at the
scan_projectcall site rather than inside
collectSourceFiles, so the VS Code project-wide run still covers tests —
a human who asked for the whole workspace is not paying per file read. The
predicate itself lives incore/sourceFiles.tsso both surfaces agree on
what a test file is, and it takes a path relative to the scanned root:
judged on absolute paths, anyone whose projects sit under a directory named
testwould have had their entire codebase excluded.
Added
-
The server now ships the fix-verification rule itself, as MCP
instructionsplus anonFixhint onpredict_failuresreplies that clear
the precision gate. It asks the calling agent to have a non-mechanical fix
reviewed from outside the context that produced it — a sub-agent where the
host has them, otherwise a freshpredict_failureson the edited file.An agent that has just written a fix is the worst-placed reader of it: the
reasoning that made the fix look right is still in its context, so reviewing
it from the same seat re-derives the first conclusion instead of testing it.
An independent pass catches defects the author's pass structurally cannot.
Left to the agent's judgement this happened on some runs and not others;
left to each user's project instructions it reached only the users who
already knew about the failure mode.It is a floor, not a ceiling — the agent may verify more often, and a
mechanical fix is exempt so a typo does not cost two model passes. The hint
is duplicated on the wire becauseinstructionsis sent once at initialize
and not every client forwards it to the model, while a tool result always
reaches it; gating it onactionablekeeps a clean file's reply free of it.