{
  "strategy": "vanilla 30 bps",
  "file": "VanillaStrategy.sol",
  "commit": "6b6921f8",
  "seed_start": 900000,
  "n": 10000,
  "mean_edge": 342.26191722896806,
  "se": 0.5176448457947196,
  "first_edges": [
    293.814512,
    256.411977,
    386.585019,
    247.451940,
    345.758319,
    419.255530,
    426.298494,
    354.554031,
    288.072069,
    315.413245
  ],
  "min_edge": {
    "seed": 903312,
    "edge": 227.45415712599095
  },
  "max_edge": {
    "seed": 900564,
    "edge": 480.05303399301414
  },
  "seconds_per_simulation": 0.17465425236370646,
  "seeding_confirmed": "amm_competition/competition/match.py: MatchRunner._build_configs uses numpy default_rng(seed=i), drawing retail mean size, retail arrival rate, then GBM sigma and setting config.seed=i. amm_sim_rs/src/simulation/engine.rs: SimulationEngine::run uses config.seed for GBMPriceProcess and seed+1 for RetailTrader, matching the described mapping.",
  "notes": "The exact command amm-match validate contracts/src/VanillaStrategy.sol fails: Contract must be named 'Strategy' and inherit from AMMStrategyBase. The pinned repository's unchanged contract is named VanillaStrategy; compiled it with the repository's get_vanilla_bytecode_and_abi helper (contract_name='VanillaStrategy') and verified deployment/initialization at 30 bps. Default settings and unchanged Rust engine were used. Logical chunks contain 500 consecutive seeds; each uses 50 run_batch calls of 10 seeds to bound the engine's retained step-history memory. Wall simulation time includes configuration, Rust calls, edge extraction and cleanup, excluding installation, compilation and report writing."
}
