@cejel/cejel 0.4.6 → 0.4.8

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/README.md CHANGED
@@ -32,12 +32,26 @@ certificate + badge over all of them. See "Aggregate your scanners" below.
32
32
  The public CLI default is `witan-rubric-v17-2026-07-24`, the last rubric to clear Cejel's
33
33
  preregistered 200-repository untouched holdout. Published calibration figures apply only to that
34
34
  exact rubric and frozen evaluation population. Later rubrics—including the current v18 through
35
- v22 prospective series—are available only to explicit evaluation harnesses. Prospective rubrics
35
+ v23 prospective series—are available only to explicit evaluation harnesses. Prospective rubrics
36
36
  inherit none of v17's calibration figures; a bounded paired repair or corpus-delta result can
37
37
  validate its stated construction without transferring precision, recall, or false-positive-rate
38
38
  claims. Promoting a prospective rubric to the public default requires a fresh authenticated
39
39
  untouched holdout, every preregistered gate to pass, and a separately recorded promotion decision.
40
40
 
41
+ ### Measured recall (bounded)
42
+
43
+ > **Measured recall (bounded).** Cejel publishes no general detection-recall figure. On a frozen,
44
+ > preregistered, in-scope held-out fixture set of 30 named defects, the released public default
45
+ > (v17, tree `a857f0b3`) cited **16/30**, two-sided 95% Wilson interval **[36.1%, 69.8%]**; the
46
+ > prospective v22 detector (commit `8a289ea`, tree `10960a03`) cited **24/30**, two-sided 95%
47
+ > Wilson interval **[62.7%, 90.5%]**. Same fixtures, same partition, same controls in both runs.
48
+ > v22 is prospective and not the shipped default. Full preregistrations and results:
49
+ > `docs/experiments/in-scope-detection-recall-v3-result-2026-08-09.md` and
50
+ > `docs/experiments/in-scope-detection-recall-v4-result-2026-08-11.md`.
51
+
52
+ The [defect-class census](docs/defect-class-census.md) publishes the coverage-breadth
53
+ boundary—which defect classes any shipped rule targets—and is explicitly not a recall claim.
54
+
41
55
  ## Install
42
56
 
43
57
  No account, no key, no signup.
