use forge std from npm - #533
Merged
Merged
Conversation
RensR
commented
Aug 21, 2026
| uses: ./.github/actions/setup-nodejs | ||
| with: | ||
| prod: "true" | ||
| prod: "false" |
Collaborator
Author
There was a problem hiding this comment.
Needed because forge-std is a dev dependency
RensR
commented
Aug 21, 2026
| @@ -1,6 +1,6 @@ | |||
| # ALL_FOUNDRY_PRODUCTS contains a list of all products that have a foundry | |||
| # profile defined and use the Foundry snapshots. | |||
| ALL_FOUNDRY_PRODUCTS = automation-cre keystone l2ep llo-feeds operatorforwarder payments shared workflow data-feeds | |||
Collaborator
Author
There was a problem hiding this comment.
These have been moved out a while ago, fixing tech debt
RensR
marked this pull request as ready for review
August 21, 2026 10:12
product-security-plaid-production
Bot
requested review from
Tofel,
elatoskinas,
george-dorin,
ibrajer,
pavel-raykov and
skudasov
August 21, 2026 10:12
pavel-raykov
approved these changes
Aug 21, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This PR removes the vendored forge-std Solidity sources and switches the project to consume forge-std via an NPM-installed GitHub reference, updating remappings/CI accordingly. It also adjusts Solidity pragmas and regenerates related gas snapshots to reflect the updated toolchain/dependency state.
Changes:
- Replace vendored
contracts/src/v0.8/vendor/forge-stdusage withnode_modules/forge-stdvia updated Foundry remappings and NPM devDependencies. - Relax several
pragma solidity 0.8.6;declarations to^0.8.6for compatibility with Foundry profiles that compile with newer solc versions. - Update CI and regenerate gas snapshot artifacts to match the new dependency source and resulting compilation/gas deltas.
Reviewed changes
Copilot reviewed 22 out of 54 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| contracts/src/v0.8/vrf/VRFSubscriptionBalanceMonitor.sol | Relax Solidity pragma to allow newer 0.8.x compilers. |
| contracts/src/v0.8/vrf/testhelpers/VRFv2Consumer.sol | Relax Solidity pragma to allow newer 0.8.x compilers. |
| contracts/src/v0.8/vrf/testhelpers/VRFSubscriptionBalanceMonitorExposed.sol | Relax Solidity pragma and normalize header formatting. |
| contracts/src/v0.8/vrf/test/VRFCoordinatorV2Mock.t.sol | Relax pragma and update expected emitted payment values. |
| contracts/src/v0.8/vrf/test/ChainSpecificUtil.t.sol | Relax Solidity pragma to allow newer 0.8.x compilers. |
| contracts/src/v0.8/vrf/ChainSpecificUtil_v0_8_6.sol | Relax Solidity pragma to allow newer 0.8.x compilers. |
| contracts/src/v0.8/vrf/BatchVRFCoordinatorV2.sol | Relax Solidity pragma to allow newer 0.8.x compilers. |
| contracts/src/v0.8/vendor/forge-std/src/Test.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/StdUtils.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/StdToml.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/StdStyle.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/StdStorage.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/StdMath.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/StdJson.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/StdInvariant.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/StdError.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/StdConstants.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/StdCheats.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/StdChains.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/StdAssertions.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/Script.sol | Remove vendored forge-std source (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/interfaces/IMulticall3.sol | Remove vendored forge-std interface (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC7575.sol | Remove vendored forge-std interface (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC7540.sol | Remove vendored forge-std interface (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC721.sol | Remove vendored forge-std interface (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC6909.sol | Remove vendored forge-std interface (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC4626.sol | Remove vendored forge-std interface (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC20.sol | Remove vendored forge-std interface (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC165.sol | Remove vendored forge-std interface (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/interfaces/IERC1155.sol | Remove vendored forge-std interface (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/console2.sol | Remove vendored forge-std helper (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/forge-std/src/Base.sol | Remove vendored forge-std base contracts (migrate to NPM-provided copy). |
| contracts/src/v0.8/vendor/@eth-optimism/contracts/v0.8.6/contracts/L2/predeploys/OVM_GasPriceOracle.sol | Relax Solidity pragma to allow newer 0.8.x compilers. |
| contracts/snapshots/DataFeedsCacheGasTest.json | Add/update gas snapshot JSON output for data-feeds cache tests. |
| contracts/remappings.txt | Point forge-std/ remapping at node_modules/forge-std/src/. |
| contracts/pnpm-lock.yaml | Lock forge-std dependency fetched from GitHub tarball. |
| contracts/package.json | Add forge-std as a devDependency via GitHub ref. |
| contracts/GNUmakefile | Update Foundry products list used for snapshot generation. |
| contracts/gas-snapshots/shared.gas-snapshot | Update shared gas snapshot values. |
| contracts/gas-snapshots/payments.gas-snapshot | Update payments gas snapshot values. |
| contracts/gas-snapshots/operatorforwarder.gas-snapshot | Update operatorforwarder gas snapshot values. |
| contracts/gas-snapshots/l2ep.gas-snapshot | Update l2ep gas snapshot values. |
| contracts/gas-snapshots/data-feeds.gas-snapshot | Update data-feeds gas snapshot values. |
| contracts/cre/remappings.txt | Point CRE forge-std/ remapping at node_modules/forge-std/src/. |
| contracts/cre/pnpm-lock.yaml | Lock CRE forge-std dependency fetched from GitHub tarball. |
| contracts/cre/package.json | Add forge-std to CRE devDependencies via GitHub ref. |
| contracts/cre/gas-snapshots/v1.gas-snapshot | Update CRE v1 gas snapshot values. |
| contracts/cre/gas-snapshots/dev.gas-snapshot | Update CRE dev gas snapshot values. |
| .github/workflows/solidity-foundry.yml | Ensure Node install includes devDependencies (so forge-std is available). |
Files not reviewed (2)
- contracts/cre/pnpm-lock.yaml: Generated file
- contracts/pnpm-lock.yaml: Generated file
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
RayXpub
approved these changes
Aug 21, 2026
RensR
enabled auto-merge (squash)
August 21, 2026 11:41
ibrajer
approved these changes
Aug 21, 2026
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.
Removes the vendor forge-std (20k+ lines) and replaces it with an NPM ref. The PR also updates it, which is significantly easier/safer using the ref.