@codacy/verity-cli 0.34.4 โ†’ 0.34.5-experimental.2aa3da8

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
@@ -64,30 +64,6 @@ installs are untouched.
64
64
  which is the ordinary case for someone whose first Verity install *is* the
65
65
  plugin.
66
66
 
67
- ## [0.34.4] โ€” 2026-10-26
68
-
69
- **A formal finding is checked before it blocks a push, and formal looks for security bugs.**
70
-
71
- ### ๐Ÿ›ก๏ธ Formal verification
72
-
73
- - **A reproduced counterexample is checked before it blocks.** A replay proves
74
- that a failing order runs against stubs of your code. It does not prove that
75
- the order can happen in production. Verity now investigates each reproduced
76
- counterexample with the read-only tools of the agent review. It follows the
77
- code to its entry point and looks for what prevents the order: a lock, a
78
- unique constraint, a transaction, an idempotency key. Two independent checks
79
- run, and the more cautious answer governs. A finding is lowered only when
80
- every quote of the check appears in your code: PREVENTED and ARTIFACT show as
81
- checked and never block, and REAL-LOW is reported without blocking. A check
82
- that does not finish leaves the finding as it was.
83
- `VERITY_FORMAL_VERIFY=off` turns the check off.
84
- - **Formal looks for security bugs.** The ranker gives each target a lens
85
- (security or reliability) and up to three concrete hypotheses. A security
86
- target is modelled from the attacker's side: isolation between tenants,
87
- revocation, flow binding, event order, and check-then-use.
88
- - **Generation sees the push.** The lines that your push changed are marked in
89
- the code that formal models, so it looks first for a bug that the change made.
90
-
91
67
  ## [0.34.3] โ€” 2026-10-21
92
68
 
93
69
  **`verity usage` shows the reviews of each member of your org.**
package/README.md CHANGED
@@ -10,75 +10,103 @@ cd your-project
10
10
  verity init
