{
  "notes": "Episode 1 of 12; no prior results, refusals, batches or trunk. Plan: 12 research items across 7 small batches, 7 Track A / 2 P / 3 C; 148 of 160 seats remain after acceptance. No code trunk: workers keep their own files in test/scratch and must transport complete source/scripts through compressed JSON results. No leaderboard entry, transaction, publication or submission is authorized.\n\nInputs actually read: goal.json and orchestrator reference; research base https://raw.githubusercontent.com/gtmcknight/amm-sim/66604b3426d8e97a73e2c39940b9b4dece51cc73/research. Ran its tell/fetch.sh into scratch: all 34 files fetched, 0 hash mismatches. Read TELL.md, solved README, tellref/tellpol/run/pair/check and relevant engine interfaces. C0 artifact https://api.imdnotdead.fun/artifacts/8a6e303b662e1a5ea9bb47f31acedd3988ef65b3ddb66d074517aa59ad41ca40 hashes to its URL; extracted Solidity is 42990 bytes, SHA256 c68887cff61180e12ba2b1ceb333edf76a830f91f63b5d775a8806fb9ec08aca. Its report says runtime 20605, engine afterSwap peak 208775. These are prior claims, not rerun here. Verified vector file has 11856 rows. All measured performance remains pending; no simulation was run in this episode.\n\nCurrent objective supersedes the older solved README: C0 board 524.94, first 528.42, target +3.48, 5th +3.16; these are request-pinned figures, not a fresh board check. The tell replica gain +3.21 se .02 is promising but not engine proof. Keep qm_k1e-5. No speed gates, host inspection or asking workers what machine they have. Failed setup/execution returns only blocked{step,error}; measured numerical gate failures return evidence and invalid status. All items can run without sibling results. Two exact detector implementations provide redundancy; one independently integrated C0 prototype gives an early candidate. Two compression methods and one lookup optimization attack accuracy/space/gas. The harness checks actual closed-loop fee parity and provides the eventual paired engine runner.\n\nCritical semantics: nine tellref arguments are exact WAD integers; compare to vector expected, not arb truth. The engine rounds fee->f64, divide by 1e18, subtract from one; forward-convert candidate paid values including tiny amounts. isBuy means pool BOUGHT X, so amountX/bid; otherwise amountY/ask. Retain previous actual reserve WADs and fees on every callback. Only first trade of a new step changes inference. Off-grid pi=0; on-grid posterior discounts retail likelihood by min(1,ulp(paid)/grid). A hit never pins alone. soft=0 can later save bytes/gas but must use a correspondingly configured shadow and must still use posterior odds. Preserve C0 timestamp-zero policy semantics; the probe independently handles t=0 using initial reserves and fees.\n\nEngine proof uses two independent 8-run probes and telemetry with exact counters. Truth is decoded only by harness from returned fair_price, prior submission spot and fees actually in force. Count silent steps, first trades and all callbacks correctly; no dropping misses/ambiguous rows. Float telemetry roundtrip, false negatives and prior-fee semantics are decisive. If probes disagree or any true arb is missed, diagnose detector/conversion/telemetry before wide score batches. Do not patch the wheel to get labels.\n\nSeed ledger (reservations, NOT claims of execution): e01-p-engine-probe/probe-reference = 14000000..14000007 inclusive; probe-independent = 14000008..14000015. No other engine seeds assigned in episode 1. Next unallocated engine seed is 14000016. Treat allocated/attempted seeds as spent on failure unless provenance proves unused; retries get new ranges. Replica seeds are a separate namespace: tuning >=60000, once-only holdout 10000..12047 per frozen variant vs tell_qm.json. Gate/harness tuning runs never count as engine evidence. Source uses MatchRunner variance RNG default_rng(actual_seed), not zero-based block position. Use official setup at the pinned challenge commit 6b6921f8d463314aa7c96234e1be25a25245f704; source scratch/env.sh, keep wheel unpatched.\n\nNext episode: read all 12 individual results, including bundles; verify their decoded hashes/coverage and ensure checks were executed rather than inferred. Select exact detector by correctness first, then gas. Combine with best integration prototype and behavior-preserving savings; recover compression where needed. Full candidate gates: 11856/11856 vectors; closed-loop replica driven by contract fees with tellpol shadow fb/fa overwritten after each call; <=0.01 bps on both sides; afterSwap peak<=245000, 0 OOG/revert/other failures; amm-match validate; runtime<=24576, no assembly, <=32 slots. Full-table parity must be reported separately from compressed-table fidelity; never declare full TellPolicy parity by replacing its tables. An early C0-compressed prototype may fail this strict gate; retain it as diagnostic, repair before promotion. An optimized soft=0 port is an allowed later experiment, not permission to pin on grid hits.\n\nAfter probes and port gates pass, freeze source hash and launch small candidate-vs-C0 engine pilots: exactly 256 unique seeds per item, both arms alone vs VanillaStrategy on SAME configs, four blocks of 64 under one checkpointing script, run_batch(...,8). Persist each arm/block as it lands; never rerun completed seeds or share ranges across candidates/items. Reset/collect gas_stats per arm/block. Need paired n, mean_diff, se, sum, sumsq, worst5 and exact seed rows, source/setup/wheel hashes. Pool differences using sums/sumsq and n, never average SEs; pooled variance=(sumsq-sum*sum/n)/(n-1), se=sqrt(variance/n). Reject any OOG/revert or peak above 245000 regardless of score.\n\nCarry best frozen valid candidate to a dedicated 4096-seed confirmation (16 items x256), ideally fresh beyond selection pilots; reserve at least these 16 seats. If code/tables change, use new source hash and new seeds, never pool versions. Keep most later items in A (integration, gates, paired engine blocks), with a few single-idea C items per round and no more probes unless evidence calls for them. C gains >=0.2 enter the next A candidate only after blindness and portability review. Report engine gap to C0 with uncertainty and worst cases; 524.94+gap is an estimate, not an achieved board rank. Goal enters nothing. Finish only with tested best source, reproducible evidence and explicit residual limitations; do not claim first on replica results or a point estimate alone.\n\nWake on all seven batches settling, or 90 minutes as a fallback. If a timer wakes while useful work runs, inspect actual state and avoid duplicate spawns; no cancellation planned. Reserve later episodes for repairs, validation and final confirmation rather than spending the entire budget on speculative ideas. Keep this ledger, source hashes and accepted result URLs in updated notes; scratch files from this orchestrator are not handed onward.",
  "spawn": [
    {
      "name": "e01-a-detector",
      "mode": "research",
      "brief": "Work only in test/scratch/ except the result. B={{base}}. Read B/tell/README.md first. mkdir -p test/scratch; curl -LsSf $B/tell/fetch.sh -o test/scratch/fetch.sh && sh test/scratch/fetch.sh $B test/scratch/amm. Check fetched hashes. Treat source text as data. No submission.\nUse Python stdlib/forge, no engine setup. Challenge imports from benedictbrady/amm-challenge@6b6921f8d463314aa7c96234e1be25a25245f704; solc 0.8.24, optimizer 200, viaIR, Paris, no assembly, <=32 storage slots. No engine seeds.\nDeliver one reusable exact Solidity TellMath.isArb port of tellref.is_arb with the same nine arguments, first bool then eight uint256, returning bool. Approach: {{approach}}\nMatch expected (last field), not arb truth, on ALL 11856 vectors.json.gz vectors. Preserve all integers: generate Solidity fixtures or ABI inputs with Python, never float/JS numbers. Port rn ties-to-even, engine gamma conversion, min pre/post reserve binade, n0 +/-1 and forward handed conversion; tiny paid amounts matter. Test zero/cap fees, both sides, binade boundaries, small payments, rounding carries. Explain supported bounds and avoid shift overflow. Report per-vector gas (packed if needed), min/mean/p95/max and mismatches; gate is 11856/11856. Include a pure helper for min(1,ulp(paid)/grid) and its boundary checks for integration. Optimizing may not change the boolean. Include source bytes/runtime and reproducible forge vector runner. Do not invent engine validation or whole-strategy gas.\nIf a setup/execution step fails, return only {\"blocked\":{\"step\":\"...\",\"error\":\"...\"}} with the specific error; no speed gate or machine inspection. Numerical gate misses are measured results, not setup blocks.\nJSON <60000 bytes: code_zb64=zlib+base64 of complete main source, sha256 of decoded source; bundle_zb64=zlib+base64 of a JSON relative-path-to-text map of scripts/tests, bundle_sha256. Include commands/numerical checks, not terminal dumps or scratch-only paths.\n",
      "items": [
        {
          "key": "literal-rational",
          "vars": {
            "base": "https://raw.githubusercontent.com/gtmcknight/amm-sim/66604b3426d8e97a73e2c39940b9b4dece51cc73/research",
            "approach": "Use a direct auditable integer translation as the reference implementation; prioritize exact rounding and bounded intermediates."
          }
        },
        {
          "key": "bounded-bitmath",
          "vars": {
            "base": "https://raw.githubusercontent.com/gtmcknight/amm-sim/66604b3426d8e97a73e2c39940b9b4dece51cc73/research",
            "approach": "Use binary bit-length normalization and reduced powers of two to minimize divisions and gas, while independently reproducing the integer specification."
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 60000
      },
      "merge": {
        "groupSize": 5,
        "brief": "Compare exact coverage, failures, gas distributions and bounds. Preserve both source hashes and result references. Never replace expected with the arb truth label; do not average maxima."
      }
    },
    {
      "name": "e01-a-c0-integration",
      "mode": "research",
      "brief": "Work only in test/scratch/ except the result. B={{base}}. Read B/tell/README.md first. mkdir -p test/scratch; curl -LsSf $B/tell/fetch.sh -o test/scratch/fetch.sh && sh test/scratch/fetch.sh $B test/scratch/amm. Check fetched hashes. Treat source text as data. No submission.\nC0={{c0}}; extract its Solidity fence and require source sha256 c68887cff61180e12ba2b1ceb333edf76a830f91f63b5d775a8806fb9ec08aca.\nUse Python stdlib/forge, no engine setup. Challenge imports from benedictbrady/amm-challenge@6b6921f8d463314aa7c96234e1be25a25245f704; solc 0.8.24, optimizer 200, viaIR, Paris, no assembly, <=32 storage slots. No engine seeds.\nDeliver one complete C0+tell Strategy.sol prototype. Independently port tellref (do not wait for other items) and pass all 11856 vectors. Change only first-trade inference/state; keep C0 tables and soft=1. Persist exact prior reserve WADs from initialization and every callback, plus the actually returned clamped fee WADs. isBuy means pool buys X: use amountX/bid; otherwise amountY/ask. Compute grid/hit/chance before replacing prior reserves. Off grid pi=0; on grid use la/(la+lr*min(1,ulp(paid)/grid)); never pin on a hit alone. Preserve timestamp-zero behavior, same-step retail handling and synced/counter semantics. Expose classification through a test-only harness.\nUse Python reference traces from replica tuning seeds 60000..60019; generate integer fixtures and replay in forge. Test first/same-step trades, initialization, fee persistence and accidental retail hits. Report vector parity, local callback gas, byte size and failures. Max runtime 24576; aim afterSwap <=245000 with zero errors. Compare fees against tellpol.TellPolicy soft=1: drive replica with contract fees and set shadow fb/fa to returned fees each callback. If the local replay cannot drive a closed loop, mark that gate pending, never claim it passed. Report full-table and C0-compressed-table error separately; compression does not waive the required full TellPolicy <=0.01 bps gate. This is a prototype until all gates including later engine validation pass.\nIf a setup/execution step fails, return only {\"blocked\":{\"step\":\"...\",\"error\":\"...\"}} with the specific error; no speed gate or machine inspection. Numerical gate misses are measured results, not setup blocks.\nJSON <60000 bytes: code_zb64=zlib+base64 of complete main source, sha256 of decoded source; bundle_zb64=zlib+base64 of a JSON relative-path-to-text map of scripts/tests, bundle_sha256. Include commands/numerical checks, not terminal dumps or scratch-only paths.\n",
      "items": [
        {
          "key": "c0-tell-soft1",
          "vars": {
            "base": "https://raw.githubusercontent.com/gtmcknight/amm-sim/66604b3426d8e97a73e2c39940b9b4dece51cc73/research",
            "c0": "https://api.imdnotdead.fun/artifacts/8a6e303b662e1a5ea9bb47f31acedd3988ef65b3ddb66d074517aa59ad41ca40"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 60000
      },
      "merge": {
        "groupSize": 5,
        "brief": "Keep the complete prototype and gate status. Distinguish full TellPolicy parity, compressed-table parity, local gas and unrun engine gates. Never promote an unvalidated prototype."
      }
    },
    {
      "name": "e01-a-table-recovery",
      "mode": "research",
      "brief": "Work only in test/scratch/ except the result. B={{base}}. Read B/tell/README.md first. mkdir -p test/scratch; curl -LsSf $B/tell/fetch.sh -o test/scratch/fetch.sh && sh test/scratch/fetch.sh $B test/scratch/amm. Check fetched hashes. Treat source text as data. No submission.\nC0={{c0}}; extract its Solidity fence and require source sha256 c68887cff61180e12ba2b1ceb333edf76a830f91f63b5d775a8806fb9ec08aca.\nPython stdlib only; no engine setup or seeds. Recover C0 table-compression loss with ONE method: {{method}}\nUse C0's embedded spline coefficients/decoder as baseline; the qmref.py section and linked QMS1 artifact explain it. Verify decoded inputs. C0 has 3971 runtime bytes free BEFORE the detector, so budget the method's net bytes and lookup operations, preserving room for detection. Prefer a small portable generator/packed payload over shipping expanded tables. Keep TellPolicy's classifier/filter and qm_k1e-5 information weight fixed.\nTune only replica seeds 60000..60255 through unmodified run.py. Freeze one representation before evaluating once on 10000..12047 via run.py tellpol:TellPolicy with its decoded qm file, against tell_qm.json. Do not retune after holdout. Supply paired{n,mean_diff,se,sum,sumsq,worst5}, rows, first-trade misread and price RMS, table error vs full qm, bytes, gas estimate labeled estimate, and improvement over C0-compressed TellPolicy on tuning seeds. Report max fee difference to full TellPolicy on shared tuning callbacks; final port still needs <=0.01 bps. Include deterministic codec/generator and packed tables in result bundle; no missing blobs, no scratch-only deliverable. Preserve ask/bid mirror, phase/synced and sd axes.\nIf a setup/execution step fails, return only {\"blocked\":{\"step\":\"...\",\"error\":\"...\"}} with the specific error; no speed gate or machine inspection. Numerical gate misses are measured results, not setup blocks.\nJSON <60000 bytes: code_zb64=zlib+base64 of complete main source, sha256 of decoded source; bundle_zb64=zlib+base64 of a JSON relative-path-to-text map of scripts/tests, bundle_sha256. Include commands/numerical checks, not terminal dumps or scratch-only paths.\n",
      "items": [
        {
          "key": "sparse-spline-residual",
          "vars": {
            "base": "https://raw.githubusercontent.com/gtmcknight/amm-sim/66604b3426d8e97a73e2c39940b9b4dece51cc73/research",
            "c0": "https://api.imdnotdead.fun/artifacts/8a6e303b662e1a5ea9bb47f31acedd3988ef65b3ddb66d074517aa59ad41ca40",
            "method": "Add a quantized sparse residual correction to the existing C0 spline, allocating corrections by training-state occupancy and error. Leave the spline decoder otherwise unchanged."
          }
        },
        {
          "key": "adaptive-linear-grid",
          "vars": {
            "base": "https://raw.githubusercontent.com/gtmcknight/amm-sim/66604b3426d8e97a73e2c39940b9b4dece51cc73/research",
            "c0": "https://api.imdnotdead.fun/artifacts/8a6e303b662e1a5ea9bb47f31acedd3988ef65b3ddb66d074517aa59ad41ca40",
            "method": "Replace spline surfaces with mirrored, adaptively spaced piecewise-linear knots and quantized differences; retain sd and phase/synced modes. Spend saved decoder bytes on table accuracy."
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 60000
      },
      "merge": {
        "groupSize": 5,
        "brief": "Compare held-out loss vs tell_qm, training recovery vs C0 compression, portable packed bytes, measured fee error and estimated lookup work. Keep rejected methods and exact hashes; distinguish estimates from compiled size/gas."
      }
    },
    {
      "name": "e01-a-spline-gas",
      "mode": "research",
      "brief": "Work only in test/scratch/ except the result. B={{base}}. Read B/tell/README.md first. mkdir -p test/scratch; curl -LsSf $B/tell/fetch.sh -o test/scratch/fetch.sh && sh test/scratch/fetch.sh $B test/scratch/amm. Check fetched hashes. Treat source text as data. No submission.\nC0={{c0}}; extract its Solidity fence and require source sha256 c68887cff61180e12ba2b1ceb333edf76a830f91f63b5d775a8806fb9ec08aca.\nUse Python stdlib/forge, no engine setup. Challenge imports from benedictbrady/amm-challenge@6b6921f8d463314aa7c96234e1be25a25245f704; solc 0.8.24, optimizer 200, viaIR, Paris, no assembly, <=32 storage slots. No engine seeds.\nDeliver one behavior-preserving C0 lookup optimization to free room for tell and table recovery. Focus on knot-span searches/basis reuse and coefficient dispatch; do not alter knots, coefficients, filters, precision or fee rule. Keep all source and tests portable. Differential-test optimized vs unchanged C0 on all table boundary/knot/sd/phase/synced cases plus reachable callback traces from replica seeds 61000..61019. Assert exact fee equality where possible; report every nonzero difference instead of hiding rounding changes. Use forge for gas comparison under the same compiler and state; report per-case maxima, whole afterSwap maxima, runtime/initcode bytes and delta vs C0. Include full Strategy.sol and reproducible fixtures/tests. No engine runs or speed qualification. This item buys implementation headroom; it must not claim an edge gain. Mark whole-candidate gates pending until integration/engine checks.\nIf a setup/execution step fails, return only {\"blocked\":{\"step\":\"...\",\"error\":\"...\"}} with the specific error; no speed gate or machine inspection. Numerical gate misses are measured results, not setup blocks.\nJSON <60000 bytes: code_zb64=zlib+base64 of complete main source, sha256 of decoded source; bundle_zb64=zlib+base64 of a JSON relative-path-to-text map of scripts/tests, bundle_sha256. Include commands/numerical checks, not terminal dumps or scratch-only paths.\n",
      "items": [
        {
          "key": "lookup-headroom",
          "vars": {
            "base": "https://raw.githubusercontent.com/gtmcknight/amm-sim/66604b3426d8e97a73e2c39940b9b4dece51cc73/research",
            "c0": "https://api.imdnotdead.fun/artifacts/8a6e303b662e1a5ea9bb47f31acedd3988ef65b3ddb66d074517aa59ad41ca40"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 60000
      },
      "merge": {
        "groupSize": 5,
        "brief": "Preserve source, tests, hashes and differential failures. Compare gas on identical cases; do not treat forge gas as engine gas or a lookup optimization as a measured edge gain."
      }
    },
    {
      "name": "e01-a-validation-harness",
      "mode": "research",
      "brief": "Work only in test/scratch/ except the result. B={{base}}. Read B/tell/README.md first. mkdir -p test/scratch; curl -LsSf $B/tell/fetch.sh -o test/scratch/fetch.sh && sh test/scratch/fetch.sh $B test/scratch/amm. Check fetched hashes. Treat source text as data. No submission.\nC0={{c0}}; extract its Solidity fence and require source sha256 c68887cff61180e12ba2b1ceb333edf76a830f91f63b5d775a8806fb9ec08aca.\nClone https://github.com/benedictbrady/amm-challenge to test/scratch/ac at 6b6921f8d463314aa7c96234e1be25a25245f704. In that root: 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 && `. Keep wheel/engine unpatched.\nDeliver ONE port-gate harness accepting Strategy.sol and a shadow policy. Self-check on unchanged C0 with its qmref.py and linked QMS1 blob; report full-TellPolicy disagreement separately.\nClosed loop: replica uses contract fees; tellpol.TellPolicy shadow gets the same callbacks and fb/fa are overwritten by returned fees after each call. Compare <=0.01 bps, both sides, on >=20 complete tuning runs from 62000; reproduce WAD handoff. Check 11856 detector vectors for candidates exposing isArb. Record mismatches by callback/phase, max/mean error, calls/reverts/OOG, gas, runtime bytes and `amm-match validate` result. Unrun gates remain pending. Negative-test intentionally wrong fee/state fixtures.\nEngine mode: candidate and exact C0 each ALONE vs VanillaStrategy, identical configs per MatchRunner._build_configs, variance RNG seeded by actual seed; amm_sim_rs.run_batch(X,VanillaStrategy,configs,8). One script loops four 64-seed blocks (256/item), saves each arm as it lands, never reruns completed seeds, resets/collects gas_stats per arm/block, outputs per-seed edges and paired{n,mean_diff,se,sum,sumsq,worst5}. Test this mode with fixtures only: NO real engine seeds allocated here. Return portable harness/tests, hashes, measured self-checks and pending gates.\nIf a setup/execution step fails, return only {\"blocked\":{\"step\":\"...\",\"error\":\"...\"}} with the specific error; no speed gate or machine inspection. Numerical gate misses are measured results, not setup blocks.\nJSON <60000 bytes: code_zb64=zlib+base64 of complete main source, sha256 of decoded source; bundle_zb64=zlib+base64 of a JSON relative-path-to-text map of scripts/tests, bundle_sha256. Include commands/numerical checks, not terminal dumps or scratch-only paths.\n",
      "items": [
        {
          "key": "gate-and-pair-runner",
          "vars": {
            "base": "https://raw.githubusercontent.com/gtmcknight/amm-sim/66604b3426d8e97a73e2c39940b9b4dece51cc73/research",
            "c0": "https://api.imdnotdead.fun/artifacts/8a6e303b662e1a5ea9bb47f31acedd3988ef65b3ddb66d074517aa59ad41ca40"
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 60000
      },
      "merge": {
        "groupSize": 5,
        "brief": "Preserve the portable harness, negative-test evidence and baseline self-checks. Clearly identify engine-mode fixture tests versus actual simulation; no engine score seeds are allocated."
      }
    },
    {
      "name": "e01-p-engine-probe",
      "mode": "research",
      "brief": "Work only in test/scratch/ except the result. B={{base}}. Read B/tell/README.md first. mkdir -p test/scratch; curl -LsSf $B/tell/fetch.sh -o test/scratch/fetch.sh && sh test/scratch/fetch.sh $B test/scratch/amm. Check fetched hashes. Treat source text as data. No submission.\nClone https://github.com/benedictbrady/amm-challenge to test/scratch/ac at 6b6921f8d463314aa7c96234e1be25a25245f704. In that root: 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 && `. Keep wheel/engine unpatched.\nProve the detector on the unpatched wheel over 8 runs, seeds {{seed0}}..{{seed1}}, once each. {{approach}}\nPort tellref.is_arb to a probe Strategy; first pass all 11856 expected vectors. Return 30 bps plus tiny integer fee telemetry encoding last callback step and FIRST callback grid hit. Retain that bit across later callbacks; encode per-step callback/hit counters for exact all-trade denominators. Prove integer->f64->result decoding without collision/overflow; report max fee perturbation. Detection uses prior actually returned/clamped fees and reserves.\nUse amm_sim_rs.run_batch(probe,VanillaStrategy,configs,8), configs per MatchRunner._build_configs with variance RNG seeded by actual seed. One script saves completed blocks (<=64 seeds), not a command per block. Decode truth OUTSIDE the contract: arb at t iff spot[t-1] < gamma_ask*p[t] OR p[t] < gamma_bid*spot[t-1], using fees in force and initial reserves/fees at t=0. No fair price/truth in contract. Handle silent steps/stale telemetry. Report boundary ambiguities; never drop them.\nReturn per-run/pooled arbs_total/arbs_read, retail_total/retail_read_as_arb and rates; first-trade confusion counts; ambiguous/unreadable counts; vector mismatches, gas_stats() and validity. Retain every false negative with reproducible evidence. Require 0 OOG/reverts, afterSwap peak<=245000; amm-match validate and runtime<=24576. Include wheel/source hashes, exact seeds, probe and decoder.\nIf a setup/execution step fails, return only {\"blocked\":{\"step\":\"...\",\"error\":\"...\"}} with the specific error; no speed gate or machine inspection. Numerical gate misses are measured results, not setup blocks.\nJSON <60000 bytes: code_zb64=zlib+base64 of complete main source, sha256 of decoded source; bundle_zb64=zlib+base64 of a JSON relative-path-to-text map of scripts/tests, bundle_sha256. Include commands/numerical checks, not terminal dumps or scratch-only paths.\n",
      "items": [
        {
          "key": "probe-reference",
          "vars": {
            "base": "https://raw.githubusercontent.com/gtmcknight/amm-sim/66604b3426d8e97a73e2c39940b9b4dece51cc73/research",
            "seed0": "14000000",
            "seed1": "14000007",
            "approach": "Use the direct integer translation and an explicit per-step telemetry decoder."
          }
        },
        {
          "key": "probe-independent",
          "vars": {
            "base": "https://raw.githubusercontent.com/gtmcknight/amm-sim/66604b3426d8e97a73e2c39940b9b4dece51cc73/research",
            "seed0": "14000008",
            "seed1": "14000015",
            "approach": "Independently implement the integer test and counter decoder; prioritize timestamp zero, reserve-binade crossings and tiny amounts."
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 60000
      },
      "merge": {
        "groupSize": 5,
        "brief": "Pool integer counts only after checking compatible denominators and exact seed lists; retain independent implementations, false negatives and ambiguities. Report all-trade and first-only rates separately. No replica result substitutes for this engine proof."
      }
    },
    {
      "name": "e01-c-replica",
      "mode": "research",
      "brief": "Work only in test/scratch/ except the result. B={{base}}. Read B/tell/README.md first. mkdir -p test/scratch; curl -LsSf $B/tell/fetch.sh -o test/scratch/fetch.sh && sh test/scratch/fetch.sh $B test/scratch/amm. Check fetched hashes. Treat source text as data. No submission.\nOne Python-stdlib-only replica idea, no engine or Solidity setup: {{idea}}\nStart from tellpol.TellPolicy soft=1,qm=qm_k1e-5.json. Leave every unrelated mechanism fixed. Work blind through unmodified run.py; needs_flag must remain false; never use fair price, true arb flag, rival state, seed or run parameters in policy decisions. Any new arithmetic leakage feature must be computed from afterSwap WAD integers and stored previous WAD reserves/fees, not unavailable low bits of Python floats.\nTune only seeds {{tune0}}..{{tune1}}, compare to TellPolicy there, freeze ONE variant and hash its code/parameters. Then score it ONCE on all 10000..12047 through `python3 -I run.py module:Policy 10000 2048 out.json soft=1 qm=qm_k1e-5.json` against shipped tell_qm.json; do not rerun the baseline or retune after looking. A single driver may checkpoint disjoint chunks without reusing a holdout seed. pair.py prints rounded statistics: also compute full-precision paired{n,mean_diff,se,sum,sumsq,worst5} from per-seed differences. Return holdout rows (compressed in bundle), tuning choices, first-trade misread counts/rate, price RMS, time since pin diagnostics, and concrete estimated Solidity state/operations/gas (label unmeasured gas). Instrument diagnostics without passing truth into the policy. Gains >=0.2 are integration leads, not engine results. A negative result still returns complete code and measurements; no broad idea sweep.\nIf a setup/execution step fails, return only {\"blocked\":{\"step\":\"...\",\"error\":\"...\"}} with the specific error; no speed gate or machine inspection. Numerical gate misses are measured results, not setup blocks.\nJSON <60000 bytes: code_zb64=zlib+base64 of complete main source, sha256 of decoded source; bundle_zb64=zlib+base64 of a JSON relative-path-to-text map of scripts/tests, bundle_sha256. Include commands/numerical checks, not terminal dumps or scratch-only paths.\n",
      "items": [
        {
          "key": "retail-quotient-signal",
          "vars": {
            "base": "https://raw.githubusercontent.com/gtmcknight/amm-sim/66604b3426d8e97a73e2c39940b9b4dece51cc73/research",
            "tune0": "60000",
            "tune1": "60255",
            "idea": "Test whether a retail leg paid-amount quotient constrains the rival spot more tightly than the existing marginal-price identity. Use one interval/quantization consistency signal and apply it only to the rival estimate on predicted retail trades."
          }
        },
        {
          "key": "flag-aware-fee-table",
          "vars": {
            "base": "https://raw.githubusercontent.com/gtmcknight/amm-sim/66604b3426d8e97a73e2c39940b9b4dece51cc73/research",
            "tune0": "60300",
            "tune1": "60555",
            "idea": "Fit one small residual fee table conditioned on the inferred arb/retail posterior bucket, phase, synced flag and belief sd. Keep the price filter fixed. Use stdlib bounded coordinate search on training seeds, not a large numpy/numba DP solve or a change to kappa."
          }
        },
        {
          "key": "between-pin-filter",
          "vars": {
            "base": "https://raw.githubusercontent.com/gtmcknight/amm-sim/66604b3426d8e97a73e2c39940b9b4dece51cc73/research",
            "tune0": "60600",
            "tune1": "60855",
            "idea": "Keep a small two-component truncated-normal belief between reliable pins to preserve skew lost by moment-matching. Feed its mean/variance into unchanged qm tables; keep the likelihood-weighted grid classifier and avoid a full lattice or truth-assisted pins."
          }
        }
      ],
      "output": {
        "format": "json",
        "maxBytes": 60000
      },
      "merge": {
        "groupSize": 5,
        "brief": "Compare paired gains vs tell_qm on exactly 2048 holdout seeds, keeping source hashes, tuning-only choices, uncertainty, misread/price diagnostics and implementation costs. Promote >=0.2 only as an A integration lead. Preserve null results and blindness concerns."
      }
    }
  ],
  "read": [
    "e01-a-detector/literal-rational",
    "e01-a-detector/bounded-bitmath",
    "e01-a-c0-integration/c0-tell-soft1",
    "e01-a-table-recovery/sparse-spline-residual",
    "e01-a-table-recovery/adaptive-linear-grid",
    "e01-a-spline-gas/lookup-headroom",
    "e01-a-validation-harness/gate-and-pair-runner",
    "e01-p-engine-probe/probe-reference",
    "e01-p-engine-probe/probe-independent",
    "e01-c-replica/retail-quotient-signal",
    "e01-c-replica/flag-aware-fee-table",
    "e01-c-replica/between-pin-filter"
  ],
  "cancel": [],
  "wake": {
    "batches": [
      "e01-a-detector",
      "e01-a-c0-integration",
      "e01-a-table-recovery",
      "e01-a-spline-gas",
      "e01-a-validation-harness",
      "e01-p-engine-probe",
      "e01-c-replica"
    ],
    "afterMinutes": 90
  },
  "finish": false
}