@@ -79,7 +93,7 @@ if (-not $expected -or $actual -ne $expected.ToLowerInvariant()) {
79
93
  ```
80
94
 
81
95
  > **Windows signing status:** `cejel-Windows-x86_64.exe` is intentionally unsigned in
82
- > 0.4.6 and may trigger Microsoft SmartScreen. The release build removes Node's inherited
96
+ > 0.4.8 and may trigger Microsoft SmartScreen. The release build removes Node's inherited
83
97
  > signature before SEA injection and fails unless Windows reports the result as `NotSigned`;
84
98
  > it does not ship an invalid signature. Before running it, verify `SHA256SUMS` and the
85
99
  > GitHub build-provenance attestation. Each binary also has an attached SPDX SBOM and an
@@ -102,7 +116,7 @@ docker run --rm --network=none -v "$PWD:/w" -w /w -v "$PWD/cejel:/cejel:ro" debi
102
116
  npx @cejel/cejel@latest .
103
117
  ```
104
118
 
105
- > **Distribution note:** Cejel `0.4.6` is the coordinated release version for npm,
119
+ > **Distribution note:** Cejel `0.4.8` is the coordinated release version for npm,
106
120
  > standalone binaries, Docker/OCI, GitHub Action, Homebrew, and MCP Registry.
107
121
 
108
122
  `npx` can reuse a stale cached package. Force the current npm release with the `@latest`
@@ -164,16 +178,16 @@ gh attestation verify ./cejel-Windows-x86_64.exe -R BargLabs/cejel
164
178
  This is cryptographically signed provenance. It is distinct from Apple Developer ID or
165
179
  Microsoft Authenticode code-signing.
166
180
 
167
- **Docker / OCI.** The current container release is `0.4.6`:
181
+ **Docker / OCI.** The current container release is `0.4.8`:
168
182
 
169
183
  ```bash
170
- docker run --rm -i -v "$PWD:/workspace:ro" ghcr.io/barglabs/cejel:0.4.6
184
+ docker run --rm -i -v "$PWD:/workspace:ro" ghcr.io/barglabs/cejel:0.4.8
171
185
  ```
172
186
 
173
187
  The image defaults to `cejel-mcp` over stdio. To use the CLI instead:
174
188
 
175
189
  ```bash
176
- docker run --rm -v "$PWD:/workspace:ro" --entrypoint cejel ghcr.io/barglabs/cejel:0.4.6 .
190
+ docker run --rm -v "$PWD:/workspace:ro" --entrypoint cejel ghcr.io/barglabs/cejel:0.4.8 .
177
191
  ```
178
192
 
179
193
  The OCI image carries an SBOM, maximum-mode build provenance, and a signed registry
@@ -277,10 +291,20 @@ prints that boundary on every successful verification.
277
291
  - `--rubric-pin <version>` — Explicit opt-in only: pin an alternate rubric instead of the
278
292
  calibrated public default. It
279
293
  accepts the calibrated version or any published prospective rubric
280
- (`witan-rubric-v18-prospective-*` through `v22`) and fails closed, naming what was accepted, on
281
- anything else. Omit this flag for the calibrated result every default scan produces — a
282
- prospective pin carries no precision/recall claim, and the terminal certificate, HTML
283
- certificate, and Markdown report all state that plainly whenever one is used.
294
+ (`witan-rubric-v18-prospective-*` through `v23`) and fails closed, naming what was accepted, on
295
+ anything else. `v23` is prospective and uncalibrated, like every rubric after v17: the public
296
+ default (`WITAN_LAST_CALIBRATED_RUBRIC_VERSION`) is still `witan-rubric-v17-2026-07-24`, and v23
297
+ inherits none of v17's precision, recall, or false-positive-rate figures. It inherits v22
298
+ detector/scoring behavior and adds bounded A1 coverage-flag recognition (#276) plus per-signal
299
+ (rather than per-criterion) abstention for A1's `coverage_percent`/`non_hollow_test_share`
300
+ metrics (#278); every other criterion still abstains
301
+ criterion-wide under v23, same as v17/v22. Omit this flag for the calibrated result every
302
+ default scan produces — a prospective pin carries no precision/recall claim, and the terminal
303
+ certificate, HTML certificate, and Markdown report all state that plainly whenever one is used.
304
+ - `--run-attempt <n>` — record which CI run attempt produced this certificate, surfaced on the
305
+ human-readable certificate and as an additive-optional `predicate.githubRunAttempt` field on
306
+ `attestation.json`. The GitHub Action sets this automatically from `GITHUB_RUN_ATTEMPT`; omit it
307
+ for a local scan or any other CI — Cejel never fabricates or defaults a run attempt.
284
308
  - `--quiet` — suppress the terminal certificate (files are still written)
285
309
  - `-h`, `--help` — print usage and exit successfully
286
310
  - `-v`, `--version` — print the version derived from the package manifest and exit successfully
@@ -495,7 +519,7 @@ The OCI image is an alternative when Docker is the preferred execution boundary.
495
519
  the host path with the repository OpenClaw should allow Cejel to read:
496
520
 
497
521
  ```bash
498
- npx -y openclaw@latest mcp set cejel-oci '{"command":"docker","args":["run","--rm","-i","-v","/absolute/path/to/repo:/workspace:ro","ghcr.io/barglabs/cejel:0.4.6"]}'
522
+ npx -y openclaw@latest mcp set cejel-oci '{"command":"docker","args":["run","--rm","-i","-v","/absolute/path/to/repo:/workspace:ro","ghcr.io/barglabs/cejel:0.4.8"]}'
499
523
  npx -y openclaw@latest mcp doctor cejel-oci --probe
500
524
  ```
501
525
 
@@ -5,20 +5,20 @@ import {
5
5
  deriveProductIdentity,
6
6
  runCejelScan,
7
7
  serializeWitanReport
8
- } from "../chunk-VEJLHO5F.js";
8
+ } from "../chunk-6R3VJGJ2.js";
9
9
  import {
10
10
  listCejelLlmPackFiles
11
- } from "../chunk-QRWLHTGR.js";
12
- import "../chunk-BZXBLDCJ.js";
11
+ } from "../chunk-ERNYMFH4.js";
12
+ import "../chunk-KNQBI3IX.js";
13
13
  import {
14
14
  external_exports
15
- } from "../chunk-Y6NO5HAI.js";
15
+ } from "../chunk-J6R5OHN7.js";
16
16
  import {
17
17
  init_esm_shims,
18
18
  readRepoText,
19
19
  recordContentSkip,
20
20
  recordFilesystemSkip
21
- } from "../chunk-H55KECVT.js";
21
+ } from "../chunk-V3B2V4WA.js";
22
22
 
23
23
  // src/calibration/llm-detector.ts
24
24
  init_esm_shims();