Refs #53
File: contracts/foundry.toml (feat/25-foundry-fork-tests branch)
Problem:
foundry.toml on this branch has no evm_version key under [profile.default]. Solc 0.8.24 defaults to the Shanghai EVM target and emits PUSH0 (0x5f) opcodes. BSC does not support PUSH0 — it runs a pre-Shanghai EVM. Every CharonLiquidator deployed via new CharonLiquidator(...) inside CharonLiquidatorFork.t.sol produces Shanghai bytecode.
The fork test suite passes because Foundry's in-process EVM (revm) accepts PUSH0. But the compiled artifact tested here is NOT the artifact that would deploy to BSC mainnet. The entire fork test suite is validating code that would fail on the real target chain.
PRD clause: CLAUDE.md — evm_version=paris required for BSC (open issues #114/#118/#203). Solidity test files confirmed to inherit this gap in PR #38 review.
Impact: Every 'pass' in this suite is a false signal. The bytecode under test diverges from production BSC deployment. An evm_version fix after merge may reveal latent compilation differences that break currently-passing fork tests.
Fix:
Add to contracts/foundry.toml [profile.default]:
evm_version = "paris"
This must land before any fork test result is treated as meaningful validation.
Prior art: Same finding raised in PR #36 (#114), PR #37 (#118), PR #38, PR #45 (#203).
Refs #53
File: contracts/foundry.toml (feat/25-foundry-fork-tests branch)
Problem:
foundry.toml on this branch has no evm_version key under [profile.default]. Solc 0.8.24 defaults to the Shanghai EVM target and emits PUSH0 (0x5f) opcodes. BSC does not support PUSH0 — it runs a pre-Shanghai EVM. Every CharonLiquidator deployed via new CharonLiquidator(...) inside CharonLiquidatorFork.t.sol produces Shanghai bytecode.
The fork test suite passes because Foundry's in-process EVM (revm) accepts PUSH0. But the compiled artifact tested here is NOT the artifact that would deploy to BSC mainnet. The entire fork test suite is validating code that would fail on the real target chain.
PRD clause: CLAUDE.md — evm_version=paris required for BSC (open issues #114/#118/#203). Solidity test files confirmed to inherit this gap in PR #38 review.
Impact: Every 'pass' in this suite is a false signal. The bytecode under test diverges from production BSC deployment. An evm_version fix after merge may reveal latent compilation differences that break currently-passing fork tests.
Fix:
Add to contracts/foundry.toml [profile.default]:
evm_version = "paris"
This must land before any fork test result is treated as meaningful validation.
Prior art: Same finding raised in PR #36 (#114), PR #37 (#118), PR #38, PR #45 (#203).