11
11
  ```
12
12
 
13
- `verity init` is the whole setup, and it finishes on its own โ€” no second tool, no
14
- model turn. It asks how deeply to review and when (on stop / before commit /
15
- before push) with arrow-key lists โ€” `โ†‘โ†“` to move, `space` to toggle, `enter` to
16
- confirm, and Enter alone takes the recommended answers โ€” wires everything, offers
17
- the optional GitHub login, and then gets this project a Standard: **the one your
18
- team already has**, or one **derived from your codebase** if there isn't one yet.
13
+ `verity init` is the whole setup. It asks two things, and every other choice is
14
+ a default that it states in one line:
19
15
 
20
- When it's done the gate is live on your next Claude Code session. `/verity-setup`
21
- is no longer part of setup; it is there when you want a model to propose
22
- project-specific rules.
16
+ ```
17
+ โ”Œ Verity ยท acme/payments
18
+ โ—‡ Looked at your repository
19
+ โ—‡ Verity reviews every turn, every commit and every push
20
+ โ”‚ To change it, run verity config moments, or just ask Claude.
21
+ โ—‡ Hooks here: this project's .claude/settings.json
22
+ โ—‡ Signed in as you@example.com โ† question 1
23
+ โ—‡ Profile sent ยท no source code โ† question 2
24
+ โ—‡ 6 rules for this repository ยท from 500 commits and 2 docs ยท 14s
25
+ โ—‡ Standard v1 saved
26
+ โ”” Ready in 41s.
27
+ ```
28
+
29
+ 1. **Sign in.** Enter opens GitHub's device page in your browser with the code
30
+ already on your clipboard. If the Verity GitHub App cannot see the repository,
31
+ init opens the install page and waits for it. Press `s` to skip: then only the
32
+ local security scan runs, because AI review needs sign-in.
33
+ 2. **Send a repo profile?** Only asked when you are signed in and the repository
34
+ has no Standard yet. The profile holds languages, frameworks and dependency
35
+ names, folder names, commit subjects with the paths they changed, and
36
+ CLAUDE.md and AGENTS.md without their code blocks. This step sends no source
37
+ code, diffs or author names, and Verity does not store the profile. Read it
38
+ first: init writes it to `.verity/repo-profile.json`, and `v` shows it. The
39
+ service writes review rules for this repository from it. Later, each review
40
+ sends the code that changed.
41
+
42
+ When it ends, start a new Claude Code session: Claude Code reads hooks when a
43
+ session starts. Under the plugin, Verity reviews from your next turn.
23
44
 
24
45
  ### Where the Standard comes from
25
46
 
26
47
  | Situation | What init does |
27
48
  |---|---|
28
- | The service has a Standard for this repo | offers it, and adopting writes it locally (see below) |
29
- | It doesn't, or you declined, or you're offline | **derives one from your codebase** and pushes it when signed in |
30
- | `.verity/standard.yaml` already exists | leaves it alone |
49
+ | `.verity/standard.yaml` already exists | keeps it, and shares it if the service has none |
50
+ | The service has a Standard for this repo | uses it, without asking: the team's Standard wins |
51
+ | Neither, and you send the profile | the service writes project rules into v1 |
52
+ | Neither, and you do not (or you are not signed in) | builds one from Verity's catalogue for your languages |
31
53
 
32
- The derivation is a lookup, not a guess: languages and frameworks are counted and
33
- read from your manifests, and the rules come from Verity's research-backed
34
- patterns reference โ€” the same catalogue the setup skill uses. The one thing it
35
- does not invent is **project-specific patterns** ("every route under `api/` uses
36
- the auth middleware"); `custom_patterns` stays empty until a model proposes them
37
- or you write them by hand.
54
+ The catalogue Standard is a lookup, not a guess: languages and frameworks are
55
+ counted and read from your manifests. Add project rules to it later with
56
+ `verity standard generate`, or edit `.verity/standard.yaml` and run
57
+ `verity standard push`.
38
58
 
39
- ### Joining a project that already uses Verity
40
-
41
- A Standard belongs to the project, not to your machine. So once you are signed in,
42
- init asks the service whether this repository already has one:
43
-
44
- ```
45
- This repository already has a Standard on Verity: version 3, pushed by claude-code
46
- on 2026-08-12 ยท with analysis config and .verityignore
47
- Use the existing Standard? [Y/n]
48
- ```
59
+ ### Defaults, and how to change them
49
60
 
50
- Say yes and it writes `.verity/standard.yaml`, `.codacy/codacy.config.json`,
51
- `.verityignore` and `VERITY.md` straight from the service โ€” no model phase, and no
52
- second version of your team's Standard (`verity standard push` auto-versions, so a
53
- fresh synthesis would become the version everyone is held to). Say no and it stops asking about
54
- that version โ€” and offers the next one, since a new version is new information.
55
- With no Standard stored yet, the regular flow runs.
56
- `--no-adopt` opts out of the whole check, including the request. Offline, signed out, or a service
57
- that cannot answer: also the regular flow โ€” setup has never needed the network and
58
- still doesn't.
61
+ | Default | Change it with |
62
+ |---|---|
63
+ | Verity reviews every turn, every commit and every push | `verity config moments turn,commit,push` (any of them, or `none`), or ask Claude |
64
+ | Static analysis is the Trivy security scan (its database downloads in the background at init) | nothing to configure |
65
+ | Formal verification at push is on for a new project; Lean 4 downloads in the background | `verity config formal off`, or `VERITY_NO_LEAN=1` before init |
66
+ | Cost & usage telemetry is off | `verity telemetry install` |
59
67
 
60
- If Claude Code isn't on your PATH, or you're already inside a session, init prints
61
- the one command to run instead. `verity setup` is an alias for the same command.
68
+ A re-run keeps what you chose before: the recorded moments, a kept Standard, and
69
+ anything you set with `verity config`.
62
70
 
63
71
  | Flag | Use |
64
72
  |------|-----|
65
- | `--yes` | Take the recommended answer for every question โ€” no prompts at all (CI, scripts, agents). Includes the GitHub login, whose unattended answer is **skip**: the project stays local-only until you run `verity login`. |
66
- | `--no-setup` | Stop after the deterministic phase; don't launch Claude Code |
67
- | `--no-adopt` | Don't offer the Standard the service already holds for this repo โ€” synthesize a fresh one. Skips the request entirely |
73
+ | `--yes` | Ask nothing (CI, scripts, agents). Sign-in is skipped unless you are signed in already, and the profile is sent only with `--profile send`. |
74
+ | `--profile send\|skip` | Answer the profile question without being asked. `/verity:init` asks in the Claude Code session and passes it down |
75
+ | `--no-adopt` | Don't use the Standard the service holds for this repo: build a new one. Skips the request entirely |
76
+ | `--moments <list>` | Set the moments for this run instead of the default: `stop,pre-commit,pre-push`, or `none` |
77
+ | `--telemetry on\|off` | Turn cost & usage telemetry on or off (init does not ask) |
78
+ | `--untrack-memory` ยท `--untrack-state` | Stop tracking the knowledge graph, or committed Verity state, in git (init does not ask) |
68
79
  | `--force` | Overwrite the installed skills even when they differ |
69
- | `--moments <list>` ยท `--intensity <level>` ยท `--telemetry on\|off` | Answer that question without being asked. `/verity:init` asks in the Claude Code session and passes these down |
70
- | `--untrack-memory` ยท `--untrack-state` | Answer yes to the matching "stop tracking it in git?" question without being asked |
80
+ | `--no-setup` ยท `--intensity` | Accepted and ignored, for old scripts and plugin skills |
81
+
82
+ Press Ctrl-C at any point: every step can run again, so nothing is left
83
+ half-written. `verity setup` is an alias for the same command. Run
84
+ `verity doctor` any time to see prerequisites, the hook wiring, and what is
85
+ still missing.
71
86
 
72
- Run `verity doctor` any time to see prerequisites, which phase is done, the hook
73
- wiring, and what is still missing.
87
+ ### What init reports
88
+
89
+ Once you are signed in, init sends one small event per step to the Verity
90
+ service, so that we can see where setup stops. Each event holds the step, how it
91
+ ended (for the profile step: sent, declined or not asked), and the time since
92
+ init started. A random id links the steps of one run,
93
+ and the events are linked to your account. Init sends no repository name, no
94
+ paths and no machine id.
95
+
96
+ Before you sign in, nothing is sent. The steps wait in `~/.verity/init-trace.json`
97
+ and go with your next signed-in run. A run that is never followed by a sign-in is
98
+ never sent, and its entry is dropped after 30 days. Set `DO_NOT_TRACK=1` to turn
99
+ all of this off. It is also off in CI.
74
100
 
75
101
  ### Output
76
102
 
77
- Human output goes to **stderr**; stdout carries only data (`--json`). Colour, the
78
- wordmark, and the spinners appear only when stderr is a terminal, and honour
79
- `NO_COLOR` and `TERM=dumb`; `FORCE_COLOR=1` forces them on for a pipe that renders
80
- ANSI. In CI, in a pipe, or when init runs inside a Claude Code session you get the
81
- same information as plain lines โ€” no art, no animation, no escape sequences.
103
+ Human output goes to **stderr**; stdout carries only data (`--json`). The
104
+ wordmark, the colours and the motion appear only when stderr is a terminal. In
105
+ CI, in a pipe, or when init runs inside a Claude Code session you get the same
106
+ results as plain lines: no art, no motion, no escape sequences, and no question
107
+ that nobody can answer. `NO_COLOR` and `TERM=dumb` keep the motion and drop the
108
+ colour; `VERITY_REDUCED_MOTION=1` keeps the colour and drops the motion;
109
+ `VERITY_NO_BROWSER=1` stops sign-in from opening a browser.
82
110
 
83
111
  ### Permission denied?
84
112
 
@@ -143,10 +171,9 @@ No re-setup needed: your token, Standard, and run history all carry over.
143
171
  | Command | Description |
144
172
  |---------|-------------|
145
173
  | **Core** | |
146
- | `verity init` | Set up Verity in this project, end to end โ€” questions, wiring, and the Standard (alias: `verity setup`) |
174
+ | `verity init` | Set up Verity in this project: two questions (sign in, send a repo profile), the hooks, and the Standard (alias: `verity setup`) |
147
175
  | `verity doctor` | Prerequisites, setup phase, hook wiring, and what is still missing (`--json` for the machine-readable report) |
148
- | `verity standard synthesize` | Derive the Standard + analysis config from this codebase โ€” no model, no network (`--push`, `--force`) |
149
- | `verity standard synthesize --config-only` | Rewrite only the analysis config, from the Standard already here โ€” the fix for a stale one |
176
+ | `verity standard synthesize` | Derive the Standard from this codebase โ€” no model, no network (`--push`, `--force`). Static analysis is Trivy only and needs no config |
150
177
  | `verity analyze` | Run analysis on changed files (stop hook) |
151
178
  | `verity analyze --mode <mode>` | Force analysis mode (standard/plan/debug/skip) |
152
179
  | `verity review --files <paths>` | On-demand analysis (advisory) |
@@ -167,7 +194,8 @@ No re-setup needed: your token, Standard, and run history all carry over.
167
194
  | `verity logout --others` | Sign out every OTHER machine (e.g. a lost laptop) |
168
195
  | `verity logout --all` | Sign out everywhere, including here |
169
196
  | `verity hooks install` | Wire Claude Code hooks |
170
- | `verity hooks install --moments stop,pre-commit,pre-push` | Change WHEN Verity reviews (what `verity init` asks for) |
197
+ | `verity config moments turn,commit,push` | Change WHEN Verity reviews: each turn, each commit, each push (all three by default; `none` turns them off) |
198
+ | `verity hooks install --moments stop,pre-commit,pre-push` | The same, in the hook names (kept for scripts) |
171
199
  | `verity standard push` | Upload project Standard |
172
200
  | **Knowledge** | |
173
201
  | `verity reflect` | Trigger knowledge extraction for current task |
@@ -177,8 +205,8 @@ No re-setup needed: your token, Standard, and run history all carry over.
177
205
  | `verity memory untrack` | Stop committing `.verity/memory/` โ€” the graph stays on disk and leaves your diffs |
178
206
  | `verity memory track` | Commit the graph on purpose, and record that so nothing offers to change it |
179
207
  | **Formal verification** | |
180
- | `verity config formal push` | Opt this checkout in: at push, one risky changed function may get a Lean model, checked and replayed (see below) |
181
- | `verity config formal off` | Opt out again |
208
+ | `verity config formal push` | Turn it on for this checkout: at push, one risky changed function may get a Lean model, checked and replayed (see below). On by default for a new project |
209
+ | `verity config formal off` | Turn it off |
182
210
  | `verity lean status` / `install` / `remove` | The managed Lean 4 toolchain the models are checked with (โ‰ˆ800 MB download, 2.7 GB on disk) |
183
211
  | `verity prove candidates [paths]` | Rank the riskiest code from git history and shape signals, no model |
184
212
  | `verity prove auto [files]` | Run the push-time phase by hand on the commits ahead of upstream |
@@ -195,7 +223,7 @@ No re-setup needed: your token, Standard, and run history all carry over.
195
223
 
196
224
  | Skill | Description |
197
225
  |-------|-------------|
198
- | `/verity-setup` | Synthesizes the Standard + analysis config (the half of setup that needs a model; `verity init` launches it) |
226
+ | `/verity-setup` | Proposes project-specific `custom_patterns` from the code (optional; `verity init` already derives the Standard) |
199
227
  | `/verity-analyze` | On-demand analysis |
200
228
  | `/verity-status` | Project health dashboard |
201
229
  | `/verity-feedback` | Feedback (general + per-finding) |
@@ -221,9 +249,17 @@ or plain code stops in under a second with a named reason. Counterexamples can
221
249
  only be replayed for **TypeScript, JavaScript and Python**; other languages stop
222
250
  before any model is paid for.
223
251
 
252
+ For a new project, `verity init` turns this on and starts the Lean 4 download
253
+ in the background (โ‰ˆ800 MB, 2.7 GB on disk; `verity lean status` shows the
254
+ progress). Until Lean is ready, a push reports `formal: skipped (no-toolchain:
255
+ Lean installing, 63%)` and the gate decision does not change. Init does not
256
+ start the download in CI (unless `VERITY_LEAN=1`), with `VERITY_NO_LEAN=1`,
257
+ with formal off, or with less than 3.75 GB free. A re-run of init never turns
258
+ formal on.
259
+
224
260
  ```bash
225
- verity config formal push # opt in (verity init asks on an interactive terminal)
226
- verity lean install # the toolchain, once per machine
261
+ verity config formal off # turn it off for this checkout
262
+ verity lean install # the toolchain, if the background download did not run
227
263
  verity prove auto # try it by hand on what is ahead of upstream
228
264
  ```
229
265