{
  "notes": "Episode 9/10. State on reading: 55/400 items used; no refusals; 2 old items still running (e03-pilot-rerun/corridor since episode 3, e08-small-floor/later), both cancelled this episode (retired families). This episode adds 12 items in 4 batches (67 used, 333 left if accepted). No submission or board change yet; V2 (519.68, 29th) is still the entry. Episode 10 is the LAST decision episode: it must read the confirmations below and finish.\n\nREQUESTER NOTE 05:42Z (follow it): three small changes gain consistently (afterfirst f1/f2/f3 +0.012/+0.013/+0.015, floor-batch caps s1/s2/s3 +0.008/+0.014/+0.013, boost-cap later +0.025 se 0.005 n512). Stack all three on G plus each leave-one-out; confirm the full stack on 4,000 fresh seeds split over two items on different machines; report each stack's gain over V2, OOG next to V2's, retail and arb edge; return complete code and SHA-256. NEW SUBMISSION BAR: the requester submits the stack if the pooled gain over V2 is >= +0.04 on those 4,000 seeds (replaces +0.3); still 0 candidate OOG and gain > 2 se.\n\nHANDED THIS EPISODE (all training-only unless n=2000): e08-boost-cap first K16 +0.01346 se 0.00570 (n512, 12000..12511, code ab4a2640...; retail-driven); later K16 +0.02484 se 0.00545 (n512, 22000..22511, code fdcc291efe456ef7e874c2153ec5250686822984bb797543c2f9b2c9bc35a31c; retail +0.0265, arb -0.0017; terciles low/mid/high +0.010/+0.027/+0.037); all: blocked (macOS arm64 host). e08-small-floor: all F=1 bp -0.480 se 0.009 (n512), loss ~-0.5 per bp of floor (retail -0.56, arb +0.08); first: blocked (no /proc); later still running: RETIRE floors. e08-protect-hinge: first -6.20 se 0.13, later -6.39 se 0.23, all -6.93 (screen), every hinge variant loses 6 to 17: RETIRE. e08-quote-audit: G vs V2 on 10000..10255 +0.0029 se 0.0029 (G OOG 0, V2 OOG 7, max_ok 211186 vs 243554), calibration 523.2153137188661 reproduced exactly; its tables show the lower (attracting) quote almost never exceeds 30 bps (17k of 1.73M first-print lower quotes above 30, 3.4k above 36), so the caps act on rare states: small, consistent gains are all this family can give. e06-continuation/h2 -21.66 se 0.145 (n2000, retail -27.9, arb +6.2): RETIRE continuation tables (h2/h4/h8 all lose). e07-hyb-flowcap/c2 non-exposed scale 0.6: -1.477 se 0.015 (n2000): RETIRE flow damping (c1/c2/c3 all lose).\n\nTHE STACK (defined by the generator written into every episode-9 brief and executed here on verified base G, sha 610c1905e7dd5559b84e40a3b2d6f8e0b53a7b0ac7574ae33b6c1770a28367cb, the code of artifact 206a4888de6fa1bda53cd2c9bad1632ccdbb63d32e7f09b6a332746b7a3ac3c3; the same generator reproduces the measured boost-only file fdcc291e... and the 36-cap-only file 306923bb... exactly): (1) after `uint256 tradeBoost = wmul(TRADE_TOX_BOOST, tradeRatio);` insert `if (!firstInStep && tradeBoost > 16 * BPS) tradeBoost = 16 * BPS;` (e08-boost-cap/later K16); (2) before `slots[0] = bidFee; slots[1] = askFee;` insert the e07-hyb-afterfirst/f3 rule (on firstInStep cap the lower of bid/ask at 30 bps, ties untouched; written as `if (askFee > bidFee && bidFee > 30 * BPS) ...`, the same logic as f3's `bidFee < askFee` lines, without f3's comment line) then the e07-hyb-floor/s3 lines (on every call cap the lower side at 36 bps). STACK sha256 2eaafc7960e520b8a7fd322ec8afaff8fa677c730228a961efb509cc30b25719. Leave-one-out: NO_AFTERFIRST 94e4747a7666d0b92d3db7cb6d81d9cc0478c6e0d55e80472a8e6b5aa2d7f23a; NO_LATERCAP 54ae8c358696cb964acbb6525b901b7f1ede2908d460e298ce8183fcbd307a79; NO_BOOST 1a2f14a74005f5beea29a59456f5c67525d862eb0b2b25d032b449335ee9e679. gen(G,K,R1,R2,k,f,s) in the briefs: K = later-print boost cap, R1 = first-print lower-side cap, R2 = every-call lower-side cap, k/f/s = 1 to include a piece. Expected gain if additive about +0.03..+0.05 (the 30 and 36 caps overlap on first prints), so the +0.04 bar is a coin flip: report whatever lands. Gas: each piece adds <200 gas to G's 211k peak, 0 OOG expected.\n\nDECIDED: e09-stack-confirm-a a1/a2/a3 (STACK vs exact V2 on 4380000..4381999, three machines, deterministic so all three should match bit-exactly) and e09-stack-confirm-b b1/b2/b3 (same on 4390000..4391999): the submission-grade 4,000 seeds are ONE accepted a-item pooled with ONE accepted b-item (disjoint seeds); the extra copies are setup-failure insurance and platform parity checks, never pooled twice. e09-stack-loo nof/nos/nok: each on its own fresh 1000 seeds runs STACK vs V2 and LOO vs STACK (paired on the same seeds), so the omitted piece's value = -(LOO minus STACK). e09-stack-tune t1/t2/t3: small grids around the stack (R1 first cap 26/28/32/34; R2 later cap 33/34/38/40; K 8/12/24/32), screened on 256 training seeds with the STACK as control, frozen, then 1000-seed holdout vs V2 and vs the STACK: information for the write-up and the requester, NOT a submission candidate (no episode remains to confirm a tuned file on 4,000 seeds). Every brief carries the verbatim OOG sentence, the b19 bundle route (setup.sh with the micromamba fallback, instrumentation.patch, corrected harness), exact V2 as comparator, a generator with hash checks, and no machine probes.\n\nSEED LEDGER: 4000000..4379999 allocated or retired for good. New: confirm A 4380000..4381999 (reserve ..4389999), confirm B 4390000..4391999 (..4399999), loo nof 4400000..4400999 (..4409999), nos 4410000..4410999 (..4419999), nok 4420000..4420999 (..4429999), tune t1 4430000..4430999 (..4439999), t2 4440000..4440999 (..4449999), t3 4450000..4450999 (..4459999). NEXT FREE = 4460000. Training this episode: t1 40000..40255, t2 50000..50255, t3 60000..60255. Workers never choose seeds themselves (b2 did in episode 5; mark any deviation).\n\nNEXT EPISODE (10/10, the last), in order: 1. Read `blocked` first. For each confirm item check: sha256 == 2eaafc7960e520b8a7fd322ec8afaff8fa677c730228a961efb509cc30b25719, v2 sha 28417e11..., seeds exactly its shard, n=2000, valid=true, candidate OOG, V2 OOG, other errors 0, afterSwap max_ok < 250000. Copies on the same shard must agree bit-exactly; if they differ, trust none of that shard and say so. 2. POOL one a-item and one b-item: n=4000, mean = (sum of both per-seed diffs)/4000 = average of the two means; se = sqrt((sd_a^2*1999 + sd_b^2*1999)/3998/4000) with sd = se*sqrt(2000), never the average of the two se. Submission bar: pooled mean >= +0.04, mean > 2 se, candidate OOG = 0 on all 4000. 3. If one shard is missing, report the 2000-seed shard alone as evidence short of the bar and say which shard is missing. 4. Read loo and tune results for attribution and for the write-up; a tune pick with a credible 1000-seed gain over the STACK is a lead for the requester, not a confirmed candidate. 5. Set finish=true (nothing left to run that episode 10 could read) and write the deliverable: the STACK's full code and sha, the pooled paired result {n, mean_diff, se, worst}, gas {max_ok, oog} for candidate and V2, the LOO attribution, every retired family with its measured loss (routing -61.9, edge table -83.4, b2 -60.8, interaction -13.7, phase -5.9, threshold t2 -8.4, position p2 -2.1, pos-scale both-side -18.2, continuation h2 -21.7/h4 -23.7/h8 -0.5, flowcap c1 -0.66/c2 -1.48/c3 -0.93, floors -0.5/bp, hinges -6 to -7, flat fees -166..-181, next-mix -0.047, zero skew -0.068, G alone +0.003), and the honest conclusion: the +5/+8.7 targets were not reached; the stack is a small gain of order +0.03..+0.05 that the requester may submit under the +0.04 rule. No board rank claim from local evidence; the requester submits and posts the score.",
  "spawn": [
    {
      "name": "e09-stack-confirm-a",
      "brief": "CONFIRMATION of ONE frozen file, <60 min, no design or tuning. SETUP (Linux x86_64 only; else or on any failure: blocked={step,error}, paired.n 0). Clone github.com/benedictbrady/amm-challenge @ 6b6921f8d463314aa7c96234e1be25a25245f704 into your workspace (never /tmp). GET https://api.imd.fun/artifacts/206a4888de6fa1bda53cd2c9bad1632ccdbb63d32e7f09b6a332746b7a3ac3c3: `code` = base G (sha256 610c1905e7dd5559b84e40a3b2d6f8e0b53a7b0ac7574ae33b6c1770a28367cb), `reusable_sources_bundle.data` = base64(gzip(JSON filename->source)): setup.sh, instrumentation.patch, harness.py, tests.py, V2.sol (sha256 28417e116f57f1029fdd1803832e852574902c1ae7253c05657f317db76da4ab); verify both. Write them to scratch/ (G as scratch/G.sol); from the checkout root run setup.sh, git apply instrumentation.patch, `. scratch/env.sh && maturin develop --release --uv --manifest-path amm_sim_rs/Cargo.toml`, tests.py. Measure with `python scratch/harness.py CAND.sol S0 S1 OUT.json --ref scratch/V2.sol` (half-open; reference exact V2, never G). OOG rule (overrides the objective): V2 itself has rare OOG halts (about 1 per 300k calls). Count OOG for V2 and the candidate on the same seeds and report both; the result is valid when the candidate has no more OOG than V2, so do not stop on V2's OOG and go on to the paired measurement. Other errors invalidate. Use only the seeds named here; no tuning on seeds >= 4000000.\nBUILD from G with exactly this generator (bps):\nI,J,L=' '*8,' '*12,' '*16\nA=L+'uint256 tradeBoost = wmul(TRADE_TOX_BOOST, tradeRatio);\\n'\nB=I+'slots[0] = bidFee; slots[1] = askFee;'\nc=lambda a,b,R:'if (%s > %s && %s > %d * BPS) %s = %d * BPS;\\n'%(a,b,b,R,b,R)\ndef gen(g,K,R1,R2,k=1,f=1,s=1):\n assert g.count(A)==1 and g.count(B)==1\n return g.replace(A,A+(L+'if (!firstInStep && tradeBoost > %d * BPS) tradeBoost = %d * BPS;\\n'%(K,K))*k).replace(B,(I+'if (firstInStep) {\\n'+J+c('askFee','bidFee',R1)+J+'else '+c('bidFee','askFee',R1)+I+'}\\n\\n')*f+(I+c('bidFee','askFee',R2)+I+'else '+c('askFee','bidFee',R2)+'\\n')*s+B)\nSTACK = gen(G,16,30,36), sha256 2eaafc7960e520b8a7fd322ec8afaff8fa677c730228a961efb509cc30b25719; on mismatch return blocked={step:'build',error}. amm-match validate each file.\nRUN: python scratch/harness.py scratch/STACK.sol {{s0}} {{s1}} scratch/confirm.json --ref scratch/V2.sol (2000 seeds, each once, 10000 steps, 250000 gas). Other machines run the same file on the same seeds; results are deterministic: report exactly what the harness wrote. Candidate OOG > 0 or any other error fails the bar; still return the numbers. RETURN one JSON (<=64000 bytes): code (full Solidity), sha256, base_sha256, v2_sha256, blocked; per run: name, seeds, paired {n, mean_diff, se, worst 5}, valid, invalid_reasons, gas and v2_gas {afterSwap max_ok, init_max, oog, other_errors, oog_seeds}, retail and arb edge deltas {mean, se}, terciles by V2 retail volume {n, mean_diff, se}; no board claim.",
      "items": [
        {
          "key": "a1",
          "vars": {
            "s0": "4380000",
            "s1": "4382000"
          }
        },
        {
          "key": "a2",
          "vars": {
            "s0": "4380000",
            "s1": "4382000"
          }
        },
        {
          "key": "a3",
          "vars": {
            "s0": "4380000",
            "s1": "4382000"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 64000
      }
    },
    {
      "name": "e09-stack-confirm-b",
      "brief": "CONFIRMATION of ONE frozen file, <60 min, no design or tuning. SETUP (Linux x86_64 only; else or on any failure: blocked={step,error}, paired.n 0). Clone github.com/benedictbrady/amm-challenge @ 6b6921f8d463314aa7c96234e1be25a25245f704 into your workspace (never /tmp). GET https://api.imd.fun/artifacts/206a4888de6fa1bda53cd2c9bad1632ccdbb63d32e7f09b6a332746b7a3ac3c3: `code` = base G (sha256 610c1905e7dd5559b84e40a3b2d6f8e0b53a7b0ac7574ae33b6c1770a28367cb), `reusable_sources_bundle.data` = base64(gzip(JSON filename->source)): setup.sh, instrumentation.patch, harness.py, tests.py, V2.sol (sha256 28417e116f57f1029fdd1803832e852574902c1ae7253c05657f317db76da4ab); verify both. Write them to scratch/ (G as scratch/G.sol); from the checkout root run setup.sh, git apply instrumentation.patch, `. scratch/env.sh && maturin develop --release --uv --manifest-path amm_sim_rs/Cargo.toml`, tests.py. Measure with `python scratch/harness.py CAND.sol S0 S1 OUT.json --ref scratch/V2.sol` (half-open; reference exact V2, never G). OOG rule (overrides the objective): V2 itself has rare OOG halts (about 1 per 300k calls). Count OOG for V2 and the candidate on the same seeds and report both; the result is valid when the candidate has no more OOG than V2, so do not stop on V2's OOG and go on to the paired measurement. Other errors invalidate. Use only the seeds named here; no tuning on seeds >= 4000000.\nBUILD from G with exactly this generator (bps):\nI,J,L=' '*8,' '*12,' '*16\nA=L+'uint256 tradeBoost = wmul(TRADE_TOX_BOOST, tradeRatio);\\n'\nB=I+'slots[0] = bidFee; slots[1] = askFee;'\nc=lambda a,b,R:'if (%s > %s && %s > %d * BPS) %s = %d * BPS;\\n'%(a,b,b,R,b,R)\ndef gen(g,K,R1,R2,k=1,f=1,s=1):\n assert g.count(A)==1 and g.count(B)==1\n return g.replace(A,A+(L+'if (!firstInStep && tradeBoost > %d * BPS) tradeBoost = %d * BPS;\\n'%(K,K))*k).replace(B,(I+'if (firstInStep) {\\n'+J+c('askFee','bidFee',R1)+J+'else '+c('bidFee','askFee',R1)+I+'}\\n\\n')*f+(I+c('bidFee','askFee',R2)+I+'else '+c('askFee','bidFee',R2)+'\\n')*s+B)\nSTACK = gen(G,16,30,36), sha256 2eaafc7960e520b8a7fd322ec8afaff8fa677c730228a961efb509cc30b25719; on mismatch return blocked={step:'build',error}. amm-match validate each file.\nRUN: python scratch/harness.py scratch/STACK.sol {{s0}} {{s1}} scratch/confirm.json --ref scratch/V2.sol (2000 seeds, each once, 10000 steps, 250000 gas). Other machines run the same file on the same seeds; results are deterministic: report exactly what the harness wrote. Candidate OOG > 0 or any other error fails the bar; still return the numbers. RETURN one JSON (<=64000 bytes): code (full Solidity), sha256, base_sha256, v2_sha256, blocked; per run: name, seeds, paired {n, mean_diff, se, worst 5}, valid, invalid_reasons, gas and v2_gas {afterSwap max_ok, init_max, oog, other_errors, oog_seeds}, retail and arb edge deltas {mean, se}, terciles by V2 retail volume {n, mean_diff, se}; no board claim.",
      "items": [
        {
          "key": "b1",
          "vars": {
            "s0": "4390000",
            "s1": "4392000"
          }
        },
        {
          "key": "b2",
          "vars": {
            "s0": "4390000",
            "s1": "4392000"
          }
        },
        {
          "key": "b3",
          "vars": {
            "s0": "4390000",
            "s1": "4392000"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 64000
      }
    },
    {
      "name": "e09-stack-loo",
      "brief": "LEAVE-ONE-OUT attribution of the STACK, <60 min, no tuning. SETUP (Linux x86_64 only; else or on any failure: blocked={step,error}, paired.n 0). Clone github.com/benedictbrady/amm-challenge @ 6b6921f8d463314aa7c96234e1be25a25245f704 into your workspace (never /tmp). GET https://api.imd.fun/artifacts/206a4888de6fa1bda53cd2c9bad1632ccdbb63d32e7f09b6a332746b7a3ac3c3: `code` = base G (sha256 610c1905e7dd5559b84e40a3b2d6f8e0b53a7b0ac7574ae33b6c1770a28367cb), `reusable_sources_bundle.data` = base64(gzip(JSON filename->source)): setup.sh, instrumentation.patch, harness.py, tests.py, V2.sol (sha256 28417e116f57f1029fdd1803832e852574902c1ae7253c05657f317db76da4ab); verify both. Write them to scratch/ (G as scratch/G.sol); from the checkout root run setup.sh, git apply instrumentation.patch, `. scratch/env.sh && maturin develop --release --uv --manifest-path amm_sim_rs/Cargo.toml`, tests.py. Measure with `python scratch/harness.py CAND.sol S0 S1 OUT.json --ref scratch/V2.sol` (half-open; reference exact V2, never G). OOG rule (overrides the objective): V2 itself has rare OOG halts (about 1 per 300k calls). Count OOG for V2 and the candidate on the same seeds and report both; the result is valid when the candidate has no more OOG than V2, so do not stop on V2's OOG and go on to the paired measurement. Other errors invalidate. Use only the seeds named here; no tuning on seeds >= 4000000.\nBUILD from G with exactly this generator (bps):\nI,J,L=' '*8,' '*12,' '*16\nA=L+'uint256 tradeBoost = wmul(TRADE_TOX_BOOST, tradeRatio);\\n'\nB=I+'slots[0] = bidFee; slots[1] = askFee;'\nc=lambda a,b,R:'if (%s > %s && %s > %d * BPS) %s = %d * BPS;\\n'%(a,b,b,R,b,R)\ndef gen(g,K,R1,R2,k=1,f=1,s=1):\n assert g.count(A)==1 and g.count(B)==1\n return g.replace(A,A+(L+'if (!firstInStep && tradeBoost > %d * BPS) tradeBoost = %d * BPS;\\n'%(K,K))*k).replace(B,(I+'if (firstInStep) {\\n'+J+c('askFee','bidFee',R1)+J+'else '+c('bidFee','askFee',R1)+I+'}\\n\\n')*f+(I+c('bidFee','askFee',R2)+I+'else '+c('askFee','bidFee',R2)+'\\n')*s+B)\nSTACK = gen(G,16,30,36), sha256 2eaafc7960e520b8a7fd322ec8afaff8fa677c730228a961efb509cc30b25719; on mismatch return blocked={step:'build',error}. amm-match validate each file.\nThis item: {{label}} = gen(G,16,30,36,k={{k}},f={{f}},s={{s}}), sha256 must be {{sha}}. RUN on seeds {{s0}}..{{s1}} (half-open, 1000): (1) STACK.sol --ref V2.sol; (2) LOO.sol --ref STACK.sol (LOO minus STACK on the same seeds; say whether the STACK run reproduced run 1 bit-exactly); if time allows (3) LOO.sol --ref V2.sol. The omitted piece is worth minus run 2's mean. RETURN one JSON (<=64000 bytes): code (full Solidity), sha256, base_sha256, v2_sha256, blocked; per run: name, seeds, paired {n, mean_diff, se, worst 5}, valid, invalid_reasons, gas and v2_gas {afterSwap max_ok, init_max, oog, other_errors, oog_seeds}, retail and arb edge deltas {mean, se}, terciles by V2 retail volume {n, mean_diff, se}; no board claim. code = LOO.",
      "items": [
        {
          "key": "nof",
          "vars": {
            "label": "NO_AFTERFIRST",
            "k": "1",
            "f": "0",
            "s": "1",
            "sha": "94e4747a7666d0b92d3db7cb6d81d9cc0478c6e0d55e80472a8e6b5aa2d7f23a",
            "s0": "4400000",
            "s1": "4401000"
          }
        },
        {
          "key": "nos",
          "vars": {
            "label": "NO_LATERCAP",
            "k": "1",
            "f": "1",
            "s": "0",
            "sha": "54ae8c358696cb964acbb6525b901b7f1ede2908d460e298ce8183fcbd307a79",
            "s0": "4410000",
            "s1": "4411000"
          }
        },
        {
          "key": "nok",
          "vars": {
            "label": "NO_BOOST",
            "k": "0",
            "f": "1",
            "s": "1",
            "sha": "1a2f14a74005f5beea29a59456f5c67525d862eb0b2b25d032b449335ee9e679",
            "s0": "4420000",
            "s1": "4421000"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 64000
      }
    },
    {
      "name": "e09-stack-tune",
      "brief": "GRID round the STACK, <60 min. SETUP (Linux x86_64 only; else or on any failure: blocked={step,error}, paired.n 0). Clone github.com/benedictbrady/amm-challenge @ 6b6921f8d463314aa7c96234e1be25a25245f704 into your workspace (never /tmp). GET https://api.imd.fun/artifacts/206a4888de6fa1bda53cd2c9bad1632ccdbb63d32e7f09b6a332746b7a3ac3c3: `code` = base G (sha256 610c1905e7dd5559b84e40a3b2d6f8e0b53a7b0ac7574ae33b6c1770a28367cb), `reusable_sources_bundle.data` = base64(gzip(JSON filename->source)): setup.sh, instrumentation.patch, harness.py, tests.py, V2.sol (sha256 28417e116f57f1029fdd1803832e852574902c1ae7253c05657f317db76da4ab); verify both. Write them to scratch/ (G as scratch/G.sol); from the checkout root run setup.sh, git apply instrumentation.patch, `. scratch/env.sh && maturin develop --release --uv --manifest-path amm_sim_rs/Cargo.toml`, tests.py. Measure with `python scratch/harness.py CAND.sol S0 S1 OUT.json --ref scratch/V2.sol` (half-open; reference exact V2, never G). OOG rule (overrides the objective): V2 itself has rare OOG halts (about 1 per 300k calls). Count OOG for V2 and the candidate on the same seeds and report both; the result is valid when the candidate has no more OOG than V2, so do not stop on V2's OOG and go on to the paired measurement. Other errors invalidate. Use only the seeds named here; no tuning on seeds >= 4000000.\nBUILD from G with exactly this generator (bps):\nI,J,L=' '*8,' '*12,' '*16\nA=L+'uint256 tradeBoost = wmul(TRADE_TOX_BOOST, tradeRatio);\\n'\nB=I+'slots[0] = bidFee; slots[1] = askFee;'\nc=lambda a,b,R:'if (%s > %s && %s > %d * BPS) %s = %d * BPS;\\n'%(a,b,b,R,b,R)\ndef gen(g,K,R1,R2,k=1,f=1,s=1):\n assert g.count(A)==1 and g.count(B)==1\n return g.replace(A,A+(L+'if (!firstInStep && tradeBoost > %d * BPS) tradeBoost = %d * BPS;\\n'%(K,K))*k).replace(B,(I+'if (firstInStep) {\\n'+J+c('askFee','bidFee',R1)+J+'else '+c('bidFee','askFee',R1)+I+'}\\n\\n')*f+(I+c('bidFee','askFee',R2)+I+'else '+c('askFee','bidFee',R2)+'\\n')*s+B)\nSTACK = gen(G,16,30,36), sha256 2eaafc7960e520b8a7fd322ec8afaff8fa677c730228a961efb509cc30b25719; on mismatch return blocked={step:'build',error}. amm-match validate each file.\nGrid: {{grid}} (rest as STACK). SCREEN each grid file and STACK (control) vs V2 on seeds {{t0}}..{{t1}} (half-open, 256); pick the best valid mean_diff (STACK unless beaten by over 1 se of the paired difference). FREEZE the pick (sha256, time) before any seed >= 4000000; HOLDOUT {{h0}}..{{h1}} (half-open, 1000): PICK.sol --ref V2.sol and STACK.sol --ref V2.sol if the pick differs; no reselection. RETURN one JSON (<=64000 bytes): code (full Solidity), sha256, base_sha256, v2_sha256, blocked; per run: name, seeds, paired {n, mean_diff, se, worst 5}, valid, invalid_reasons, gas and v2_gas {afterSwap max_ok, init_max, oog, other_errors, oog_seeds}, retail and arb edge deltas {mean, se}, terciles by V2 retail volume {n, mean_diff, se}; no board claim. Add each screened variant {params, sha256, n, mean_diff, se}.",
      "items": [
        {
          "key": "t1",
          "vars": {
            "grid": "R1 in {26,28,32,34}",
            "t0": "40000",
            "t1": "40256",
            "h0": "4430000",
            "h1": "4431000"
          }
        },
        {
          "key": "t2",
          "vars": {
            "grid": "R2 in {33,34,38,40}",
            "t0": "50000",
            "t1": "50256",
            "h0": "4440000",
            "h1": "4441000"
          }
        },
        {
          "key": "t3",
          "vars": {
            "grid": "K in {8,12,24,32}",
            "t0": "60000",
            "t1": "60256",
            "h0": "4450000",
            "h1": "4451000"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 64000
      }
    }
  ],
  "read": [
    "e09-stack-confirm-a/a1",
    "e09-stack-confirm-a/a2",
    "e09-stack-confirm-a/a3",
    "e09-stack-confirm-b/b1",
    "e09-stack-confirm-b/b2",
    "e09-stack-confirm-b/b3",
    "e09-stack-loo/nof",
    "e09-stack-loo/nos",
    "e09-stack-loo/nok",
    "e09-stack-tune/t1",
    "e09-stack-tune/t2",
    "e09-stack-tune/t3"
  ],
  "cancel": [
    "e03-pilot-rerun",
    "e08-small-floor"
  ],
  "wake": {
    "batches": [
      "e09-stack-confirm-a",
      "e09-stack-confirm-b",
      "e09-stack-loo",
      "e09-stack-tune"
    ],
    "afterMinutes": 720
  },
  "finish": false
}
