Skip to content

[notme-18450e] feat(dpop): publish to npmjs.org as notme-dpop (anonymous install)#45

Merged
jamestexas merged 1 commit into
mainfrom
feat/publish-dpop-npmjs
Jul 23, 2026
Merged

[notme-18450e] feat(dpop): publish to npmjs.org as notme-dpop (anonymous install)#45
jamestexas merged 1 commit into
mainfrom
feat/publish-dpop-npmjs

Conversation

@jamestexas

Copy link
Copy Markdown
Contributor

Moves the SDK off GitHub Packages, where it briefly shipped as @agentic-research/dpop@0.1.0.

Why

GitHub Packages requires authentication to install even public packages — verified directly: 401 anonymous, 403 with a token lacking read:packages. npmjs.org returns 200 unauthenticated for contrast.

That put a token requirement on every consumer: cloister CI, canonical-hours, every local dev machine, and any external resource server verifying notme tokens. For a public identity provider's verifier SDK, that's the wrong trade — the package's whole reason to exist is being easy to depend on.

Name

Unscoped notme-dpop, not @notme/dpop. An unscoped name needs no npm org to exist first, removing the last piece of setup. Both were confirmed unregistered on npmjs.org.

Provenance

Publishing now uses --provenance with id-token: write, so npm attaches an attestation binding the tarball to this workflow and commit — consumers can verify it was built here rather than uploaded from a laptop. Strictly better than what GitHub Packages was giving us, so the forced move bought something.

Verification

  • worker — 23 files / 339 pass
  • worker tsc --noEmit — clean
  • package build — clean
  • packed tarball inspected, not assumed: name: notme-dpop, main: ./dist/index.js, types: ./dist/index.d.ts, LICENSE included

The GitHub Packages copy is left in place, frozen at 0.1.0. Nothing consumes it.

One manual step before release

An NPM_TOKEN repo secret (npm automation token, publish scope). That's the one thing that can't be automated from here. Once it's set:

git tag dpop-v0.1.0 && git push origin dpop-v0.1.0

Then cloister and canonical-hours delete their vendored copies — cloister-195e47.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UNahXs8dda3vttpWrVwVaA

…ous install)

Moves the SDK off GitHub Packages, where it briefly shipped as
@agentic-research/dpop@0.1.0.

The problem with that registry: it requires authentication to INSTALL even
for public packages — 401 anonymous, verified directly against the
endpoint. That put a token requirement on every consumer: cloister CI,
canonical-hours, every local dev machine, and any external resource server
verifying notme tokens. For a public identity provider's verifier SDK,
that is the wrong trade — the package's whole reason to exist is being
easy to depend on. npmjs.org installs anonymously and needs no consumer
.npmrc at all.

Unscoped `notme-dpop` rather than `@notme/dpop` deliberately: an unscoped
name needs no npm org to exist first, which removes the last piece of
setup. Both names were confirmed unregistered.

Publishing now uses --provenance with id-token: write, so npm attaches an
attestation binding the tarball to this workflow and commit — consumers
can verify it was built here rather than uploaded from a laptop. That is
strictly better than what GitHub Packages was giving us, so the forced
move bought something.

The GitHub Packages copy is left in place, frozen at 0.1.0. Nothing
consumes it.

Verified: worker 339 pass, worker tsc clean, package build clean, and the
packed tarball inspected rather than assumed — name notme-dpop, main
./dist/index.js, types ./dist/index.d.ts, LICENSE included.

Remaining manual step: an NPM_TOKEN repo secret. That is the one thing
that cannot be automated from here.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jamestexas
jamestexas merged commit 9d9260b into main Jul 23, 2026
3 checks passed
@jamestexas
jamestexas deleted the feat/publish-dpop-npmjs branch July 23, 2026 03:55
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