{
  "notes": "EPISODE 8 (2026-11-10). Read all inputs/history; fetched26 solved files,0 mismatches. No notes/refusals from requester. Verified14 result/tar hashes and audit/M09 bundles. Recomputed all8 new engine blocks from rows, including paired sums/sumsq/SE/worst5; checked96 live command gas snapshots (576 role/callback records), source/runtime/wheel identities, config claims and runner code. Report/code audits only; no engine reruns here. Spawn8 items (2A/6B) in4 two-item research batches; used117->125/240,115 items and12 later episodes remain. Track A already passed with Q2, so concentrate on new policy value. finish=false; no board entry.\n\nENGINE: all eight returned a7-confirm-m09 blocks qualify, seeds12007680..12009727. Each has256 pairs/3 arms, frozen hashes/wheel/configs, validate pass,zero faults/calls==ok. eng12008192 has full rows/gas despite interrupted display, no replay. Flagged eng12008704 passes evidence checks. New2048 M09-IB sum7864.028354809309,sumsq34612.434832065905. Add ep7 n1920,sum7213.272042186496,sumsq31537.344263543262 -> M09 n3968,sum15077.300396995804,sumsq66149.77909560916,mean3.7997228823074103,se.023724945160306682. Still32 pairs short of4000; pending a7-confirm-m09-a/eng-12007424 (256) NOT counted.\nM09-PB cumulative n2944,sum1359.202330289283,sumsq1530.280087283838,mean.4616855741471749,se.0102075414667115. PB-IB now n4104,sum13807.734807781875,sumsq55035.59833917451,mean3.3644577991671234,se.022573071591375483: PB now also meets4000/+2.7, strongest fully confirmed fallback until M09 closes. Q2 unchanged n4232,sum12785.970608252373,sumsq47964.52196328807,mean3.0212595955,se.0228327295. Pool n,sum,sumsq with sample variance, never average SEs or combine different candidates.\nM09 new/historic afterSwap peak219533 (eng12009472),initialize229594; PB215849,IB historic237142 (new237040);0 reported faults. M09 forecast3.9019852592 from replica is only.1022624 above engine (<.2). Remaining gap to+6.4 ~2.6003. Paired gaps are not board scores/rank. Stop unchanged-port sampling after closure.\n\nFROZEN ARTIFACTS at https://api.imd.fun/artifacts/<result SHA>: audit db67c7a0e8fa98f87b069766df6e213890861b15f967695293f519ecc46eeeb6 has IB.sol,Q2.sol,PB.lines.json,restore_pb.py,canonical.py. M09 qualifier063270cb0315aaded47d5cb3f437297bf8e9aac55e179fc4d26534a6d0e269d3 has m09-2/Strategy.sol,generator,spec,Python twin,parity/stress tools; tarSHA974c242b4c8d250bdd33d2de9e842cdcc2b517e715f665a32c306cc72c002e73. Source M09 a44cca4b0155ca3953f27ccb6b43ac8ee74b1cdc4f27022ee5fc51d8ab67ed5f; runtime e95f44d13169747859490d2f5fb627a55b4a9cb3c84dae0c95a6b37e0023e281. IB source301941829a44bb60977bb28181a5e4bfa6544f3696763f987054789b2611d686; PB5123bb39594add4ad9a32f376ff7aa89c13428b82ea324ae4d80c474e3162d95; Q2 2c471f0132b0f06aae83b7b2c8622083c9d8cb7b3d5e75719dd362f5b36bb259. solc0.8.24/viaIR/opt200/paris. WheelSHAaedb68280aca34c110968f00148387c95885207913fb2cf19a1ab4c5cfd6887a; nativeff88b6353c2aad7342f0a26194f7347e78b9c3b38d683a7449006d423978cd14. Configs build_config/default_rng(absolute seed),size/rate/sigma draw order. cfmm keeps old fees after errors: require live gas fault counters, not completed matches alone.\nM09 gate history: THR.9,merge_after2,silent cap12,quote0,floor1e-5,Q2/PB compressed tables; replica vsgauss+.7229852592 on60000..61023;20-run parity216453 callbacks max2.72139e-9bps; runtime21984,12 slots; forced/stress/validate pass. Lattice direct/SWAR ports remain over gas; a new win must transfer to the bounded Gaussian mixture and pass gates.\n\nB RESULTS: no new >=.3 incremental winner. b7-posterior-values/values7-2 is now a valid negative experiment:2048 holdout posterior shortlist vs fresh thr09 -.0876355703 se.00779522; matched Gaussian-kernel -.0092449175; posterior-minus-Gaussian -.0783906529. Grid/independent kernel checks pass;6.909bps off-grid fee drift is noncommutation, not an arithmetic gate. Full posterior shape alone under fixed phase/rival did not help. values7-1 partial64 tuning -.10741059 se.06027, no holdout; no promotion. Drop this shortlist lane. Source a7a3042c87321955ec960f8ccb9432a0e7dd45b93ce611faf7fd848ad3409ea4 has acceleration/plainbackend/regeneration/checks/thrpol. VN~527MB not shipped; slow regeneration consumed45min in one item, so future solver work must checkpoint/return useful partials.\nb7-tail-risk/tails7-1 +.00876964 se.00552312 (2048), fresh7-1 uniform-cell density -.01284130 se.01187704 (512only), fresh7-2 integer recenter +.00115202 se.00301467 (2048), all vs fresh thr09. Drop all three. Lower RMS/misread is not the objective; thr09 misread~28.88% exceeds original16.22% while edge improves.\nb7-rival-transition/rival7-1 +.2084124364 se.01208272 vs thr09 (2048),+.53130436 vs original lattice, inherited threshold+.32289192. Versus prior jointK1+.07982774, new transition adds~.12858469 mean only (no paired SE available). Not a+.3 new win. MC errors~2.5bps mean/~2.6bps sd/.031 fill probability warrant scrutiny before any port.\nINSPECTED BUG: rivalt.py step_kernel compress(cur,2Q) renormalizes after each order, erasing cumulative survival mass before n>=2 Poisson terms. Confirmed by executing a tiny deterministic kernel from the archived class: count weights(.5,.3,.2), per-order survival.5 -> expected raw(.5,.15,.05), current(.5,.15,.10), normalized(.714286,.214286,.071429) vs(.666667,.2,.133333). Accounting error, not quadrature. b8-rival-mass gets two independent repair copies, every other parameter frozen; no expectation that repair improves edge. Source4bff6228dad5f9d86ce37985cfd0f4653753ebfb690756c547cd9ac88efb1f0b contains rivalt/jointpol/thrpol/checks. Compare repaired vs original and thr09 separately; don't reinterpret old+.2084 as the repaired gain.\n\nNEW PLAN: a8-close-m09 two64-seed items, same3 arms; either completed block closes M09 (4032), both4096 even without pending256. b8-rival-mass two isolated repairs as above. b8-ambiguity-bonus two independent copies replace ONLY default qmdp igtab ideal-pin bonus with existing igtab2 (IG2=1), kappa fixed1e-5, original grids/phase/rival/threshold; compare regenerated legacy control and direct overlap integration. This is not the failed larger kappa/probe or posterior-shortlist mechanism. b8-fresh two independent fresh mechanisms, explicitly skip README/tried/current ideas. Independent items; duplicate replica seeds are reproducibility, not added samples. B tune65000..65255,freeze,confirm65256..65511,holdout once10000..12047 vs fresh thr09 AND lattice_qm; partials accepted, no fallback scoring. Base artifactc9d678abb0ed0ee3a31b13a8203b6ee993896db0b6a3875c5c4f52a369bf0434 thrpolSHA663965707d4f20f81ab0ade8ed510742a330605fd9e889d426db1d920abc8958. Inherited+.3228919198 is not a new idea's gain.\n\nLEDGER/NEXT: all engine12000000..12009727 used/reserved/retired;12007424..12007679 pending. New exclusive reservations12009728..12009791 and12009792..12009855; next free12009856. Old exclusions unchanged:12003072..12003327 borrowed gas;12003328..12003583 anomalous IB;12004864..12005119 source-built cohort. Only8 counted12003840..12003847; rest retired. Failed-clone12007168..12007423 retired. Never reclaim/rerun started or old allocations.\nNext episode audit new outputs before pooling exact totals above. M09 n>=4000,mean>=2.7,valid gas/validation closes standing-contract milestone, still not first. If B wins >=.3 incrementally on complete holdout, transfer to M09 twin, measure compression loss,20-run real-callback parity<=.01bps,validate/gas<=245000,then allocate fresh64-seed engine pilots. If engine/replica gap>.2 investigate before widening. Keep b5-fresh/fresh5-2 and outstanding b6-learned continuation-fee item alive, not dependencies. No cancellations; old a1-compress/b1-ideas already cancelled. Request8 new results plus pending engine and fresh5-2; b6 result arrives automatically. Wake on4 new batches or90min (plane wake, no local waiting).",
  "spawn": [
    {
      "name": "a8-close-m09",
      "mode": "research",
      "brief": "Track A: one final confirmation block, frozen M09, IB and PB each ALONE versus VanillaStrategy on exclusive fresh engine seeds {{from}}..{{to}} (64). No board entry.\nClone https://github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704. From checkout: mkdir -p scratch && curl -LsSf https://raw.githubusercontent.com/gtmcknight/amm-sim/main/research/setup.sh -o scratch/setup.sh && sh scratch/setup.sh; prefix later commands with `. scratch/env.sh && `.\nFetch JSON at https://api.imd.fun/artifacts/db67c7a0e8fa98f87b069766df6e213890861b15f967695293f519ecc46eeeb6 (IB.sol, Q2.sol, PB.lines.json, restore_pb.py, canonical.py) and https://api.imd.fun/artifacts/063270cb0315aaded47d5cb3f437297bf8e9aac55e179fc4d26534a6d0e269d3 (m09-2/Strategy.sol=M09). code_zb64 is base64/zlib/tar; verify tar/source hashes. Restore PB with its script. Freeze all three sources; adapt only runner/ranges. M09 source SHA a44cca4b0155ca3953f27ccb6b43ac8ee74b1cdc4f27022ee5fc51d8ab67ed5f; runtime e95f44d13169747859490d2f5fb627a55b4a9cb3c84dae0c95a6b37e0023e281. Match IB/PB hashes to audit. solc0.8.24/viaIR/opt200/paris; use released wheel, no source-build substitution.\nConfigs: build_config with unchanged BASELINE_SETTINGS/VARIANCE, default_rng(absolute seed), uniform draws size/rate/sigma. Check all fields versus MatchRunner._build_configs at indices0..7 without simulations. Same configs for each arm: amm_sim_rs.run_batch(X,VanillaStrategy,configs,8); edge=edges[submission]. One 64-seed command per arm, timeout470s. Save started markers before calls, results under scratch; never rerun a started arm/seed or touch older allocations. Report incomplete intersections honestly.\nReset gas_stats immediately before each command, snapshot immediately after, include both roles/all counters. Finished matches alone do not prove callback safety. Run amm-match validate on unchanged sources. valid=false on any callback fault, missing gas, or afterSwap peak>245000 (initialize limit250000).\nUnder one hour. If setup fails return blocked={step,error}; use remaining time for a Python compression audit of the supplied M09 tables on replica65000..65063 if available. No speed gate or invented engine evidence.\nOne JSON <59000 bytes: item, allocation and started/completed/missing ranges, n/sum/sumsq and [seed,edge] rows per arm; paired M09-IB,PB-IB,M09-PB {n,mean_diff,se,sum,sumsq,worst5}; live per-command gas_stats, validation booleans, source/runtime/wheel/native/compiler/config hashes and config equality, limitations, adapted runner code_zb64 and SHA256 of uncompressed tar. Numbers, not raw command output.",
      "items": [
        {
          "key": "eng-12009728",
          "vars": {
            "key": "eng-12009728",
            "from": "12009728",
            "to": "12009791"
          }
        },
        {
          "key": "eng-12009792",
          "vars": {
            "key": "eng-12009792",
            "from": "12009792",
            "to": "12009855"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 59000
      },
      "merge": {
        "groupSize": 5,
        "brief": "Keep each item separate with its key, source hashes, paired n/sum/sumsq/SE, checks and limitations. Do not pool duplicate replica seeds or different policies. Preserve artifact references and code payloads for reuse."
      }
    },
    {
      "name": "b8-rival-mass",
      "mode": "research",
      "brief": "Track B: one blind Python policy, independent copy {{copy}}, no engine or board entry. Fetch B=https://raw.githubusercontent.com/gtmcknight/amm-sim/e65314f88de945f6d055bfc2aab01c482ab6570e/research/solved with curl -LsSf $B/fetch.sh -o fetch.sh && sh fetch.sh $B scratch/solved. Use unchanged run.py/pair.py; policy gets only the six afterSwap inputs, never truth/seed/run parameters/future. Read Harness/Rules/Fleet as reference.\nRepair ONLY survivor-mass accounting in rivalt:RivalT.step_kernel. Source https://api.imd.fun/artifacts/4bff6228dad5f9d86ce37985cfd0f4653753ebfb690756c547cd9ac88efb1f0b code_zb64 contains rivalt.py, jointpol.py, unchanged thrpol.py and checks. Fixed base settings: thr=.9,joint=1,K=1,rt=2,Q=3,S=3,NMAX=2,lamr=.8; keep all other math unchanged.\nEvidence: step_kernel calls compress(cur,2Q), which normalizes cur before the next one_order. This loses cumulative no-own-fill probability in n>=2 Poisson terms. With order-count weights(.5,.3,.2), survival .5 per order, distinct node positions, correct unnormalized masses are(.5,.15,.05); current code gives(.5,.15,.10). Preserve mass through compression, normalizing only the final conditioned kernel. Verify this counterexample and small exact finite enumeration, empty/zero-transition cases, then router Monte Carlo on tuning states; report quadrature error separately from accounting error.\nAlso pair repaired policy against frozen original RivalT on the same tuning/confirmation seeds; original's holdout +.208412 over thr09 remains historical, with no SE for repaired-minus-original unless original per-seed rows are available. A repaired gain is not guaranteed. Zero-change must reproduce original RivalT; joint=0 must reproduce thr09.\nUse replica65000..65255 for tuning/checks, freeze before confirmation65256..65511. Score the frozen active candidate once on10000..12047 with run.py in bounded chunks; pair.py versus fresh unchanged thrpol:ThrLattice thr=.9 qm=qm_k1e-5.json AND ref/lattice_qm.json. Separate incremental gain from inherited threshold gain(+.322892). No holdout retuning. Each command<470s; save state in scratch; total<1h. No speed gate: report actual partial counts/missing ranges or a useful checked kernel if scoring cannot finish, never impute or score an unchanged fallback as a candidate.\nReturn one JSON<59000 bytes: mechanism, frozen settings, actual seed ranges, paired{n,mean_diff,se,sum,sumsq,worst5}, first-trade misread and price RMS by arm, disabled-change equivalence and hidden-input scramble/replay checks, approximation errors, incremental operations/slots and labeled gas estimate, limitations, code_zb64 (base64/zlib/tar) and SHA256 of uncompressed tar. Ship all custom source/generators, not large tables/traces. Acceleration is optional and must pass callback parity; keep a plain-Python path.",
      "items": [
        {
          "key": "mass8-1",
          "vars": {
            "key": "mass8-1",
            "copy": "1"
          }
        },
        {
          "key": "mass8-2",
          "vars": {
            "key": "mass8-2",
            "copy": "2"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 59000
      },
      "merge": {
        "groupSize": 5,
        "brief": "Keep each item separate with its key, source hashes, paired n/sum/sumsq/SE, checks and limitations. Do not pool duplicate replica seeds or different policies. Preserve artifact references and code payloads for reuse."
      }
    },
    {
      "name": "b8-ambiguity-bonus",
      "mode": "research",
      "brief": "Track B: one blind Python policy, independent copy {{copy}}, no engine or board entry. Fetch B=https://raw.githubusercontent.com/gtmcknight/amm-sim/e65314f88de945f6d055bfc2aab01c482ab6570e/research/solved with curl -LsSf $B/fetch.sh -o fetch.sh && sh fetch.sh $B scratch/solved. Use unchanged run.py/pair.py; policy gets only the six afterSwap inputs, never truth/seed/run parameters/future. Read Harness/Rules/Fleet as reference.\nTest ONLY ambiguity-aware information value in the qm tables: replace qmdp.py's ideal-pin igtab bonus with its existing igtab2 (IG2=1). Keep kappa=1e-5, all grids, phases, rival modes, solver parameters and ThrLattice thr=.9 unchanged. No posterior-shortlist or threshold change, no kappa sweep. IG2 subtracts arb/retail overlap uncertainty from ideal-pin information value; this is not a larger-kappa probe.\nGet unchanged thrpol.py plus optional regeneration/plainbackend/acceleration helpers from https://api.imd.fun/artifacts/a7a3042c87321955ec960f8ccb9432a0e7dd45b93ce611faf7fd848ad3409ea4 code_zb64; use the pinned solved files as authoritative code. Reproduce original qm generation as a control; verify zero-change callbacks match thr09. Independently integrate the overlap expression on small cases and check zero-overlap limit; do not require off-grid argmax to commute with fee interpolation.\nRegenerate passive values with DP_SAVEVN=1 DP_AMINL=-12 DP_NA=43 and DP_STATE, bounded DP_SWEEPS commands, then generate only the IG2 table variant. Reuse VN within this item; do not spend the whole hour on a solve. If it cannot finish, deliver the tested resumable generator and measured convergence/coverage without a fabricated holdout. Explain any model mismatch in IG2. Freeze this single preregistered variant; no performance-based parameter selection.\nUse replica65000..65255 for tuning/checks, freeze before confirmation65256..65511. Score the frozen active candidate once on10000..12047 with run.py in bounded chunks; pair.py versus fresh unchanged thrpol:ThrLattice thr=.9 qm=qm_k1e-5.json AND ref/lattice_qm.json. Separate incremental gain from inherited threshold gain(+.322892). No holdout retuning. Each command<470s; save state in scratch; total<1h. No speed gate: report actual partial counts/missing ranges or a useful checked kernel if scoring cannot finish, never impute or score an unchanged fallback as a candidate.\nReturn one JSON<59000 bytes: mechanism, frozen settings, actual seed ranges, paired{n,mean_diff,se,sum,sumsq,worst5}, first-trade misread and price RMS by arm, disabled-change equivalence and hidden-input scramble/replay checks, approximation errors, incremental operations/slots and labeled gas estimate, limitations, code_zb64 (base64/zlib/tar) and SHA256 of uncompressed tar. Ship all custom source/generators, not large tables/traces. Acceleration is optional and must pass callback parity; keep a plain-Python path.",
      "items": [
        {
          "key": "ig8-1",
          "vars": {
            "key": "ig8-1",
            "copy": "1"
          }
        },
        {
          "key": "ig8-2",
          "vars": {
            "key": "ig8-2",
            "copy": "2"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 59000
      },
      "merge": {
        "groupSize": 5,
        "brief": "Keep each item separate with its key, source hashes, paired n/sum/sumsq/SE, checks and limitations. Do not pool duplicate replica seeds or different policies. Preserve artifact references and code payloads for reuse."
      }
    },
    {
      "name": "b8-fresh",
      "mode": "research",
      "brief": "Track B: one blind Python policy, independent copy {{copy}}, no engine or board entry. Fetch B=https://raw.githubusercontent.com/gtmcknight/amm-sim/e65314f88de945f6d055bfc2aab01c482ab6570e/research/solved with curl -LsSf $B/fetch.sh -o fetch.sh && sh fetch.sh $B scratch/solved. Use unchanged run.py/pair.py; policy gets only the six afterSwap inputs, never truth/seed/run parameters/future. Read Harness/Rules/Fleet as reference.\nStart from the question alone: what unused causal information in afterSwap, or economic use of that information, can close the remaining ~2.6 edge to first? Skip the README idea lists. Choose ONE new mechanism; explain how it differs from the exclusions below before coding. Base unchanged thrpol:ThrLattice thr=.9 qm=qm_k1e-5.json from https://api.imd.fun/artifacts/c9d678abb0ed0ee3a31b13a8203b6ee993896db0b6a3875c5c4f52a369bf0434 code_zb64; use thrpol.py only.\nExclude: threshold/temperature/skew sweeps; finer lattices; cell-density or recenter changes; per-run sigma/rate fits; trade-size classifiers; branch fee blends/commitment; history mean correction; midpoint/entropy probes; phase/rival label revision; tail moments; posterior-VN shortlist; rival transition/mass repair; IG2 bonus; continuation-edge fee residual (already running). Do not relabel these as fresh. At most four settings of your one mechanism. Hidden labels may train offline on65000+ only; online must replay from callbacks alone. Choose for paired edge, not lower misread/RMS alone.\nUse replica65000..65255 for tuning/checks, freeze before confirmation65256..65511. Score the frozen active candidate once on10000..12047 with run.py in bounded chunks; pair.py versus fresh unchanged thrpol:ThrLattice thr=.9 qm=qm_k1e-5.json AND ref/lattice_qm.json. Separate incremental gain from inherited threshold gain(+.322892). No holdout retuning. Each command<470s; save state in scratch; total<1h. No speed gate: report actual partial counts/missing ranges or a useful checked kernel if scoring cannot finish, never impute or score an unchanged fallback as a candidate.\nReturn one JSON<59000 bytes: mechanism, frozen settings, actual seed ranges, paired{n,mean_diff,se,sum,sumsq,worst5}, first-trade misread and price RMS by arm, disabled-change equivalence and hidden-input scramble/replay checks, approximation errors, incremental operations/slots and labeled gas estimate, limitations, code_zb64 (base64/zlib/tar) and SHA256 of uncompressed tar. Ship all custom source/generators, not large tables/traces. Acceleration is optional and must pass callback parity; keep a plain-Python path.",
      "items": [
        {
          "key": "fresh8-1",
          "vars": {
            "key": "fresh8-1",
            "copy": "1"
          }
        },
        {
          "key": "fresh8-2",
          "vars": {
            "key": "fresh8-2",
            "copy": "2"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 59000
      },
      "merge": {
        "groupSize": 5,
        "brief": "Keep each item separate with its key, source hashes, paired n/sum/sumsq/SE, checks and limitations. Do not pool duplicate replica seeds or different policies. Preserve artifact references and code payloads for reuse."
      }
    }
  ],
  "read": [
    "a8-close-m09/eng-12009728",
    "a8-close-m09/eng-12009792",
    "b8-rival-mass/mass8-1",
    "b8-rival-mass/mass8-2",
    "b8-ambiguity-bonus/ig8-1",
    "b8-ambiguity-bonus/ig8-2",
    "b8-fresh/fresh8-1",
    "b8-fresh/fresh8-2",
    "a7-confirm-m09-a/eng-12007424",
    "b5-fresh/fresh5-2"
  ],
  "cancel": [],
  "wake": {
    "batches": [
      "a8-close-m09",
      "b8-rival-mass",
      "b8-ambiguity-bonus",
      "b8-fresh"
    ],
    "afterMinutes": 90
  },
  "finish": false
}
