@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/LICENSE +656 -10
- package/README.md +92 -14
- package/dist/{chunk-QQVCIG4N.js → chunk-A7NZKJ5H.js} +1377 -2708
- package/dist/index.js +39 -13
- package/dist/mcp/index.js +217 -217
- package/package.json +12 -8
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
|
-
|
|
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
|
-
|
|
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-
|
|
70
|
-
|
|
71
|
-
|
|
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)
|
|
94
|
-
GitHub Action's optional
|
|
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,
|
|
121
|
-
|
|
122
|
-
|
|
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
|
|
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
|
|
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
|