cejel

/ "SEH-jel" /
For engineers

The claim surface behind the certificate.

Every number on cejel.dev traces to a command below. Distribution routes, the calibration record, rubric versions, source verification, and the changelog — read or re-run any of it yourself.

← Back to cejel.dev · Repository Evidence Review (Barg Labs)

Current · v0.6.10 npm, Docker / OCI, the Official MCP Registry, GitHub Releases, standalone binaries, Homebrew, and the GitHub Action now point to the current release. Verify the source record →

Measured — published either way

Rubric v17 passed a preregistered, untouched holdout.

Cejel free-core rubric v17 was scored on a frozen, untouched 200-repository open-source calibration it never trained on. We committed to publishing the result either way, before we saw it.

96.43%finding precision · 95% lower bound 94.16%. This is not detection precision — two different things on this site are called precision, compared side by side.Measured
95.64%rubric-agreement recall · 95% lower bound 92.23%. This is not detection recall — four different things on this site are called recall, compared side by side.Measured
0.66%worst-case false-positive rate · 95% upper bound 1.10%Measured

Every criterion and abstention gate passed. Scope: public repositories on the v17 free-core rule set — this measures whether a codebase's claims are backed by inspectable evidence, not vulnerability detection. Separate calibrations (e.g. the Quant pack) carry their own claims.

The defect-class census publishes the coverage-breadth boundary: which defect classes any shipped rule targets. It is not a recall claim.

Why v17 is still the public default.

Prospective v19 changes only B4's numeric freshness reference from scan wall clock to the scanned commit's year. Its preregistered paired rescore completed all 24 rows with zero score, status, coverage, placement, or non-B4 changes. That GO published the delta; it did not authorize replacing holdout-calibrated v17. The current leaderboard rows were generated by executing published @cejel/cejel@0.6.3 (last regenerated 2026-10-11) with no rubric pin, so they run the calibrated v17 default; prospective rubrics remain explicit-only.

Read the calibration record →

Read the complete v19 paired delta →

Measured — the calibrated default

What a detection-recall measurement on rubric v17 returned in cycle 13.

v17 in-scope detection recall: 41.1% (95% CI 20.6–67.8%), measured on a 193-repository untouched cohort under a preregistered protocol and design-weighted to 3,163 eligible public repositories; measurement valid, no decidability ceiling tripped.

Detection precision 64.3% (95% CI 38.4–87.6%). Abstention share 11.4% (95% CI 3.6–20.0%).

