@caddis/cli 0.4.9 → 0.4.10

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.
@@ -31,7 +31,7 @@ You are a principal engineer doing a focused code review. You read the change an
31
31
  ## Return format (always end with this)
32
32
  ```
33
33
  review:
34
- verdict: approved | changes-requested
34
+ verdict: CLEAN | BLOCKING
35
35
  blocking:
36
36
  - file: <path:line> issue: <what> fix: <concrete suggestion>
37
37
  should_fix:
@@ -40,7 +40,7 @@ review:
40
40
  - file: <path:line> note: <what>
41
41
  good: <one line on what's done well, if anything>
42
42
  ```
43
- `verdict: approved` requires an empty `blocking` list. Be specific with `file:line`. Do not fix; report.
43
+ `verdict: CLEAN` requires an empty `blocking` list. Be specific with `file:line`. Do not fix; report.
44
44
 
45
45
  **Then, as the very last line of your output (nothing after it), emit the machine verdict:**
46
46
  `REVIEW: CLEAN` (empty `blocking` list) or `REVIEW: BLOCKING` (one or more blocking items). Automated
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "caddis",
3
- "version": "1.3.96",
3
+ "version": "1.3.97",
4
4
  "description": "caddis — agent-agnostic dev harness as an Antigravity (agy) plugin: TDD skills + commands, single-sourced with the Claude Code plugin."
5
5
  }
@@ -10,7 +10,7 @@ model change, context pressure, a cheaper lane, or a distracted session — and
10
10
  guarantees, which is worse than reading as advice.
11
11
 
12
12
  The things that actually held under pressure were the ones with exit codes: pytest,
13
- validate_pool, the hooks, oss_review's exit 2.
13
+ validate_pool, the hooks, oss_review's exit 4.
14
14
 
15
15
  So this script measures the ratio of rules that a machine can fail on, to rules that only a
16
16
  model can choose to honour. That number is the health metric for the plugin. It is expected to
@@ -53,10 +53,18 @@ import urllib.error
53
53
  import urllib.request
54
54
  from pathlib import Path
55
55
 
56
+ # ONE SCALE ACROSS caddis (see claude-harness/README.md):
57
+ # 0 clean · 1 blocked · 2 advisory note · 3 could not run · 4 malformed
58
+ # ERROR moved 2 -> 4 on 2026-09-09. It sat on 2, which caddis_gate uses for "proceed, this is
59
+ # worth saying" — the exact opposite, and in the dangerous direction: a caller treating 2 as
60
+ # advisory silently accepts a review that never ran. That is the 2026-08-10 shape, where a stale
61
+ # copy of this file returned CLEAN on a database write path nobody had reviewed.
62
+ # 2 is left FREE here. This tool has no advisory verdict; a slot that means one thing everywhere
63
+ # is worth more than a slot reused for something else.
56
64
  EXIT_CLEAN = 0
57
65
  EXIT_BLOCKING = 1
58
- EXIT_ERROR = 2
59
- EXIT_CONFIG = 3
66
+ EXIT_CONFIG = 3 # could not run: no key, no provider, bad configuration
67
+ EXIT_ERROR = 4 # ran, produced nothing usable: no verdict line, transport failure, unsplittable file
60
68
 
61
69
  # Provider presets — the SINGLE place a renamed model id or moved endpoint is edited. Adding a new
62
70
  # provider (Qwen, a local vLLM, …) is one new row. Callers can always bypass this via env/flags.
@@ -81,7 +81,7 @@ writes. This line used to prefix the flag itself, which turned that into a doubl
81
81
  Optional: `--base-url <url>`, `--model <id>` (env always overrides the preset).
82
82
 
83
83
  **A large diff is batched, not refused.** Over `REVIEW_MAX_DIFF_CHARS` (default 60,000) the tool splits
84
- on whole-file boundaries and reviews each batch, and the verdict is CLEAN only if every batch is. Exit 2
84
+ on whole-file boundaries and reviews each batch, and the verdict is CLEAN only if every batch is. Exit **4**
85
85
  now means the narrower case — a **single file** too big to split, or more batches than the cap. When you
86
86
  see it, the fix is usually to review that one file separately, not to narrow `--range`; don't raise
87
87
  `--max-diff-chars` blind.
@@ -102,7 +102,10 @@ as a diff that silently is not read. Name a provider explicitly only when you ha
102
102
 
103
103
  ## Rules
104
104
  - Read-only second opinion — the tool never edits, commits, or pushes. YOU apply fixes in the main thread.
105
- - Treat exit 2/3 as blocking-unknown, never as approval (the tool is fail-closed by design).
105
+ - Treat exit **3 or 4** as blocking-unknown, never as approval (the tool is fail-closed by
106
+ design). 3 = could not run, 4 = ran and produced nothing usable. **Exit 2 is not
107
+ emitted by this tool** — across caddis 2 always means an advisory note, and a review
108
+ has no advisory verdict.
106
109
  - A different vendor means a different style; weigh its findings on merit, don't cargo-cult them.
107
110
  - **Never use `find`, `Get-ChildItem -Recurse`, or any other filesystem-wide search to locate
108
111
  `oss_review.py`.** Check only the two paths above. On Git Bash under Windows, `find /` (or any
@@ -348,7 +348,7 @@ immediately.
348
348
 
349
349
  | Verdict | Condition | You write |
350
350
  |---|---|---|
351
- | **PASS** | every answer correct, citations check out | a short go-ahead naming the first task |
351
+ | **ACCEPT** | every answer correct, citations check out | a short go-ahead naming the first task |
352
352
  | **ACCEPT WITH CORRECTIONS** | broadly right; one or two facts stale or a citation wrong | the corrections, each with the file that proves it |
353
353
  | **REJECT** | a settled decision misremembered, a withdrawn figure quoted, or a hazard misunderstood | an instruction to re-read named sections and re-answer. **Do not let it start work** |
354
354
 
@@ -383,7 +383,7 @@ Round 1's verdict sets round 2's size:
383
383
 
384
384
  | Round 1 | Round 2 task |
385
385
  |---|---|
386
- | PASS | a normal next item; review the outcome |
386
+ | ACCEPT | a normal next item; review the outcome |
387
387
  | ACCEPT WITH CORRECTIONS | a **small, reversible** item that writes nothing permanent; review closely |
388
388
  | REJECT | no task — re-read and re-answer |
389
389
 
@@ -1,7 +1,7 @@
1
1
  {
2
- "poolVersion": "1.3.96",
2
+ "poolVersion": "1.3.97",
3
3
  "bundles": {
4
- "antigravity-plugin": "1.3.96",
4
+ "antigravity-plugin": "1.3.97",
5
5
  "antigravity-plugin-extras": "1.3.28",
6
6
  "codex": "unknown"
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caddis/cli",
3
- "version": "0.4.9",
3
+ "version": "0.4.10",
4
4
  "description": "Install, update and diagnose the caddis dev harness across every coding agent you use (Claude Code, agy/Antigravity, and more).",
5
5
  "keywords": [
6
6
  "caddis",