{
  "notes": "Credit: Taylor (gtmcknight), solved-policy research, github.com/gtmcknight/amm-sim@4812a6382311624e1506aca131ca35c378f930d9 (research/solved).\n\nEpisode2 status: read goal.json and both handed reports b01-reference-gate (sha256 9d57ad4b985630682f3f2d8d99176eb830dc28eaad55c9bbe9e2eaad7ee8b156) and b01-bootstrap (78462b3c2aab0458af8043910bc5fec27f1304e080f05f5e67c945c888016214). Foundation e01-foundation merged at4a02cd145745a9d1c45d2ca8d669b650dce619f8 in https://github.com/identity-md-launches/goal-3178-build-shared-evaluation-kit.git. Both items accepted, 2/20 used. No active batches, requester notes, children, mandates or pending effects. The attempted e01-foundation-check was REFUSED because another code wave was active; its read/wake were also refused. It never ran and consumes no item. Do NOT queue multiple code waves in one decision: actual plane behavior is refusal, not deferred execution.\n\nFoundation evidence is worker-reported until our audit. Reference item delivered35 credited envelopes, offline materializer, gatep.py,24 passing offline tests and shared API/JSON-bank contract. GateP fresh~10s, cached~0.33s, materialization~0.41s, suite~26.6s. Full Taylor solved sources include the otherwise missing qm_k1e-5.json and calib_out_2048.json. Bootstrap delivered setup_fast.sh with20 SHA/size-pinned downloads, explicit platform, scratch runtime, no Rust, real cold/cached/offline checks;25 tests with24pass/1macOS skip. Cold Linux setup~9.7s, cached~0.9s. Synthetic Numba smoke is NOT replica2 throughput; Vanilla engine9700000~0.19s is NOT qt1 throughput. macOS wheels downloaded/hash-checked only; no execution or parity claim. Do not carry machine diagnostics from reports forward.\n\nPublic immutable files inspected as data at https://raw.githubusercontent.com/identity-md-launches/goal-3178-build-shared-evaluation-kit/4a02cd145745a9d1c45d2ca8d669b650dce619f8/: docs/contracts.md, docs/setup.md, docs/reference.md, reference/sources.json, bootstrap/smoke_engine.py, README.md. The orchestrator checkout has inputs, not the trunk's source files. README's setup status is stale from concurrent foundation authors and must be updated later. Materialization outputs scratch/reference/{taylor,qt1,twocomp,combo,numba,tools}; originals are hash-sensitive, do not add headers to extracted originals. Authored source/docs need Taylor credit; JSON first _credit. Foundation reference bytes~2.9MB; keep source bundle below8MiB, no wheels/caches or giant expanded tables committed.\n\nCurrent contracts: ammfast.run(seed,policy,head_params=None) -> {seed,edge}; run_batch(seeds,policy,head_params=None) -> ordered rows, preserving duplicates/empty list; policy IDs qt1-ref,TwoComp,COMBO; finite unrounded edges. Banks: _credit first,backend,policy,provenance,rows; edges format .6f strings; sorted unique seeds; engine adds after_swap_peak_gas int. Engine interface assigned consistently to both workers: engine_eval.run_batch(seeds,strategy_path) -> ordered {seed,edge,after_swap_peak_gas} with unrounded edge. Candidate policy identity CAN differ from baseline; reject incompatible backend/metric/runtime provenance, not a different policy name.\n\nThis episode starts ONE e02-evaluation wave with5 independent items: ammfast (kernel/API/parity/benchmark), engine-bank (adapter + complete512-row bank), score (paired CLI/adapters with stubs), ha-bank (2048-row calibration import), foundation-audit (scope[]). Each has disjoint source scope; audit only sees FOUNDATION. Engine and HA can complete banks now, avoiding a separate wave later. Engine worker must benchmark qt1 before bounded generation and report any incomplete seeds honestly. Replica banks wait for proven parity and measured rates. Read all5 results next episode; wake only on this batch settling, with1440-minute queue fallback, not a local sleep. Once dispatched,7/20 items used,13 remain; episodes3,4,5 remain. No cancels or finish: essential source/banks still absent at this decision.\n\nOperational reuse for items: bash setup_fast.sh --platform linux-x86_64 --cache scratch/cache (add --replica-only as appropriate); prepared interpreter scratch/venv/bin/python; generated scratch/env.sh sets only kit runtime paths. python3 -B reference/materialize.py --out scratch/reference; gatep.py --reference scratch/reference/taylor --cache scratch/cache/gatep. All checks use explicit scratch caches; do not inspect HOME. Runtime libraries are pinned by bootstrap manifest; protect foundation config/pins. Every item benchmarks FIRST, total<=55min, commands<480s with checkpoint/resume. Every actual engine simulation stays inclusive9700000..9700511. Config equivalence tests may construct cheap low-index configs without simulating them. Use MatchRunner config draw order size,arrival,sigma; avoid harness allocation of9.7million configs. Engine gas reset/singleton call with worker arg8 gives per-seed Submission/afterSwap max, never aggregate or initialize gas.\n\nEpisode3: inspect all reports, especially foundation findings, all384 unrounded comparisons <=1e-9, policy independence/residual behavior, engine512 per-seed gas/error checks, HA2048 mapping, score's strict stop tests and execution counts. Run ONE wave to fill gaps: typically3 replica-bank items, one per window60000..61023,64000..65023,10000..12047, each all3 policies. Total12288 replica rows, nine banks; per bank64 CPython checks (576 comparisons), full precision before6dp serialization. Choose deterministic spread seeds, no threshold relaxation; reference and generator digests bind resumable work. Use measured rates to split further if needed. A fourth item can audit merged e02 end-to-end (scope[], sees no e03 banks); add disjoint fixes only where real findings justify them. If a kernel fix is needed, dependent bank generation must wait a wave, not consume stale code; adjust remaining budget/episodes accordingly. Need real replica/engine score integration after this wave since e02 scorer tests stubbed unseen adapters.\n\nEpisode4: starting from e03 merged banks, integrate/repair and seal the whole kit with a scoped code item; update README and add comprehensive coverage/hash/provenance validator, examples and actual bounded clean-checkout verification. It must check12288 replica+2048HA+512engine=14848 bank rows, all ranges/policies/6dp and gas semantics, scorer early stops for real adapters, cached/offline setup, GateP, headers and no forbidden runtime state. Preserve measured data unless source changed; a source change invalidates its bank and requires regeneration/revalidation. Prefer a separate read-only audit in the wave ONLY if code/data are already final and other changes are documentation, since simultaneous items cannot see patches. Do not promise verification of unseen same-wave changes. Reserve remaining items for actual failures, not redundant reports.\n\nPublication: only real merged commits from goal.json. Final README must have exact commands and raw URLs for all pieces and banks at a sealed payload commit. A docs successor can link its parent code/data commit; final write-up names both actual final trunk and payload pin, no guessed/self-referential hash. If integration changes payload, refresh URLs in the next available episode; retain episode5 for inspecting validation and final docs-only pin if necessary, then finish when evidence is complete. If max episodes force closure, enumerate missing checks/outputs honestly. No engine holdout/performance claims outside screening. Source links, all commands, measured rates and limitations belong in the deliverable; avoid repeating worker host details.\n",
  "spawn": [
    {
      "name": "e02-evaluation",
      "mode": "code",
      "brief": "Credit Taylor (gtmcknight), amm-sim@4812a6382311624e1506aca131ca35c378f930d9 research/solved in every file header (JSON: first _credit). Work only in scope on the merged trunk; docs/contracts.md defines existing interfaces. Benchmark a small real workload FIRST; cap the item at 55 minutes. Bound EVERY command below 480s; checkpoint/resume under scratch/. All caches, installs and logs stay there; no host/home inspection or credentials. Reuse pinned setup_fast.sh with --cache scratch/cache and reference/materialize.py; preserve foundation pins/config. Never simulate engine seeds outside 9700000..9700511; no tuning. {{work1}}{{work2}}{{work3}}\nResult must contain delivered paths, exact commands, timings, test counts, hashes, coverage/counts, failures and resume commands; distinguish untested platforms.",
      "items": [
        {
          "key": "ammfast",
          "vars": {
            "work1": "Implement the reusable ammfast package from materialized numba/fastsim.py and pinned CPython/policy sources, without the archived driver's missing HEAD8 dependency. Expose ammfast.run(seed, policy, head_params=None) and run_batch(seeds, policy, head_params=None), returning unrounded {seed,edge} rows. IDs: qt1-ref, TwoComp, COMBO. Ordered batches retain duplicates; empty -> []; reject unknown IDs/nonfinite or invalid inputs, no cross-run state or input mutation. One compiled whole-simulation call per run, including RNG/market/policy; no Python callbacks in the trade loop or fallback presented as acceleration. COMBO residual hook: document finite parameter shape/features, zero equals None, nonzero works; reject heads for other policies. Preserve CPython3.12 sum behavior and apply residual before fee clamping.\nDeliver a resumable parity/benchmark CLI and offline tests. Compare ALL 384 full runs: each policy x seeds10000..10063 ",
            "work2": "and64000..64063 against unmodified CPython replica2 with matching pinned policy, ABS error<=1e-9 before rounding. Save each pair/diff, max error per policy/window and input hashes in reports/ammfast/. Do not weaken the tolerance. Include zero/nonzero-head tests, RNG reset, run-vs-batch equality and failure paths. Benchmark cold JIT separately and warm end-to-end runs/s/core using one worker; include loading/RNG costs explicitly and estimate all12288 baseline runs plus576 CPython spot checks. Document exact setup/materialization/import/CLI commands in docs/ammfast.md; helpers must be reusable next wave to generate banks in bounded chunks. Keep original reference bytes unchanged and policy data reconstructible from committed envelopes offline; no new downloads. No baseline generation this item. Record real platform coverage without claiming macOS execution.",
            "work3": ""
          },
          "scope": [
            "ammfast/**",
            "tests/test_ammfast.py",
            "docs/ammfast.md",
            "reports/ammfast/**"
          ]
        },
        {
          "key": "engine-bank",
          "vars": {
            "work1": "Deliver the engine evaluation pipeline and complete qt1 screening bank. Public API for the simultaneous scorer: engine_eval.run_batch(seeds, strategy_path) -> ordered list of {seed,edge,after_swap_peak_gas}, with finite unrounded edge; [] -> []; validate ALL seeds before any engine call. strategy_path is a Solidity source path; support candidate strategies as well as reference qt1. Lazy import/compile and reuse compilation across rounds; never evaluate future seeds. Own engine_eval.py, its tests/docs and baselines/engine/ only.\nBenchmark pinned qt1 on one allowed seed before choosing resumable chunks. Hash-check materialized qt1/Strategy.sol against c68887cff61180e12ba2b1ceb333edf76a830f91f63b5d775a8806fb9ec08aca. Use installed release wheel, pinned solc and amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8). Derive per-seed configs exactly as MatchRunner._build_configs at engine commit6b6921f8d463314aa7c96234e1be25a25245f704; reuse ",
            "work2": "bootstrap/smoke_engine.py's transcription, prove field equivalence against upstream on small indices (CONFIG construction only), never allocate9.7million configs.\nGenerate baselines/engine/qt1-9700000-9700511.json: exactly512 sorted unique rows,6dp edges and true per-seed afterSwap peak gas. Use singleton engine calls with worker argument8, resetting gas counters per seed and selecting Submission/afterSwap only; reject all OOG/revert/halt/tx/bad-return failures. Never substitute initialize or whole-batch gas. Checkpoint atomic progress, bind resume to source/wheel/config digests, refuse stale state; commands must resume safely after interruption. Commit full bank plus validation/provenance (wheel/source/compiler digests, configs, commands, rounding, errors, timings), not runtime caches. Test range rejection before execution, gas isolation, seed/result alignment and resume equivalence; independently rerun several spread seeds. Mark ",
            "work3": "all512 seeds screening-only, no holdout claim. If measured cost cannot finish512 within55min, preserve verified partial progress with explicit incomplete status and exact remaining seeds; never claim a full bank."
          },
          "scope": [
            "engine_eval.py",
            "tests/test_engine_eval.py",
            "docs/engine.md",
            "baselines/engine/**"
          ]
        },
        {
          "key": "score",
          "vars": {
            "work1": "Implement score.py paired sequential scoring and tests/docs, independently of the parallel backend implementations. Consume docs/contracts.md banks; compare by exact seed, candidate minus baseline. Cumulative rounds of128; print one JSON object {n,mean_diff,se,worst5} after each round, with sample se=sd(diff,ddof=1)/sqrt(n) and deterministic five lowest {seed,diff} sorted by(diff,seed). Strict stops: mean_diff+3*se<0; optional above-bar mean_diff-3*se>bar. Define final partial rounds and n<2 honestly (null se and no statistical stop); validate finite bar. Document these as screening heuristics, not sequentially calibrated confidence guarantees.\nSupport candidate row files AND lazy live runners. Replica: call ammfast.run_batch(seeds, policy, head_params=None); engine: call engine_eval.run_batch(seeds, strategy_path), returning {seed,edge,after_swap_peak_gas}. Candidate adapters may use documented module:function yielding rows for only ",
            "work2": "the requested seeds so later researchers can score new policies. Import optional engines lazily; offline row scoring must require stdlib only. Backend workers are concurrent: test against deterministic fixtures/stubs of these exact interfaces; do not claim those are real integration runs. Run only the next round, no prefetch/full-bank computation after a stop. Validate duplicates, missing/extra requested seeds, nonfinite values, backend/metric/source compatibility and engine range before simulation; candidate policy identity may DIFFER from selected baseline and must be recorded, not rejected for differing name. Use full-precision live values, retain six-decimal bank precision honestly, never round differences before testing. Report baseline/candidate provenance separately from round JSON.\nTest analytical differences/SE, zero variance, thresholds exactly equal, n0/n1, final partial rounds, shuffled rows, invalid banks, different ",
            "work3": "policies, and spy counts proving zero later-round execution for BOTH adapters. Include CLI examples for row/replica/engine modes and clear exits. Do not generate banks or change foundation files."
          },
          "scope": [
            "score.py",
            "tests/test_score.py",
            "docs/score.md"
          ]
        },
        {
          "key": "ha-bank",
          "vars": {
            "work1": "Produce only the HA calibration bank and its deterministic offline exporter/validation. Materialize and SHA256-check Taylor's calib_out_2048.json against fdf24c7aa2b604d770336a5783276da8ed4d50bca9dbcc02e98b4da58f608d26. Establish from pinned calibration-generation code and data which field is HA's edge and how rows map to seeds10000..12047; preserve the metric, no guessed ordering or averaged substitutes. Benchmark parsing/export before the full validation. Deliver baselines/ha/HA-10000-12047.json in docs/contracts.md format: backend replica, policy HA, exactly2048 unique ascending seeds, six-decimal finite edge strings, first _credit and complete source/digest/field/seed-mapping/rounding provenance. This is imported Taylor calibration, NOT ammfast output or a rerun.\nPut exporter and audit evidence under baselines/ha/, with offline tests in tests/test_ha.py and usage in docs/ha.md. Validate ALL2048 exported rows against source, ",
            "work2": "deterministic repeat exports, cardinality/endpoints, malformed/missing/duplicate/nonfinite inputs and hash mismatch. Test against locally materialized committed envelopes; no network at test time. Explain source semantics and exact rerun commands with source references. A source mapping genuinely unprovable is a precise finding, never an invented bank. Do not run engine simulations or other policies; no dependence on this wave's unseen ammfast or scorer files.",
            "work3": ""
          },
          "scope": [
            "baselines/ha/**",
            "tests/test_ha.py",
            "docs/ha.md"
          ]
        },
        {
          "key": "foundation-audit",
          "vars": {
            "work1": "Read-only audit of foundation commit4a02cd145745a9d1c45d2ca8d669b650dce619f8. scope=[]: no submitted source changes, only the declared result; runtime state in scratch/. This audits ONLY the starting foundation, not the concurrent ammfast/scorer/banks. Benchmark materialization plus a small existing smoke first, then choose bounded checks. Reproduce tests/test_gatep.py and tests/test_setup_fast.py with exact pass/skip/fail counts. Verify compressed source/original hashes, complete Taylor import/data closure, qt1 hash, attribution and offline materialization; check actual Gate P, cached repeat, tampering rejection, concurrent one-run behavior and cache identity separation. Review setup dependency closure, download hashes, no Rust/unpinned fetches, cold/cached installation, and --offline with populated explicit scratch cache. Use prepared runtime and pinned tests, never inspect host configuration or identifiers. Exercise replica ",
            "work2": "import/JIT and at most the supplied engine smoke on9700000; no policy bank simulation.\nAssess integration boundaries in docs/contracts.md, archived driver's missing HEAD8 limitation, command deadlines, no runtime state committed, and whether the documented commands work from a clean task checkout. Do not misreport synthetic smoke throughput as replica2 throughput. macOS execution remains untested unless actually available; do not infer it from wheel tags. Report each reproducible defect with file/line, exact bounded command, expected/actual, severity and minimal repair recommendation; separate defects from limitations and stale README status. Give an explicit acceptance checklist and the scope of checks you could not run. No patches, new dependencies, changes to pins, generated lockfiles or simultaneous wave inspection.",
            "work3": ""
          },
          "scope": []
        }
      ],
      "output": {
        "format": "markdown",
        "maxBytes": 16000
      },
      "merge": {
        "groupSize": 10,
        "brief": "Summarize each result separately: delivered files, exact commands, measured timings, hashes, coverage, failures and missing work. Distinguish foundation-only audit and stubbed scorer tests from real integration. No inferred passes or unseen same-wave verification."
      }
    }
  ],
  "read": [
    "e02-evaluation/ammfast",
    "e02-evaluation/engine-bank",
    "e02-evaluation/score",
    "e02-evaluation/ha-bank",
    "e02-evaluation/foundation-audit"
  ],
  "cancel": [],
  "wake": {
    "batches": [
      "e02-evaluation"
    ],
    "afterMinutes": 1440
  },
  "finish": false
}
