Release And Verification
August 4, 2026 · View on GitHub
Reporecall releases are managed through release-please.
Day to day:
- Merge
feat:andfix:changes tomain. - The release-please workflow maintains a release PR.
- Merging the release PR creates a GitHub release.
- The publish workflow publishes the npm package from the release event.
Before pushing or publishing, run:
make ci-precheck
The CI and publish gates run:
npm cinpm run lintnpm test -- --runnpm run buildnpm run smokenpm audit --omit=dev --audit-level=highnpm pack --dry-run
Do not soft-fail security, test, build, or packaging gates.
Two audits, because they measure different trees
npm audit at the repo root does not tell you what a user gets. The root
package.json carries an overrides block, and that block is published — you
can read it in the installed package.json. But npm honors overrides only from
the root project being installed, never from an installed dependency. Our tree
therefore resolves the pinned versions while a consumer's tree resolves the
unpinned ones, and the repo can report zero advisories while a fresh
npm install @proofofwork-agency/reporecall reports several.
That is not hypothetical. It was true through v0.9.1 and went unnoticed because
scripts/packed-demo.mjs — the only step that installs the tarball the way a user
would — passed --no-audit. npm run demo:packed now audits that install root
and prints the counts on every release, so the gap cannot become invisible again.
It fails only on critical, because a high with no upstream fix is a disclosure
problem rather than something a release can solve.
Known consumer advisories
As of v0.9.1: 3 high, 0 critical.
@huggingface/transformers depends on sharp ^0.34.5, and every sharp below
0.35.0 inherits four libvips CVEs
(GHSA-f88m-g3jw-g9cj). npm
reports no fix available, and no currently released upstream version changes
that: @huggingface/transformers 4.2.0, the latest, still requires
sharp ^0.34.5. Bumping our dependency — including across the 3.x→4.x major —
would not clear the advisory.
Reporecall's entire use of that library is one call site,
pipeline("feature-extraction", …) in src/indexer/local-embedder.ts. No
Reporecall code path passes an image to transformers, imports RawImage, or
constructs a processor, and sharp is reached only through transformers'
image-decoding path. That is why we consider the CVEs unreachable in this usage —
argued from that call site rather than from a proof that libvips can never be
entered. Either way they will appear in your npm audit, which deserves to be
said out loud rather than discovered.
If your organization gates on npm audit, pin sharp yourself:
{ "overrides": { "sharp": "0.35.3" } }
That is exactly what this repo does, and it is why the root audit is clean.
Revisit when @huggingface/transformers widens its sharp range.