{
 "notes": "EPISODE 7: no promotion yet; round 4's winner retreat-cancel (5 se on its screen) sent to F; retreat-crossing's F incomplete; round 5 (49 development items) built on retreat-cancel. Spawned 79 items; used after this: 410 of 600. Episodes 8, 9, 10 remain; nothing spawned in 10 can be read. A first try of this episode was rejected for shape: vars as strings, filled briefs under 3000 characters.\n\nBEST N (adopted, not promoted): `code` of https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6 , SHA-256 bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae. LOCAL PROMOTIONS: none. Streak of completed rounds without promotion: 0 (round 3 completes with retreat-crossing's F decision, round 4 with retreat-cancel's; both in episode 8). Check values (N, seeds 310000..310003): 17.116002, 20.017111, 2.390311, 241.484752.\n\nRC = d-s23-retreat-cancel, provisional s2/s3 block and round 5's base: `code` of https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb , SHA-256 3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f (verified here: artifact digest, code hash, and the copy in r4-deepen/merge-03 top). It is N's text plus a wrapper subclass at the end: on an exactly-one-tick rival retreat (bid down or ask up) it cancels every own order on that side and suppresses placements there for one callback, spreads 2 and 3 only, clearing pb/pa/last_quote_exposed. Screen H 430000..430499 vs N: overall +0.562 se 0.108; s2 +1.114 se 0.357 (n 120); s3 +1.109 se 0.233 (n 133); retail -0.106, arb +0.669; tuning +0.518 se 0.151; 0 failures. On s1/s4 it equals N. Round-5 items report RC's own values on 310000..310003 as check_values (compare across rows, not with N's).\n\nF EVIDENCE (900000..903999 vs N), retreat-crossing b5158a963a479a0919146dc0d56a347b68ddc2d66dd7c467b48473baef8997cf (`code` of https://api.imdnotdead.fun/artifacts/459d3ec15ee1323593c23f1933500cb42ac662c51e5e2aa89f9b1befee3640d1 ): 7 of 8 blocks; rc-f1 lost seeds 900000..900051 (n 448), rc-f5 (902000..902499) never ran (no network). Pooled n 3448: overall +0.0974 se 0.0484 (sum_d 335.85), retail +0.004, arb +0.094; s3 n 828 +0.406 se 0.201 (2.0 se). Block s3 means range -0.98 (f8, seed 903655 at -139.6) to +1.09. Extension H 410500..411999: overall -0.064 se 0.144, s3 -0.255 se 0.576. NOT promoted: F incomplete, gain at the gate. r5-final/cross-f1 and cross-f5 rerun those blocks; episode 8 pools all 8 (reruns replace f1 and f5) and promotes only if n 4000, 0 failures, s3 and overall gains both > 2 se. If RC passes F it supersedes retreat-crossing on s3 unless c5-s3-cancel-crossing adds over RC.\n\nROUND 3 EXTENSION (H 410500..411999, n 1500, vs N): all dead; best s3-flow-transfer s3 +0.26 se 0.13; side-jump-budget -0.43 se 0.23; s2-side-risk s2 -0.34. Old stock-entry-gate and side-jump-budget vs N (420000..421999): -1.1 to -2.1 per block.\n\nROUND 4 SCREEN (H 430000..430499 vs N, target spread; art = artifact SHA, code = `code` of https://api.imdnotdead.fun/artifacts/<art>): d-s1-retreat-crossing-port bed6def9 s1 +0.851 se 0.400 (art 6b9ed17bf5dea051170d96ecb2a250d14a21d2ff880ecb8f9017883bd03de44b; plane flagged a source). c-s1-queue-postjump 64209895 s1 +0.496 se 0.262 (r4-deepen/merge-01 top, zlib+base64, art 2194012e1ad22d8ec3c929865387870137484f68b7dc438c15bee80be81a9661; flagged). c-s3-retreat-strength 40829d7a s3 +0.94 se 0.50 (same merge top). c-s2-mask-to-ask bf5b107d s2 +0.64 se 0.78 (merge-02 top, art 30904b002314c987d356340c07addc67067aaf7c2dc4125646e7709f7e3bcce7). d-s2-lowp-early-bids c3f52bdf s2 +0.117 se 0.054 (art b4a68d2dd1bbd03bdc96072615ada1d5c5f27cafdf897c1bfac5913f5996be0c). d-s3-mid-size-up 1317a49c s3 +0.174 se 0.105 (art f3f50cdb058d56b7842ec97f345bc7c11858d0b3b5370ea620fc66c593229e03). remove-s4-ask-risk-premium 324acde8 s4 +0.34 se 0.28 (r4-remove/merge-01 top, plain code, art e019e7d93ce9c99453526d9d2113561d4c4ec0de062a50c42b51edd9edd62a5e). Harmful: every own-fill pull (-5 to -36), join-mid (-20 s2), noquote-bid-withdraw -4.0, markout-widen -4.1, deletions of s3 qa cap, s4 cheap bids, s4 bid tranches, s2 old-price queue (-0.3 to -0.5), joint deletions. All 26 r4-fresh overlays at or below zero (56 blind overlays in two rounds, none gained), so round 5's fresh lane tests one StepState signal each as an overlay on RC.\n\nBATCHES NOW:\n- r5-final (10, read item by item): cancel-f1..f8 = RC vs N on 900000..903999 in 500-seed blocks; cross-f1 (900000..900499) and cross-f5 (902000..902499) = retreat-crossing reruns. Fields: overall and by_spread n, sum_d, sum_d2, mean_diff, se, retail_diff, arb_diff; per_seed; complete; failures.\n- r4-extend (18, merges of 3 in item order: 01 cancel, 02 s1-port, 03 s1-postjump, 04 s2-lowp, 05 s3-midsize, 06 s4-norisk), each vs N on 430500..430999 / 431000..431499 / 431500..431999: unselected replication of the round 4 screen.\n- r5-deepen (32, merges of 8, vs RC; T 330000..330199, H 440000..440499): ports of the cancel to s1 and s4 (d5-s1/s4-cancel-port, -any-outward), 21 cancel-mechanic variants on s2/s3 (d5-s23-cancel-*), d5-s2-retreat-posterior, combines c5-s3-cancel-crossing, c5-s2-cancel-lowp, c5-s3-cancel-midsize, c5-s1-port-postjump, c5-s1-port-cancel, c5-s2-cancel-mask-to-ask. Keys in the merges' rows.\n- r5-fresh (11, merges of 6, blind overlays on RC vs RC, one rival-quote or own-fill signal each, keys f5-*).\n- r5-remove (6, merges of 3, vs RC on H 440000..440499): drop the bid or ask trigger on s2 or s3, drop the suppression, drop the probe clearing. Negative d = the part carries gain.\n- r5-diagnose (2, item by item, N on 510000..510499): d5-diag-retreat, d5-diag-advance (next-step move and arb change after each rival-quote event, by spread).\n\nNEXT EPISODE (8), in order:\n1. Pool r5-final per candidate (mean = S/n, se = sqrt((Q - S*S/n)/(n-1)/n)), overall and per spread. PROMOTE RC as the s2 and s3 block if n 4000, 0 failures, check values right, and s2, s3 and overall gains each exceed 2 se (if only one spread clears, promote that spread alone; the compose item narrows the wrapper's guard). Record: round 4, spreads, N -> 3c07bdcd..., F n, gain, se, retail and arb change, N's F mean. Decide retreat-crossing on s3 as above.\n2. Round 5 scoreboard from the merges' rows (vs RC): drop flagged rows and rows whose comparator_mean on 440000..440499 differs from the majority. Target gain > 1.5 se: extend on 440500..441999 (3 x 500, measure brief with base RC); > 3 se: straight to F (8 x 500 vs RC) where that spread has no F finalist. s1 and s4 have none; r4-extend merges decide between the s1 candidates.\n3. Spawn one compose item once a promotion exists: N with each promoted block, exact-equality audit against each source on its spread over 100 seeds, full code and hash, little else (gzip+base64 if needed).\n4. Episode 9: last promotions from round 5's F, final compose, and ask in `read` for the result carrying the full code. Episode 10: finish; the write-up needs the best's full code, its F evidence and the ranked promotion table.\n5. Stop early after two completed rounds in a row without a promotion.\nSEED LEDGER: exposed below 300000; round 3 T 310000..310199, H 410000..411999; SEG audit 420000..421999; diagnostics 500000..502499, 510000..510499; round 4 T 320000..320199, H 430000..431999 (all used); round 5 T 330000..330199, H 440000..440499, extension 440500..441999; reserved T 340000..340999, H 450000..451999; confirmations free from 520000; F only in final batches (used by retreat-crossing and RC).\nLESSONS: measure items must rerun lost seeds; never ask an item or a merge for a command's output; merges carry full code gzip+base64 in `top`, and `input_sources` gives each item's result SHA = its artifact URL. Write-up limits: F reused across rounds and finalists; H common to a round's items; N adopted from another goal; local paired gains are not a leaderboard result; --sandbox not run; round 5 is under the requester's 100 items because distinct ideas ran out, not budget.\n",
 "spawn": [
  {
   "name": "r5-final",
   "brief": "One item measures ONE frozen candidate against ONE frozen comparator on ONE block of 500 seeds, paired by seed. No development, no tuning: change no code. Candidate {{key}} ({{idea}}): {{cand_how}} The SHA-256 of its UTF-8 bytes must be {{cand_sha}}. Comparator {{base_name}}: the `code` field of the JSON at {{base_url}} ; SHA-256 {{base_sha}}. Verify every hash by script before running; on a mismatch report it and run nothing.\nSimulator: https://github.com/danrobinson/prediction-market-challenge at commit b244530ee2a6247b5f930830eeca9dd950da0e7e, unmodified, default ChallengeConfig and ParameterVariance, 2000 steps, no --workers, no --sandbox. For each seed from {{start}} to {{end}} inclusive: cfg = sample_config(ChallengeConfig(), ParameterVariance(), seed=seed); run SimulationEngine(cfg, factory, seed=seed).run() once for the comparator and once for the candidate, each with a fresh strategy instance from load_strategy_factory; d = candidate total_edge minus comparator total_edge, unrounded; s = the sampled competitor spread in ticks (1 to 4), checked against the first observed rival quotes (ask minus bid equals 2s-1). Run in chunks of at most 50 seeds per command, each chunk appending to one results file, so a tool timeout loses nothing; before summarising check that every seed has exactly one record per strategy and rerun any seed that is missing or duplicated. Check values first: N on seeds 310000..310003 gives total edge 17.116002, 20.017111, 2.390311, 241.484752 (run N for the checks even when it is not the comparator).\nResult JSON fields: key, idea, candidate_sha256, comparator_sha256, seeds {start, end}, n, complete (true only when all 500 pairs ran), missing_seeds, failures [{seed, error}], check_values [4 numbers], python_version, seconds_per_simulation, overall {n, sum_d, sum_d2, mean_diff, se, comparator_mean, candidate_mean, retail_diff, arb_diff}, by_spread {\"1\",\"2\",\"3\",\"4\": the same fields}, per_seed [[seed, s, d to 6 decimals], ...], notes (at most 600 characters). se = sqrt((sum_d2 - sum_d*sum_d/n)/(n-1)/n). Report what ran: a partial run is complete false with its missing seeds listed, never padded or projected. No code in the result.",
   "items": [
    {
     "key": "cancel-f1",
     "vars": {
      "key": "d-s23-retreat-cancel",
      "idea": "cancel the side the rival just retreated from, spreads 2 and 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb .",
      "cand_sha": "3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "900000",
      "end": "900499"
     }
    },
    {
     "key": "cancel-f2",
     "vars": {
      "key": "d-s23-retreat-cancel",
      "idea": "cancel the side the rival just retreated from, spreads 2 and 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb .",
      "cand_sha": "3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "900500",
      "end": "900999"
     }
    },
    {
     "key": "cancel-f3",
     "vars": {
      "key": "d-s23-retreat-cancel",
      "idea": "cancel the side the rival just retreated from, spreads 2 and 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb .",
      "cand_sha": "3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "901000",
      "end": "901499"
     }
    },
    {
     "key": "cancel-f4",
     "vars": {
      "key": "d-s23-retreat-cancel",
      "idea": "cancel the side the rival just retreated from, spreads 2 and 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb .",
      "cand_sha": "3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "901500",
      "end": "901999"
     }
    },
    {
     "key": "cancel-f5",
     "vars": {
      "key": "d-s23-retreat-cancel",
      "idea": "cancel the side the rival just retreated from, spreads 2 and 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb .",
      "cand_sha": "3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "902000",
      "end": "902499"
     }
    },
    {
     "key": "cancel-f6",
     "vars": {
      "key": "d-s23-retreat-cancel",
      "idea": "cancel the side the rival just retreated from, spreads 2 and 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb .",
      "cand_sha": "3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "902500",
      "end": "902999"
     }
    },
    {
     "key": "cancel-f7",
     "vars": {
      "key": "d-s23-retreat-cancel",
      "idea": "cancel the side the rival just retreated from, spreads 2 and 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb .",
      "cand_sha": "3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "903000",
      "end": "903499"
     }
    },
    {
     "key": "cancel-f8",
     "vars": {
      "key": "d-s23-retreat-cancel",
      "idea": "cancel the side the rival just retreated from, spreads 2 and 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb .",
      "cand_sha": "3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "903500",
      "end": "903999"
     }
    },
    {
     "key": "cross-f1",
     "vars": {
      "key": "retreat-crossing",
      "idea": "posterior reweight on a one-tick rival retreat, spread 3; rerun of a finalist block whose first run was lost",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/459d3ec15ee1323593c23f1933500cb42ac662c51e5e2aa89f9b1befee3640d1 .",
      "cand_sha": "b5158a963a479a0919146dc0d56a347b68ddc2d66dd7c467b48473baef8997cf",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "900000",
      "end": "900499"
     }
    },
    {
     "key": "cross-f5",
     "vars": {
      "key": "retreat-crossing",
      "idea": "posterior reweight on a one-tick rival retreat, spread 3; rerun of a finalist block whose first run was lost",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/459d3ec15ee1323593c23f1933500cb42ac662c51e5e2aa89f9b1befee3640d1 .",
      "cand_sha": "b5158a963a479a0919146dc0d56a347b68ddc2d66dd7c467b48473baef8997cf",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "902000",
      "end": "902499"
     }
    }
   ],
   "output": {
    "format": "json",
    "maxBytes": 64000
   }
  },
  {
   "name": "r4-extend",
   "brief": "One item measures ONE frozen candidate against ONE frozen comparator on ONE block of 500 seeds, paired by seed. No development, no tuning: change no code. Candidate {{key}} ({{idea}}): {{cand_how}} The SHA-256 of its UTF-8 bytes must be {{cand_sha}}. Comparator {{base_name}}: the `code` field of the JSON at {{base_url}} ; SHA-256 {{base_sha}}. Verify every hash by script before running; on a mismatch report it and run nothing.\nSimulator: https://github.com/danrobinson/prediction-market-challenge at commit b244530ee2a6247b5f930830eeca9dd950da0e7e, unmodified, default ChallengeConfig and ParameterVariance, 2000 steps, no --workers, no --sandbox. For each seed from {{start}} to {{end}} inclusive: cfg = sample_config(ChallengeConfig(), ParameterVariance(), seed=seed); run SimulationEngine(cfg, factory, seed=seed).run() once for the comparator and once for the candidate, each with a fresh strategy instance from load_strategy_factory; d = candidate total_edge minus comparator total_edge, unrounded; s = the sampled competitor spread in ticks (1 to 4), checked against the first observed rival quotes (ask minus bid equals 2s-1). Run in chunks of at most 50 seeds per command, each chunk appending to one results file, so a tool timeout loses nothing; before summarising check that every seed has exactly one record per strategy and rerun any seed that is missing or duplicated. Check values first: N on seeds 310000..310003 gives total edge 17.116002, 20.017111, 2.390311, 241.484752 (run N for the checks even when it is not the comparator).\nResult JSON fields: key, idea, candidate_sha256, comparator_sha256, seeds {start, end}, n, complete (true only when all 500 pairs ran), missing_seeds, failures [{seed, error}], check_values [4 numbers], python_version, seconds_per_simulation, overall {n, sum_d, sum_d2, mean_diff, se, comparator_mean, candidate_mean, retail_diff, arb_diff}, by_spread {\"1\",\"2\",\"3\",\"4\": the same fields}, per_seed [[seed, s, d to 6 decimals], ...], notes (at most 600 characters). se = sqrt((sum_d2 - sum_d*sum_d/n)/(n-1)/n). Report what ran: a partial run is complete false with its missing seeds listed, never padded or projected. No code in the result.",
   "items": [
    {
     "key": "cancel-a",
     "vars": {
      "key": "d-s23-retreat-cancel",
      "idea": "cancel the side the rival just retreated from, spreads 2 and 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb .",
      "cand_sha": "3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "430500",
      "end": "430999"
     }
    },
    {
     "key": "cancel-b",
     "vars": {
      "key": "d-s23-retreat-cancel",
      "idea": "cancel the side the rival just retreated from, spreads 2 and 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb .",
      "cand_sha": "3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "431000",
      "end": "431499"
     }
    },
    {
     "key": "cancel-c",
     "vars": {
      "key": "d-s23-retreat-cancel",
      "idea": "cancel the side the rival just retreated from, spreads 2 and 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb .",
      "cand_sha": "3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "431500",
      "end": "431999"
     }
    },
    {
     "key": "s1-port-a",
     "vars": {
      "key": "d-s1-retreat-crossing-port",
      "idea": "retreat-crossing's posterior reweight ported to spread 1",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/6b9ed17bf5dea051170d96ecb2a250d14a21d2ff880ecb8f9017883bd03de44b .",
      "cand_sha": "bed6def9407c0304d052bec656525e73fa9afd6c0422d6589c3c0f22d268bf9a",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "430500",
      "end": "430999"
     }
    },
    {
     "key": "s1-port-b",
     "vars": {
      "key": "d-s1-retreat-crossing-port",
      "idea": "retreat-crossing's posterior reweight ported to spread 1",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/6b9ed17bf5dea051170d96ecb2a250d14a21d2ff880ecb8f9017883bd03de44b .",
      "cand_sha": "bed6def9407c0304d052bec656525e73fa9afd6c0422d6589c3c0f22d268bf9a",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "431000",
      "end": "431499"
     }
    },
    {
     "key": "s1-port-c",
     "vars": {
      "key": "d-s1-retreat-crossing-port",
      "idea": "retreat-crossing's posterior reweight ported to spread 1",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/6b9ed17bf5dea051170d96ecb2a250d14a21d2ff880ecb8f9017883bd03de44b .",
      "cand_sha": "bed6def9407c0304d052bec656525e73fa9afd6c0422d6589c3c0f22d268bf9a",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "431500",
      "end": "431999"
     }
    },
    {
     "key": "s1-postjump-a",
     "vars": {
      "key": "c-s1-queue-postjump",
      "idea": "s1 queue-safety posterior edge bound combined with the post-jump new-order filter, spread 1",
      "cand_how": "the markdown at https://api.imdnotdead.fun/artifacts/2194012e1ad22d8ec3c929865387870137484f68b7dc438c15bee80be81a9661 has one JSON code block; in its `top` list the entry with key c-s1-queue-postjump carries code.data as zlib+base64: zlib.decompress(base64.b64decode(data)) is the UTF-8 code.",
      "cand_sha": "64209895ae3ee232d7839aa00e33cdd29f8a33ec3d7de2dbbf15c5482fc69837",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "430500",
      "end": "430999"
     }
    },
    {
     "key": "s1-postjump-b",
     "vars": {
      "key": "c-s1-queue-postjump",
      "idea": "s1 queue-safety posterior edge bound combined with the post-jump new-order filter, spread 1",
      "cand_how": "the markdown at https://api.imdnotdead.fun/artifacts/2194012e1ad22d8ec3c929865387870137484f68b7dc438c15bee80be81a9661 has one JSON code block; in its `top` list the entry with key c-s1-queue-postjump carries code.data as zlib+base64: zlib.decompress(base64.b64decode(data)) is the UTF-8 code.",
      "cand_sha": "64209895ae3ee232d7839aa00e33cdd29f8a33ec3d7de2dbbf15c5482fc69837",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "431000",
      "end": "431499"
     }
    },
    {
     "key": "s1-postjump-c",
     "vars": {
      "key": "c-s1-queue-postjump",
      "idea": "s1 queue-safety posterior edge bound combined with the post-jump new-order filter, spread 1",
      "cand_how": "the markdown at https://api.imdnotdead.fun/artifacts/2194012e1ad22d8ec3c929865387870137484f68b7dc438c15bee80be81a9661 has one JSON code block; in its `top` list the entry with key c-s1-queue-postjump carries code.data as zlib+base64: zlib.decompress(base64.b64decode(data)) is the UTF-8 code.",
      "cand_sha": "64209895ae3ee232d7839aa00e33cdd29f8a33ec3d7de2dbbf15c5482fc69837",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "431500",
      "end": "431999"
     }
    },
    {
     "key": "s2-lowp-a",
     "vars": {
      "key": "d-s2-lowp-early-bids",
      "idea": "smaller new main bids at very low probability early in the run, spread 2",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/b4a68d2dd1bbd03bdc96072615ada1d5c5f27cafdf897c1bfac5913f5996be0c .",
      "cand_sha": "c3f52bdfbcc3a516d10172da7496dc8e9ac5c3cf4bee6b083566673a03f5a6cd",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "430500",
      "end": "430999"
     }
    },
    {
     "key": "s2-lowp-b",
     "vars": {
      "key": "d-s2-lowp-early-bids",
      "idea": "smaller new main bids at very low probability early in the run, spread 2",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/b4a68d2dd1bbd03bdc96072615ada1d5c5f27cafdf897c1bfac5913f5996be0c .",
      "cand_sha": "c3f52bdfbcc3a516d10172da7496dc8e9ac5c3cf4bee6b083566673a03f5a6cd",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "431000",
      "end": "431499"
     }
    },
    {
     "key": "s2-lowp-c",
     "vars": {
      "key": "d-s2-lowp-early-bids",
      "idea": "smaller new main bids at very low probability early in the run, spread 2",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/b4a68d2dd1bbd03bdc96072615ada1d5c5f27cafdf897c1bfac5913f5996be0c .",
      "cand_sha": "c3f52bdfbcc3a516d10172da7496dc8e9ac5c3cf4bee6b083566673a03f5a6cd",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "431500",
      "end": "431999"
     }
    },
    {
     "key": "s3-midsize-a",
     "vars": {
      "key": "d-s3-mid-size-up",
      "idea": "larger desired size at the rival level at middle probabilities, spread 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/f3f50cdb058d56b7842ec97f345bc7c11858d0b3b5370ea620fc66c593229e03 .",
      "cand_sha": "1317a49c96f2085e904ffdf7e19ba0d968e30f3f0019a404586c42316602248e",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "430500",
      "end": "430999"
     }
    },
    {
     "key": "s3-midsize-b",
     "vars": {
      "key": "d-s3-mid-size-up",
      "idea": "larger desired size at the rival level at middle probabilities, spread 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/f3f50cdb058d56b7842ec97f345bc7c11858d0b3b5370ea620fc66c593229e03 .",
      "cand_sha": "1317a49c96f2085e904ffdf7e19ba0d968e30f3f0019a404586c42316602248e",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "431000",
      "end": "431499"
     }
    },
    {
     "key": "s3-midsize-c",
     "vars": {
      "key": "d-s3-mid-size-up",
      "idea": "larger desired size at the rival level at middle probabilities, spread 3",
      "cand_how": "the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/f3f50cdb058d56b7842ec97f345bc7c11858d0b3b5370ea620fc66c593229e03 .",
      "cand_sha": "1317a49c96f2085e904ffdf7e19ba0d968e30f3f0019a404586c42316602248e",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "431500",
      "end": "431999"
     }
    },
    {
     "key": "s4-norisk-a",
     "vars": {
      "key": "remove-s4-ask-risk-premium",
      "idea": "N without the spread-4 1.4x ask-loss risk premium in ask sizing",
      "cand_how": "the markdown at https://api.imdnotdead.fun/artifacts/e019e7d93ce9c99453526d9d2113561d4c4ec0de062a50c42b51edd9edd62a5e has one JSON code block; its `top` object has the full UTF-8 code under `code` (key remove-s4-ask-risk-premium).",
      "cand_sha": "324acde86027cc793cdb88482560d00c720494e60ceee8720b76ed03ebfb141e",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "430500",
      "end": "430999"
     }
    },
    {
     "key": "s4-norisk-b",
     "vars": {
      "key": "remove-s4-ask-risk-premium",
      "idea": "N without the spread-4 1.4x ask-loss risk premium in ask sizing",
      "cand_how": "the markdown at https://api.imdnotdead.fun/artifacts/e019e7d93ce9c99453526d9d2113561d4c4ec0de062a50c42b51edd9edd62a5e has one JSON code block; its `top` object has the full UTF-8 code under `code` (key remove-s4-ask-risk-premium).",
      "cand_sha": "324acde86027cc793cdb88482560d00c720494e60ceee8720b76ed03ebfb141e",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "431000",
      "end": "431499"
     }
    },
    {
     "key": "s4-norisk-c",
     "vars": {
      "key": "remove-s4-ask-risk-premium",
      "idea": "N without the spread-4 1.4x ask-loss risk premium in ask sizing",
      "cand_how": "the markdown at https://api.imdnotdead.fun/artifacts/e019e7d93ce9c99453526d9d2113561d4c4ec0de062a50c42b51edd9edd62a5e has one JSON code block; its `top` object has the full UTF-8 code under `code` (key remove-s4-ask-risk-premium).",
      "cand_sha": "324acde86027cc793cdb88482560d00c720494e60ceee8720b76ed03ebfb141e",
      "base_name": "N",
      "base_url": "https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6",
      "base_sha": "bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae",
      "start": "431500",
      "end": "431999"
     }
    }
   ],
   "output": {
    "format": "json",
    "maxBytes": 64000
   },
   "merge": {
    "groupSize": 3,
    "brief": "Merge this group's results, all blocks of one candidate against one comparator, into one markdown: the candidate, comparator and their hashes; a table with one row per block (key, seeds, n, complete, failures count, mean_diff, se, retail_diff, arb_diff, python_version, flag); then the pooled statistics over the blocks, overall and for each spread 1 to 4, computed only from the blocks' n, sum_d and sum_d2 as mean = S/n and se = sqrt((Q - S*S/n)/(n-1)/n), with n-weighted retail_diff and arb_diff; then a JSON code block with `candidate_sha256`, `comparator_sha256`, `blocks` (each block's overall and by_spread as reported), `pooled` {overall, by_spread}, and `per_seed` (all blocks' rows concatenated, ordered by seed). Flag a block that is incomplete, has failures, a hash unlike the others, or check values off. Copy statistics, run no simulations, and never quote a command's output. Say plainly that these are screening seeds, not finalist seeds, when they are below 900000."
   }
  },
  {
   "name": "r5-deepen",
   "brief": "One item develops ONE change to the incumbent RC and screens it paired against RC. Idea {{key}}: {{idea}} Spread(s): {{spreads}}. {{change}} Nothing else changes; prefer a wrapper subclass at the end of the file.\nRC: the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb ; SHA-256 3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f. RC is N plus a wrapper subclass at the end of the file: on an exactly-one-tick rival retreat (bid down or ask up) it cancels every own order on that side and suppresses placements there for one callback, spreads 2 and 3 only, clearing that side's probe bookkeeping (pb, pa, last_quote_exposed). Verify the hash by script; on a mismatch report and stop. RC sets self.s (rival spread 1 to 4) at the first step; a run has one spread: act only on target spreads, so off-target d is exactly 0.\nSimulator: https://github.com/danrobinson/prediction-market-challenge at commit b244530ee2a6247b5f930830eeca9dd950da0e7e, unmodified, default ChallengeConfig and ParameterVariance, 2000 steps, no --workers, no --sandbox. Check values: report RC's total edge on seeds 310000..310003 as check_values (every item must get the same four numbers). Pair by seed: sample_config(ChallengeConfig(), ParameterVariance(), seed=seed), then SimulationEngine(cfg, factory, seed=seed).run() for RC and for the candidate; d = candidate minus RC total_edge; s = the sampled spread. Run chunks of at most 50 seeds per command, appending to a file; check every seed has one record per strategy.\nTuning: seeds 330000..330199, at most 4 variants, pick the best paired mean on the target spread(s), freeze. Holdout: seeds 440000..440499, once, after freezing; never retune on it.\nResult JSON: key, idea, approach (at most 500 characters), tried (per variant: name, code_sha256, tuning mean_diff, se), next, code (the frozen full file, UTF-8; gzip+base64 with code_encoding if the result would pass 60,000 bytes), code_sha256, comparator_sha256, target_spreads, tuning {seeds, selected, variant stats}, paired {seeds, n, complete, missing_seeds, overall and by_spread \"1\" to \"4\": n, sum_d, sum_d2, mean_diff, se, comparator_mean, candidate_mean, retail_diff, arb_diff}, failures, check_values, python_version, seconds_per_simulation. se = sqrt((sum_d2 - sum_d*sum_d/n)/(n-1)/n). No per-seed arrays; a partial run says complete false. A screen, not a promotion.",
   "items": [
    {
     "key": "d5-s1-cancel-port",
     "vars": {
      "key": "d5-s1-cancel-port",
      "idea": "port the retreat cancel to spread 1 (exactly one-tick retreats).",
      "spreads": "1",
      "change": "Enable the wrapper's cancel-and-suppress on spread 1 as well (keep spreads 2 and 3 as RC). Variants on tuning: cooldown 1 or 2 callbacks; bids only, asks only, or both sides."
     }
    },
    {
     "key": "d5-s4-cancel-port",
     "vars": {
      "key": "d5-s4-cancel-port",
      "idea": "port the retreat cancel to spread 4 (exactly one-tick retreats).",
      "spreads": "4",
      "change": "Enable the wrapper's cancel-and-suppress on spread 4 as well (keep spreads 2 and 3 as RC). Variants on tuning: cooldown 1 or 2 callbacks; bids only, asks only, or both sides."
     }
    },
    {
     "key": "d5-s1-cancel-any-outward",
     "vars": {
      "key": "d5-s1-cancel-any-outward",
      "idea": "on spread 1, trigger the cancel on any outward rival move (two or more ticks, or the rival side vanishing), not on exactly one tick.",
      "spreads": "1",
      "change": "On spread 1 only, add a trigger for outward moves of two or more ticks and for a rival side becoming None, with the same cancel-and-suppress action; keep the one-tick trigger off on spread 1 so this item measures the other moves alone."
     }
    },
    {
     "key": "d5-s4-cancel-any-outward",
     "vars": {
      "key": "d5-s4-cancel-any-outward",
      "idea": "on spread 4, trigger the cancel on any outward rival move (two or more ticks, or the rival side vanishing), not on exactly one tick.",
      "spreads": "4",
      "change": "On spread 4 only, add a trigger for outward moves of two or more ticks and for a rival side becoming None, with the same cancel-and-suppress action; keep the one-tick trigger off on spread 4 so this item measures the other moves alone."
     }
    },
    {
     "key": "d5-s23-cancel-two-tick",
     "vars": {
      "key": "d5-s23-cancel-two-tick",
      "idea": "also trigger on retreats of two or more ticks on spreads 2 and 3.",
      "spreads": "2 and 3",
      "change": "Extend the trigger from exactly one tick to any outward move of one tick or more; variants: also treat a rival side becoming None as a retreat, or not."
     }
    },
    {
     "key": "d5-s23-cancel-requote",
     "vars": {
      "key": "d5-s23-cancel-requote",
      "idea": "on a retreat, re-place the main order one tick further from the market instead of leaving the side empty.",
      "spreads": "2 and 3",
      "change": "After the wrapper's cancels, place one order on that side at the rival's new quote level plus the distance (variants: 1 or 2 ticks behind the rival's new quote) with RC's usual size for that level, while still suppressing RC's own placements for the cooldown."
     }
    },
    {
     "key": "d5-s23-cancel-size-cut",
     "vars": {
      "key": "d5-s23-cancel-size-cut",
      "idea": "on a retreat, cut that side's sizes instead of cancelling.",
      "spreads": "2 and 3",
      "change": "Replace cancel-and-suppress by: keep resting orders, and scale every new PlaceOrder on that side by a fraction f for the cooldown (variants f = 0.25, 0.5; cooldown 1 or 2). Keeps queue position; tests whether the gain is in the cancel or in not adding."
     }
    },
    {
     "key": "d5-s23-cancel-until-return",
     "vars": {
      "key": "d5-s23-cancel-until-return",
      "idea": "keep the side blocked until the rival's quote comes back inward, capped at K callbacks.",
      "spreads": "2 and 3",
      "change": "Change the cooldown from a fixed 1 to: blocked while the rival's quote on that side stays at or beyond its retreated level, at most K callbacks (variants K = 3, 5, 10)."
     }
    },
    {
     "key": "d5-s23-cancel-late-longer",
     "vars": {
      "key": "d5-s23-cancel-late-longer",
      "idea": "longer cooldown late in the run.",
      "spreads": "2 and 3",
      "change": "Cooldown 1 before step 1600 and L after (variants L = 2, 3, 5)."
     }
    },
    {
     "key": "d5-s23-cancel-repeat",
     "vars": {
      "key": "d5-s23-cancel-repeat",
      "idea": "longer block when the same side retreated recently.",
      "spreads": "2 and 3",
      "change": "If that side also retreated within the last W steps, block for 3 callbacks instead of 1 (variants W = 5, 10, 20)."
     }
    },
    {
     "key": "d5-s23-cancel-keep-probes",
     "vars": {
      "key": "d5-s23-cancel-keep-probes",
      "idea": "cancel and suppress main orders only; keep probe orders.",
      "spreads": "2 and 3",
      "change": "Exclude RC's probe orders (those tracked in pb and pa) from the cancels and the suppression, and do not clear the probe bookkeeping; variants: keep probes on both sides, or on the retreated side only."
     }
    },
    {
     "key": "d5-s23-cancel-near-only",
     "vars": {
      "key": "d5-s23-cancel-near-only",
      "idea": "cancel only the order nearest the market on the retreated side.",
      "spreads": "2 and 3",
      "change": "Cancel only the own order(s) at the best own price on that side; keep deeper orders; suppress placements as RC does (variants: with and without the suppression)."
     }
    },
    {
     "key": "d5-s23-cancel-far-only",
     "vars": {
      "key": "d5-s23-cancel-far-only",
      "idea": "cancel only the deeper orders; keep the front order's queue position.",
      "spreads": "2 and 3",
      "change": "Keep the own order(s) at the best own price on that side; cancel the rest; suppress placements as RC does (variants: with and without the suppression)."
     }
    },
    {
     "key": "d5-s23-cancel-phat-band",
     "vars": {
      "key": "d5-s23-cancel-phat-band",
      "idea": "apply the cancel only at middle probabilities.",
      "spreads": "2 and 3",
      "change": "Act only when RC's probability estimate is inside a band (variants 5-95c, 10-90c, 20-80c); outside it return RC's actions unchanged."
     }
    },
    {
     "key": "d5-s23-cancel-jump-charge",
     "vars": {
      "key": "d5-s23-cancel-jump-charge",
      "idea": "after a retreat, also charge more jump risk in that side's sizing for a while.",
      "spreads": "2 and 3",
      "change": "Keep the cancel; for M steps after a retreat multiply the jump-loss term in that side's sizing by k (variants M = 5, 10; k = 1.5, 2)."
     }
    },
    {
     "key": "d5-s23-cancel-opposite-boost",
     "vars": {
      "key": "d5-s23-cancel-opposite-boost",
      "idea": "on a retreat, enlarge the opposite side for the cooldown.",
      "spreads": "2 and 3",
      "change": "Keep the cancel; scale new PlaceOrder sizes on the opposite side by g for the cooldown and the next step (variants g = 1.25, 1.5, 2)."
     }
    },
    {
     "key": "d5-s2-retreat-posterior",
     "vars": {
      "key": "d5-s2-retreat-posterior",
      "idea": "on spread 2, shift the probability estimate one tick in the retreat direction as well as cancelling.",
      "spreads": "2",
      "change": "On spread 2 only, after a retreat also move RC's probability estimate toward the rival's new mid by a fraction (variants 0.3, 0.5, 0.7 of a tick) for that step; keep the cancel. Spread 3 already has this from retreat-crossing; leave it."
     }
    },
    {
     "key": "d5-s23-cancel-both-sides",
     "vars": {
      "key": "d5-s23-cancel-both-sides",
      "idea": "cancel both sides on any retreat.",
      "spreads": "2 and 3",
      "change": "On a retreat on either side, cancel and suppress both sides for the cooldown (variants cooldown 1 or 2)."
     }
    },
    {
     "key": "d5-s23-cancel-inventory-gate",
     "vars": {
      "key": "d5-s23-cancel-inventory-gate",
      "idea": "cancel only when inventory already leans that way.",
      "spreads": "2 and 3",
      "change": "Act on a bid retreat only when yes_inventory is above a threshold, on an ask retreat only when it is below minus that threshold (variants threshold 0, 25, 50 shares); otherwise keep RC's orders."
     }
    },
    {
     "key": "d5-s23-cancel-time-gate",
     "vars": {
      "key": "d5-s23-cancel-time-gate",
      "idea": "apply the cancel only after the early steps.",
      "spreads": "2 and 3",
      "change": "Act only when step is above T0 (variants T0 = 100, 300, 600); before that return N's actions unchanged."
     }
    },
    {
     "key": "d5-s23-cancel-only-after-fill",
     "vars": {
      "key": "d5-s23-cancel-only-after-fill",
      "idea": "cancel only when the retreat follows an own fill on that side.",
      "spreads": "2 and 3",
      "change": "Act only when buy_filled_quantity (bid side) or sell_filled_quantity (ask side) rose within the last F steps before the retreat (variants F = 1, 2, 5); otherwise keep RC's orders."
     }
    },
    {
     "key": "d5-s23-cancel-not-after-fill",
     "vars": {
      "key": "d5-s23-cancel-not-after-fill",
      "idea": "skip the cancel when an own fill on that side preceded it.",
      "spreads": "2 and 3",
      "change": "Act only when no own fill on that side happened within the last F steps (variants F = 1, 2, 5); the complement of the after-fill filter."
     }
    },
    {
     "key": "d5-s23-cancel-reentry-ladder",
     "vars": {
      "key": "d5-s23-cancel-reentry-ladder",
      "idea": "re-enter with half size after the cooldown.",
      "spreads": "2 and 3",
      "change": "After the cooldown, scale new PlaceOrder sizes on that side by h for R steps, then full (variants h = 0.5; R = 3, 5, 10)."
     }
    },
    {
     "key": "d5-s23-cancel-inward-join",
     "vars": {
      "key": "d5-s23-cancel-inward-join",
      "idea": "after the cooldown, join the rival's new level at once.",
      "spreads": "2 and 3",
      "change": "On the first callback after the cooldown, if RC places nothing on that side, place one order at the rival's current quote level on that side with RC's usual size for that level (variants: only when the rival has come back inward, or always)."
     }
    },
    {
     "key": "d5-s23-cancel-asym-cooldown",
     "vars": {
      "key": "d5-s23-cancel-asym-cooldown",
      "idea": "a longer cooldown for asks than for bids.",
      "spreads": "2 and 3",
      "change": "Cooldown per side (variants asks 2 bids 1; asks 1 bids 2; asks 3 bids 1)."
     }
    },
    {
     "key": "d5-s23-cancel-vanish",
     "vars": {
      "key": "d5-s23-cancel-vanish",
      "idea": "treat a rival side disappearing as a retreat.",
      "spreads": "2 and 3",
      "change": "Also trigger the cancel-and-suppress when the rival's best quote on a side becomes None (variants: cooldown 1 or 2; also when it reappears, or not)."
     }
    },
    {
     "key": "c5-s3-cancel-crossing",
     "vars": {
      "key": "c5-s3-cancel-crossing",
      "idea": "combine the retreat cancel with retreat-crossing on spread 3.",
      "spreads": "3",
      "change": "Take retreat-crossing (the `code` of https://api.imdnotdead.fun/artifacts/459d3ec15ee1323593c23f1933500cb42ac662c51e5e2aa89f9b1befee3640d1 , SHA-256 b5158a96..., N with a spread-3 posterior reweight on one-tick retreats) and append RC's wrapper to it verbatim, so the file is N plus both mechanisms. Variants: the reweight strength 0.3, 0.5, 0.7 (its existing constant)."
     }
    },
    {
     "key": "c5-s2-cancel-lowp",
     "vars": {
      "key": "c5-s2-cancel-lowp",
      "idea": "combine the retreat cancel with smaller early low-probability bids on spread 2.",
      "spreads": "2",
      "change": "Apply to RC the change of d-s2-lowp-early-bids (the `code` of https://api.imdnotdead.fun/artifacts/b4a68d2dd1bbd03bdc96072615ada1d5c5f27cafdf897c1bfac5913f5996be0c , SHA-256 c3f52bdf...; diff it against N to find the change). Variants: its size factor at 0.25, 0.5, 0.75."
     }
    },
    {
     "key": "c5-s3-cancel-midsize",
     "vars": {
      "key": "c5-s3-cancel-midsize",
      "idea": "combine the retreat cancel with larger mid-probability size at the rival level on spread 3.",
      "spreads": "3",
      "change": "Apply to RC the change of d-s3-mid-size-up (the `code` of https://api.imdnotdead.fun/artifacts/f3f50cdb058d56b7842ec97f345bc7c11858d0b3b5370ea620fc66c593229e03 , SHA-256 1317a49c...; diff it against N). Variants: its size multiplier at 1.25, 1.5, 2."
     }
    },
    {
     "key": "c5-s1-port-postjump",
     "vars": {
      "key": "c5-s1-port-postjump",
      "idea": "combine the two spread-1 candidates: retreat-crossing port and queue-postjump.",
      "spreads": "1",
      "change": "Start from d-s1-retreat-crossing-port (`code` of https://api.imdnotdead.fun/artifacts/6b9ed17bf5dea051170d96ecb2a250d14a21d2ff880ecb8f9017883bd03de44b , SHA-256 bed6def9...), add the change of c-s1-queue-postjump (its `top` entry in the JSON block of https://api.imdnotdead.fun/artifacts/2194012e1ad22d8ec3c929865387870137484f68b7dc438c15bee80be81a9661 , code.data zlib+base64, SHA-256 64209895...; diff both against N), then append RC's wrapper. Variants: the queue-safety bound at 3 settings."
     }
    },
    {
     "key": "c5-s1-port-cancel",
     "vars": {
      "key": "c5-s1-port-cancel",
      "idea": "combine the spread-1 retreat-crossing port with the retreat cancel on spread 1.",
      "spreads": "1",
      "change": "Start from d-s1-retreat-crossing-port (the `code` of https://api.imdnotdead.fun/artifacts/6b9ed17bf5dea051170d96ecb2a250d14a21d2ff880ecb8f9017883bd03de44b , SHA-256 bed6def9...), append RC's wrapper with spread 1 added to its guard (variants: cooldown 1 or 2; both sides or asks only)."
     }
    },
    {
     "key": "c5-s2-cancel-mask-to-ask",
     "vars": {
      "key": "c5-s2-cancel-mask-to-ask",
      "idea": "combine the retreat cancel with the jump-masked flow estimate in ask sizing on spread 2.",
      "spreads": "2",
      "change": "Apply to RC the change of c-s2-mask-to-ask (markdown at https://api.imdnotdead.fun/artifacts/30904b002314c987d356340c07addc67067aaf7c2dc4125646e7709f7e3bcce7 , JSON block, `top` entry of that key, code.data gzip+base64, SHA-256 bf5b107d...; diff it against N). Variants: its blend weight at 3 settings."
     }
    }
   ],
   "output": {
    "format": "json",
    "maxBytes": 64000
   },
   "merge": {
    "groupSize": 8,
    "brief": "Merge this group's results into one markdown: a table ranked by target-spread mean_diff/se with key, code_sha256, target spreads, holdout n, target-spread mean_diff and se, overall mean_diff and se, retail_diff, arb_diff, tuning mean, flag (flag a row that is incomplete, has failures, a missing hash, check values off, off_equals_rc false where that field exists, or a comparator_mean on 440000..440499 unlike the other rows'). Then a JSON code block with `rows` (every row's fields above plus by_spread as reported), `top` (the full code of the best two unflagged rows by target-spread mean_diff/se, gzip+base64 under `code` with the encoding stated, each with key and code_sha256; for an overlay row also assembled_sha256), and `input_sources` (each key's result file SHA-256). Copy statistics, never recompute from per-seed data, run no simulations, and never quote a command's output. Say that these are screening seeds, not finalist seeds."
   }
  },
  {
   "name": "r5-fresh",
   "brief": "One item builds ONE overlay mechanism on the incumbent file RC, blind, and screens it paired against RC. Mechanism {{key}}: {{mech}} Act only on spreads {{spreads}} (s = max(1, (ask - bid + 1) // 2) from the rival's first quotes; off-target d must be exactly 0).\nBlind rule: never open, print, diff or search RC's source, any other strategy for this challenge, a leaderboard entry or an earlier result; read only the simulator and its docs. Get RC by script: write the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb to a file, check its UTF-8 SHA-256 is 3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f (stop on a mismatch), and import it as a module you never read. Your overlay subclasses its Strategy, calls super().on_step(state) and edits the returned actions by your one mechanism only (drop, add or resize CancelOrder and PlaceOrder actions), reading StepState only (step, cash, inventory, fills, own orders, rival best bid and ask ticks). With the mechanism off it must return RC's actions unchanged (check 3 seeds, report off_equals_rc). assembled_sha256 = SHA-256 of RC's text with its class Strategy renamed _RC, followed by your overlay whose subclass is named Strategy.\nSimulator: https://github.com/danrobinson/prediction-market-challenge at commit b244530ee2a6247b5f930830eeca9dd950da0e7e, unmodified, default ChallengeConfig and ParameterVariance, 2000 steps, no --workers, no --sandbox. Check values: report RC's total edge on seeds 310000..310003 as check_values (every item must get the same four numbers). Pair by seed: sample_config(ChallengeConfig(), ParameterVariance(), seed=seed), then SimulationEngine(cfg, factory, seed=seed).run() for RC and for the candidate; d = candidate minus RC total_edge; s = the sampled spread. Run chunks of at most 50 seeds per command, appending to a file; check every seed has one record per strategy.\nTuning: seeds 330000..330199, at most 4 variants, pick the best paired mean on the target spread(s), freeze. Holdout: seeds 440000..440499, once, after freezing; never retune on it.\nResult JSON: key, mechanism, approach (at most 400 characters), tried (per variant: name, code_sha256, tuning mean_diff, se), next, spreads_acted, off_equals_rc, code (overlay source, at most 10,000 bytes), code_sha256, assembled_sha256, comparator_sha256, tuning stats, paired {seeds, n, complete, missing_seeds, overall and by_spread \"1\" to \"4\": n, sum_d, sum_d2, mean_diff, se, comparator_mean, candidate_mean, retail_diff, arb_diff}, failures, check_values, python_version, seconds_per_simulation. se = sqrt((sum_d2 - sum_d*sum_d/n)/(n-1)/n). No per-seed arrays; a partial run says complete false. A screen, not a promotion.",
   "items": [
    {
     "key": "f5-rival-advance-opposite",
     "vars": {
      "key": "f5-rival-advance-opposite",
      "mech": "When the rival improves one side by exactly one tick (bid up or ask down), cancel own orders on the OPPOSITE side and place nothing there for one callback: the move says where the price goes. Variants: cooldown 1 or 2.",
      "spreads": "2, 3 and 4"
     }
    },
    {
     "key": "f5-rival-advance-same",
     "vars": {
      "key": "f5-rival-advance-same",
      "mech": "When the rival improves one side by one tick, cancel own orders on the SAME side (now behind the rival in the queue) and let RC re-quote next callback. Variants: cooldown 1 or 2.",
      "spreads": "1, 2, 3 and 4"
     }
    },
    {
     "key": "f5-rival-shift",
     "vars": {
      "key": "f5-rival-shift",
      "mech": "When both rival quotes move the same direction in one step, cancel own orders on the side the price moved toward and place nothing there for one callback. Variants: move of 1 or of 2+ ticks; cooldown 1 or 2.",
      "spreads": "1, 2, 3 and 4"
     }
    },
    {
     "key": "f5-rival-widen-both",
     "vars": {
      "key": "f5-rival-widen-both",
      "mech": "When both rival quotes retreat in the same step, cancel both sides and place nothing for one callback. Variants: cooldown 1, 2 or 3.",
      "spreads": "1, 2, 3 and 4"
     }
    },
    {
     "key": "f5-rival-vanish-side",
     "vars": {
      "key": "f5-rival-vanish-side",
      "mech": "When a rival side disappears (its best quote becomes None), cancel own orders on that side and place nothing there until it reappears, at most K callbacks. Variants: K = 2, 5, 10.",
      "spreads": "1, 2, 3 and 4"
     }
    },
    {
     "key": "f5-large-own-fill",
     "vars": {
      "key": "f5-large-own-fill",
      "mech": "When an own fill on a side in one step is large (above a running quantile q of the run's nonzero fills), cancel that side for one callback; small fills do nothing. Variants: q = 0.8, 0.9, 0.95.",
      "spreads": "2, 3 and 4"
     }
    },
    {
     "key": "f5-fill-streak",
     "vars": {
      "key": "f5-fill-streak",
      "mech": "When own fills on one side happen on two consecutive steps, cancel that side and place nothing there for one callback. Variants: streak 2 or 3; cooldown 1 or 2.",
      "spreads": "1, 2, 3 and 4"
     }
    },
    {
     "key": "f5-reprice-rate",
     "vars": {
      "key": "f5-reprice-rate",
      "mech": "When the rival's quotes changed on more than K of the last 20 steps (a volatile regime), scale every new order's size by f until the count falls back. Variants: K = 6, 10; f = 0.5, 0.7.",
      "spreads": "1, 2, 3 and 4"
     }
    },
    {
     "key": "f5-jump-cluster",
     "vars": {
      "key": "f5-jump-cluster",
      "mech": "After the rival's mid moves two or more ticks in one step (a jump just happened), cancel both sides and place nothing for C callbacks: jumps cluster. Variants: C = 1, 2, 4.",
      "spreads": "1, 2, 3 and 4"
     }
    },
    {
     "key": "f5-two-step-retreat",
     "vars": {
      "key": "f5-two-step-retreat",
      "mech": "When the rival retreats on the same side on two consecutive steps (a trend), cancel BOTH sides and place nothing for C callbacks; a single retreat does nothing here. Variants: C = 2, 3, 5.",
      "spreads": "1, 2, 3 and 4"
     }
    },
    {
     "key": "f5-mid-gap",
     "vars": {
      "key": "f5-mid-gap",
      "mech": "Keep an exponential moving average of the rival mid (half-life H steps); when the rival mid is G or more ticks from it, cancel own orders on the side the mid moved toward for one callback. Variants: H = 5, 20; G = 2, 3.",
      "spreads": "1, 2, 3 and 4"
     }
    }
   ],
   "output": {
    "format": "json",
    "maxBytes": 64000
   },
   "merge": {
    "groupSize": 6,
    "brief": "Merge this group's results into one markdown: a table ranked by target-spread mean_diff/se with key, code_sha256, target spreads, holdout n, target-spread mean_diff and se, overall mean_diff and se, retail_diff, arb_diff, tuning mean, flag (flag a row that is incomplete, has failures, a missing hash, check values off, off_equals_rc false where that field exists, or a comparator_mean on 440000..440499 unlike the other rows'). Then a JSON code block with `rows` (every row's fields above plus by_spread as reported), `top` (the full code of the best two unflagged rows by target-spread mean_diff/se, gzip+base64 under `code` with the encoding stated, each with key and code_sha256; for an overlay row also assembled_sha256), and `input_sources` (each key's result file SHA-256). Copy statistics, never recompute from per-seed data, run no simulations, and never quote a command's output. Say that these are screening seeds, not finalist seeds."
   }
  },
  {
   "name": "r5-remove",
   "brief": "One item tests ONE deletion from the wrapper that RC adds to N, without tuning, screened paired against RC. Deletion {{key}}: {{idea}} Target spread(s): {{spreads}}. Delete only: {{change}} Everything else stays byte for byte; off-target d must be exactly 0. If the wrapper has no such part, set not_applicable true, say why, and run no simulations.\nRC: the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/2d4b30bbc6bffbc500b37ce5e8a1ac821d6513c52a6a2377b4be3c11d97717fb ; SHA-256 3c07bdcd221ac25729c3ebc92b21ac9e2014510ecb85816c4391ed81e933291f. RC is N plus a wrapper subclass at the end of the file: on an exactly-one-tick rival retreat (bid down or ask up) it cancels every own order on that side and suppresses placements there for one callback, spreads 2 and 3 only, clearing that side's probe bookkeeping (pb, pa, last_quote_exposed). Verify the hash by script; on a mismatch report and stop. RC sets self.s (rival spread 1 to 4) at the first step; a run has one spread: act only on target spreads, so off-target d is exactly 0.\nSimulator: https://github.com/danrobinson/prediction-market-challenge at commit b244530ee2a6247b5f930830eeca9dd950da0e7e, unmodified, default ChallengeConfig and ParameterVariance, 2000 steps, no --workers, no --sandbox. Check values: report RC's total edge on seeds 310000..310003 as check_values (every item must get the same four numbers). Pair by seed: sample_config(ChallengeConfig(), ParameterVariance(), seed=seed), then SimulationEngine(cfg, factory, seed=seed).run() for RC and for the candidate; d = candidate minus RC total_edge; s = the sampled spread. Run chunks of at most 50 seeds per command, appending to a file; check every seed has one record per strategy.\nSeeds: the holdout 440000..440499 only, once; no tuning. d = deleted version minus RC: negative means the deleted part carries gain, positive means RC is simpler without it.\nResult JSON: key, idea, what_was_deleted (the removed or replaced lines), not_applicable, code (the full file as UTF-8 text; gzip+base64 with code_encoding if the result would pass 60,000 bytes), code_sha256, comparator_sha256, target_spreads, paired {seeds, n, complete, missing_seeds, overall and by_spread \"1\" to \"4\": n, sum_d, sum_d2, mean_diff, se, comparator_mean, candidate_mean, retail_diff, arb_diff}, failures, check_values, python_version, seconds_per_simulation. se = sqrt((sum_d2 - sum_d*sum_d/n)/(n-1)/n). No per-seed arrays; a partial run says complete false. A screen, not a promotion.",
   "items": [
    {
     "key": "remove-s2-bid-cancel",
     "vars": {
      "key": "remove-s2-bid-cancel",
      "idea": "drop the bid-side trigger on spread 2 (keep the ask-side cancel).",
      "spreads": "2",
      "change": "the wrapper's reaction to a rival bid retreat when self.s == 2 (no cancel, no suppression, no pb clearing on bids); spread 3 stays as RC."
     }
    },
    {
     "key": "remove-s2-ask-cancel",
     "vars": {
      "key": "remove-s2-ask-cancel",
      "idea": "drop the ask-side trigger on spread 2 (keep the bid-side cancel).",
      "spreads": "2",
      "change": "the wrapper's reaction to a rival ask retreat when self.s == 2; spread 3 stays as RC."
     }
    },
    {
     "key": "remove-s3-bid-cancel",
     "vars": {
      "key": "remove-s3-bid-cancel",
      "idea": "drop the bid-side trigger on spread 3 (keep the ask-side cancel).",
      "spreads": "3",
      "change": "the wrapper's reaction to a rival bid retreat when self.s == 3; spread 2 stays as RC."
     }
    },
    {
     "key": "remove-s3-ask-cancel",
     "vars": {
      "key": "remove-s3-ask-cancel",
      "idea": "drop the ask-side trigger on spread 3 (keep the bid-side cancel).",
      "spreads": "3",
      "change": "the wrapper's reaction to a rival ask retreat when self.s == 3; spread 2 stays as RC."
     }
    },
    {
     "key": "remove-s23-suppress",
     "vars": {
      "key": "remove-s23-suppress",
      "idea": "keep the cancels, drop the suppression of new placements.",
      "spreads": "2 and 3",
      "change": "the filtering of PlaceOrder actions on the blocked side and the related ahead/res discards; the CancelOrder additions and the probe bookkeeping clearing stay."
     }
    },
    {
     "key": "remove-s23-probe-clear",
     "vars": {
      "key": "remove-s23-probe-clear",
      "idea": "keep cancel and suppression, drop the probe bookkeeping clearing.",
      "spreads": "2 and 3",
      "change": "the lines that clear pb, pa and last_quote_exposed on a blocked side; cancels and suppression stay."
     }
    }
   ],
   "output": {
    "format": "json",
    "maxBytes": 64000
   },
   "merge": {
    "groupSize": 3,
    "brief": "Merge this group's results into one markdown: a table ranked by target-spread mean_diff/se with key, code_sha256, target spreads, holdout n, target-spread mean_diff and se, overall mean_diff and se, retail_diff, arb_diff, tuning mean, flag (flag a row that is incomplete, has failures, a missing hash, check values off, off_equals_rc false where that field exists, or a comparator_mean on 440000..440499 unlike the other rows'). Then a JSON code block with `rows` (every row's fields above plus by_spread as reported), `top` (the full code of the best two unflagged rows by target-spread mean_diff/se, gzip+base64 under `code` with the encoding stated, each with key and code_sha256; for an overlay row also assembled_sha256), and `input_sources` (each key's result file SHA-256). Copy statistics, never recompute from per-seed data, run no simulations, and never quote a command's output. Say that these are screening seeds, not finalist seeds."
   }
  },
  {
   "name": "r5-diagnose",
   "brief": "One item measures ONE thing about the incumbent N, by rival spread. It builds no candidate and changes no strategy. Measurement {{key}}: {{what}}\nN: the `code` field of the JSON at https://api.imdnotdead.fun/artifacts/db22aff7167a4798251ed3d20432509f30e511e4958799aba5b17b41bb39b4b6 ; SHA-256 of its UTF-8 bytes bf0d179f3e47d28819f6fa7e0d25548c2ced43374c216d36460b00a26a26ffae. You may read it. Simulator: https://github.com/danrobinson/prediction-market-challenge at commit b244530ee2a6247b5f930830eeca9dd950da0e7e, unmodified in what it simulates, default ChallengeConfig and ParameterVariance, 2000 steps, no --workers, no --sandbox. You may instrument the simulator in-process (read the true probability path, the arbitrageur's and retail fills, and N's orders each step) as long as N's actions and the scores are unchanged: check that N on seeds 310000..310003 gives total edge 17.116002, 20.017111, 2.390311, 241.484752. Seeds: 510000..510499, one run of N per seed, grouped by the sampled competitor spread s (1 to 4). Run in chunks of at most 50 seeds per command appending to a file.\nResult JSON fields: key, what, n_seeds, by_spread {\"1\",\"2\",\"3\",\"4\": the figures the measurement names, each with its count}, finding (at most 700 characters: what spreads 1 to 4 show and what change to N it suggests), method (at most 600 characters), check_values, python_version. No strategy code in the result.",
   "items": [
    {
     "key": "d5-diag-retreat",
     "vars": {
      "key": "d5-diag-retreat",
      "what": "Rival retreats as a sweep signal. Per spread and per side, over the runs: how many exactly-one-tick retreats, two-or-more-tick retreats and vanishes (quote becomes None) per run; for the step right after each kind of event versus all steps: the share where the true probability moves further in the retreat direction by at least 1 tick and by at least 3 ticks, and the share where the rival's quote on that side comes back inward within 3 steps; N's arbitrage edge change on that step on the retreated side and on the other side, per event and summed per run; and N's retail edge on that side on that step. Also the same figures for the step after a retreat that followed an own fill on that side within 2 steps versus one that did not."
     }
    },
    {
     "key": "d5-diag-advance",
     "vars": {
      "key": "d5-diag-advance",
      "what": "Rival inward moves and same-direction shifts as signals. Per spread, over the runs: how many one-tick inward rival moves (bid up, ask down), both-quotes same-direction shifts, and two-or-more-tick rival mid moves per run; for the step right after each kind of event versus all steps: the share where the true probability moves at least 1 tick and at least 3 ticks, in which direction relative to the event; N's arbitrage edge change on that step on each side, per event and summed per run; and N's retail edge on each side on that step. Say for each event kind and spread whether cancelling the threatened side on that step would have gained, net of the retail edge it forgoes."
     }
    }
   ],
   "output": {
    "format": "json",
    "maxBytes": 32000
   }
  }
 ],
 "read": [
  "r5-final/cancel-f1",
  "r5-final/cancel-f2",
  "r5-final/cancel-f3",
  "r5-final/cancel-f4",
  "r5-final/cancel-f5",
  "r5-final/cancel-f6",
  "r5-final/cancel-f7",
  "r5-final/cancel-f8",
  "r5-final/cross-f1",
  "r5-final/cross-f5",
  "r4-extend/merge-01",
  "r4-extend/merge-02",
  "r4-extend/merge-03",
  "r4-extend/merge-04",
  "r4-extend/merge-05",
  "r4-extend/merge-06",
  "r5-deepen/merge-01",
  "r5-deepen/merge-02",
  "r5-deepen/merge-03",
  "r5-deepen/merge-04",
  "r5-fresh/merge-01",
  "r5-fresh/merge-02",
  "r5-remove/merge-01",
  "r5-remove/merge-02",
  "r5-diagnose/d5-diag-retreat",
  "r5-diagnose/d5-diag-advance"
 ],
 "cancel": [],
 "wake": {
  "batches": [
   "r5-final",
   "r4-extend",
   "r5-deepen",
   "r5-fresh",
   "r5-remove",
   "r5-diagnose"
  ],
  "afterMinutes": 420
 },
 "finish": false
}