# Claims review — 0.2.35

- base: v0.2.34
- head: ee31d7b
- surface: sha256:ad95f3ab81fa4cd74ce025a76e3cc9095ecbc5bfefaace3eec763e809eb7d02b
- verdict: pass
- reviewer: Claude (Opus 5)

Two surfaces changed: `README.md` and `docs/security/NPM-PROVENANCE.md`. Both
changes are corrections of claims that this project's own actions falsified
within hours, which is the pattern worth recording more than the diff.

## Findings

### 1. docs/security/NPM-PROVENANCE.md — corrected, and the correction is the release

- Claim, as of 0.2.34: *"The full path, producing all three, has not run yet."*
- Mechanism: the workflow runs and the release pages.
- Why it fell short: it was true when written and false a few hours later,
  because publishing 0.2.34 ran that path. Verified from the destination: run
  `32298849184` completed every step including the bill of materials; the
  `v0.2.34` release page carries `conarium-ai-core-0.2.34.tgz` (764,893 bytes),
  `.cdx.json` (70,245) and `.tgz.intoto.jsonl` (11,032); the tarball's sha512
  matches the registry's `dist.integrity`; `gh attestation verify` returns 0.
- Disposition: rewritten to separate the two histories — 0.2.33 has two assets
  because its artefacts came from the mode that skips the SBOM, 0.2.34 has three
  — and to end by pointing at the release page rather than at itself. That is
  the only form of the sentence with no expiry date.
- Note on the class: this is the second time in two releases that a sentence
  about what *has not happened yet* went stale. The first was caught by an
  external reviewer, this one by knowing to look. A statement of that shape
  should carry the thing that answers it, not the answer.

### 2. README.md — a badge, and what it is not, in the same paragraph

- Claim: the OpenSSF Best Practices badge is displayed in the badge row.
- Mechanism: `bestpractices.dev` project 14160 — a **self-certification**
  questionnaire, not an assessment by anyone else.
- Why it could fall short: a badge in a row of badges reads as certification. The
  Scorecard badge beside it is machine-measured; this one is us answering 67
  questions about ourselves.
- Disposition: added with the qualification attached rather than in a footnote —
  self-certification not an audit, answers public and falsifiable at project
  14160, 3 of 67 marked not applicable with reasons, and the neighbouring
  Scorecard `Code-Review` score of 0 named in the same paragraph. Accepted.

### 3. The badge answers themselves — one corrected before submission

- Claim: the `test_most` criterion was first answered by asserting the test suite
  covers most of the code.
- Mechanism: a coverage measurement.
- Why it fell short: coverage is not reported as a percentage in this project,
  so the assertion had nothing behind it. It was an easy sentence to write and
  nobody outside would have checked it.
- Disposition: rewritten before the form was submitted to describe what is
  exercised — the policy gate, masking, the receipt chain and verifier, the
  reconciliation tool, every documented CLI surface, and the documented quickstart
  on three Node majors — and to say the ratio is not measured. Recorded here
  because the badge answers are a claim surface that lives outside this
  repository and no gate here can see them.

## What did not change

The engine, the receipt format, the policy gate, the reconciliation tool and the
conformance vectors are untouched. `run-checks` and the suite pass unchanged.
