@cejel/cejel 0.1.3 → 0.1.5

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
@@ -20,6 +20,10 @@ certificate + badge over all of them. See "Aggregate your scanners" below.
20
20
  > monorepo — the ten-product studio it was built inside — which it currently scores
21
21
  > 3.1/4.0 ("Conditional"). We score ourselves before asking you to score yourself.
22
22
 
23
+ The reusable Barg Labs listing mark is kept at [`brand/barg-icon.png`](./brand/barg-icon.png)
24
+ for directories and registries that accept a custom image. GitHub Actions Marketplace uses
25
+ GitHub's predefined `action.yml` branding icons instead.
26
+
23
27
  ## Install
24
28
 
25
29
  No account, no key, no signup.
@@ -27,7 +31,15 @@ No account, no key, no signup.
27
31
  **Single-file binary.** One file. No Node, no npm, no `node_modules`, nothing installed.
28
32
 
29
33
  ```bash
30
- curl -fsSL https://github.com/BargLabs/cejel/releases/latest/download/cejel-$(uname -s)-$(uname -m) -o cejel
34
+ asset="cejel-$(uname -s)-$(uname -m)"
35
+ curl -fsSL "https://github.com/BargLabs/cejel/releases/latest/download/$asset" -o "$asset"
36
+ curl -fsSL https://github.com/BargLabs/cejel/releases/latest/download/SHA256SUMS -o SHA256SUMS
37
+ if command -v sha256sum >/dev/null; then
38
+ grep " $asset$" SHA256SUMS | sha256sum -c -
39
+ else
40
+ grep " $asset$" SHA256SUMS | shasum -a 256 -c -
41
+ fi
42
+ mv "$asset" cejel
31
43
  chmod +x cejel
32
44
  ./cejel .
33
45
  ```
@@ -47,8 +59,7 @@ docker run --rm --network=none -v "$PWD:/w" -w /w -v "$PWD/cejel:/cejel:ro" debi
47
59
  npx @cejel/cejel .
48
60
  ```
49
61
 
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`.
62
+ The npm package is scoped as `@cejel/cejel`; its executable remains the short command `cejel`.
52
63
 
53
64
  **GitHub Action** — score every PR and publish the badge:
54
65
 
@@ -66,9 +77,52 @@ pnpm install && pnpm build
66
77
  node dist/index.js .
