@cejel/cejel 0.1.3 → 0.1.4

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
@@ -41,14 +41,15 @@ product, and you can falsify it in ten seconds:
41
41
  docker run --rm --network=none -v "$PWD:/w" -w /w -v "$PWD/cejel:/cejel:ro" debian:stable-slim /cejel .
42
42
  ```
43
43
 
44
- **npm.**
44
+ **npm (scoped package).**
45
45
 
46
46
  ```bash
47
- npx @cejel/cejel .
47
+ npx --yes --package @cejel/cejel cejel .
48
48
  ```
49
49
 
50
- > **On the name.** npm rejects the unscoped `cejel` package name as too similar to an
51
- > existing package (`level`). The published package is the scoped `@cejel/cejel`.
50
+ The package is published under the `@cejel` scope while the unscoped name is under npm
51
+ registry review. The installed executable remains `cejel`. For a global install, run
52
+ `npm install --global @cejel/cejel`, then invoke `cejel .`.
52
53
 
53
54
  **GitHub Action** — score every PR and publish the badge:
54
55
 
@@ -70,6 +71,49 @@ Released binaries: `cejel-Darwin-arm64`, `cejel-Linux-x86_64`. A Homebrew tap an
70
71
  remaining architectures are in progress; they are not listed here because they do not exist
71
72
  yet.
72
73
 
74
+ ## Leaderboard
75
+
76
+ This repo ships the [Cejel OSS trust leaderboard](./leaderboard/leaderboard.md): the whole
77
+ corpus scored and published in the open — elite OSS projects, Cejel itself, and the private
78
+ studio monorepo Cejel was built inside — with a per-repository evidence report for every
79
+ row under [`leaderboard/reports/`](./leaderboard/reports/). The board is also hosted at
80
+ [cejel.dev](https://cejel.dev). Every score on this board is produced by the same sealed
81
+ public scorer used by `npx cejel .` — check out the source commit printed in the
82
+ report, run the tool, and you will get this number. A required guard does exactly that for
83
+ every corpus row and compares score, verdict, measured coverage, and evidence. No private
84
+ domain collector contributes to any published score, ours included; nobody is exempt.
85
+
86
+ ### Redaction policy
87
+
88
+ A path is published exactly when the reader can check it. Every public repository on the
89
+ board cites full evidence paths and line numbers, everywhere, in every artifact — a
90
+ certificate whose evidence you cannot open is not evidence. The two private-repository
91
+ entries (this monorepo's own transparency entry, and Cejel's own source sub-package inside
92
+ it) never cite a source path, anywhere, in any field or format — but the finding itself, its
93
+ dimension, status, score, and content hash always survive; only the location is withheld,
94
+ marked uniformly as "path withheld — private repository". Redaction removes a location, never
95
+ a fact: a private repository failing its own check still shows up on its certificate, by
96
+ name. The v3 repository scanner marks B1 and B5 not applicable for every repository,
97
+ including ours; it does not accept structured substrate evidence for them. They remain
98
+ defined for other rubric inputs, while the repository ranking excludes them fail-closed.
99
+ Nobody is scored on evidence the public scanner cannot collect.
100
+
101
+ ### Known false positives (fixed before publishing)
102
+
103
+ Calibrating a rubric against real, elite repositories surfaces mistakes; the record is part
104
+ of the trust claim, not something to bury. Two dimensions produced a punitive score for the
105
+ *absence* of a ratable surface rather than a real weakness, and both are fixed:
106
+ Django was flagged critical on dependency hygiene for using version ranges instead of exact
107
+ pins — normal, deliberate practice for a library, not an app; the rubric now scores
108
+ dependency hygiene against archetype-appropriate norms. OSSF Scorecard — Google's own
109
+ supply-chain security auditing tool — was flagged critical on audit-trail completeness for
110
+ publishing release notes via GitHub Releases instead of a committed `CHANGELOG.md`; a
111
+ repository with no ratable audit surface now returns "insufficient data" (excluded from the
112
+ composite) instead of a punitive score. The board also publishes a measured-coverage
113
+ indicator per row: a score reflects only its *measured* dimensions, and a row scored on fewer
114
+ than half of its applicable dimensions is shown as unranked rather than ordered against
115
+ better-evidenced rows.
116
+
73
117
  ## Usage
74
118
 
75
119
  ```bash
