{
  "notes": "Episode 5/10. A first attempt at this episode was refused (invalid_output: wake.batches had more than 10 entries); this one names exactly 10. State on reading: 25/400 items used; no refusals of decisions; 12 items running in 9 unsettled batches (e02-design-b-edge/b2, e02-gas-room/slim, e03-pilot-rerun phase/routing/corridor, e03-design-a-position/a3, e03-design-b-edge b1/b2, e03-pos-scale/s1, e04-harness-repair/control, e04-position-recovery/a1, e04-edge-table/table). No measured candidate gain exists yet; V2 (board 519.68, 29th) is still the only entry. No trunk, no submission.\n\nHANDED THIS EPISODE (all three blocked at setup, none is a tried idea):\n- e03-design-a-position/a1 and /a2 (Poisson position blend, constant fR grid / router-share fR): blocked at `sh scratch/setup.sh`, rustup \"Could not locate working directory: no /proc/self/exe\". No code, no measurement, holdouts 4110000/4120000 unused (retired anyway).\n- e04-position-recovery/a2 (observed-print threshold rule): same setup failure. It did return a reconstructed, UNCOMPILED candidate: result artifact f1e1fdd3c44b9ed1e4349a32828ef2ed1564cc8c9a0610f1017dca88a9a5f7a6, `code` sha256 4511f1343d4638a08a31cc8c72942ef3c5bdab94c9302aa5ed5276db071f7319; first print quotes 15 bps + 0.75*sizeHat, later prints BASE_FEE + sigmaHat + FLOW_SIZE_COEF*lambdaHat*sizeHat, V2 side logic kept; planned grid threshold {1,2} x k {0.5,0.75,1}; holdout 4180000 unused (retired). Requested sha of V2 confirmed 28417e11...\nRequester note 02:57Z (followed): four items stopped because their host lacks /proc for rustup; replace the setup script's `command -v cargo` line with their fallback line (rustup, else micromamba conda-forge rust appended to env.sh); give each design a third copy while hosts fail this often.\n\nDECIDED (4 new batches, 7 items; total 32/400 if accepted; nothing cancelled):\n- e05-position-rerun p1/p2/p3: design (a) Poisson blend f = w*fR + (1-w)*fA with V2's own fees as fA. p1 = old a1 (constant fR 26..36 bps, s {0.75,1}); p2 = old a2 (fR from router share via table, fA = max(F0, c*sigmaHat*sqrt(1+steps since first print))); p3 = third copy of p1 on other seeds (fR 28..36, s {0.5,0.75,1}, attracting side only if it gains).\n- e05-threshold-rerun t1/t2: the e04 a2 threshold design, starting from the reconstruction above (must compile/validate first). t1 grid R {15,22,28,32,36} bps + k*sizeHat k {0,0.75}, threshold {1,2}; t2 = third copy, R 26..36, k 0, later prints V2's fMid vs the reduced formula.\n- e05-pos-scale-copy s2: second copy of e03-pos-scale's minimal in-V2 blend (R {28..34}, s {0.5,0.75,1}) on other seeds.\n- e05-flat-control flat: CONTROL, no holdout: flat bid=ask=F for F in {30,33,35,37,40} bps vs V2 paired on 10000..10255. Calibrates how much of V2's edge its dynamics earn and gives a zero-gas-risk check of the repaired harness. A flat fee that lands within a few points of V2 would say the dynamics are worth little and the leaders' +8.7 must come from structure, not estimation.\nAll new briefs: mended setup line verbatim, verbatim OOG rule sentence, audit artifact 02c134d9... as the source of V2/setup.sh/instrumentation.patch/harness.py with the two harness repairs (requested seeds only; never exit on OOG), separate run_batch per strategy, configs as MatchRunner._build_configs, economics summary, <=12 variants then top 2, freeze before holdout, 2000-seed confirmation, full return schema incl. v2_gas. Filled design briefs are 2.8-3.0k chars (3,000 cap): the skeleton has no slack, so a later task that needs more words must drop the economics line or shorten the return schema.\nDesign (b) is NOT duplicated: e03-design-b-edge b1/b2, e02-design-b-edge/b2 and e04-edge-table are 4 running items on it. Pilot reruns (phase, routing, corridor) are running. Interaction was measured in episode 1 (best -13.67 +- 0.40) and stays retired.\n\nWAKE: 10 batches (4 new + e03-pilot-rerun, e03-design-a-position, e03-design-b-edge, e03-pos-scale, e04-harness-repair, e04-position-recovery) or 120 minutes. e02-gas-room, e02-design-b-edge and e04-edge-table are not in the wake list (10 cap) but their results are requested in `read`.\n\nSEED LEDGER (holdout blocks are never reused for a new code hash; reserve whole 10k blocks even when unused):\nRetired for good: 4000000..4199999 (episodes 1-4, incl. unused a1 4110000, a2 4120000, e04 a2 4180000; still-running items keep theirs: phase 4080000, routing 4090000, corridor 4100000, a3 4130000, b1 4140000, b2 4150000, s1 4160000, e04 a1 4170000, table 4190000, each confirming its first 2000).\nEpisode 5: p1 4200000..4201999 (reserve ..4209999); p2 4210000..4211999 (..4219999); p3 4220000..4221999 (..4229999); t1 4230000..4231999 (..4239999); t2 4240000..4241999 (..4249999); s2 4250000..4251999 (..4259999). NEXT FREE = 4260000.\nTraining this episode: p1 10000..10255/12000..12511; p2 and t1 20000..20255/22000..22511; p3 50000..50255/52000..52511; t2 60000..60255/62000..62511; s2 70000..70255/72000..72511; flat control 10000..10255 only. Training seeds may be reused across items.\n\nSTANDING RULES: comparator is always exact V2 (sha 28417e11...), never a slim build; valid when candidate OOG <= V2's on the same seeds and other errors are 0; promote only a fresh-block paired gain > 2 se; the requester submits a file measuring >= +0.3 over V2 on 4,000 fresh seeds with 0 candidate OOG (so a finalist needs a gas diet that removes V2's own OOG: drop afterInitialize zero writes, pack slot 16 into slot 2, floor Newton sqrt, delete estimators the new rule no longer reads). Every brief must carry the OOG sentence verbatim and the mended setup line; no machine probes in briefs; every {{placeholder}} needs a var in every item.\n\nNEXT EPISODE (6/10), in order:\n1. For every result: read `blocked` first. A setup failure that still says rustup/cargo means the fallback line did not help: record the error and, if a design still has no valid measurement, rerun once more with the setup moved to a prebuilt route only if the requester offers one; do not spend a fourth copy blindly.\n2. For measured results check: V2 sha 28417e11..., configs as the audit's, candidate and V2 gas on the same seeds (max_ok, oog, reverts, other_halts, init_max), holdout n = 2000 on the assigned block, nothing tuned on it, frozen code + sha256 present. Otherwise the claim is unconfirmed.\n3. Rank families by holdout mean_diff vs se. Any family > +1 with gain > 2 se: spawn (i) an independent replication of the frozen code on a new block from 4260000 (2000 seeds, different machine) and (ii) a wider tuning batch of 10-25 variants (canary first, each item its own 10k holdout block, tuning only on 10000..99999). Families that lose: record mean/se and why; never retry the same design.\n4. Read e04-harness-repair/control and e02-gas-room/slim: if the slim V2 has exactly-zero paired diff and lower gas, record its sha256 as the base for gas diets (comparator stays exact V2). Read the flat-fee ladder and write its numbers into notes.\n5. Budget plan: episode 6 widen the best family (<= 40 items), episode 7 freeze a finalist and spawn 2-3 independent 4000-seed confirmations with a zero-OOG gas diet, episode 8 read them and finish if a confirmation passes the submission bar, episodes 9-10 reserve. finish stays false until a candidate beats V2 by > 2 se on a fresh block with OOG <= V2's and has been independently confirmed, or every family is exhausted with recorded results. No deployment or board submission is authorised here; the requester submits.",
  "spawn": [
    {
      "name": "e05-position-rerun",
      "mode": "research",
      "brief": "<60 min, ONE item. {{task}}\nSetup: clone github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704 into your workspace (never /tmp). GET https://api.imd.fun/artifacts/02c134d9ed51858f06d02b6dec25e6922016490f11e3a8174af512a6a77b6569: `code` = exact V2 (sha256 28417e116f57f1029fdd1803832e852574902c1ae7253c05657f317db76da4ab) -> contracts/src/V2.sol; `source_files` [{path,content}] has scratch/setup.sh, instrumentation.patch, harness.py. In setup.sh replace the `command -v cargo` line with (conda-forge rust fallback):\ncommand -v cargo >/dev/null||{ curl -sSf https://sh.rustup.rs|sh -s -- -y --profile minimal --no-modify-path||{ [ -x $R/bin/micromamba ]||{ curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o $R/tmp/mm.tbz;python3 -c \"import sys,tarfile;tarfile.open(sys.argv[1]).extract('bin/micromamba',sys.argv[2])\" $R/tmp/mm.tbz $R;};MAMBA_ROOT_PREFIX=$R/mamba $R/bin/micromamba create -yq -p $R/rust -c conda-forge rust;echo \"export PATH=$R/rust/bin:\\$PATH\" >>$R/env.sh;. $R/env.sh;};}\nRun `sh scratch/setup.sh` once at checkout root; prefix later commands with `. scratch/env.sh && `; on failure return blocked={step,error}, paired.n 0. Apply instrumentation.patch, rebuild. Repair harness.py: configs only for requested seeds; never exit or mark invalid on OOG.\nOOG 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 halts invalidate.\nEach strategy alone: amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8), configs as MatchRunner._build_configs (default_rng(seed): size, rate, sigma; price seed=seed, retail seed+1), 10000 steps, 250000 gas. Paired diff per seed = candidate - V2 edge; se = sd/sqrt(n); worst 5. Economics: at most one arb per step, before retail; f*share(f) vs the 30 bps pool peaks near 30-35 bps.\nTune only on {{screen}} (<=12 variants), top 2 on {{select}}; freeze ONE candidate (source+sha256) before the holdout; confirm once vs V2 on {{holdout}} (2000 seeds, never reused; keep 15 min).\nReturn JSON: code, sha256, design, tuning[{variant,n,mean_diff,se}], paired{n,mean_diff,se,worst}, gas{max_ok,oog,reverts,other_halts,init_max}, v2_gas (same seeds), seeds{screen,select,holdout}, blocked{step,error}.",
      "items": [
        {
          "key": "p1",
          "vars": {
            "task": "Design (a), quote by position in step: keep V2's estimators; fA = V2's final bidFee/askFee; return per side f = w*fR + (1-w)*fA, w = P(next trade is same-step retail | k prints seen, lambdaHat) from Poisson (after the first print 1-exp(-L); after the k-th P(N>k)/P(N>=k)). Variants: constant fR in {26,28,30,32,34,36} bps, then fR +-1 around the best and w scaled by s in {0.75,1}. Drop afterInitialize's zero writes.",
            "screen": "10000..10255",
            "select": "12000..12511",
            "holdout": "4200000..4201999"
          }
        },
        {
          "key": "p2",
          "vars": {
            "task": "Design (a), quote by position in step: keep V2's estimators; fA = V2's final bidFee/askFee; return per side f = w*fR + (1-w)*fA, w = P(next trade is same-step retail | k prints seen, lambdaHat) from Poisson (after the first print 1-exp(-L); after the k-th P(N>k)/P(N>=k)). Variants: fR = table lookup of argmax f*share(f) by this step's retail flow (no fee loop in the callback), clamped 24..40 bps; fA = max(F0, c*sigmaHat*sqrt(1 + steps since the last first print)), F0 {20,25} bps, c {1,2,3}. Drop afterInitialize's zero writes.",
            "screen": "20000..20255",
            "select": "22000..22511",
            "holdout": "4210000..4211999"
          }
        },
        {
          "key": "p3",
          "vars": {
            "task": "Design (a), quote by position in step: keep V2's estimators; fA = V2's final bidFee/askFee; return per side f = w*fR + (1-w)*fA, w = P(next trade is same-step retail | k prints seen, lambdaHat) from Poisson (after the first print 1-exp(-L); after the k-th P(N>k)/P(N>=k)). Variants (third copy of p1 on other seeds): constant fR in {28,30,32,34,36} bps with s in {0.5,0.75,1}; if it gains, also blend the attracting side only. Drop afterInitialize's zero writes.",
            "screen": "50000..50255",
            "select": "52000..52511",
            "holdout": "4220000..4221999"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 64000
      }
    },
    {
      "name": "e05-threshold-rerun",
      "mode": "research",
      "brief": "<60 min, ONE item. {{task}}\nSetup: clone github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704 into your workspace (never /tmp). GET https://api.imd.fun/artifacts/02c134d9ed51858f06d02b6dec25e6922016490f11e3a8174af512a6a77b6569: `code` = exact V2 (sha256 28417e116f57f1029fdd1803832e852574902c1ae7253c05657f317db76da4ab) -> contracts/src/V2.sol; `source_files` [{path,content}] has scratch/setup.sh, instrumentation.patch, harness.py. In setup.sh replace the `command -v cargo` line with (conda-forge rust fallback):\ncommand -v cargo >/dev/null||{ curl -sSf https://sh.rustup.rs|sh -s -- -y --profile minimal --no-modify-path||{ [ -x $R/bin/micromamba ]||{ curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o $R/tmp/mm.tbz;python3 -c \"import sys,tarfile;tarfile.open(sys.argv[1]).extract('bin/micromamba',sys.argv[2])\" $R/tmp/mm.tbz $R;};MAMBA_ROOT_PREFIX=$R/mamba $R/bin/micromamba create -yq -p $R/rust -c conda-forge rust;echo \"export PATH=$R/rust/bin:\\$PATH\" >>$R/env.sh;. $R/env.sh;};}\nRun `sh scratch/setup.sh` once at checkout root; prefix later commands with `. scratch/env.sh && `; on failure return blocked={step,error}, paired.n 0. Apply instrumentation.patch, rebuild. Repair harness.py: configs only for requested seeds; never exit or mark invalid on OOG.\nOOG 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 halts invalidate.\nEach strategy alone: amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8), configs as MatchRunner._build_configs (default_rng(seed): size, rate, sigma; price seed=seed, retail seed+1), 10000 steps, 250000 gas. Paired diff per seed = candidate - V2 edge; se = sd/sqrt(n); worst 5. Economics: at most one arb per step, before retail; f*share(f) vs the 30 bps pool peaks near 30-35 bps.\nTune only on {{screen}} (<=12 variants), top 2 on {{select}}; freeze ONE candidate (source+sha256) before the holdout; confirm once vs V2 on {{holdout}} (2000 seeds, never reused; keep 15 min).\nReturn JSON: code, sha256, design, tuning[{variant,n,mean_diff,se}], paired{n,mean_diff,se,worst}, gas{max_ok,oog,reverts,other_halts,init_max}, v2_gas (same seeds), seeds{screen,select,holdout}, blocked{step,error}.",
      "items": [
        {
          "key": "t1",
          "vars": {
            "task": "Threshold design (observed prints only): keep V2's estimators and side logic; fMid by position: after a step's first print (stepTradeCount == 1 after increment) quote retail fee R; after later prints V2's own fMid (left for the next arb). Start from the uncompiled `code` of https://api.imd.fun/artifacts/f1e1fdd3c44b9ed1e4349a32828ef2ed1564cc8c9a0610f1017dca88a9a5f7a6 (R hard-coded 15 bps + 0.75*sizeHat, reduced later formula): compile, validate, grid. Variants: R in {15,22,28,32,36} bps + k*sizeHat, k {0,0.75}; threshold prints {1,2}.",
            "screen": "20000..20255",
            "select": "22000..22511",
            "holdout": "4230000..4231999"
          }
        },
        {
          "key": "t2",
          "vars": {
            "task": "Threshold design (observed prints only): keep V2's estimators and side logic; fMid by position: after a step's first print (stepTradeCount == 1 after increment) quote retail fee R; after later prints V2's own fMid (left for the next arb). Start from the uncompiled `code` of https://api.imd.fun/artifacts/f1e1fdd3c44b9ed1e4349a32828ef2ed1564cc8c9a0610f1017dca88a9a5f7a6 (R hard-coded 15 bps + 0.75*sizeHat, reduced later formula): compile, validate, grid. Third copy, other seeds: R in 26..36 step 2 bps, k 0, threshold 1; later prints V2's fMid vs the reduced formula.",
            "screen": "60000..60255",
            "select": "62000..62511",
            "holdout": "4240000..4241999"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 64000
      }
    },
    {
      "name": "e05-pos-scale-copy",
      "mode": "research",
      "brief": "<60 min, ONE item. {{task}}\nSetup: clone github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704 into your workspace (never /tmp). GET https://api.imd.fun/artifacts/02c134d9ed51858f06d02b6dec25e6922016490f11e3a8174af512a6a77b6569: `code` = exact V2 (sha256 28417e116f57f1029fdd1803832e852574902c1ae7253c05657f317db76da4ab) -> contracts/src/V2.sol; `source_files` [{path,content}] has scratch/setup.sh, instrumentation.patch, harness.py. In setup.sh replace the `command -v cargo` line with (conda-forge rust fallback):\ncommand -v cargo >/dev/null||{ curl -sSf https://sh.rustup.rs|sh -s -- -y --profile minimal --no-modify-path||{ [ -x $R/bin/micromamba ]||{ curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o $R/tmp/mm.tbz;python3 -c \"import sys,tarfile;tarfile.open(sys.argv[1]).extract('bin/micromamba',sys.argv[2])\" $R/tmp/mm.tbz $R;};MAMBA_ROOT_PREFIX=$R/mamba $R/bin/micromamba create -yq -p $R/rust -c conda-forge rust;echo \"export PATH=$R/rust/bin:\\$PATH\" >>$R/env.sh;. $R/env.sh;};}\nRun `sh scratch/setup.sh` once at checkout root; prefix later commands with `. scratch/env.sh && `; on failure return blocked={step,error}, paired.n 0. Apply instrumentation.patch, rebuild. Repair harness.py: configs only for requested seeds; never exit or mark invalid on OOG.\nOOG 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 halts invalidate.\nEach strategy alone: amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8), configs as MatchRunner._build_configs (default_rng(seed): size, rate, sigma; price seed=seed, retail seed+1), 10000 steps, 250000 gas. Paired diff per seed = candidate - V2 edge; se = sd/sqrt(n); worst 5. Economics: at most one arb per step, before retail; f*share(f) vs the 30 bps pool peaks near 30-35 bps.\nTune only on {{screen}} (<=12 variants), top 2 on {{select}}; freeze ONE candidate (source+sha256) before the holdout; confirm once vs V2 on {{holdout}} (2000 seeds, never reused; keep 15 min).\nReturn JSON: code, sha256, design, tuning[{variant,n,mean_diff,se}], paired{n,mean_diff,se,worst}, gas{max_ok,oog,reverts,other_halts,init_max}, v2_gas (same seeds), seeds{screen,select,holdout}, blocked{step,error}.",
      "items": [
        {
          "key": "s2",
          "vars": {
            "task": "Minimal position-in-step test INSIDE V2: change only the lines after V2 computes bidFee/askFee. Blend each side toward a constant retail quote R when above R (never raise a fee): fee -= w*(fee-R), w = s*P(next trade is same-step retail | prints seen, lambdaHat) from Poisson. Grid R in {28,30,32,34} bps, s in {0.5,0.75,1}; if it gains, try the attracting side only and R +-2. Drop afterInitialize's zero writes.",
            "screen": "70000..70255",
            "select": "72000..72511",
            "holdout": "4250000..4251999"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 64000
      }
    },
    {
      "name": "e05-flat-control",
      "mode": "research",
      "brief": "<60 min, ONE item, a CONTROL (no holdout, no candidate is frozen). Flat-fee ladder: a strategy whose afterInitialize returns bid = ask = F and whose afterSwap returns (F, F) unchanged, for F in {30, 33, 35, 37, 40} bps. Measure each F vs V2 paired on seeds {{seeds}} (256 seeds).\nSetup: clone github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704 into your workspace (never /tmp). GET https://api.imd.fun/artifacts/02c134d9ed51858f06d02b6dec25e6922016490f11e3a8174af512a6a77b6569: `code` = exact V2 (sha256 28417e116f57f1029fdd1803832e852574902c1ae7253c05657f317db76da4ab) -> contracts/src/V2.sol; `source_files` [{path,content}] has scratch/setup.sh, instrumentation.patch, harness.py. In setup.sh replace the `command -v cargo` line with (conda-forge rust fallback):\ncommand -v cargo >/dev/null||{ curl -sSf https://sh.rustup.rs|sh -s -- -y --profile minimal --no-modify-path||{ [ -x $R/bin/micromamba ]||{ curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o $R/tmp/mm.tbz;python3 -c \"import sys,tarfile;tarfile.open(sys.argv[1]).extract('bin/micromamba',sys.argv[2])\" $R/tmp/mm.tbz $R;};MAMBA_ROOT_PREFIX=$R/mamba $R/bin/micromamba create -yq -p $R/rust -c conda-forge rust;echo \"export PATH=$R/rust/bin:\\$PATH\" >>$R/env.sh;. $R/env.sh;};}\nRun `sh scratch/setup.sh` once at checkout root; prefix later commands with `. scratch/env.sh && `; on failure return blocked={step,error}, paired.n 0. Apply instrumentation.patch, rebuild. Repair harness.py: configs only for requested seeds; never exit or mark invalid on OOG.\nOOG 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 halts invalidate.\nEach strategy alone: amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8), configs as MatchRunner._build_configs (default_rng(seed): size, rate, sigma; price seed=seed, retail seed+1), 10000 steps, 250000 gas. Paired diff per seed = candidate - V2 edge; se = sd/sqrt(n); worst 5. Return JSON: ladder[{F_bps, code_sha256, n, mean_edge, mean_diff, se, worst, gas{max_ok,oog,reverts,other_halts}}], v2{mean_edge, gas{max_ok,oog,reverts,other_halts,init_max}}, seeds, notes (what the ladder says about how much of V2's edge its dynamics earn), blocked{step,error} or null.",
      "items": [
        {
          "key": "flat",
          "vars": {
            "seeds": "10000..10255"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 32000
      }
    }
  ],
  "read": [
    "e05-position-rerun/p1",
    "e05-position-rerun/p2",
    "e05-position-rerun/p3",
    "e05-threshold-rerun/t1",
    "e05-threshold-rerun/t2",
    "e05-pos-scale-copy/s2",
    "e05-flat-control/flat",
    "e03-pilot-rerun/phase",
    "e03-pilot-rerun/routing",
    "e03-pilot-rerun/corridor",
    "e03-design-a-position/a3",
    "e03-design-b-edge/b1",
    "e03-design-b-edge/b2",
    "e03-pos-scale/s1",
    "e04-harness-repair/control",
    "e04-position-recovery/a1",
    "e04-edge-table/table",
    "e02-gas-room/slim",
    "e02-design-b-edge/b2"
  ],
  "cancel": [],
  "wake": {
    "batches": [
      "e05-position-rerun",
      "e05-threshold-rerun",
      "e05-pos-scale-copy",
      "e05-flat-control",
      "e03-pilot-rerun",
      "e03-design-a-position",
      "e03-design-b-edge",
      "e03-pos-scale",
      "e04-harness-repair",
      "e04-position-recovery"
    ],
    "afterMinutes": 120
  },
  "finish": false
}