67
78
  ```
68
79
 
69
- Released binaries: `cejel-Darwin-arm64`, `cejel-Linux-x86_64`. A Homebrew tap and the
70
- remaining architectures are in progress; they are not listed here because they do not exist
71
- yet.
80
+ Released binaries: `cejel-Darwin-arm64`, `cejel-Darwin-x86_64`, `cejel-Linux-aarch64`, and
81
+ `cejel-Linux-x86_64`. The release also carries `SHA256SUMS`; each binary is executed against
82
+ the source build and with networking denied before attachment.
83
+
84
+ ## Leaderboard
85
+
86
+ This repo ships the [Cejel OSS trust leaderboard](./leaderboard/leaderboard.md): the whole
87
+ corpus scored and published in the open — elite OSS projects, Cejel itself, and the private
88
+ studio monorepo Cejel was built inside — with a per-repository evidence report for every
89
+ row under [`leaderboard/reports/`](./leaderboard/reports/). The board is also hosted at
90
+ [cejel.dev](https://cejel.dev). Every score on this board is produced by the same sealed
91
+ public scorer used by `npx @cejel/cejel .` — check out the source commit printed in the
92
+ report, run the tool, and you will get this number. A required guard does exactly that for
93
+ every corpus row and compares score, verdict, measured coverage, and evidence. No private
94
+ domain collector contributes to any published score, ours included; nobody is exempt.
95
+
96
+ ### Redaction policy
97
+
98
+ A path is published exactly when the reader can check it. Every public repository on the
99
+ board cites full evidence paths and line numbers, everywhere, in every artifact — a
100
+ certificate whose evidence you cannot open is not evidence. The two private-repository
101
+ entries (this monorepo's own transparency entry, and Cejel's own source sub-package inside
102
+ it) never cite a source path, anywhere, in any field or format — but the finding itself, its
103
+ dimension, status, score, and content hash always survive; only the location is withheld,
104
+ marked uniformly as "path withheld — private repository". Redaction removes a location, never
105
+ a fact: a private repository failing its own check still shows up on its certificate, by
106
+ name. The v3 repository scanner marks B1 and B5 not applicable for every repository,
107
+ including ours; it does not accept structured substrate evidence for them. They remain
108
+ defined for other rubric inputs, while the repository ranking excludes them fail-closed.
109
+ Nobody is scored on evidence the public scanner cannot collect.
110
+
111
+ ### Known false positives (fixed before publishing)
112
+
113
+ Calibrating a rubric against real, elite repositories surfaces mistakes; the record is part
114
+ of the trust claim, not something to bury. Two dimensions produced a punitive score for the
115
+ *absence* of a ratable surface rather than a real weakness, and both are fixed:
116
+ Django was flagged critical on dependency hygiene for using version ranges instead of exact
117
+ pins — normal, deliberate practice for a library, not an app; the rubric now scores
118
+ dependency hygiene against archetype-appropriate norms. OSSF Scorecard — Google's own
119
+ supply-chain security auditing tool — was flagged critical on audit-trail completeness for
120
+ publishing release notes via GitHub Releases instead of a committed `CHANGELOG.md`; a
121
+ repository with no ratable audit surface now returns "insufficient data" (excluded from the
122
+ composite) instead of a punitive score. The board also publishes a measured-coverage
123
+ indicator per row: a score reflects only its *measured* dimensions, and a row scored on fewer
124
+ than half of its applicable dimensions is shown as unranked rather than ordered against
125
+ better-evidenced rows.
72
126
 
73
127
  ## Usage
74
128
 
@@ -79,19 +133,28 @@ yet.
79
133
  Scores the current directory with sensible defaults: no flags, no signup, fully offline.
80
134
  Prints a concise terminal certificate and writes to `.cejel/`:
81
135
 
82
- - `report.json` — the full structured report
136
+ - `report.json` — the full structured report; scored runs carry numeric headline scores and a
137
+ score-band `verdict`, while abstained runs carry `null` scores and `verdict: "insufficient_source"`
138
+ - `attestation.json` — an unsigned in-toto statement binding the report digest, repository
139
+ revision, rubric, and scored-or-abstained outcome; ready for an external signer
83
140
  - `certificate.html` — a self-contained HTML certificate (no external assets)
84
141
  - `badge.json` — a [shields.io endpoint](https://shields.io/badges/endpoint-badge) payload
85
142
  - `badge.svg` — a static, self-contained trust-score badge
86
143
  - `summary.json` — a compact digest (score, verdict, top findings)
87
144
 
145
+ The attestation is deliberately explicit about its assurance level: Cejel creates the
146
+ statement, but it does not pretend to be an independent signer. Until a customer, reviewer,
147
+ or provenance system signs it, `assurance.status` is `unsigned` and `issuer` is
148
+ `self-generated`. An abstained scan carries only the refusal reason, never a numeric score.
149
+
88
150
  ### Flags
89
151
 
90
152
  - `<path>` — repo to score (default: current directory)
91
153
  - `--out <dir>` — where to write report/certificate/badge files (default: `.cejel`;
92
154
  `--out-dir` remains available as a compatibility alias)
93
- - `--min-score <n>` — exit non-zero if the overall score is below `n` (0–4); used by the
94
- GitHub Action's optional threshold gate
155
+ - `--min-score <n>` — exit non-zero if the overall score is below `n` (0–4), or if Cejel
156
+ abstains and therefore cannot evaluate the threshold; used by the GitHub Action's optional
157
+ threshold gate
95
158
  - `--ingest <file|glob>` — fold another scanner's output into the score (repeatable). Accepts
96
159
  SARIF, OpenSSF Scorecard JSON, or the generic Cejel external-signal shape — format is
97
160
  auto-detected. See "Aggregate your scanners" below.
@@ -117,9 +180,10 @@ honestly rather than guessing:
117
180
  - **Not yet recognised** — other ecosystems, including COBOL, Fortran, and MATLAB. Cejel does
118
181
  not score these as "source" at all: a repository with zero
119
182
  recognised-extension files gets the `unrecognised_ecosystem` archetype, an explicit
120
- `insufficient_data` status, and **no verdict** — never a confident numeric score, and never
121
- the word "Unverified" for the sole reason that cejel cannot read the language. The
122
- certificate states plainly which of the 11 dimensions were and were not measured.
183
+ `insufficient_data` criterion status, `null` headline scores, and an explicit machine verdict
184
+ of `insufficient_source` — never a numeric score-band verdict, and never the word
185
+ "Unverified" for the sole reason that cejel cannot read the language. The certificate states
186
+ plainly which of the 11 dimensions were and were not measured.
123
187
 
124
188
  This list will grow. It will never be "any codebase" — that claim is a promise the parser
125
189
  cannot keep, and an honest support matrix is worth more than a marketing line the code
@@ -238,9 +302,9 @@ The server exposes one tool and two resources:
238
302
  - `scan` — input `{ path, format? }`; scores the repository at `path` and returns the trust
239
303
  cert as JSON (`format: "summary"`, the default, is the compact digest; `format: "json"` is
240
304
  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
305
+ - `cejel://last-scan/certificate.html` and `cejel://last-scan/badge.svg` — the
242
306
  HTML certificate and SVG badge for the most recent scan (the URI scheme derives from the
243
- npm package name, `@cejel/cejel` → `cejel-cejel`).
307
+ npm package name).
244
308
 
245
309
  Like the CLI, scoring over MCP is fully offline: no network calls, no telemetry, no signup,
246
310
  and the server writes no files.
@@ -252,6 +316,20 @@ calls: no telemetry, no signup, no model call. Fetching the `@cejel/cejel` packa
252
316
  first time (like any npm-distributed CLI, including this Action's own dependency install)
253
317
  does need network; that's a one-time install cost, not part of the scoring guarantee.
254
318
 
319
+ ## Help validate Cejel
320
+
321
+ Cejel does not collect telemetry. External validation is therefore opt-in and inspectable:
322
+
323
+ - [Report a calibration result](https://github.com/BargLabs/cejel/issues/new?template=calibration.yml)
324
+ when a score, finding, evidence pointer, or refusal is wrong. The form asks permission before
325
+ a correction is added to the public error ledger.
326
+ - [Join a pack design-partner pilot](https://github.com/BargLabs/cejel/issues/new?template=pack-interest.yml)
327
+ for the Quant or Healthcare Pack. Both remain pilot surfaces until their domain-specific
328
+ calibration gates pass.
329
+
330
+ Submit only public or redacted evidence. Never put credentials, proprietary strategy code,
331
+ patient data, or protected health information in a GitHub issue.
332
+
255
333
  ## The public leaderboard: what we redact, what we exclude, and where we were wrong
256
334
 
257
335
  We publish a trust board scoring a corpus of well-known open-source repositories alongside