Skip to content

rename: @askalf/canon → @askalf/truecopy (npm-publishable name)#28

Merged
askalf merged 1 commit into
masterfrom
rename/truecopy
Jul 10, 2026
Merged

rename: @askalf/canon → @askalf/truecopy (npm-publishable name)#28
askalf merged 1 commit into
masterfrom
rename/truecopy

Conversation

@askalf

@askalf askalf commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Why

Same registry create-block as warden/keeper: canon is squatted unscoped (canon@0.4.1), and npm's create-time policy silently 403s @scope/X when unscoped X exists. Operator decision: rename the trilogy. Companions: askalf/redstamp#44 (redstamp), askalf/strongroom#30 (strongroom).

What

  • package.json name → @askalf/truecopy ("certified true copy" — what vetting asserts), version 0.6.2, repo URLs → askalf/truecopy
  • New truecopy / truecopy-mcp bins; legacy canon / canon-mcp aliases retained
  • README (incl. the URL-encoded watch-badge path) + npm-token-health workflow renamed; rename note at top; CHANGELOG 0.6.2; lockfile regenerated

Deliberately unchanged

  • @askalf/warden dep pin + import specifiers — flip to @askalf/redstamp in a follow-up once warden#44 merges
  • marketplace-watch workflow (no name-coupled refs; the watch branch rides the repo through the rename)
  • Internal identifiers — follow-up pass, not npm-blocking

After merge

  1. Rename GitHub repo askalf/canonaskalf/truecopy
  2. warden dep-flip follow-up PR
  3. Operator interactive first-publish over the @askalf/truecopy@0.0.1 name-claim

Tests: 85 pass / 0 fail.

@askalf
askalf force-pushed the rename/truecopy branch from d059a78 to 05d7592 Compare July 10, 2026 16:59
@askalf
askalf merged commit 26e0cb9 into master Jul 10, 2026
8 checks passed
@askalf
askalf deleted the rename/truecopy branch July 10, 2026 17:00
askalf added a commit that referenced this pull request Jul 22, 2026
…frvp-7c67-39w9)

Scorecard opened a high-severity Vulnerabilities alert (#28) minutes after #91
landed. The dependency is not new — `npm i -g` was installing the same tree
before — but nothing in the repo described it, so nothing could see it. The
lockfile that #91 added is what made it visible, which is the point of having
one.

The advisory (published 2026-07-21, hours before that merge) is a path traversal
in @hono/node-server's serve-static, patched in 2.0.5. It reaches this image
transitively: server-everything -> @modelcontextprotocol/sdk -> @hono/node-server
"^1.19.9". That caret range can never resolve to 2.0.5, the SDK is already at its
latest (1.29.0), and server-everything is already at its latest (2026.7.4) — so
there is no upstream bump to wait for. An npm override is the only way off it
today.

Overriding a transitive major the SDK was not written against is the real risk
here, so it is tested rather than assumed: with the override in place, `npm ci`
resolves @hono/node-server 2.0.11 and the reference server still completes a full
MCP handshake over stdio, returning all 13 tools. The image only ever runs the
downstream over stdio, so it never constructs a Hono HTTP server at all — the
vulnerable serve-static path was unreachable here either way. This is about not
shipping a flagged dependency in a supply-chain tool's own image, not about a
live exploit.

Drop the override once the SDK widens its range; Dependabot watches /docker
(added in #91) and will offer that bump.

Verified: clean-cache `npm ci --omit=dev` with SSH disabled resolves 108 packages
and pins @hono/node-server to the patched 2.0.11; live stdio handshake against
that exact tree returns 13 tools. The full image build + non-root check + live
handshake is what docker.yml asserts on this PR.
askalf added a commit that referenced this pull request Jul 22, 2026
…frvp-7c67-39w9) (#96)

Scorecard opened a high-severity Vulnerabilities alert (#28) minutes after #91
landed. The dependency is not new — `npm i -g` was installing the same tree
before — but nothing in the repo described it, so nothing could see it. The
lockfile that #91 added is what made it visible, which is the point of having
one.

The advisory (published 2026-07-21, hours before that merge) is a path traversal
in @hono/node-server's serve-static, patched in 2.0.5. It reaches this image
transitively: server-everything -> @modelcontextprotocol/sdk -> @hono/node-server
"^1.19.9". That caret range can never resolve to 2.0.5, the SDK is already at its
latest (1.29.0), and server-everything is already at its latest (2026.7.4) — so
there is no upstream bump to wait for. An npm override is the only way off it
today.

Overriding a transitive major the SDK was not written against is the real risk
here, so it is tested rather than assumed: with the override in place, `npm ci`
resolves @hono/node-server 2.0.11 and the reference server still completes a full
MCP handshake over stdio, returning all 13 tools. The image only ever runs the
downstream over stdio, so it never constructs a Hono HTTP server at all — the
vulnerable serve-static path was unreachable here either way. This is about not
shipping a flagged dependency in a supply-chain tool's own image, not about a
live exploit.

Drop the override once the SDK widens its range; Dependabot watches /docker
(added in #91) and will offer that bump.

Verified: clean-cache `npm ci --omit=dev` with SSH disabled resolves 108 packages
and pins @hono/node-server to the patched 2.0.11; live stdio handshake against
that exact tree returns 13 tools. The full image build + non-root check + live
handshake is what docker.yml asserts on this PR.
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