feat: publish @stellar-registry/perch to npm + verified testnet deployment map - #76
Merged
Conversation
Remove private:true, bump to 0.1.1, and ship a real build: tsc emits ESM + .d.ts to dist/ (tsconfig.build.json), exports/types/files point at dist, and prepack builds so the published tarball never contains raw src. zod and @noble/hashes stay regular deps. Adds the npm README, LICENSE, and a seeded CHANGELOG (regenerated by the release-pr job on the next bump). Smoke-tested: npm pack output installs in a scratch ESM consumer and reproduces the golden vectors (canonical JSON + doc_hash for both ci-publish fixtures) plus a builder round-trip.
The 0.1.2 release PR bumped the manifest without regenerating the lockfile; any cargo invocation rewrites it as a side effect.
Mirrors the contract convention for the TypeScript package: detect-releases tags perch-js-v<version> when packages/perch-js's manifest version has no tag yet, and a new npm-publish job then npm-publishes that tagged commit with --provenance. The release-pr job proposes perch-js bumps + CHANGELOG from conventional commits via git-cliff (tag-pattern perch-js-v*, scoped to packages/perch-js), using npm version so package-lock stays in sync. The publish step needs the NPM_TOKEN repo secret (not added here); until it exists the npm-publish job fails and can simply be re-run after the secret lands — same tag, same sha.
Read-only probes (the ones bootstrap-testnet.sh uses) confirm every bootstrap phase is live: registries, verifier, compiler, interpreter, the smart account with its applied policy doc, and a proven CI publish path (interpreter 0.1.2, 2026-09-04). Notes the un-rotated registry managers and the smart account's registry-name gap as observations.
…ionMap, dead output
Contributor
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Two deliverables making perch consumable as a real dependency for nido:
1. npm publishability of
packages/perch-js(@stellar-registry/perch0.1.1)private: true; added a real build:tsc -p tsconfig.build.jsonemits ESM +.d.tstodist/, withmain/types/exports/filespointing atdistandpublishConfig.access: public.preparescript builds on git installs (nido pins a git rev at this head until the npm release lands),prepackbuilds on publish.zod+@noble/hashesstay regular deps.npm run buildso a declaration-emit failure can never burn a release tag.npm packtarball installs in a scratch ESM consumer and reproduces both golden vectors byte-for-byte (canonical JSON +doc_hashforci-publishandci-publish-delegated) plus a builder round-trip; types resolve under bothbundlerandnodenextresolution.2. Release chain (mirrors the existing git-cliff/tag convention)
detect-releasesalso tagsperch-js-v<version>when the manifest version was bumped in a merged PR; a newnpm-publishjob publishes that tagged commit withnpm publish --provenance.release-prjob proposes future perch-js bumps + changelog via git-cliff (--tag-pattern perch-js-v.*, scoped topackages/perch-js/**), bumping throughnpm versionso the lockfile stays in sync.NPM_TOKENrepo secret (an npm automation token with publish rights on@stellar-registry). On merge, this version tagsperch-js-v0.1.1; if the secret is absent the npm-publish job fails and can simply be re-run after the secret lands — same tag, same sha.3. Canonical testnet deployment — verified live (
docs/testnet-deployment.md)Read-only probes (the ones
scripts/bootstrap-testnet.shuses) confirm every bootstrap phase is live; nothing needs--execute: theunverified/perch,stateless, andconstructorlessregistries, the ed25519 verifier, doc-compiler, interpreter (v0.1.0 name-salted; v0.1.2 published by CI on 2026-09-04, proving the whole CI publish chain), and the smart account with its applied policy doc (rulesadmin+ci-publish). Observations recorded: registry managers are still the human deployer key (phase-6set_managerrotation never ran — hardening, not a consumption blocker), and the smart account is not name-resolvable asperch-accountin the registry (usevars.PERCH_AUTHOR_ADDRESS).Also syncs the stale
Cargo.lockthe perch-interpreter 0.1.2 release PR left behind.Validation
Ran through the no-mistakes pipeline: the review step passed (its findings — CI build coverage,
preparescript, dangling declaration maps, doc wording, dead workflow output — are fixed in the final commit), and the pipeline's test agent validated tarball install, runtime + type consumption, the git-install path, and live testnet reads. The pipeline could not complete end-to-end due to an internal test-analyzer tool bug (two identical failures unrelated to the change), so this PR is delivered directly per the captain's decision.actionlint+zizmorclean on the workflow; all 27 vitest tests andtsc --noEmitgreen.