{
 "approach": "Measurement only, no development: the frozen candidate stock-entry-gate (tick-1 bank only when the competitor's best bid is at most tick 1) against the current best B (combine-cash) on the single seed block 251000..251999, paired per seed, both strategies run on every seed in the block.",
 "tried": [
  "Downloaded both artifact JSONs from api.imd.fun, extracted the code field of each, hashed its UTF-8 bytes with SHA-256 before anything ran: candidate a709c7e8...9ebed and incumbent baef955e...37273 both matched the brief exactly (candidate 14584 chars, incumbent 14588 chars).",
  "Cloned github.com/danrobinson/prediction-market-challenge and checked out b244530ee2a6247b5f930830eeca9dd950da0e7e, unmodified (stdlib only, no numpy needed). Confirmed defaults: ChallengeConfig() with JumpDiffusionConfig n_steps=2000, default ParameterVariance().",
  "Per seed, in process: load_strategy_factory(path) once per strategy, then run_batch(factory, base_config=ChallengeConfig(), variance=ParameterVariance(), n_simulations=1, seed_start=seed, workers=1) for candidate then incumbent; no --workers, no --sandbox. Recorded seed, failed, error, total_edge, retail_edge, arb_edge from simulation_results[0]. The engine catches a strategy exception and marks the result failed=True, so a raising simulation would be listed under failures, never dropped.",
  "Timing: 20 seeds (251000..251019, both strategies, 40 simulations) single-process took 30.4 s = 0.76 s per simulation; range 1.0 to 2.7 s per seed pair. Sized the block as 8 chunks of 125 seeds, 4 OS processes at a time on disjoint seed ranges (4 cores): two foreground waves of about 175 s each, 2000 simulations total in about 6 minutes wall clock, roughly 0.70 s per simulation per process under 4-way load.",
  "Checks after the run: 1000 distinct seeds exactly covering 251000..251999, no seed outside the block, zero failed simulations on either strategy, and the 20 timing-run seeds reproduced the block run's total_edge bit-for-bit for both strategies (deterministic). Seeds 900000..903999 were never touched.",
  "Result on the block: mean paired difference +0.234 with se 0.199 (about 1.2 se), not a promotion signal. Only 71 of 1000 seeds differ at all; 47 positive, 24 negative, 27 with |d|>1. The mean is dominated by heavy tails: seed 251343 contributes +178.6 alone (sum_d is +233.9), with +41.0 (251001), +40.6 (251312), +33.5 (251320), +26.6 (251546) against -27.8 (251473), -27.5 (251579), -19.1 (251945), -14.7 (251842), -13.7 (251806). Without seed 251343 the block mean would be slightly positive at about +0.06. Retail edge is lower for the candidate (-0.287, se 0.112, about 2.6 se) while arbitrage loss is smaller (+0.521, se 0.262, about 2.0 se): the gate buys fewer cheap tick-1 YES, giving up some retail edge in exchange for less arbitrage loss, netting out near zero."
 ],
 "next": "Do not promote on this block alone: +0.234 is about 1.2 se. The candidate changes behaviour on only 7% of seeds and the difference is heavy-tailed, so a decision needs the other confirm blocks pooled (sum_d and sum_d2 are given for pooling) and ideally a look at why seed 251343 moves +178.6 and seeds 251473/251579 move about -28. The retail-down, arbitrage-up split is the expected signature of the gate; if pooled arb gain holds above 2 se while retail loss stays small, a softer gate (cb <= 1 or small quantity when cb == 2) is a natural next candidate.",
 "code_sha256": "a709c7e85c7dc5200cba83d854cc7ecc9cee8a70915ca79798504da648e9ebed",
 "incumbent_code_sha256": "baef955ec10728839f7c3357016ec9eb0550e7ec689bbd5171b1cdd5c9e37273",
 "tuning": null,
 "paired": {
  "seeds": "251000..251999",
  "n": 1000,
  "complete": true,
  "mean_diff": 0.233948,
  "se": 0.199252,
  "sum_d": 233.947733,
  "sum_d2": 39716.335755,
  "candidate_mean": 96.724318,
  "incumbent_mean": 96.490371,
  "retail_diff": -0.286584,
  "retail_se": 0.112197,
  "arb_diff": 0.520532,
  "arb_se": 0.26223,
  "nonzero_diff_seeds": [
   251001,
   251003,
   251004,
   251008,
   251061,
   251064,
   251084,
   251096,
   251106,
   251146,
   251154,
   251192,
   251254,
   251282,
   251285,
   251304,
   251312,
   251314,
   251320,
   251331,
   251343,
   251380,
   251384,
   251385,
   251389,
   251424,
   251434,
   251462,
   251464,
   251473,
   251476,
   251479,
   251492,
   251514,
   251536,
   251543,
   251546,
   251556,
   251568,
   251579,
   251583,
   251585,
   251588,
   251590,
   251618,
   251652,
   251667,
   251675,
   251683,
   251692,
   251718,
   251732,
   251766,
   251806,
   251813,
   251842,
   251863,
   251866,
   251881,
   251888,
   251908,
   251915,
   251924,
   251930,
   251933,
   251937,
   251942,
   251945,
   251953,
   251988,
   251993
  ],
  "failures": []
 },
 "seconds_per_simulation": 0.76
}