{"license":"CC-BY-4.0","licenseUrl":"https://creativecommons.org/licenses/by/4.0/","attribution":"ChainChoice (https://chainchoice.io)","category":"dev_frameworks","evidenceReadAt":"2026-09-28","generatedAt":"2026-11-12","criteria":[{"id":"maintenance_cadence","label":"Maintenance That Is Actually Happening","weight":30},{"id":"native_testing_depth","label":"Testing Depth The Toolchain Itself Ships","weight":30},{"id":"lock_in_exit_cost","label":"Lock-In And Documented Exit Path","weight":25},{"id":"supply_chain_posture","label":"Distribution, Pinning And Disclosure","weight":15}],"providers":{"foundry":{"maintenance_cadence":{"s":10,"q":"Release list Nightly (2026-09-28) Nightly (2026-09-27) Nightly (2026-09-25)","u":"https://github.com/foundry-rs/foundry/releases","d":"2026-09-28"},"native_testing_depth":{"s":10,"q":"Forge automatically fuzzes test functions that take parameters: | Configure invariant test behavior: | $ forge test --fork-url https://ethereum.reth.rs/rpc --fork-block-number 18000000 | $ forge coverage --report lcov --report-file lcov.info | $ forge test --gas-report | Forge provides cheatcodes…","u":"https://getfoundry.sh/llms-full.txt","d":"2026-09-28"},"lock_in_exit_cost":{"s":8,"q":"Hardhat compatibility For projects migrating from Hardhat or using Hardhat-style imports: [ profile . default ] libs = [ \"lib\" , \"node_modules\" ]","u":"https://getfoundry.sh/projects/dependencies","d":"2026-09-28"},"supply_chain_posture":{"s":10,"q":"When you install Foundry , foundryup compares each binary's SHA-256 hash with the hashes in the release's GitHub attestation. A hash mismatch aborts installation. | The command checks the artifact's digest and the attestation's signature, repository, and signing workflow.","u":"https://getfoundry.sh/introduction/verifying-releases","d":"2026-09-28"}},"hardhat":{"maintenance_cadence":{"s":10,"q":"\"dist-tags\":{\"hh2\":\"2.29.1\",\"latest\":\"3.18.0\"} | \"3.18.0\":\"2026-09-24T17:18:27.347Z\"","u":"https://registry.npmjs.org/hardhat","d":"2026-09-28"},"native_testing_depth":{"s":9,"q":"`fuzz`: Optional fuzz testing configuration object. | `invariant`: Optional invariant testing configuration object. | `depth`: The number of calls executed to attempt to break invariants in one run. Defaults to 500. | `forking`: Optional fork configuration options object. Defaults to none.","u":"https://hardhat.org/docs/reference/configuration.md","d":"2026-09-28"},"lock_in_exit_cost":{"s":9,"q":"Hardhat 3 is a full replacement for Foundry: it runs Solidity tests, understands `remappings.txt`, and can build contracts laid out the way Foundry expects. | Hardhat doesn't have a direct equivalent of `forge script`.","u":"https://hardhat.org/docs/migrate-from-foundry.md","d":"2026-09-28"},"supply_chain_posture":{"s":8,"q":"id-token: write # Needed for npm Trusted Publishing (OIDC) | NPM_CONFIG_PROVENANCE: true # explicitly enable NPM provenance","u":"https://raw.githubusercontent.com/NomicFoundation/hardhat/main/.github/workflows/release.yml","d":"2026-09-28"}},"anchor_solana":{"maintenance_cadence":{"s":8,"q":"\"latest\":\"1.2.0\" | \"1.2.0\":\"2026-09-04T18:36:29.165Z\" | \"0.32.2\":\"2026-09-14T16:50:54.121Z\"","u":"https://registry.npmjs.org/@anchor-lang/core","d":"2026-09-28"},"native_testing_depth":{"s":9,"q":"anchor fuzz provides coverage-guided fuzzing for Solana programs via Crucible | It generates random action sequences against your program, checking invariants after each action to find bugs that unit tests miss.","u":"https://www.anchor-lang.com/docs/testing/fuzzing","d":"2026-09-28"},"lock_in_exit_cost":{"s":2,"q":"The main macros found in an Anchor program include: | Specifies the program's on-chain address | Specifies the module containing the program's instruction logic | Applied to structs to indicate a list of accounts required by an instruction","u":"https://www.anchor-lang.com/docs/basics/program-structure","d":"2026-09-28"},"supply_chain_posture":{"s":9,"q":"This may be required to produce verifiable builds, or if you'd prefer to work with an alternate version. | Install the specified version of anchor-cli.","u":"https://www.anchor-lang.com/docs/references/avm","d":"2026-09-28"}},"apeworx":{"maintenance_cadence":{"s":6,"q":"\"version\":\"0.8.52\" | \"upload_time_iso_8601\":\"2026-09-25T01:15:27.487305Z\"","u":"https://pypi.org/pypi/eth-ape/json","d":"2026-09-28"},"native_testing_depth":{"s":6,"q":"To include a gas report at the end of your tests, you can use the --gas flag. | To get contract coverage, use the --coverage flag when running ape test : | chain . pending_timestamp += 86000","u":"https://docs.apeworx.io/ape/stable/userguides/testing.html","d":"2026-09-28"},"lock_in_exit_cost":{"s":5,"q":"You can configure Ape using a pyproject.toml file and the prefix tool.ape or any configuration file named ape-config.[yaml|yml|json] .","u":"https://docs.apeworx.io/ape/stable/userguides/config.html","d":"2026-09-28"},"supply_chain_posture":{"s":8,"q":"This document describes the Security Policy for ApeWorX Ltd., including vulnerability disclosures for the Ape Framework, any of its maintained plugins, or any packages we maintain used by those as dependencies. | ApeWorX does not currently have any bug bounty programs.","u":"https://github.com/ApeWorX/ape/security/policy","d":"2026-09-28"}},"remix_ide":{"maintenance_cadence":{"s":10,"q":"Release list v2.6.4 v2.6.3 v2.6.2 v2.6.0 v2.5.7 v2.5.6 v2.5.5 v2.5.4 v2.5.3 v2.5.2","u":"https://github.com/remix-project-org/remix-project/releases","d":"2026-09-28"},"native_testing_depth":{"s":4,"q":"For now, customization is only available for parameters sender & value","u":"https://remix-ide.readthedocs.io/en/latest/unittesting.html","d":"2026-09-28"},"lock_in_exit_cost":{"s":9,"q":"With Remix Desktop, you can connect to a local Hardhat project, giving you access to Hardhat compilation and the Hardhat Provider for deploying to a local node.","u":"https://remix-ide.readthedocs.io/en/latest/hardhat.html","d":"2026-09-28"},"supply_chain_posture":{"s":6,"q":"Make sure all your imports include the version number otherwise you don't know what version of files you are getting and the builds are not reproducible. | If you are directed to some site that looks like Remix but has a similar but different URL - it is NOT Remix and is likely a phishing scam.","u":"https://remix-ide.readthedocs.io/en/latest/security.html","d":"2026-09-28"}},"scaffold_eth":{"maintenance_cadence":{"s":7,"q":"\"latest\":\"2.0.23\" | \"2.0.23\":\"2026-07-30T06:42:14.779Z\"","u":"https://registry.npmjs.org/create-eth","d":"2026-09-28"},"native_testing_depth":{"s":2,"q":"This command starts a local Ethereum network using Hardhat or Foundry, depending on which one you selected in the CLI.","u":"https://docs.scaffoldeth.io/quick-start/environment","d":"2026-09-28"},"lock_in_exit_cost":{"s":4,"q":"These hooks are wrappers around Wagmi, an easy-to-use interface with typescript autocompletions for reading from, writing to, and monitoring events emitted by your smart contracts. | The custom hooks rely on three main files for their functionality and TypeScript autocompletion:","u":"https://docs.scaffoldeth.io/hooks","d":"2026-09-28"},"supply_chain_posture":{"s":6,"q":"Terminal npx create-eth@latest You will be presented with a series of prompts:","u":"https://docs.scaffoldeth.io/quick-start/installation","d":"2026-09-28"}},"starknet_foundry":{"maintenance_cadence":{"s":9,"q":"nightly-2026-09-27 | 2026-09-27T01:36:43Z | nightly-2026-09-23","u":"https://github.com/software-mansion-labs/starknet-foundry-nightlies/releases.atom","d":"2026-09-28"},"native_testing_depth":{"s":9,"q":"To convert a standard test into a random fuzz test, you need to add parameters to the test function and include the #[fuzzer] attribute. | snforge supports testing in a forked environment.","u":"https://foundry-rs.github.io/starknet-foundry/print.html","d":"2026-09-28"},"lock_in_exit_cost":{"s":6,"q":"Using snforge With Existing Scarb Projects To use snforge with existing Scarb projects, make sure you have declared the snforge_std package as your project development dependency.","u":"https://foundry-rs.github.io/starknet-foundry/getting-started/first-steps.html","d":"2026-09-28"},"supply_chain_posture":{"s":5,"q":"Run the following in your terminal, then follow the onscreen instructions: curl --proto '=https' --tlsv1.2 -sSf https://sh.starkup.sh | sh","u":"https://foundry-rs.github.io/starknet-foundry/getting-started/installation.html","d":"2026-09-28"}}}}