{
  "key": "gates-2",
  "gates": {
    "10000": [
      448.261189,
      443.455598,
      443.522608,
      443.66352
    ],
    "10001": [
      576.779199,
      571.463409,
      571.623551,
      571.977293
    ],
    "10002": [
      531.886497,
      525.168028,
      525.865859,
      526.411631
    ],
    "match": true
  },
  "bounds": {
    "gas_per_callback": 250000,
    "storage_slots": 32,
    "inline_assembly": false,
    "code_size_bytes": 24576,
    "solc": "0.8.24",
    "optimizer": "enabled=true; runs=200; viaIR=true; evmVersion=paris",
    "other": "Gas: afterInitialize and afterSwap each 250000 total transaction gas; getName 50000; deployment 10000000. Storage layout may contain only inherited slots at slot 0, offset 0; array bounds enforce indices 0..31. Compiler scans creation and runtime bytecode for BALANCE, EXTCODESIZE, EXTCODECOPY, EXTCODEHASH, CREATE, CALL, CALLCODE, DELEGATECALL, CREATE2, STATICCALL, SELFDESTRUCT; skips PUSH immediates and trailing CBOR metadata. External calls and contract creation are forbidden. Validator also bans send/transfer, suicide, code introspection, coinbase access, custom interfaces and reserved-name redeclarations. Must define contract Strategy inheriting AMMStrategyBase and implement afterInitialize, afterSwap, getName; both base imports required and no others. Code size is revm default EIP-170 deployment enforcement, not an explicit compiler.py check.",
    "enforced_in": [
      "amm_sim_rs/src/evm/strategy.rs",
      "amm_competition/evm/executor.py",
      "amm_competition/evm/compiler.py",
      "amm_competition/evm/validator.py",
      "contracts/src/AMMStrategyBase.sol",
      "amm_sim_rs/Cargo.toml (revm 18 dependency)",
      "revm 18.0.0: src/context/inner_evm_context.rs",
      "revm-primitives: src/env.rs",
      "revm-primitives: src/constants.rs"
    ]
  },
  "ib": {
    "validate": "pass",
    "summary": "amm-match validate IB.sol succeeded as inputs_b; static validation, compilation, deployment and initialization passed. Decoded source SHA-256 matches artifact.",
    "bytecode_bytes": 14528,
    "peak_afterswap_gas": 205457
  },
  "engine": "ok",
  "blocked": null,
  "notes": "Gates order: perfect-info, gaussian+plain, gaussian+qm, lattice+qm. All 12 match README to six decimal digits; fetch verified 26 files, zero mismatches. IB bytecode measured locally with toolkit compiler (creation 14556 bytes). Peak gas is LOCAL one-seed run only: seed 10000, default 10000 steps and per-seed parameter draws in MatchRunner order, IB alone versus VanillaStrategy via run_batch(...,8). Submission afterSwap: 10443 calls, all successful, peak 205457; no OOG/revert/other halt/tx error/bad return. Initialize used 243227 gas. The artifact separately reports a 512-seed peak of 234849, not remeasured here. No engine seed >=12000000 used. Validation itself does not execute afterSwap; Python executor gas_used values are estimates, so use Rust gas_stats. Bounds sources are pinned checkout plus revm 18.0.0 source revision; EIP-170 follows default EVM deployment. Empirical gate/validation/size/gas claims are local measurements, not independently certified by URL quotations. No runtime dependencies are needed by these JSON deliverables."
}
