{
  "notes": "EPISODE 5 (2026-11-10). State: 42 of 150 items used before this episode, episodes 5-8 remain. ALL SIX of episode 4's confirmation batches (r3-confirm-net-a/-b, -p2-a/-b, -spl-a, -p3-b3) were REFUSED: \"the brief asks for a command's verbatim output. A worker does the work the brief describes; it never pastes back what a command printed on the machine it runs on.\" So nothing was confirmed in round 3 and the wake on them was refused too. LESSON (every brief from now on): never ask a worker to paste, quote or copy what a command printed (no \"verbatim output\", no \"the validate line\", no \"gas_stats() as printed\", no uname); ask for the measured figures as facts (sha256, pass/fail, name, bytes, n, mean, se, peak, OOG count, CSV) and for the complete code with its sha256. Both r3-qm-port items were blocked by infrastructure, not the brief: qm-1 could not reach api.imdnotdead.fun or GitHub (proxy CONNECT timeout), qm-2 landed on a Darwin arm64 seat. r3-gate-q/agg-report-b landed: port-2's aggregated-silent filter alone costs -0.0243 se 0.0136 vs Taylor's full plain policy on 11024..12047 and -0.0345 se 0.0096 over all 2,048 report seeds (cross-check); adding port-2's own table loss (-0.083 se 0.010) port-2 sits about -0.12 below the full plain policy on the replica. r2-qm-compress/qm-net missed the target (loss +0.589 se 0.014, 3,076 B, training not converged): the qm line uses qm-spline only (10,167 B, loss 0.063 se 0.007). r1-baseline: t03 minus IB +0.745 se 0.084 on n=144 (9500000..9500143 only; 9500144..9501023 never run, keep the block burned); engine runs take about 12 s per seed per strategy on a 1-CPU seat, so 256 seeds x 3 strategies is the most an item can carry and IB is the first thing to drop.\nCANDIDATES (engine, vs t03): port-3 CONFIRMED +0.629 se 0.033 on n=1,792 (7 blocks of 256; block 9601536..9601791 unrun), +1.41 vs IB, peak 207,453, 0 OOG, 18,466 B, sha256 62930b8e68277c69fc1acfba18de781e684d7fc6daac8dc562b8210dc3932ac1, code in port-3 artifact 0dbcc10a...; it already meets the requester's >= +0.3 bar. trim-1 (requester note 4 asks to confirm it instead of net-1): net-1's fees unchanged, gate F max 5.05e-9 bps over 100,000 callbacks, engine peak 232,889, 0 OOG, 16,077 B, +1.157 se 0.121 vs t03 and +1.877 vs IB on 128 seeds 9530000..9530127; source = the Solidity block of https://api.imdnotdead.fun/artifacts/fce772b9057867b241350b8e44c05298c6c877871a26b58702a5af431726f6c5, sha256 d849c5f15d69499560b5c3ea08f55ad27153b393eba7abb7dd186f451ad46a24, getName TaylorGaussianPlainNet2; its gate Q (net2 vs full tables) is still running in r3-gate-q. port-2: +1.414 se 0.199 on 64 seeds (debug seeds), peak 225,081, 18,484 B, name TaylorGaussianPlain2, no published sha256 (artifact e8c967d6...). spline-1 final: Q -0.0097, F 0.0089 bps, pyrevm peak 193,623, 21,106 B, sha256 27ad2a5f3d2b218138a95f8d4ab616227ca7dfd855a9c60577f86fea09c6caed, never engine-run (its v24 peaked 249,342 on the engine). net-1 itself is retired (peak 245,377 > cap). Lattice line closed (does not fit); arb line closed (<= +0.05).\nROUND 4 (this episode, 6 batches, 20 items, none over 5 items so no canary holds; all one generic confirm brief except the qm port): r4-confirm-trim-a (4 x 256, seeds 9607168..9608191) and r4-confirm-trim-b (4 x 256, 9608192..9609215): trim-1 vs t03 and IB; r4-confirm-p2-a (9609216..9610239) and r4-confirm-p2-b (9610240..9611263): port-2 the same (worker reports the sha256 it computed and which block it took); r4-confirm-misc: p3-b3 = port-3 on the unrun block 9601536..9601791 (completes n=2,048), spl-128 = spline-1 final on 9532000..9532127 (tells its engine peak and score); r4-qm-port (2 copies, Linux, retry downloads before blocking): qm-spline lookup in trim-1's shell with runtime B-spline bases, gate P on the qm column, reference = real.py qm variant over the decoder's tables, gate F on 50 x 2,000, targets runtime <= 24,000 B and pyrevm peak <= 190,000, engine 128 seeds each (9533000..9533127, 9534000..9534127) only if F passes and size fits. Each confirm item runs candidate then t03 then IB in chunks of 32 and reports per-seed CSV, paired n/mean_diff/se/worst5/best5, afterSwap calls/OOG/revert/peak/mean per chunk and overall. Read requested: r2-net/net-2, r3-trim-net/trim-2, r3-gate-q net2-choose, net2-report-a, net2-report-b, agg-report-a (keys guessed from episode 4's plan; if a read is refused the item did not exist under that key).\nSEED REGISTRY (engine, fresh from 9500000, never reuse): 9500000..9501023 r1-baseline (only ..9500143 run); 9510000..9510191 r1-port; 9520000..9520127 spline-1; 9521000..9521127 spline-2; 9522000..9522127 net-1; 9523000..9523127 net-2; 9524000..9524063 lattice-1; 9525000..9525063 lattice-2; 9530000..9530127 trim-1; 9531000..9531127 trim-2; 9532000..9532127 spl-128; 9533000..9533127 qm-1; 9534000..9534127 qm-2; 9600000..9601023 r2-confirm-a; 9601024..9602047 r2-confirm-b (9601536..9601791 = p3-b3); 9602048..9607167 burned by the refused r3-confirm batches (never run, keep burned); 9607168..9608191 trim-a; 9608192..9609215 trim-b; 9609216..9610239 p2-a; 9610240..9611263 p2-b. NEXT FREE: 9535000 and 9611264. Replica seeds: choose 60000..61023, report 10000..12047, gate F replays 70000..70049.\nNEXT EPISODE (6): (1) Pool each candidate's two blocks (mean of all 1,024 diffs per block and over 2,048; se = sd/sqrt(n)); a candidate qualifies for the requester with >= +0.3 over t03 on 2,048 seeds, peak <= 245,000 and 0 OOG. Expected: trim-1 about +1.1 to +1.2 (its 128-seed result), peak about 233k; port-2 about +1.2 to +1.4 if its 64-seed figure holds. Rank qualifiers by mean_diff; the write-up names the best with its complete code URL and sha256 and gives port-3 as the already-confirmed fallback. If a block item failed on infrastructure (platform, proxy), rerun just that block in a new 1-item batch (same seeds, same brief) rather than spending more. (2) From r3-gate-q report net2's replica loss (full minus net2 on 2,048 report seeds) next to port-2's -0.12 and spline-1's -0.0097. (3) From r4-qm-port: a copy that passes gate F with runtime <= 24,576 B and engine peak <= 245,000 (0 OOG) and beats trim-1 on its 128 seeds gets a 2,048-seed confirmation in episode 6 (two blocks of 4 x 256 from 9611264 and 9612288; that is the last confirmation the episodes allow); if both copies fail on size or gas, note what they say it would take and stop the qm line; if both blocked on infrastructure again, rerun 2 copies once more. (4) spl-128: if spline-1's engine peak is <= 240,000 and its score is above trim-1's, it is a third confirmation candidate; otherwise drop it. (5) Episode 7: read the qm/spline confirmations if any and set finish=true; episode 8 is the reserve. The write-up needs: the best confirmed contract's complete code and sha256, paired vs t03 and IB with n, mean_diff, se, worst5 and gas_stats (peak, mean, OOG), gates P/Q/F evidence (P from every item, Q from the compression items and r3-gate-q, F from the port items), the per-block table, and what is missing (IB partial n where dropped, the lattice and arb lines, qm-net). Budget after this episode: 88 items, 3 episodes. Keep every brief under 2,900 characters raw and filled, and never ask for printed output.",
  "spawn": [
    {
      "name": "r4-confirm-trim-a",
      "brief": "Score candidate {{cand}} on fresh real-engine seeds {{first}}..{{last}} ({{count}} seeds), paired against t03 and IB. Linux x86_64 only: on any other platform return blocked={step:'platform',error:why} at once, without setup. SETUP (in your workspace, never /tmp): clone https://github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704; the Setup section of port-3's result https://api.imdnotdead.fun/artifacts/0dbcc10af41b3c3467ff0d9b9cb64c81328fcf18295f9be06b2d81bb98874067 contains the 8-line setup script: save it as scratch/setup.sh, run `sh scratch/setup.sh` once from the checkout root, prefix later commands with `. scratch/env.sh && `; on failure return blocked={step,error}. CANDIDATE: {{source}} Save it byte-exact as contracts/src/Strategy.sol, compute its sha256, validate it with amm-match, note its runtime bytes (expected {{bytes}}). COMPARATORS: t03 = zlib-decompressed base64 `code_zb64` of https://api.imdnotdead.fun/artifacts/2333ecf28d4356bd232b85c1e55842e94e1ada05e1cd067830b5625dfdbc5336 (source sha256 cb6d945511e1e10af78baa64c2a6cb25806f0998403ce6440654bfc3c70092d9); IB = the same of https://api.imdnotdead.fun/artifacts/afd5183e9ff3235334e041c00b0cd19079599a2c6464db95f8c1586712105557 (sha256 301941829a44bb60977bb28181a5e4bfa6544f3696763f987054789b2611d686). ENGINE: each strategy alone vs the 30 bps VanillaStrategy through amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8); configs per MatchRunner._build_configs (config i: default_rng(i) draws size, rate, sigma in that order; sim seed i = the seed); score = the submission edge. Run seeds {{first}}..{{last}} exactly once each in chunks of at most 32 seeds (no command over 8 minutes; keep per-seed results under scratch/). Order: candidate, then t03, over all seeds; IB last. If time runs short, finish candidate and t03 on every seed and give IB's partial n. Call gas_stats_reset() before each chunk and gas_stats() after it; keep each chunk's afterSwap figures. RESULT must contain: (1) the candidate's sha256, validation pass or fail, its getName() string, runtime bytes; (2) paired candidate minus t03 and candidate minus IB: n, mean_diff, se = sample sd / sqrt(n), worst5 and best5 as (seed, diff), each arm's mean; (3) the candidate's afterSwap totals over all chunks: calls, OutOfGas count, revert count, peak gas, mean gas, and the peak per chunk; t03's peak and OutOfGas count; (4) a CSV of every seed: seed, candidate, t03, IB (empty where not run), 9 decimals; (5) seconds per seed and every seed not run. Measured numbers only: a seed not run is listed as not run, never filled in. Credit Taylor (gtmcknight) for the policy.",
      "output": {
        "format": "markdown",
        "maxBytes": 64000
      },
      "items": [
        {
          "key": "ta1",
          "vars": {
            "cand": "trim-1",
            "source": "trim-1 (requester note 4): take the complete Strategy.sol from the Solidity block of https://api.imdnotdead.fun/artifacts/fce772b9057867b241350b8e44c05298c6c877871a26b58702a5af431726f6c5; its sha256 must be d849c5f15d69499560b5c3ea08f55ad27153b393eba7abb7dd186f451ad46a24, else stop and report both hashes.",
            "bytes": "16,077",
            "first": "9607168",
            "last": "9607423",
            "count": "256"
          }
        },
        {
          "key": "ta2",
          "vars": {
            "cand": "trim-1",
            "source": "trim-1 (requester note 4): take the complete Strategy.sol from the Solidity block of https://api.imdnotdead.fun/artifacts/fce772b9057867b241350b8e44c05298c6c877871a26b58702a5af431726f6c5; its sha256 must be d849c5f15d69499560b5c3ea08f55ad27153b393eba7abb7dd186f451ad46a24, else stop and report both hashes.",
            "bytes": "16,077",
            "first": "9607424",
            "last": "9607679",
            "count": "256"
          }
        },
        {
          "key": "ta3",
          "vars": {
            "cand": "trim-1",
            "source": "trim-1 (requester note 4): take the complete Strategy.sol from the Solidity block of https://api.imdnotdead.fun/artifacts/fce772b9057867b241350b8e44c05298c6c877871a26b58702a5af431726f6c5; its sha256 must be d849c5f15d69499560b5c3ea08f55ad27153b393eba7abb7dd186f451ad46a24, else stop and report both hashes.",
            "bytes": "16,077",
            "first": "9607680",
            "last": "9607935",
            "count": "256"
          }
        },
        {
          "key": "ta4",
          "vars": {
            "cand": "trim-1",
            "source": "trim-1 (requester note 4): take the complete Strategy.sol from the Solidity block of https://api.imdnotdead.fun/artifacts/fce772b9057867b241350b8e44c05298c6c877871a26b58702a5af431726f6c5; its sha256 must be d849c5f15d69499560b5c3ea08f55ad27153b393eba7abb7dd186f451ad46a24, else stop and report both hashes.",
            "bytes": "16,077",
            "first": "9607936",
            "last": "9608191",
            "count": "256"
          }
        }
      ]
    },
    {
      "name": "r4-confirm-trim-b",
      "brief": "Score candidate {{cand}} on fresh real-engine seeds {{first}}..{{last}} ({{count}} seeds), paired against t03 and IB. Linux x86_64 only: on any other platform return blocked={step:'platform',error:why} at once, without setup. SETUP (in your workspace, never /tmp): clone https://github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704; the Setup section of port-3's result https://api.imdnotdead.fun/artifacts/0dbcc10af41b3c3467ff0d9b9cb64c81328fcf18295f9be06b2d81bb98874067 contains the 8-line setup script: save it as scratch/setup.sh, run `sh scratch/setup.sh` once from the checkout root, prefix later commands with `. scratch/env.sh && `; on failure return blocked={step,error}. CANDIDATE: {{source}} Save it byte-exact as contracts/src/Strategy.sol, compute its sha256, validate it with amm-match, note its runtime bytes (expected {{bytes}}). COMPARATORS: t03 = zlib-decompressed base64 `code_zb64` of https://api.imdnotdead.fun/artifacts/2333ecf28d4356bd232b85c1e55842e94e1ada05e1cd067830b5625dfdbc5336 (source sha256 cb6d945511e1e10af78baa64c2a6cb25806f0998403ce6440654bfc3c70092d9); IB = the same of https://api.imdnotdead.fun/artifacts/afd5183e9ff3235334e041c00b0cd19079599a2c6464db95f8c1586712105557 (sha256 301941829a44bb60977bb28181a5e4bfa6544f3696763f987054789b2611d686). ENGINE: each strategy alone vs the 30 bps VanillaStrategy through amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8); configs per MatchRunner._build_configs (config i: default_rng(i) draws size, rate, sigma in that order; sim seed i = the seed); score = the submission edge. Run seeds {{first}}..{{last}} exactly once each in chunks of at most 32 seeds (no command over 8 minutes; keep per-seed results under scratch/). Order: candidate, then t03, over all seeds; IB last. If time runs short, finish candidate and t03 on every seed and give IB's partial n. Call gas_stats_reset() before each chunk and gas_stats() after it; keep each chunk's afterSwap figures. RESULT must contain: (1) the candidate's sha256, validation pass or fail, its getName() string, runtime bytes; (2) paired candidate minus t03 and candidate minus IB: n, mean_diff, se = sample sd / sqrt(n), worst5 and best5 as (seed, diff), each arm's mean; (3) the candidate's afterSwap totals over all chunks: calls, OutOfGas count, revert count, peak gas, mean gas, and the peak per chunk; t03's peak and OutOfGas count; (4) a CSV of every seed: seed, candidate, t03, IB (empty where not run), 9 decimals; (5) seconds per seed and every seed not run. Measured numbers only: a seed not run is listed as not run, never filled in. Credit Taylor (gtmcknight) for the policy.",
      "output": {
        "format": "markdown",
        "maxBytes": 64000
      },
      "items": [
        {
          "key": "tb1",
          "vars": {
            "cand": "trim-1",
            "source": "trim-1 (requester note 4): take the complete Strategy.sol from the Solidity block of https://api.imdnotdead.fun/artifacts/fce772b9057867b241350b8e44c05298c6c877871a26b58702a5af431726f6c5; its sha256 must be d849c5f15d69499560b5c3ea08f55ad27153b393eba7abb7dd186f451ad46a24, else stop and report both hashes.",
            "bytes": "16,077",
            "first": "9608192",
            "last": "9608447",
            "count": "256"
          }
        },
        {
          "key": "tb2",
          "vars": {
            "cand": "trim-1",
            "source": "trim-1 (requester note 4): take the complete Strategy.sol from the Solidity block of https://api.imdnotdead.fun/artifacts/fce772b9057867b241350b8e44c05298c6c877871a26b58702a5af431726f6c5; its sha256 must be d849c5f15d69499560b5c3ea08f55ad27153b393eba7abb7dd186f451ad46a24, else stop and report both hashes.",
            "bytes": "16,077",
            "first": "9608448",
            "last": "9608703",
            "count": "256"
          }
        },
        {
          "key": "tb3",
          "vars": {
            "cand": "trim-1",
            "source": "trim-1 (requester note 4): take the complete Strategy.sol from the Solidity block of https://api.imdnotdead.fun/artifacts/fce772b9057867b241350b8e44c05298c6c877871a26b58702a5af431726f6c5; its sha256 must be d849c5f15d69499560b5c3ea08f55ad27153b393eba7abb7dd186f451ad46a24, else stop and report both hashes.",
            "bytes": "16,077",
            "first": "9608704",
            "last": "9608959",
            "count": "256"
          }
        },
        {
          "key": "tb4",
          "vars": {
            "cand": "trim-1",
            "source": "trim-1 (requester note 4): take the complete Strategy.sol from the Solidity block of https://api.imdnotdead.fun/artifacts/fce772b9057867b241350b8e44c05298c6c877871a26b58702a5af431726f6c5; its sha256 must be d849c5f15d69499560b5c3ea08f55ad27153b393eba7abb7dd186f451ad46a24, else stop and report both hashes.",
            "bytes": "16,077",
            "first": "9608960",
            "last": "9609215",
            "count": "256"
          }
        }
      ]
    },
    {
      "name": "r4-confirm-p2-a",
      "brief": "Score candidate {{cand}} on fresh real-engine seeds {{first}}..{{last}} ({{count}} seeds), paired against t03 and IB. Linux x86_64 only: on any other platform return blocked={step:'platform',error:why} at once, without setup. SETUP (in your workspace, never /tmp): clone https://github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704; the Setup section of port-3's result https://api.imdnotdead.fun/artifacts/0dbcc10af41b3c3467ff0d9b9cb64c81328fcf18295f9be06b2d81bb98874067 contains the 8-line setup script: save it as scratch/setup.sh, run `sh scratch/setup.sh` once from the checkout root, prefix later commands with `. scratch/env.sh && `; on failure return blocked={step,error}. CANDIDATE: {{source}} Save it byte-exact as contracts/src/Strategy.sol, compute its sha256, validate it with amm-match, note its runtime bytes (expected {{bytes}}). COMPARATORS: t03 = zlib-decompressed base64 `code_zb64` of https://api.imdnotdead.fun/artifacts/2333ecf28d4356bd232b85c1e55842e94e1ada05e1cd067830b5625dfdbc5336 (source sha256 cb6d945511e1e10af78baa64c2a6cb25806f0998403ce6440654bfc3c70092d9); IB = the same of https://api.imdnotdead.fun/artifacts/afd5183e9ff3235334e041c00b0cd19079599a2c6464db95f8c1586712105557 (sha256 301941829a44bb60977bb28181a5e4bfa6544f3696763f987054789b2611d686). ENGINE: each strategy alone vs the 30 bps VanillaStrategy through amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8); configs per MatchRunner._build_configs (config i: default_rng(i) draws size, rate, sigma in that order; sim seed i = the seed); score = the submission edge. Run seeds {{first}}..{{last}} exactly once each in chunks of at most 32 seeds (no command over 8 minutes; keep per-seed results under scratch/). Order: candidate, then t03, over all seeds; IB last. If time runs short, finish candidate and t03 on every seed and give IB's partial n. Call gas_stats_reset() before each chunk and gas_stats() after it; keep each chunk's afterSwap figures. RESULT must contain: (1) the candidate's sha256, validation pass or fail, its getName() string, runtime bytes; (2) paired candidate minus t03 and candidate minus IB: n, mean_diff, se = sample sd / sqrt(n), worst5 and best5 as (seed, diff), each arm's mean; (3) the candidate's afterSwap totals over all chunks: calls, OutOfGas count, revert count, peak gas, mean gas, and the peak per chunk; t03's peak and OutOfGas count; (4) a CSV of every seed: seed, candidate, t03, IB (empty where not run), 9 decimals; (5) seconds per seed and every seed not run. Measured numbers only: a seed not run is listed as not run, never filled in. Credit Taylor (gtmcknight) for the policy.",
      "output": {
        "format": "markdown",
        "maxBytes": 64000
      },
      "items": [
        {
          "key": "pa1",
          "vars": {
            "cand": "port-2",
            "source": "port-2: take the final complete Strategy.sol (name TaylorGaussianPlain2, about 18,484 runtime bytes) from https://api.imdnotdead.fun/artifacts/e8c967d6358da0fd53117891357f19a1d684225bd71a5e302b6e299c85f1286c; no hash was published: report the sha256 you computed and which block you took.",
            "bytes": "18,484",
            "first": "9609216",
            "last": "9609471",
            "count": "256"
          }
        },
        {
          "key": "pa2",
          "vars": {
            "cand": "port-2",
            "source": "port-2: take the final complete Strategy.sol (name TaylorGaussianPlain2, about 18,484 runtime bytes) from https://api.imdnotdead.fun/artifacts/e8c967d6358da0fd53117891357f19a1d684225bd71a5e302b6e299c85f1286c; no hash was published: report the sha256 you computed and which block you took.",
            "bytes": "18,484",
            "first": "9609472",
            "last": "9609727",
            "count": "256"
          }
        },
        {
          "key": "pa3",
          "vars": {
            "cand": "port-2",
            "source": "port-2: take the final complete Strategy.sol (name TaylorGaussianPlain2, about 18,484 runtime bytes) from https://api.imdnotdead.fun/artifacts/e8c967d6358da0fd53117891357f19a1d684225bd71a5e302b6e299c85f1286c; no hash was published: report the sha256 you computed and which block you took.",
            "bytes": "18,484",
            "first": "9609728",
            "last": "9609983",
            "count": "256"
          }
        },
        {
          "key": "pa4",
          "vars": {
            "cand": "port-2",
            "source": "port-2: take the final complete Strategy.sol (name TaylorGaussianPlain2, about 18,484 runtime bytes) from https://api.imdnotdead.fun/artifacts/e8c967d6358da0fd53117891357f19a1d684225bd71a5e302b6e299c85f1286c; no hash was published: report the sha256 you computed and which block you took.",
            "bytes": "18,484",
            "first": "9609984",
            "last": "9610239",
            "count": "256"
          }
        }
      ]
    },
    {
      "name": "r4-confirm-p2-b",
      "brief": "Score candidate {{cand}} on fresh real-engine seeds {{first}}..{{last}} ({{count}} seeds), paired against t03 and IB. Linux x86_64 only: on any other platform return blocked={step:'platform',error:why} at once, without setup. SETUP (in your workspace, never /tmp): clone https://github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704; the Setup section of port-3's result https://api.imdnotdead.fun/artifacts/0dbcc10af41b3c3467ff0d9b9cb64c81328fcf18295f9be06b2d81bb98874067 contains the 8-line setup script: save it as scratch/setup.sh, run `sh scratch/setup.sh` once from the checkout root, prefix later commands with `. scratch/env.sh && `; on failure return blocked={step,error}. CANDIDATE: {{source}} Save it byte-exact as contracts/src/Strategy.sol, compute its sha256, validate it with amm-match, note its runtime bytes (expected {{bytes}}). COMPARATORS: t03 = zlib-decompressed base64 `code_zb64` of https://api.imdnotdead.fun/artifacts/2333ecf28d4356bd232b85c1e55842e94e1ada05e1cd067830b5625dfdbc5336 (source sha256 cb6d945511e1e10af78baa64c2a6cb25806f0998403ce6440654bfc3c70092d9); IB = the same of https://api.imdnotdead.fun/artifacts/afd5183e9ff3235334e041c00b0cd19079599a2c6464db95f8c1586712105557 (sha256 301941829a44bb60977bb28181a5e4bfa6544f3696763f987054789b2611d686). ENGINE: each strategy alone vs the 30 bps VanillaStrategy through amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8); configs per MatchRunner._build_configs (config i: default_rng(i) draws size, rate, sigma in that order; sim seed i = the seed); score = the submission edge. Run seeds {{first}}..{{last}} exactly once each in chunks of at most 32 seeds (no command over 8 minutes; keep per-seed results under scratch/). Order: candidate, then t03, over all seeds; IB last. If time runs short, finish candidate and t03 on every seed and give IB's partial n. Call gas_stats_reset() before each chunk and gas_stats() after it; keep each chunk's afterSwap figures. RESULT must contain: (1) the candidate's sha256, validation pass or fail, its getName() string, runtime bytes; (2) paired candidate minus t03 and candidate minus IB: n, mean_diff, se = sample sd / sqrt(n), worst5 and best5 as (seed, diff), each arm's mean; (3) the candidate's afterSwap totals over all chunks: calls, OutOfGas count, revert count, peak gas, mean gas, and the peak per chunk; t03's peak and OutOfGas count; (4) a CSV of every seed: seed, candidate, t03, IB (empty where not run), 9 decimals; (5) seconds per seed and every seed not run. Measured numbers only: a seed not run is listed as not run, never filled in. Credit Taylor (gtmcknight) for the policy.",
      "output": {
        "format": "markdown",
        "maxBytes": 64000
      },
      "items": [
        {
          "key": "pb1",
          "vars": {
            "cand": "port-2",
            "source": "port-2: take the final complete Strategy.sol (name TaylorGaussianPlain2, about 18,484 runtime bytes) from https://api.imdnotdead.fun/artifacts/e8c967d6358da0fd53117891357f19a1d684225bd71a5e302b6e299c85f1286c; no hash was published: report the sha256 you computed and which block you took.",
            "bytes": "18,484",
            "first": "9610240",
            "last": "9610495",
            "count": "256"
          }
        },
        {
          "key": "pb2",
          "vars": {
            "cand": "port-2",
            "source": "port-2: take the final complete Strategy.sol (name TaylorGaussianPlain2, about 18,484 runtime bytes) from https://api.imdnotdead.fun/artifacts/e8c967d6358da0fd53117891357f19a1d684225bd71a5e302b6e299c85f1286c; no hash was published: report the sha256 you computed and which block you took.",
            "bytes": "18,484",
            "first": "9610496",
            "last": "9610751",
            "count": "256"
          }
        },
        {
          "key": "pb3",
          "vars": {
            "cand": "port-2",
            "source": "port-2: take the final complete Strategy.sol (name TaylorGaussianPlain2, about 18,484 runtime bytes) from https://api.imdnotdead.fun/artifacts/e8c967d6358da0fd53117891357f19a1d684225bd71a5e302b6e299c85f1286c; no hash was published: report the sha256 you computed and which block you took.",
            "bytes": "18,484",
            "first": "9610752",
            "last": "9611007",
            "count": "256"
          }
        },
        {
          "key": "pb4",
          "vars": {
            "cand": "port-2",
            "source": "port-2: take the final complete Strategy.sol (name TaylorGaussianPlain2, about 18,484 runtime bytes) from https://api.imdnotdead.fun/artifacts/e8c967d6358da0fd53117891357f19a1d684225bd71a5e302b6e299c85f1286c; no hash was published: report the sha256 you computed and which block you took.",
            "bytes": "18,484",
            "first": "9611008",
            "last": "9611263",
            "count": "256"
          }
        }
      ]
    },
    {
      "name": "r4-confirm-misc",
      "brief": "Score candidate {{cand}} on fresh real-engine seeds {{first}}..{{last}} ({{count}} seeds), paired against t03 and IB. Linux x86_64 only: on any other platform return blocked={step:'platform',error:why} at once, without setup. SETUP (in your workspace, never /tmp): clone https://github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704; the Setup section of port-3's result https://api.imdnotdead.fun/artifacts/0dbcc10af41b3c3467ff0d9b9cb64c81328fcf18295f9be06b2d81bb98874067 contains the 8-line setup script: save it as scratch/setup.sh, run `sh scratch/setup.sh` once from the checkout root, prefix later commands with `. scratch/env.sh && `; on failure return blocked={step,error}. CANDIDATE: {{source}} Save it byte-exact as contracts/src/Strategy.sol, compute its sha256, validate it with amm-match, note its runtime bytes (expected {{bytes}}). COMPARATORS: t03 = zlib-decompressed base64 `code_zb64` of https://api.imdnotdead.fun/artifacts/2333ecf28d4356bd232b85c1e55842e94e1ada05e1cd067830b5625dfdbc5336 (source sha256 cb6d945511e1e10af78baa64c2a6cb25806f0998403ce6440654bfc3c70092d9); IB = the same of https://api.imdnotdead.fun/artifacts/afd5183e9ff3235334e041c00b0cd19079599a2c6464db95f8c1586712105557 (sha256 301941829a44bb60977bb28181a5e4bfa6544f3696763f987054789b2611d686). ENGINE: each strategy alone vs the 30 bps VanillaStrategy through amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8); configs per MatchRunner._build_configs (config i: default_rng(i) draws size, rate, sigma in that order; sim seed i = the seed); score = the submission edge. Run seeds {{first}}..{{last}} exactly once each in chunks of at most 32 seeds (no command over 8 minutes; keep per-seed results under scratch/). Order: candidate, then t03, over all seeds; IB last. If time runs short, finish candidate and t03 on every seed and give IB's partial n. Call gas_stats_reset() before each chunk and gas_stats() after it; keep each chunk's afterSwap figures. RESULT must contain: (1) the candidate's sha256, validation pass or fail, its getName() string, runtime bytes; (2) paired candidate minus t03 and candidate minus IB: n, mean_diff, se = sample sd / sqrt(n), worst5 and best5 as (seed, diff), each arm's mean; (3) the candidate's afterSwap totals over all chunks: calls, OutOfGas count, revert count, peak gas, mean gas, and the peak per chunk; t03's peak and OutOfGas count; (4) a CSV of every seed: seed, candidate, t03, IB (empty where not run), 9 decimals; (5) seconds per seed and every seed not run. Measured numbers only: a seed not run is listed as not run, never filled in. Credit Taylor (gtmcknight) for the policy.",
      "output": {
        "format": "markdown",
        "maxBytes": 64000
      },
      "items": [
        {
          "key": "p3-b3",
          "vars": {
            "cand": "port-3",
            "source": "port-3: take the complete Strategy.sol from the Solidity block of https://api.imdnotdead.fun/artifacts/0dbcc10af41b3c3467ff0d9b9cb64c81328fcf18295f9be06b2d81bb98874067; its sha256 must be 62930b8e68277c69fc1acfba18de781e684d7fc6daac8dc562b8210dc3932ac1, else stop and report both hashes.",
            "bytes": "18,466",
            "first": "9601536",
            "last": "9601791",
            "count": "256"
          }
        },
        {
          "key": "spl-128",
          "vars": {
            "cand": "spline-1",
            "source": "spline-1 FINAL (name TaylorGaussianPlainSpline): take the final Strategy.sol from https://api.imdnotdead.fun/artifacts/2e73bea9c6c8fadd34bb31cb788591821df10e601321bbeeb0cba7c4a9d0be8a; its sha256 must be 27ad2a5f3d2b218138a95f8d4ab616227ca7dfd855a9c60577f86fea09c6caed, else stop and report both hashes.",
            "bytes": "21,106",
            "first": "9532000",
            "last": "9532127",
            "count": "128"
          }
        }
      ]
    },
    {
      "name": "r4-qm-port",
      "brief": "Port Taylor's (gtmcknight) qm tables (+3.77 vs HA on the replica) into trim-1 with the qm-spline compression, copy {{copy}} of 2. Linux x86_64 only: on any other platform return blocked={step:'platform',error:why} at once. Retry a failed download three times before returning blocked={step,error}. READ: trim-1 https://api.imdnotdead.fun/artifacts/fce772b9057867b241350b8e44c05298c6c877871a26b58702a5af431726f6c5 (sha256 d849c5f1..., 16,077 B, engine peak 232,889; its Engine section names t03/IB and the protocol); port-3 https://api.imdnotdead.fun/artifacts/0dbcc10af41b3c3467ff0d9b9cb64c81328fcf18295f9be06b2d81bb98874067 (setup script in its Setup section; standalone.py, check.py replay, engine.py); qm-spline https://api.imdnotdead.fun/artifacts/17d249ab0c33fc44931d9b105cf3f9e3846a560bd518b67310c2a56defacdecc (QMS1 blob 10,167 B, layout, decoder). Replica: gtmcknight/amm-sim at 4812a6382311624e1506aca131ca35c378f930d9, research/solved, README first, plain `python3 -I`. SETUP: clone https://github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704 in your workspace (never /tmp), run port-3's setup script once as scratch/setup.sh from the checkout root, prefix later commands with `. scratch/env.sh && `; on failure return blocked={step,error}; no command over 8 minutes. GATE P: before any change, plain gates.py gives the README's gaussian+qm column (443.522608 / 571.623551 / 525.865859). BUILD: keep `contract Strategy is AMMStrategyBase`, trim-1's filter, state and timing, Taylor credited in the header. Replace the fixed-net fee with the qm lookup as real.py's RealPolicy.lookup reads qm tables (sd bracket of levels 0,4,8,12,16,20,26,34 from sqrt(v) in bps, linear weight; tag 0c in phase 0, else 1s/1c/2s/2c by phase and rival sync; bid by the point mirror; fee as trim-1). Compute the B-spline bases at runtime (no basis tables); coefficients as PUSH32 immediates like trim-1. Targets: runtime <= 24,000 bytes, pyrevm afterSwap peak <= 190,000 on the gate-F replay (engine peak ~ pyrevm + 48,000; cap 245,000). REFERENCE: real.py's qm variant over the decoder's tables, unchanged otherwise. GATE F: 50 replica runs x 2,000 callbacks (seeds 70000..70049) on pyrevm with 245,000 gas per call: max |fee difference| <= 0.01 bps on both fees. ENGINE (only if gate F passes and size fits): contract, t03 and IB alone vs VanillaStrategy by trim-1's protocol on seeds {{first}}..{{last}} once each, chunks of 32: paired n, mean_diff, se, worst5 vs t03 and IB; afterSwap peak, mean, OutOfGas count. RESULT must contain: gate P pass or fail; runtime bytes; validation pass or fail; gate F n, max and mean difference; pyrevm afterSwap peak and mean; gas of one ask+bid lookup; engine figures or why not run; the complete Strategy.sol with its sha256; the reference's changes; the decoded tables' sha256. If size or gas fails, still report every figure and what it would take.",
      "output": {
        "format": "markdown",
        "maxBytes": 64000
      },
      "items": [
        {
          "key": "qm-1",
          "vars": {
            "copy": "1",
            "first": "9533000",
            "last": "9533127"
          }
        },
        {
          "key": "qm-2",
          "vars": {
            "copy": "2",
            "first": "9534000",
            "last": "9534127"
          }
        }
      ]
    }
  ],
  "read": [
    "r2-net/net-2",
    "r3-trim-net/trim-2",
    "r3-gate-q/net2-choose",
    "r3-gate-q/net2-report-a",
    "r3-gate-q/net2-report-b",
    "r3-gate-q/agg-report-a"
  ],
  "cancel": [],
  "wake": {
    "batches": [
      "r4-confirm-trim-a",
      "r4-confirm-trim-b",
      "r4-confirm-p2-a",
      "r4-confirm-p2-b",
      "r4-confirm-misc",
      "r4-qm-port"
    ],
    "afterMinutes": 150
  },
  "finish": false
}
