reqlanOverviewIdeasFilesCode filesClustersAttributesGraphPrint

Printable idea sheet

vsix_native_not_from_npm

reqlan rq/distribution/distribution.rq:249

Katz 0.241

Azure must not use the npm deploy path as an input when it packs VSIXes.
Git at the `ext/v*` tag is canonical. Azure compiles the native_targets matrix from that commit ( vsix_export, extension_distribution ).
npm stays the install path for CLI and MCP only ( npm_distribution, rust_binary_distribution ).

history
First native VSIX design: GitHub Actions compiled napi on `analytical/v*`, published platform packages, and Azure fetched `--latest` from npm.
Azure did not compile Rust.
That design treated npm as a hand-off between the two pipelines.
After a changeset release, platform packages stayed on the previous patch (received `1.11.0`) while analytical and the extension moved (expected `1.11.1`).
native-packaging.test.ts failed on that mismatch.
The lag is structural: `changeset version`, a glob in the Changesets `fixed` group, and a registry wait are not one atomic git snapshot.
Decision: keep npm for CLI and MCP; compile the matrix in Azure from git for VSIX.
justification
Marketplace version is `reqlan-extension` package.json and can differ from `@reqlan/analytical` (version_management).
Azure compiles the six host binaries from that `ext/v*` commit (`build_native` in azure-pipelines.yml).
The VSIX then contains the engine that matches the extension checkout, not a different `@reqlan/analytical` npm tarball.
negative
Do not feed npm_distribution into Marketplace or Open VSX packaging.
Do not wait for an `analytical/v*` tag, and do not poll `npm view` or `npm pack` (`scripts/fetch-native-packages.mjs --latest`).
That path couples two tag channels and two clocks.
Changesets can bump `@reqlan/analytical` and `reqlan-extension` independently (version_management).
`--latest` then packs a different `@reqlan/analytical` semver than the `ext/v*` tag, or the pipeline waits on packages that are not on the registry yet.
status
done
tests
native-packaging.test.ts

Interactive page: vsix_native_not_from_npm