@cejel/cejel 0.4.5 → 0.4.7
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 +45 -11
- package/dist/calibration/llm-detector.js +5 -5
- package/dist/{chunk-RW6YJVHZ.js → chunk-EP7YYWEP.js} +2 -2
- package/dist/{chunk-EPK7UTIK.js → chunk-OIGCYULH.js} +1 -1
- package/dist/{chunk-4IXESHG7.js → chunk-QTLLASOO.js} +1775 -381
- package/dist/{chunk-KGFGX3TP.js → chunk-UYJBSQCV.js} +1 -1
- package/dist/{chunk-EW6NAHE4.js → chunk-XHAETB7N.js} +1 -1
- package/dist/{chunk-R4DPQLS2.js → chunk-ZNVILRHK.js} +60 -3
- package/dist/index.js +39 -9
- package/dist/mcp/index.js +4 -4
- package/dist/packs/d-series/index.js +4 -4
- package/dist/packs/decision-contracts/index.js +3 -3
- package/package.json +1 -1
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
|
-
|
|
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.
|
|
96
|
+
> 0.4.7 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.
|
|
119
|
+
> **Distribution note:** Cejel `0.4.7` 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`
|
|
@@ -139,6 +153,9 @@ The npm package is scoped as `@cejel/cejel`; its executable remains the short co
|
|
|
139
153
|
min-score: "2.5" # optional: fail the build below this
|
|
140
154
|
```
|
|
141
155
|
|
|
156
|
+
For an executed public example that binds a release artifact to the same commit named by its
|
|
157
|
+
Cejel certificate, see [Certified releases with GitHub build provenance](./docs/certified-release-example.md).
|
|
158
|
+
|
|
142
159
|
**From source** — it is AGPL and it runs offline, so reading it is rather the point:
|
|
143
160
|
|
|
144
161
|
```bash
|
|
@@ -161,16 +178,16 @@ gh attestation verify ./cejel-Windows-x86_64.exe -R BargLabs/cejel
|
|
|
161
178
|
This is cryptographically signed provenance. It is distinct from Apple Developer ID or
|
|
162
179
|
Microsoft Authenticode code-signing.
|
|
163
180
|
|
|
164
|
-
**Docker / OCI.** The current container release is `0.4.
|
|
181
|
+
**Docker / OCI.** The current container release is `0.4.7`:
|
|
165
182
|
|
|
166
183
|
```bash
|
|
167
|
-
docker run --rm -i -v "$PWD:/workspace:ro" ghcr.io/barglabs/cejel:0.4.
|
|
184
|
+
docker run --rm -i -v "$PWD:/workspace:ro" ghcr.io/barglabs/cejel:0.4.7
|
|
168
185
|
```
|
|
169
186
|
|
|
170
187
|
The image defaults to `cejel-mcp` over stdio. To use the CLI instead:
|
|
171
188
|
|
|
172
189
|
```bash
|
|
173
|
-
docker run --rm -v "$PWD:/workspace:ro" --entrypoint cejel ghcr.io/barglabs/cejel:0.4.
|
|
190
|
+
docker run --rm -v "$PWD:/workspace:ro" --entrypoint cejel ghcr.io/barglabs/cejel:0.4.7 .
|
|
174
191
|
```
|
|
175
192
|
|
|
176
193
|
The OCI image carries an SBOM, maximum-mode build provenance, and a signed registry
|
|
@@ -274,10 +291,20 @@ prints that boundary on every successful verification.
|
|
|
274
291
|
- `--rubric-pin <version>` — Explicit opt-in only: pin an alternate rubric instead of the
|
|
275
292
|
calibrated public default. It
|
|
276
293
|
accepts the calibrated version or any published prospective rubric
|
|
277
|
-
(`witan-rubric-v18-prospective-*` through `
|
|
278
|
-
anything else.
|
|
279
|
-
|
|
280
|
-
|
|
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.
|
|
281
308
|
- `--quiet` — suppress the terminal certificate (files are still written)
|
|
282
309
|
- `-h`, `--help` — print usage and exit successfully
|
|
283
310
|
- `-v`, `--version` — print the version derived from the package manifest and exit successfully
|
|
@@ -348,6 +375,7 @@ Three ways a scanner's output gets ingested:
|
|
|
348
375
|
|
|
349
376
|
```json
|
|
350
377
|
{
|
|
378
|
+
"version": "1.0",
|
|
351
379
|
"tool": "my-scanner",
|
|
352
380
|
"signals": [
|
|
353
381
|
{
|
|
@@ -370,6 +398,12 @@ Three ways a scanner's output gets ingested:
|
|
|
370
398
|
(0–1, default `0.5`) bounds how much this signal can move that dimension; `severity` is
|
|
371
399
|
`critical` | `warning` | `info`; `location` is optional.
|
|
372
400
|
|
|
401
|
+
The version field is required. Cejel rejects unversioned generic documents and unknown major
|
|
402
|
+
versions rather than guessing. See the [generic ingest contract](docs/ingest-contract.md), its
|
|
403
|
+
[published JSON Schema](docs/schemas/cejel-ingest-v1.schema.json), and the
|
|
404
|
+
[synthetic CI heal-log mapping](docs/heal-log-mapping.md). Output-field stability and version
|
|
405
|
+
routing are documented in [format stability](docs/format-stability.md).
|
|
406
|
+
|
|
373
407
|
## Displaying the trust badge
|
|
374
408
|
|
|
375
409
|
Endpoint JSON (host `badge.json` anywhere static — a repo file, a gist, GitHub Pages — and
|
|
@@ -485,7 +519,7 @@ The OCI image is an alternative when Docker is the preferred execution boundary.
|
|
|
485
519
|
the host path with the repository OpenClaw should allow Cejel to read:
|
|
486
520
|
|
|
487
521
|
```bash
|
|
488
|
-
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.
|
|
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.7"]}'
|
|
489
523
|
npx -y openclaw@latest mcp doctor cejel-oci --probe
|
|
490
524
|
```
|
|
491
525
|
|
|
@@ -5,20 +5,20 @@ import {
|
|
|
5
5
|
deriveProductIdentity,
|
|
6
6
|
runCejelScan,
|
|
7
7
|
serializeWitanReport
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-QTLLASOO.js";
|
|
9
9
|
import {
|
|
10
10
|
listCejelLlmPackFiles
|
|
11
|
-
} from "../chunk-
|
|
12
|
-
import "../chunk-
|
|
11
|
+
} from "../chunk-EP7YYWEP.js";
|
|
12
|
+
import "../chunk-OIGCYULH.js";
|
|
13
13
|
import {
|
|
14
14
|
external_exports
|
|
15
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-UYJBSQCV.js";
|
|
16
16
|
import {
|
|
17
17
|
init_esm_shims,
|
|
18
18
|
readRepoText,
|
|
19
19
|
recordContentSkip,
|
|
20
20
|
recordFilesystemSkip
|
|
21
|
-
} from "../chunk-
|
|
21
|
+
} from "../chunk-ZNVILRHK.js";
|
|
22
22
|
|
|
23
23
|
// src/calibration/llm-detector.ts
|
|
24
24
|
init_esm_shims();
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
describeGitFailure,
|
|
6
6
|
execGit,
|
|
7
7
|
isExpectedGitAbsence
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-OIGCYULH.js";
|
|
9
9
|
import {
|
|
10
10
|
init_esm_shims
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-ZNVILRHK.js";
|
|
12
12
|
|
|
13
13
|
// src/packs/llm/files.ts
|
|
14
14
|
init_esm_shims();
|