Skip to content

Archive release assets are not consumable by npm-shim or the pinned VS Code extension #362

Description

@alpCaner

Found while reviewing

PR #352 changes the release contract from raw executables to .zip/.tar.gz archives, but the consumers that construct release URLs still implement the raw-binary contract.

In this repository

npm-shim/postinstall.js still constructs:

const ext = process.platform === "win32" ? ".exe" : "";
const asset = `tan-${target}${ext}`;

and writes the downloaded bytes directly as the executable. The branch's own shim test fails:

win32/x64 -> tan-x86_64-pc-windows-msvc.exe is not in the published asset table

The release workflow disables npm publishing, but leaving the code/contract inconsistent means it cannot be re-enabled and the release gate remains red.

Cross-repository consumer

The current alp-sdk-vscode origin/dev still:

  • builds raw names (tan-<triple> / .exe),
  • downloads directly to cachedBinaryPath,
  • chmods/spawns that file,
  • has no archive extraction/layout handling.

That directly conflicts with this repository's docs/release-contract.md, which says asset names must change only in lockstep with the extension's releaseAssetForTarget.

Impact

An archive-based tan release cannot be installed by either managed consumer. The npm shim receives a 404; if only its filename were changed, it would save archive bytes as tan. The extension behaves the same way unless its acquisition/cache layout is updated concurrently.

Acceptance criteria

  • npm shim selects the archive asset, verifies its checksum, extracts the one-top-level tan/ tree, and installs a launcher/cache layout atomically.
  • alp-sdk-vscode lands equivalent archive-aware download/extraction before its tan pin moves to this release.
  • Cross-repository contract tests cover exact asset names and archive layout.
  • The tan release is not cut until both acquisition paths are compatible.

Related: #349, #356, PR #352. A matching alp-sdk-vscode issue should track that repository's half.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingpython-portRust-to-Python port of the tan command surfacerelease-blockerBlocks the next release; must land before the tag

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions