@codacy/verity-cli 0.29.4 → 0.30.0-experimental.452ead4

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 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