@@ -80,11 +124,18 @@ Scores the current directory with sensible defaults: no flags, no signup, fully
80
124
  Prints a concise terminal certificate and writes to `.cejel/`:
81
125
 
82
126
  - `report.json` — the full structured report
127
+ - `attestation.json` — an unsigned in-toto statement binding the report digest, repository
128
+ revision, rubric, and scored-or-abstained outcome; ready for an external signer
83
129
  - `certificate.html` — a self-contained HTML certificate (no external assets)
84
130
  - `badge.json` — a [shields.io endpoint](https://shields.io/badges/endpoint-badge) payload
85
131
  - `badge.svg` — a static, self-contained trust-score badge
86
132
  - `summary.json` — a compact digest (score, verdict, top findings)
87
133
 
134
+ The attestation is deliberately explicit about its assurance level: Cejel creates the
135
+ statement, but it does not pretend to be an independent signer. Until a customer, reviewer,
136
+ or provenance system signs it, `assurance.status` is `unsigned` and `issuer` is
137
+ `self-generated`. An abstained scan carries only the refusal reason, never a numeric score.
138
+
88
139
  ### Flags
89
140
 
90
141
  - `<path>` — repo to score (default: current directory)
@@ -227,7 +278,7 @@ Add it to an MCP client config:
227
278
  "mcpServers": {
228
279
  "cejel": {
229
280
  "command": "npx",
230
- "args": ["-y", "--package=@cejel/cejel", "cejel-mcp"]
281
+ "args": ["-y", "--package=cejel", "cejel-mcp"]
231
282
  }
232
283
  }
233
284
  }
@@ -238,9 +289,9 @@ The server exposes one tool and two resources:
238
289
  - `scan` — input `{ path, format? }`; scores the repository at `path` and returns the trust
239
290
  cert as JSON (`format: "summary"`, the default, is the compact digest; `format: "json"` is
240
291
  the full report, identical to the CLI's `report.json`).
241
- - `cejel-cejel://last-scan/certificate.html` and `cejel-cejel://last-scan/badge.svg` — the
292
+ - `cejel://last-scan/certificate.html` and `cejel://last-scan/badge.svg` — the
242
293
  HTML certificate and SVG badge for the most recent scan (the URI scheme derives from the
243
- npm package name, `@cejel/cejel` → `cejel-cejel`).
294
+ npm package name).
244
295
 
245
296
  Like the CLI, scoring over MCP is fully offline: no network calls, no telemetry, no signup,
246
297
  and the server writes no files.
@@ -248,10 +299,24 @@ and the server writes no files.
248
299
  ## What "offline" means here
249
300
 
250
301
  Scoring a repo — `cejel .` itself, and the Action's scoring step — makes zero network
251
- calls: no telemetry, no signup, no model call. Fetching the `@cejel/cejel` package the
302
+ calls: no telemetry, no signup, no model call. Fetching the `cejel` package the
252
303
  first time (like any npm-distributed CLI, including this Action's own dependency install)
253
304
  does need network; that's a one-time install cost, not part of the scoring guarantee.
254
305
 
306
+ ## Help validate Cejel
307
+
308
+ Cejel does not collect telemetry. External validation is therefore opt-in and inspectable:
309
+
310
+ - [Report a calibration result](https://github.com/BargLabs/cejel/issues/new?template=calibration.yml)
311
+ when a score, finding, evidence pointer, or refusal is wrong. The form asks permission before
312
+ a correction is added to the public error ledger.
313
+ - [Join a pack design-partner pilot](https://github.com/BargLabs/cejel/issues/new?template=pack-interest.yml)
314
+ for the Quant or Healthcare Pack. Both remain pilot surfaces until their domain-specific
315
+ calibration gates pass.
316
+
317
+ Submit only public or redacted evidence. Never put credentials, proprietary strategy code,
318
+ patient data, or protected health information in a GitHub issue.
319
+
255
320
  ## The public leaderboard: what we redact, what we exclude, and where we were wrong
256
321
 
257
322
  We publish a trust board scoring a corpus of well-known open-source repositories alongside