Repository navigation
[indexer, ci, sdk]: pin indexer deps and CI's pnpm, fix the lz-endpoint build - #1428
Merged
Merged
Conversation
Nine @subql packages were on "latest", which resolves to whatever npm tags as latest whenever the lockfile is refreshed. @subql/common@5.8.3 was briefly tagged latest on 2026-10-05 with a credential-stealing payload. Each one is now pinned to the version sdk/pnpm-lock.yaml already resolved, so the installed tree is unchanged.
The remaining ranges and "latest" specifiers in the indexer's package.json are pinned to the versions sdk/pnpm-lock.yaml already resolved, so the installed tree is unchanged. The release tarball's package.json, written by publish-indexer.yml, is pinned to the same versions. Deployments install it with npm and no lockfile, so its caret ranges resolved fresh on every deploy.
Wizdave97
approved these changes
Oct 22, 2026
The workflows asked pnpm/action-setup for "11", the newest 11.x. Since pnpm 11.28.7 (2026-10-21), the newer pnpm switching itself to the packageManager version (pnpm@11.0.0) runs that @pnpm/exe download through the workspace's trustPolicy: no-downgrade. 11.0.0 has provenance where earlier releases had a trusted publisher, so every pnpm install failed before resolving anything. Pinning the workflows to 11.0.0 means pnpm never switches.
#994 made HyperApp.quote non-view so it can CALL fee oracles that price by simulating a swap. HyperbridgeLzEndpoint.quote overrides LayerZero's view quote and called it, so the package stopped compiling. The endpoint now reads the oracle through its own view interface, as it did before #994. HyperApp.quote is unchanged for its other callers. LayerZero's view requirement means a native-fee quote cannot work where the host's oracle is a Uniswap V3 or V4 wrapper (Ethereum, Polygon, Arbitrum, Base). The README says so and points those OApps at fee-token payment. BSC's PancakeSwap V2 oracle quotes natively.
seunlanlege
added a commit
that referenced
this pull request
Oct 22, 2026
Asking pnpm/action-setup for `11` now installs pnpm 11.28.7 or later, which is newer than packageManager's pnpm@11.0.0. pnpm then downloads @pnpm/exe@11.0.0 to switch to it. Since 11.28.7 that download goes through the workspace's trust policy, which refuses it, so pnpm install fails before anvil starts. This is the same pin as #1428.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The indexer's
package.jsonhad nine@subqlpackages, four@polkadotpackages andtypescriptonlatest, and most other dependencies on caret ranges. Alatestspecifier resolves to whatever npm tags as latest on the day the lockfile is refreshed.@subql/common@5.8.3was briefly taggedlateston 2026-10-05 and carried a credential-stealing payload (StepSecurity advisory).sdk/pnpm-lock.yamlalready resolved, so the installed tree does not change. Theworkspace:*link to@hyperbridge/sdkstays.package.json, written bypublish-indexer.yml, is pinned to the same six versions. Deployments install it withnpm installand no lockfile, so its caret ranges resolved fresh on every deploy.sdk/packages/indexer/docs/ai/changelog/2026-10-22-indexer-dependencies-are-pinned.md.CI's pnpm
Ten workflow steps asked
pnpm/action-setupfor pnpm11, the newest 11.x release. They now ask for11.0.0, the versionsdk/package.jsonnames inpackageManager.Since pnpm 11.28.7 came out on 2026-10-21, every
pnpm installin those workflows failed withHigh-risk trust downgrade for "@pnpm/exe@11.0.0". The newer pnpm downloads thepackageManagerversion to switch to it, and that download now goes through the workspace'strustPolicy: no-downgrade.@pnpm/exe@11.0.0has provenance where earlier releases had a trusted publisher, so the check refuses it. With the exact version installed, pnpm never switches.This also unblocks
publish-sdk,publish-coreandpublish-simplex, which would have failed the same way on their next release. The note isdocs/ai/changelog/2026-10-22-ci-pnpm-matches-packagemanager.md.lz-endpoint build
Touching
test-lz-endpoint.ymlran the lz-endpoint job, which had been failing to compile since #994 (2026-06-25). #994 madeHyperApp.quotenon-view so it couldCALLfee oracles that price by simulating a swap.HyperbridgeLzEndpoint.quoteoverrides LayerZero'sviewquote and called it, which no longer compiles.The endpoint now reads the host's fee oracle through its own view interface, as it did before #994.
HyperApp.quoteis unchanged for its other callers.Because LayerZero requires a
viewquote, a native-fee quote reverts where the host's oracle is a Uniswap V3 wrapper (Ethereum, Polygon) or V4 wrapper (Arbitrum, Base). That was already true before #994. Fee-token quotes work on every chain, and BSC's PancakeSwap V2 oracle also quotes natively. The lz-endpoint README now says so.Exposure
The latest release, v3.8.7, does not contain 5.8.3:
@subql/commonto 5.8.2.polytopelabs/subql-node-ethereum:v6.5.0andpolytopelabs/subql-node-substrate:v6.4.9-0, were pushed on 2026-09-23 and ship 5.8.2.No lockfile on
mainresolves 5.8.3.Validation
pnpm install --frozen-lockfile --lockfile-onlypasses with pnpm 11.0.0, and fails when a specifier is deliberately mismatched.specifier:lines.publish-indexer.yml's embeddedpackage.jsonis valid JSON.forge buildand all 23 tests pass on a current mainnet fork with solc 0.8.37.quotereverting on Ethereum, Arbitrum, Base and Polygon and succeeding on BSC. Fee-token quotes succeeded on all five.