You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
plan answers where to start. verify answers whether the change that followed
matches the plan, by comparing a saved report against a real git diff.
Five checks, all comparisons between two things the user already has, so
nothing is executed and no repository code runs:
- edits in generated or retired locations, which the next build discards
- files the change needed that the plan never ranked
- a leading file left untouched
- source moving with no test moving, pointing at the routed test
- risk areas the change reached that the plan never flagged
Only the first exits non-zero. That one is wrong regardless of what the task
was; the rest are advisory, because a plan can be wrong and a change can
still be right, and only someone reading both can say which. The output
reports the gap and leaves that judgement alone.
Also fixes test routes carrying a repository-wide related-files list. Every
route received the same set, so a report claimed npm --prefix packages/core
run test would exercise another package's tests. Related files are scoped to
the route's package; a root script keeps everything.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,16 @@
2
2
3
3
All notable changes to FixMap are documented here.
4
4
5
+
## 0.7.3 - 2026-07-26
6
+
7
+
### Added
8
+
9
+
-`fixmap verify --report <file> --diff <spec>` closes the loop after an edit. It compares a saved plan against the diff that followed and reports five things: edits in generated or retired locations that the next build discards, files the change needed that the plan never ranked, an untouched leading file, source moving with no test moving, and risk areas the plan never flagged. Both inputs are things the user already has, so nothing is executed and no repository code runs. Only a discarded edit exits non-zero — that one is wrong regardless of the task, while everything else is advisory, because a plan can be wrong and a change can still be right. Available as `verifyPlan` from the core package and with `--format json`.
10
+
11
+
### Fixed
12
+
13
+
- Test routes list only the tests each command can actually run. `findRelatedTests` ran once and its result was assigned to every route, so a report claimed `npm --prefix packages/core run test` would exercise `packages/action/test/runner.test.ts`, which that command never reaches. On this repository all three routes carried an identical eight files spanning three packages. Related files are now scoped to the route's package directory; a repository-root script keeps everything.
Copy file name to clipboardExpand all lines: README.md
+34-4Lines changed: 34 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -97,6 +97,36 @@ or path from this file in the task to raise it.
97
97
98
98
It distinguishes the cases that actually differ: the file was ranked, it scored below the cutoff, it was deliberately excluded (a test, a lockfile, generated output whose source was ranked instead), or the scan never saw it. When a scan hits its file limit, it says so rather than implying the path does not exist. Add `--format json` for the machine-readable form.
99
99
100
+
### Verify the change afterwards
101
+
102
+
`plan` answers where to start. `verify` answers whether the change that followed matches the plan — by comparing the saved report against a real git diff:
103
+
104
+
```bash
105
+
npx -y @aryam/fixmap@latest plan --issue "password reset emails fail" \
FixMap verified 3 changed files against the plan and raised 1 error and 2 warnings.
115
+
116
+
- **error** A file was edited in a generated or retired location. A build regenerates
117
+
these, so the change will be lost. Edit the source they are produced from.
118
+
- `dist/auth/reset-password.js`
119
+
- **warning** One file changed that the plan did not rank. Either the task grew beyond
120
+
the original description, or the ranking missed them — worth checking which.
121
+
- `src/billing/charge.ts`
122
+
- **warning** Code changed but no test did. The plan routed this test as most related.
123
+
- `test/reset-password.test.ts`
124
+
```
125
+
126
+
It checks five things: edits in generated or retired locations, files the change needed that the plan never ranked, an untouched leading file, source moving with no test moving, and risk areas the plan never flagged. Nothing is executed — both inputs are things you already have.
127
+
128
+
Only a discarded edit exits non-zero, because that one is wrong regardless of the task. Everything else is advisory: a plan can be wrong and a change can still be right, and FixMap reports the gap rather than judging it. `verify` is CLI-only for now; MCP and Action support follow.
129
+
100
130
### MCP server
101
131
102
132
FixMap exposes one stdio tool, `fixmap_plan`, so an agent can request the same report directly.
@@ -167,7 +197,7 @@ jobs:
167
197
with:
168
198
fetch-depth: 0
169
199
- id: fixmap
170
-
uses: aryamthecodebreaker/FixMap@v0.7.2
200
+
uses: aryamthecodebreaker/FixMap@v0.7.3
171
201
with:
172
202
github-token: ${{ secrets.GITHUB_TOKEN }}
173
203
```
@@ -247,11 +277,11 @@ Read the full [benchmark methodology and scanner measurements](docs/BENCHMARKS.m
247
277
npm run evaluate:heldout
248
278
```
249
279
250
-
## What changed in v0.7.2
280
+
## What changed in v0.7.3
251
281
252
-
`--explain <path>` answers the question a ranked list cannot: why the file you expected is missing. It separates being ranked, scoring below the cutoff, being deliberately excluded, and never being scanned.
282
+
`fixmap verify` closes the loop: it compares a saved plan against the diff that followed, flagging edits a build will discard, files the change needed that the plan never ranked, source moving without tests, and risk the plan never mentioned.
253
283
254
-
Every published rate now carries a confidence interval, because at twelve cases one result flipping moves Top-3 by eight points. And both evaluations report how often a wrong file ranks *first* while the right one sits lower — the regression suite's 100% Top-3 was concealing a 40% misleading rate, which is what an agent actually pays for.
284
+
Test routes now list only the tests each command can actually run. Every route previously carried the same repository-wide list, so a report claimed `npm --prefix packages/core run test` would exercise another package's tests.
255
285
256
286
[Inspect the changelog](CHANGELOG.md) · [See the held-out results](benchmarks/heldout/README.md) · [See every regression ranking](benchmarks/external/README.md) · [Audit the efficiency assumptions](docs/BENCHMARKS.md)
I would especially value feedback on the ranking explanations and which repository signals would make FixMap more useful before an agent starts editing.
0 commit comments