Instrument. Measured with the published @cejel/cejel@0.4.11 (gitHead d30ac4ba). Later releases have changed scoring under v17, including the evidence fix in (#433), so this figure does not describe the current release; a re-measurement on the current release is owed.

Rater. Labelled by one rater, who authored the rubric. On 40 cases re-labelled after a washout of at least seven days, he agreed with his own first labels on 85% of cases (Cohen’s kappa 0.73).

No independent second rater adjudicated cycle 13. This figure is the operator’s agreement with his own labels on a 40-case subsample re-labelled after a washout of at least 7 days. It measures consistency, not independence from the detector; the independent-rater requirement is not met for this cycle.

Low agreement means the recall interval understates total uncertainty, because it contains sampling variance only.

Scope. v17 is the calibrated default. This is a measurement publication. The same cycle measured the prospective v23 beside it; under the signed promotion policy v23 was not promoted, and v17 remains the default.

Read the cycle-13 record →

Two different things on this site are called precision

They count different things, under different raters and instruments. Neither is a restatement of the other, and neither can be substituted for the other in either direction.

Quantity
Finding precision, July holdout — 96.43% (95% lower bound 94.16%)
What it answers
Whether the rule set’s findings are backed by bounded, inspectable static evidence, on the preregistered holdout.
Record
free-core v50 terminal result
Quantity
Detection precision, cycle 13 — 64.3% (95% CI 38.4–87.6%)
What it answers
The share of (repository, rule) pairs where v17 reports the defect, design-weighted to 3,163 repositories, in which the defect is present at the pinned revision.
Record
cycle-13 record

Different measurements; the gap between them is not yet explained.

Measured — a prospective rubric, not the default

What a detection-recall measurement on rubric v22 actually returned.

v22 in-scope detection recall: 34.0% (95% CI 21.0-53.5%), measured across seven rules on a 200-repository untouched cohort under a preregistered protocol; measurement valid, no decidability ceiling tripped (aggregate control insufficient-context 7.94% against a 20% ceiling).

False-positive rate 0.77% (95% CI 0-2.1%).

Instrument. Measured on an engine built from source at commit e434a40e, between releases 0.4.5 and 0.4.6; no published package reproduces this instrument. The measurement predates cejel #276, #277 and the 0.4.8 abstention-scoring change, so a re-measurement on the current release is owed and this figure does not describe it.

Scope. v22 is prospective and explicit-only: it is not what a default scan runs, and it is not what produced any certificate or any row on the published board. v17 is the calibrated default. This is a measurement publication and not a promotion — the signed cycle-12 promotion decision is NO-GO and v22 stays unreleased. v17’s cycle-13 figure is not comparable with v22’s 34.0% on its 200-repository untouched cohort: different rubric, cohort, rule set and instrument; the two intervals overlap almost entirely.

Four different things on this site are called recall

They come from different instruments, different populations and different rubric versions. None of them is a restatement of another, and none can be substituted for another in either direction.

Quantity
Rubric-agreement recall — 95.64% (95% lower bound 92.23%)
Rubric version
v17
Status
Calibrated default — the rubric an ordinary scan runs.
Population
A frozen, preregistered, untouched 200-repository open-source holdout, scored finding by finding.
Not this
Not detection recall. It does not say what share of a repository’s real defects Cejel finds.
Record
free-core v50 calibration record
Quantity
Detection recall, fixture-scoped — v17 cited 16/30 (95% Wilson [36.1%, 69.8%]); v22 cited 24/30 ([62.7%, 90.5%])
Rubric version
v17 and v22, measured as a pair
Status
v17 calibrated default; v22 prospective and explicit-only.
Population
A frozen, preregistered, in-scope held-out fixture set of 30 named defects.
Not this
Not a cohort-scale figure. Thirty fixtures is a small instrument, which is why both intervals are wide.
Record
bounded in-scope recall, in the cejel README
Quantity
v22 in-scope detection recall — 34.0% (95% CI 21.0-53.5%), paired always with a false-positive rate of 0.77% (95% CI 0-2.1%)
Rubric version
v22
Status
Prospective and explicit-only. Not the default; promotion is NO-GO.
Population
Seven rules on a 200-repository untouched cohort, under a preregistered protocol.
Not this
Not rubric agreement, and not a v17 figure.
Record
v22 detection-recall record
Quantity
v17 in-scope detection recall, cycle 13 — 41.1% (95% CI 20.6–67.8%)
Rubric version
v17
Status
Calibrated default — the rubric an ordinary scan runs. Measured with the published 0.4.11, not the current release.
Population
A 193-repository untouched cohort under a preregistered protocol, design-weighted to 3,163 eligible public repositories.
What it answers
The share of in-scope defects present in the repositories that v17 detects.
Not this
Not rubric agreement. Not comparable with v22’s 34.0%: different rubric, cohort, rule set and instrument; the two intervals overlap almost entirely.
Record
cycle-13 record

Each figure answers its own question on its own instrument. None of the four stands in for another, and no two of them form a trend.

Read the v22 detection-recall record →

Read the preregistered estimation protocol →

Read the estimation result →

Available wherever you work

Cejel is published across the command line, CI, containers, and MCP discovery surfaces. Each card names the exact version or installation route it serves.

Distribution note

v0.6.10 is current on npm, Docker / OCI, the Official MCP Registry, GitHub Releases, standalone binaries, Homebrew, and the GitHub Action v1 source route below. Every row was read or executed live at the timestamp shown; no prior release result was copied forward.

What each route serves today

This table records a live check on 2026-11-04. It distinguishes an attested artifact from a reference to one. Consumer tools are pinned in the linked workflow: Node 24.15.0, npm/npx 11.17.0, pnpm 11.21.0, Bun 1.3.14, GitHub CLI 2.97.0, Git 2.50.1, and Docker Buildx 0.34.1.

Surface or routeVersion served todayCarries provenance?Command that proved itRoute check
npm package0.6.10Yes — the published npm attestation recordnpx --yes npm@11.17.0 view @cejel/cejel@0.6.10 version gitHead dist.attestations --jsonnpm record · checked 2026-11-04
npx, pinned0.6.10Yes — the published npm attestation recordnpx --yes @cejel/cejel@0.6.10 --versionconsumer run · checked 2026-11-04
npx, latest0.6.10Yes — the published npm attestation recordnpx --yes @cejel/cejel@latest --versionconsumer run · checked 2026-11-04
npx, unpinned0.6.10Yes — the published npm attestation recordnpx --yes @cejel/cejel --versionconsumer run · checked 2026-11-04; pin 0.6.10 for reproducibility
pnpm dlx, pinned0.6.10Yes — the published npm attestation recordnpx --yes pnpm@11.21.0 dlx @cejel/cejel@0.6.10 --versionconsumer run · checked 2026-11-04
pnpm dlx, unpinned0.6.8 from a fresh resolutionYes — the published npm attestation recordnpx --yes pnpm@11.21.0 dlx @cejel/cejel --versionconsumer run · checked 2026-11-04; pnpm release-age policy observed
bunx, pinned0.6.10Yes — the published npm attestation recordBun 1.3.14: bunx @cejel/cejel@0.6.10 --versionconsumer run · checked 2026-11-04
Docker / OCI0.6.10Yes — GitHub-hosted attestation names e3f1a047fbd263d93b39b1a1434af34d751dec30…Docker Buildx 0.34.1: docker buildx imagetools inspect ghcr.io/barglabs/cejel:0.6.10release-chain readback · checked 2026-11-04 · sha256:9dff91f6eee17acab1d30bc945f74710de36ca87e5850bb7b0541d4a9c3d435d
Official MCP Registryv0.6.10 via immutable OCI digestYes — the live record names ghcr.io/barglabs/cejel@sha256:9dff91f6eee17acab1d30bc945f74710de36ca87e5850bb7b0541d4a9c3d435dcurl -sS 'https://registry.modelcontextprotocol.io/v0.1/servers/io.github.BargLabs%2Fcejel/versions/latest'live registry record · checked 2026-11-04 · isLatest: true
GitHub Releasesv0.6.10 publishedYes — release includes the Sigstore provenance bundleGitHub CLI 2.97.0: gh release view v0.6.10 --repo BargLabs/cejel --json isDraft,publishedAt,assetsrelease record · checked 2026-11-04 · published 2026-11-04T18:51:49Z · 12 assets
Standalone binaries + SHA256SUMS0.6.10 · five targetsYes — release carries per-asset SBOMs, checksums, and signed provenance over the checksum setgh release download v0.6.10 --repo BargLabs/cejel --pattern SHA256SUMSpublished checksums · checked 2026-11-04
Windows standalone binary0.6.10 · x86_64Release carries cejel-v0.6.10-provenance.sigstore.json plus SHA256SUMS; the guarded build verifies the executable is intentionally not code-signedGitHub CLI 2.97.0: gh release download v0.6.10 --repo BargLabs/cejel --pattern cejel-Windows-x86_64.exe --pattern SHA256SUMSfresh native Windows stranger-check · checked 2026-11-04 · exit 0 · binary SHA-256 c033c6e36e189ff7d89f2926ffaa5e0600027bd8999148586488d2d7bf0f9bd2 · report parity c7e0e6550bf9357e23618920018be38d3c05bd15c8b775db6be88f3bbb8553ce
Homebrew0.6.10Checksums in the live tap formula match the GitHub Release digestsGitHub CLI 2.97.0: gh api 'repos/BargLabs/homebrew-tap/contents/Formula/cejel.rb?ref=main'tap commit 7fb00c73fff18a2d868c7f2ae72a4e65ee841c1b · checked 2026-11-04 · consumer-routes check passed
GitHub Action root @v0.6.100.6.10 consumer runtimeImmutable source-tag route; not an artifact-provenance surfaceuses: BargLabs/cejel@v0.6.10consumer run · checked 2026-11-04
GitHub Action root @main0.6.10 consumer runtimeFloating source route; not an artifact-provenance surfaceuses: BargLabs/cejel@mainconsumer run · checked 2026-11-04
GitHub Action action@v10.6.10 consumer runtimeFloating compatible-v1 source route; not an artifact-provenance surfaceuses: BargLabs/cejel/action@v1consumer run · checked 2026-11-04
SmitheryDirectory record; no separate Cejel artifactNo — anonymous discovery references the published server; connecting requires an accountnpx --yes @smithery/cli@latest mcp search cejel --jsonanonymous stranger-check · checked 2026-11-04 · listed; unauthenticated add stopped at the login boundary
OpenClaw MCP0.6.10 through the npm packageYes — the published npm attestation recordnpx --yes openclaw@latest mcp add cejel --command npx --arg -y --arg --package=@cejel/cejel@latest --arg cejel-mcpNode 22 + 24 stranger-check · checked 2026-11-04 · add and probe passed on Node 24; Node 22.23.2 failed the client engine requirement

Pinned and unpinned package-client routes were executed independently. The three Action rows read the runtime version from each produced attestation; they do not claim artifact provenance for source references. Smithery's anonymous boundary is recorded as a boundary, not upgraded to a successful authenticated install.

Source verification

Read the source record before relying on a release.

For the v0.6.10 npm and OCI release, Cejel’s report.json and summary.json are byte-identical across runs on the same commit. The independently verified OCI provenance record names commit e3f1a047fbd263d93b39b1a1434af34d751dec30.

The npm attestation endpoint answered for this version on 2026-11-04. Read its source identity independently of the OCI record.

The OCI image has separately verified provenance. The MCP Registry accepts an OCI digest reference, which provides provenance by reference; Cejel’s current record names the immutable v0.6.10 image digest.

Read the current MCP Registry record:

curl -sS 'https://registry.modelcontextprotocol.io/v0.1/servers/io.github.BargLabs%2Fcejel/versions/latest'

Check the Registry’s accepted OCI digest-reference form:

curl -sS https://raw.githubusercontent.com/modelcontextprotocol/registry/main/internal/validators/registries/oci.go |
  rg 'registry/namespace/image@sha256:digest'

npm · @cejel/cejel@0.6.10

Read the package metadata, then fetch npm’s published attestation record:

npm view @cejel/cejel@0.6.10 --json
curl -s "https://registry.npmjs.org/-/npm/v1/attestations/@cejel%2fcejel@0.6.10"

The npm attestation endpoint answered for this version on 2026-11-04. Read its source identity independently of the OCI record.

Docker / OCI · ghcr.io/barglabs/cejel:0.6.10

Fetch the GitHub-hosted provenance bundle for the image digest and read the source it names:

gh api 'repos/BargLabs/cejel/attestations/sha256:9dff91f6eee17acab1d30bc945f74710de36ca87e5850bb7b0541d4a9c3d435d' --jq '.attestations[].bundle.dsseEnvelope.payload' |
  tr -d '\n' | base64 -D | jq '{source: .predicate.buildDefinition.resolvedDependencies}'

The returned source record names the v0.6.10 tag and commit e3f1a047fbd263d93b39b1a1434af34d751dec30.

Inspect the tagged source →

One certificate, all the evidence

Your scanners find issues. Cejel decides what they mean.

Cejel runs its own deterministic, offline repository checks and issues an evidence-bound certificate. It can also fold in findings you already have — SARIF reports (Semgrep, CodeQL, Snyk, Trivy, or Codex Security), OpenSSF Scorecard, or any internal tool mapped to Cejel's documented JSON signal contract — into that one verifiable result. The scanners find; Cejel certifies, and abstains when the evidence does not support a verdict.

Cejel deterministic checks+SARIF or signal JSON (optional)+ OpenSSF Scorecard (optional)→One evidence-bound certificate
npx @cejel/cejel@0.6.10 . --ingest results.sarif --ingest scorecard.json

Offline, deterministic, inspectable. No model call, no source upload. View the generic JSON contract →

Changelog

v0.6.10 · November 4, 2026

Changed, under every rubric: a scan whose git history Cejel could not read gives no score. A shallow clone, or a checkout whose history depth Cejel cannot read, now abstains under v17, the default, as it has under v27 since 0.6.9: no score and no verdict, labelled “Unrated: shallow clone” or “Unrated: history depth unknown”, with the instruction to run git fetch --unshallow or check out with fetch-depth: 0. A directory with no .git, such as an uploaded snapshot or an archive export, is “Unrated: no git history”. Each criterion is still read and shown. Before, v17 scored a depth-1 clone, on which A2 cannot see a secret committed and later deleted, so a shallow clone could score higher than the full clone of the same commit and pass a --min-score gate the full clone fails. This is visible to every default user of the GitHub Action, because actions/checkout makes a shallow clone unless fetch-depth: 0 is set. BargLabs/cejel/action@v1 now declares the limited, limitation-count and limitations outputs the root action declares, and an Unrated run sets limited to true. This change leaves a complete clone’s score exactly as before, byte for byte, under v17 and v27.

Added: a plain-language first page. certificate.html now opens with a verdict line and four lists in plain words: what holds, what is wrong, what is not known, and what to check next, with a line saying what the result does not cover (Cejel does not run the code or its tests). Each item links to its source further down. An area that was not examined, or that the report says could not be fully read, is listed as not known, never as holding. The lists come from report.json alone; the terminal prints the four headings after the verdict, and summary.json gains one key, plainSummary. The certificate below the first page is unchanged apart from the anchor ids the links point to, and report.json, attestation.json, scores and verdicts are byte-identical for the same input, which tests pin against 644 renders captured before the change.

Changed, under the prospective v27 rubric only: A1 and B3 read more of what CI actually runs. A1 places every pytest collection hook that touches items in one of three outcomes (deselects everything, puts the items back, or not read and named), reads the pytest runs, options and configuration search pytest itself uses, through nox, tox, make, just and hatch, and names a run it cannot read instead of rating its files hollow. B3 credits a check before a publish only where it follows the check to a known test runner, or a lint form that fails on a finding, with flags and an environment known not to change what runs. Measured on 393 synthetic repositories: v17 to v26 byte-identical, and v27 never above v17. v27 stays opt-in through --rubric-pin, the default stays v17, and it carries no precision, recall or calibration claim; no holdout or calibration ran.

Fixed: the timing guard that stopped the 0.6.9 npm publish. A guard that times a v27 scan of very long CI lines against a 2,000 ms budget measured 2,063 to 2,165 ms on GitHub’s runners and failed the verify step of the 0.6.9 npm publish before the publish step ran. The shell-word scanner it exercised now compares character codes and copies the characters it keeps a run at a time; locally the guard’s scan fell from 650 ms to 520 ms, with the budget unchanged. A scaling check that could fail on a loaded host now times alternating pairs in CPU time (#642). No report, score, note or fingerprint changes under any rubric. The published leaderboard, scored from full-history clones, is not re-run for this release and declares a scorer version pin at 0.6.3.

Read what’s new → · Release notes and artifacts →

Rubric versions

Every certificate names the rubric version that produced it — so you can see exactly what you got. Certificates stay valid under the rubric that issued them; a recalibration does not invalidate an older one.

RubricStatusWhat changed
v17Current defaultArchetype-aware calibration; abstains instead of scoring absent evidence. Passed a preregistered, untouched 200-repository holdout (96.43% finding precision / 95.64% rubric-agreement recall / 0.66% false-positive rate). This is not detection precision — two different things on this site are called precision — and not detection recall — four different things on this site are called recall, compared side by side.
v9Prior defaultProcess/CI-weighted scoring with calibrated pinned-dependency guidance. Tended to read clean libraries low when a checkout lacked CI or history — the bias v17 corrects.

Verified standalone binaries

Version 0.6.10 is published on the canonical GitHub Release. Each public binary was executed against the source build and run with networking denied before publication, and the Windows and Linux arm64 assets were separately re-verified as downloaded — the same way a stranger downloads them — on a real Windows runner and a real (non-emulated) Linux aarch64 runner.

The Windows executable is not code-signed. Windows SmartScreen will show an "unrecognized publisher" warning the first time you run it — that warning is expected, not a sign of tampering. What you can check instead of a publisher signature: the SHA-256 checksum and the signed Sigstore provenance attestation below, which show the file is byte-for-byte what this release published and how it was built. Neither is code signing, and neither is a claim that Microsoft, Apple, or any other authority has signed or vetted this binary.

Download SHA256SUMS · Download signed provenance · View the successful guarded build

set -eu
asset="cejel-$(uname -s)-$(uname -m)"
curl -fsSLO "https://github.com/BargLabs/cejel/releases/download/v0.6.10/$asset"
curl -fsSLO https://github.com/BargLabs/cejel/releases/download/v0.6.10/SHA256SUMS
if command -v sha256sum >/dev/null; then
  grep "  $asset$" SHA256SUMS | sha256sum -c -
else
  grep "  $asset$" SHA256SUMS | shasum -a 256 -c -
fi
chmod +x "$asset" && "./$asset" .
Published SHA-256 digests
00650b4d0aa58c902a8c2c2e92f1151eda2fb24bae926b030043f0606d8bc0b3  cejel-Darwin-arm64
e7a8ba2add5bdcc85a8c49a99528ec8ed58e743b3f9290993add15e7cb4d86e8  cejel-Darwin-x86_64
4a624b1248075aae977ac10ca2870aa6a4db3a8b3042c7c95845842046b08125  cejel-Linux-aarch64
6146624cb840413c944aec12bc0de9b78a8488a502d474a99e3ae0b54aefb8dc  cejel-Linux-x86_64
c033c6e36e189ff7d89f2926ffaa5e0600027bd8999148586488d2d7bf0f9bd2  cejel-Windows-x86_64.exe

Don't take "offline" on trust — turn your network off and run it anyway.

It will still score your repo and write you a certificate.

The leaderboard

Scores restored — 2026-08-19.

The republication condition was met. Every row now published was regenerated by executing @cejel/cejel@0.6.3 end to end through npx on 2026-10-11, with default settings, calibrated rubric v17, no rubric pin, and no internal engine in the path. The board retains the complete 2026-08-18 withdrawal record and marks it resolved.

The board publishes the package spec, pinned repository commits, and exact reproduction recipe beside the restored results.

Read the restored board →