@codacy/verity-cli 0.29.4 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +133 -0
- package/bin/verity.js +3362 -2504
- package/data/skills/verity-setup/SKILL.md +21 -8
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,139 @@
|
|
|
3
3
|
All notable changes to Verity are documented here. This project follows
|
|
4
4
|
[Semantic Versioning](https://semver.org/).
|
|
5
5
|
|
|
6
|
+
## [0.30.0] — 2026-08-13
|
|
7
|
+
|
|
8
|
+
**Verity feels smarter, and tuned to the session you're in.** The theme of 0.30
|
|
9
|
+
is fit and restraint. There are far fewer false positives — the gate no longer
|
|
10
|
+
flags its own installed files, no longer conjures findings from a plan it never
|
|
11
|
+
saw as code, and honours a disagreement you've already reasoned through instead
|
|
12
|
+
of re-raising it every turn. Blocking is more intelligent: the gate forces
|
|
13
|
+
another turn only when it can show that turn might actually help, which also
|
|
14
|
+
makes infinite FAIL loops impossible. And the advisory notes on passing turns
|
|
15
|
+
now ride a per-session budget rather than interrupting on every one. Suppression,
|
|
16
|
+
notes, and plan approval are each scoped to the conversation they belong to — so
|
|
17
|
+
the gate reads the session the way you do, and gets out of your way when it has
|
|
18
|
+
nothing useful to add. The net effect is less noise, fewer dead ends, and a
|
|
19
|
+
review that feels adjusted to what you're actually doing.
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install -g @codacy/verity-cli
|
|
23
|
+
verity init # re-run once per repo — see Migrating
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 🗣️ Findings can be disputed — and stay disputed
|
|
27
|
+
|
|
28
|
+
- **Dispute a finding with reasoning and it stays suppressed** on later runs —
|
|
29
|
+
no more re-litigating the same disagreement every turn. Suppression is bound
|
|
30
|
+
to the file's exact bytes: edit the file and the finding is reconsidered.
|
|
31
|
+
- **Security findings take two rounds.** One pushback is never enough to
|
|
32
|
+
silence a security claim; the gate holds its ground once before accepting a
|
|
33
|
+
repeated, reasoned dispute.
|
|
34
|
+
|
|
35
|
+
### 🔁 Blocking must earn it
|
|
36
|
+
|
|
37
|
+
- **Infinite FAIL loops are impossible.** One gate now owns the blocking exit
|
|
38
|
+
code, and it only blocks when there is evidence another attempt can help:
|
|
39
|
+
code was actually reviewed, something moved since the last block, the same
|
|
40
|
+
problem hasn't exhausted its fix attempts, and a hard ceiling of 5
|
|
41
|
+
consecutive blocks backstops everything.
|
|
42
|
+
- **Released findings are still reported** — when the gate stops forcing
|
|
43
|
+
turns, it says what remains OPEN rather than going quiet.
|
|
44
|
+
|
|
45
|
+
### 📉 Advisory notes ride a budget
|
|
46
|
+
|
|
47
|
+
- A note on a PASS is a forced turn in disguise. Notes now ride an episode
|
|
48
|
+
budget — **1 on PASS, 2 on WARN** — that resets when *you* type, on a FAIL,
|
|
49
|
+
at a task boundary, or after a 30-minute lull. Long-lived autonomous agents
|
|
50
|
+
get one note per task instead of one per turn.
|
|
51
|
+
- Refusals, intent judgements, and verdict downgrades are never budgeted.
|
|
52
|
+
|
|
53
|
+
### 📋 Plans are reviewed as plans
|
|
54
|
+
|
|
55
|
+
- **Plan approval now reaches the reviewer** — including on the turn after you
|
|
56
|
+
approve, when there is no accompanying prompt to carry it.
|
|
57
|
+
- A report *about* completed work is no longer mistaken for a plan, and plan
|
|
58
|
+
feedback can never ratchet into blocking.
|
|
59
|
+
|
|
60
|
+
### 🪞 Verity never reviews itself
|
|
61
|
+
|
|
62
|
+
- **Verity's own installed files** (its skills, `.codacy/` configs,
|
|
63
|
+
`.claude/settings.json`, `VERITY.md`) **never enter review** — the gate no
|
|
64
|
+
longer FAILs your session over its own installer's files. Every such
|
|
65
|
+
exclusion is named in the run's coverage ledger, never silent.
|
|
66
|
+
- **`.verity/.snapshot/` is gitignored at `verity init`** — the snapshot holds
|
|
67
|
+
byte copies of analyzed files (including any secret the gate just flagged)
|
|
68
|
+
and must never be committable. Snapshot copies of deleted files are now
|
|
69
|
+
purged, and `/verity-setup` writes a whitelist-form `.verity` gitignore
|
|
70
|
+
block so future state files are covered by construction.
|
|
71
|
+
|
|
72
|
+
### 🐛 Fixes
|
|
73
|
+
|
|
74
|
+
- **Valid Unicode is no longer mangled into false positives.** Every analyze
|
|
75
|
+
request was being decoded as Latin-1, so correct UTF-8 — em dashes, accented
|
|
76
|
+
letters, middots — arrived as mojibake (`—` became `—`), and the reviewer
|
|
77
|
+
flagged the garbled text with a suggested fix identical to what your file
|
|
78
|
+
already contained. The mis-decode reached the model itself, not just the
|
|
79
|
+
finding text. Requests are now decoded as UTF-8. *(reported from the field)*
|
|
80
|
+
- **Work done by subagents and workflows is actually reviewed.** The gate looked
|
|
81
|
+
for delegated work in the wrong directory and did not recognise `Workflow` /
|
|
82
|
+
`SendMessage` as delegation, so files a subagent authored were attributed to
|
|
83
|
+
no one — and a session that delegated its real work could pass **unreviewed**.
|
|
84
|
+
On one real session this recovered 36 of 42 authored files — an order portal,
|
|
85
|
+
its auth, and a PII warning — that had been reviewed zero times.
|
|
86
|
+
- **Disputing a finding actually suppresses it now.** The suppression ledger was
|
|
87
|
+
inert — a dispute was cancelled by the very request that recorded it, so a
|
|
88
|
+
finding you had reasoned away came back on every later turn.
|
|
89
|
+
- **No more phantom "STILL OPEN" findings.** A finding could be raised from a
|
|
90
|
+
plan's prose and then haunt later runs as still-open on a file that was never
|
|
91
|
+
edited — or never existed. A finding now requires the file's actual bytes to
|
|
92
|
+
have been under review.
|
|
93
|
+
- **An approved plan is treated as approved.** The approval was dropped on the
|
|
94
|
+
turn right after you gave it, so the reviewer graded the plan as if you had
|
|
95
|
+
not approved it.
|
|
96
|
+
- **A report of finished work is no longer mistaken for a plan.**
|
|
97
|
+
- **Verity stops FAILing sessions over its own files.** The gate could review
|
|
98
|
+
the files its own installer wrote and fail your turn on them — once even
|
|
99
|
+
prescribing that you disable its own secret scanning.
|
|
100
|
+
- **A deleted secret no longer lingers in the snapshot.** The analysis snapshot
|
|
101
|
+
kept a byte-for-byte copy of a flagged file after you deleted it, in a
|
|
102
|
+
directory that was not gitignored — one `git add -A` away from being committed.
|
|
103
|
+
- **Windows: paths outside the repo are filtered correctly.** A drive-letter
|
|
104
|
+
path (`C:\…`) was read as repo-relative, so scratch files outside the project
|
|
105
|
+
could slip into the review scope.
|
|
106
|
+
|
|
107
|
+
### 🔒 Security hardening
|
|
108
|
+
|
|
109
|
+
A pre-release security review of the whole product closed a set of standing
|
|
110
|
+
issues (present before this release, not introduced by it). Updating is recommended.
|
|
111
|
+
|
|
112
|
+
### 🤖 Model
|
|
113
|
+
|
|
114
|
+
- Default reviewer model is now **gpt-5.6-luna** (was gpt-5.4-mini) — faster
|
|
115
|
+
and smarter per analysis.
|
|
116
|
+
|
|
117
|
+
### Internal
|
|
118
|
+
|
|
119
|
+
- The analyze pipeline is refactored into 14 named phases with a
|
|
120
|
+
characterization net — verified zero behavior change.
|
|
121
|
+
- Statement anchors carry content identity (`file_sha256`) and admission
|
|
122
|
+
requires the file's bytes to have been under review — findings can no longer
|
|
123
|
+
be raised into durable state from plan prose alone.
|
|
124
|
+
|
|
125
|
+
### Migrating
|
|
126
|
+
|
|
127
|
+
1. `npm install -g @codacy/verity-cli`
|
|
128
|
+
2. `verity init` once per already-configured repo — it adds the
|
|
129
|
+
`.verity/.snapshot/` gitignore entry (idempotent; your hooks and standard
|
|
130
|
+
are untouched).
|
|
131
|
+
3. If `git ls-files .verity` shows tracked files, untrack the machine state
|
|
132
|
+
once — the snapshot may hold copies of previously analyzed files, which
|
|
133
|
+
should never be in history:
|
|
134
|
+
```bash
|
|
135
|
+
git rm -r --cached .verity
|
|
136
|
+
git add .verity/standard.yaml .verity/memory
|
|
137
|
+
```
|
|
138
|
+
|
|
6
139
|
## [0.29.0] — 2026-08-07
|
|
7
140
|
|
|
8
141
|
**Phase 1 of the Road to 1.0: identity and context.** One login now covers every
|