Skip to content

feat(release): gen:integrity — signed release-integrity manifest - #27

Closed
BlackChar92 wants to merge 1 commit into
justlend:mainfrom
BlackChar92:feat/release-integrity
Closed

feat(release): gen:integrity — signed release-integrity manifest#27
BlackChar92 wants to merge 1 commit into
justlend:mainfrom
BlackChar92:feat/release-integrity

Conversation

@BlackChar92

Copy link
Copy Markdown
Contributor

Adds npm run gen:integrityintegrity.json: a release-integrity manifest pinning the npm tarball (reproducible npm pack sha512/shasum) and the agent-facing raw files (mcp-api-list.md, README, CHANGELOG, LICENSE, package.json — sha256) to a git commit anchor, with tool-surface counts (98 / 58 read / 40 write / 27 destructive) cross-parsed from the generated catalog.

Design notes:

  • Deterministic: no wall clock (commit date only) — regenerating on an unchanged tree is byte-identical, so CI can enforce freshness the same way as gen:api-list.
  • Not committed: integrity.json(+.asc) are gitignored — a manifest that contained its own commit's hash would chase itself. Generate per release, GPG detach-sign, attach to the GitHub Release.
  • Verified end-to-end locally: idempotent regen ✅, gpg --verify Good signature ✅.

Companion to #26 (catalog freshness gate); together they make the published tool surface tamper-evident.

🤖 Generated with Claude Code

…rator

Generates integrity.json pinning the npm tarball (sha512/shasum via reproducible
npm pack) and the agent-facing raw files (mcp-api-list.md, README, CHANGELOG,
LICENSE, package.json — sha256) to a git commit anchor, with the tool-surface
counts cross-parsed from the generated catalog. Deterministic on an unchanged
tree (no wall clock — commit date only), so a CI freshness check can enforce it
like gen:api-list. The manifest itself is gitignored: it's a release artifact
(generate per release, GPG detach-sign, attach to the GitHub Release), not a
committed file — committing it would chase its own commit hash.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@BlackChar92

Copy link
Copy Markdown
Contributor Author

Withdrawing: release-integrity signing should come from the org's own key / official release pipeline (npm --provenance) rather than a contributor key — keeping this as a local tool for now. The freshness gate in #26 stands on its own.

@BlackChar92
BlackChar92 deleted the feat/release-integrity branch July 16, 2026 05:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant