@cejel/cejel 0.1.8 → 0.1.9

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
@@ -70,7 +70,7 @@ The npm package is scoped as `@cejel/cejel`; its executable remains the short co
70
70
  **GitHub Action** — score every PR and publish the badge:
71
71
 
72
72
  ```yaml
73
- - uses: BargLabs/cejel/action@v0.1.8
73
+ - uses: BargLabs/cejel/action@v0.1.9
74
74
  with:
75
75
  min-score: "2.5" # optional: fail the build below this
76
76
  ```
@@ -99,21 +99,21 @@ Microsoft Authenticode code-signing.
99
99
  **Docker / OCI.** The same MCP server is published as a non-root, multi-platform image:
100
100
 
101
101
  ```bash
102
- docker run --rm -i -v "$PWD:/workspace:ro" ghcr.io/barglabs/cejel:0.1.8
102
+ docker run --rm -i -v "$PWD:/workspace:ro" ghcr.io/barglabs/cejel:0.1.9
103
103
  ```
104
104
 
105
105
  The image defaults to `cejel-mcp` over stdio. To use the CLI instead:
106
106
 
107
107
  ```bash
108
- docker run --rm -v "$PWD:/workspace:ro" --entrypoint cejel ghcr.io/barglabs/cejel:0.1.8 .
108
+ docker run --rm -v "$PWD:/workspace:ro" --entrypoint cejel ghcr.io/barglabs/cejel:0.1.9 .
109
109
  ```
110
110
 
111
111
  Beginning with v0.1.7, the standard CLI identity flags are also available directly, while an
112
112
  invocation without arguments continues to start the MCP server:
113
113
 
114
114
  ```bash
115
- docker run --rm ghcr.io/barglabs/cejel:0.1.8 --version
116
- docker run --rm ghcr.io/barglabs/cejel:0.1.8 --help
115
+ docker run --rm ghcr.io/barglabs/cejel:0.1.9 --version
116
+ docker run --rm ghcr.io/barglabs/cejel:0.1.9 --help
117
117
  ```
118
118
 
119
119
  The OCI image carries an SBOM, maximum-mode build provenance, and a signed registry
@@ -199,6 +199,40 @@ This verifies the report schema and the report-to-attestation digest, repository
199
199
  timestamp, and outcome binding. It does not verify a signature or signer identity; the command
200
200
  prints that boundary on every successful verification.
201
201
 
202
+ ### Experimental Free LLM Pack
203
+
204
+ The Free LLM Pack is an opt-in, pre-release static check for observable application-integrity
205
+ and evaluation-hygiene weaknesses in supported LLM application code. It is still being calibrated;
206
+ its results are experimental until the frozen untouched-cohort release gate reaches GO.
207
+
208
+ ```bash
209
+ ./cejel scan . --pack llm
210
+ ```
211
+
212
+ The command writes the ordinary Cejel artifacts unchanged and adds `llm-report.json`,
213
+ `llm-attestation.json`, and `llm-certificate.html`. The pack runs locally and offline: it does
214
+ not call a model, execute the target application, or send source, prompts, or findings over the
215
+ network. Its findings and status never alter the base Cejel score or verdict.
216
+
217
+ The alpha recognizes fixture-backed JavaScript/TypeScript patterns around OpenAI, Anthropic,
218
+ Vercel AI SDK, and named model-call shapes. It records LangChain imports as integration metadata,
219
+ but a LangChain import alone does not establish v1 applicability or framework-specific coverage.
220
+ Python coverage is narrower: it recognizes official OpenAI and Anthropic SDK call/response shapes
221
+ for direct unsafe sinks, narrowly fixture-backed action validation and configured self-judge
222
+ checks, unconditional model loops, and secret-like environment values in model requests. See
223
+ [Free LLM Pack usage and limitations](./docs/packs/free-llm-usage.md) for the eight rule IDs,
224
+ artifact verification, exact boundaries, and current limitations.
225
+
226
+ The pack does **not** measure a model's hallucination rate, prove that an application is safe, or
227
+ provide runtime enforcement. Its attestation is self-generated and unsigned unless an external
228
+ signer binds an identity to it.
229
+
230
+ The first frozen 24+24-repository calibration cycle ended in an
231
+ [evidence-integrity NO-GO](./calibration/llm/reviews/v1.2-integrity-no-go-2026-07-23.md). The
232
+ required actual-run compatibility record was not retained, so precision, recall, and
233
+ false-positive rate are not estimable and Cejel makes no measured performance claim from that
234
+ cycle.
235
+
202
236
  ### Flags
203
237
 
204
238
  - `<path>` — repo to score (default: current directory)
@@ -210,6 +244,9 @@ prints that boundary on every successful verification.
210
244
  - `--ingest <file|glob>` — fold another scanner's output into the score (repeatable). Accepts
211
245
  SARIF, OpenSSF Scorecard JSON, or the generic Cejel external-signal shape — format is
212
246
  auto-detected. See "Aggregate your scanners" below.
247
+ - `--pack llm` — run the opt-in experimental Free LLM Pack and write its separate evidence,
248
+ attestation, and HTML certificate artifacts. Repeatable pack syntax is supported; selecting the
249
+ same pack more than once still runs it once.
213
250
  - `--quiet` — suppress the terminal certificate (files are still written)
214
251
  - `-h`, `--help` — print usage and exit successfully
215
252
  - `-v`, `--version` — print the version derived from the package manifest and exit successfully
@@ -324,7 +361,7 @@ a configurable `min-score` threshold. The scoring step makes no network calls an
324
361
  secrets.
325
362
 
326
363
  ```yaml
327
- - uses: BargLabs/cejel/action@v0.1.8
364
+ - uses: BargLabs/cejel/action@v0.1.9
328
365
  with:
329
366
  min-score: '2.5' # optional; omit to never fail the check
330
367
  ```
@@ -485,6 +522,13 @@ scoring tool that has not been checked:
485
522
  detected even though `test.js` was present at the repository root. That was a detection gap
486
523
  in Cejel, not evidence about the repository. Rubric v6 recognizes AVA's `test.js` and
487
524
  `test-*.js` conventions; a regression fixture preserves the correction.
525
+ - **A category with no measured dimensions looked like a real failing `0.0`.** Version 0.1.9
526
+ labels that state `not measured` in the HTML certificate and prints the measured-coverage
527
+ context. A genuine measured zero remains `0.0`; JSON report, summary, and badge contracts are
528
+ unchanged.
529
+ - **A saturated metric rendered a broken-looking numerator larger than its denominator.**
530
+ Version 0.1.9 leads with the scoring cap and keeps the observation explicit — for example,
531
+ `2 signals (capped; 4 raw)` — instead of printing `4/2 signals`.
488
532
 
489
533
  Every one was a trust failure produced by *us* — false alarms about other people's code,
490
534
  silent omissions, inconsistent presentation, or a home-only scoring path — and we would