Skip to content

fix: pinhole tracks chant 0.52 — the pin no longer nests a stale chant (#116) - #117

Merged
lex00 merged 1 commit into
mainfrom
fix/116-chant-052
Aug 30, 2026
Merged

fix: pinhole tracks chant 0.52 — the pin no longer nests a stale chant (#116)#117
lex00 merged 1 commit into
mainfrom
fix/116-chant-052

Conversation

@lex00

@lex00 lex00 commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Closes #116.

pinhole's dependency sat at @intentius/chant ^0.44.3 while chant shipped 0.52.2, so a consumer already on 0.52.x — behold, as of today — resolved its own 0.52 at the top level and carried a second, nested chant@0.44.14 underneath pinhole for good. Dead weight at runtime (pinhole shells the project's own chant bin, not its bundled one), but the two copies would eventually diverge on type identity, since pinhole re-exports chant's IR types rather than keeping a copy.

What pinhole uses chant for

Two things, both narrow:

  • Types, at compile time only. src/ir.ts re-exports GraphIR, IRNode, IREdge, IRGroups, IRExport, IRImport, SourceLoc, Layout, Point; src/chant.ts imports GraphIR, Layout, NodeSize. All import type.
  • The CLI, at runtime. src/chant.ts resolves chant's bin path (preferring the target project's own install, resolve lexicons from the target project, not pinhole's own node_modules #36) and shells chant graph --format ir|layout and chant lint --format json. chant is --external in both esbuild bundles, so it is never inlined.

Why the bump is a one-liner

The surface moved only by addition between 0.44.3 and 0.52.2:

  • IRExport picked up optional value and stack, and GraphIR picked up optional stackExports — both for observed graphs (chant#1279).
  • graph-layout.d.ts is byte-identical.
  • chant graph still takes --detail, --lens, --up/--down, --env, --node-sizes; chant lint --format json still backs the gate.

So no code change beyond the README's stated floor.

Verification

npm ci from the regenerated lock, then the three gates CI runs — npm run tsc, npm test (19 files, 211 tests), npm run build — all clean.

Beyond the typecheck, rendered a real chant 0.52.2 project end to end (behold's example-argo-estate/app-a): render walked the project's own chant install, shelled graph twice, and painted cards with populated fields, so withResourceAttrs still finds the resource tier where 0.44 left it.

Lock side effect

chant 0.52 moved esbuild to ^0.28.1, which dedupes against pinhole's own devDependency — 27 nested @intentius/chant/node_modules/@esbuild/* entries drop out of the lock.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Rfs1mLVWmwginHnDTg75sG

#116)

pinhole's dependency sat at @intentius/chant ^0.44.3 while chant shipped
0.52.2, so a consumer already on 0.52.x — behold, as of today — resolved
its own 0.52 at the top level and carried a second, nested chant@0.44.14
underneath pinhole for good. Dead weight at runtime (pinhole shells the
project's own chant bin, not its bundled one), but the two copies would
eventually diverge on type identity, since pinhole re-exports chant's IR
types rather than keeping a copy.

Nothing in the surface pinhole touches moved. The IR types it re-exports
(GraphIR, IRNode, IREdge, IRGroups, IRExport, IRImport, SourceLoc) and
the layout ones it imports (Layout, Point, NodeSize) changed only by
addition between 0.44.3 and 0.52.2: IRExport picked up `value`/`stack`
and GraphIR picked up `stackExports`, both for observed graphs
(chant#1279); graph-layout.d.ts is byte-identical. `chant graph --format
ir|layout` still takes --detail, --lens, --up/--down, --env and
--node-sizes, and `chant lint --format json` still backs the gate — so
the bump carries no code change beyond the README's floor.

Verified end to end against a real 0.52.2 project (behold's argo estate),
not only the typecheck: render walks the project's own chant install,
shells graph twice, and paints cards with fields — withResourceAttrs
still finds the resource tier where 0.44 left it.

Falls out of the bump: chant 0.52 moved esbuild to ^0.28.1, which dedupes
with pinhole's own devDependency, dropping 27 nested esbuild entries from
the lock.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rfs1mLVWmwginHnDTg75sG
@lex00
lex00 merged commit f13520c into main Aug 30, 2026
1 check passed
@lex00
lex00 deleted the fix/116-chant-052 branch August 30, 2026 04:27
lex00 added a commit that referenced this pull request Aug 30, 2026
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.

pinhole pins chant ^0.44.3 — behold at chant 0.52.1 carries a nested 0.44.14 forever

1 participant