{
 "notes": "Episode 7/10. State on reading: 36/400 items used; no refusals; 18 items unsettled in 11 batches (e03-pilot-rerun phase/corridor, e03-design-a-position/a3, e03-design-b-edge b1/b2, e03-pos-scale/s1, e04-position-recovery/a1, e05-position-rerun p1/p2/p3, e05-threshold-rerun t1/t2, e05-pos-scale-copy/s2, e05-flat-control/flat, e06-g-base/verify and e06-continuation h2/h4/h8 still waiting). This episode adds 9 items in 3 batches (total 45, 355 left if accepted). No confirmed gain; V2 (board 519.68, 29th) is still the only entry; no trunk; no submission. Three decision episodes remain (8, 9, 10).\n\nHANDED (both valid, both full replacements, both retired):\n- b08 = e03-pilot-rerun/routing (result sha f91356e1...). Routing table R0 (code sha 9e65b5a2...), frozen before holdout, 4090000..4091999 n=2000: -61.87 se 0.557, worst -224, negative on all 2000 seeds. Candidate max 178,799 gas, OOG 0; V2 max 243,713, OOG 54. Screens on 60000..60255: 16 variants from -58.7 to -176; the retail-bounded 28..36 bps tables R8-R11 lose -169 to -176 and flat 33 bps (R11) -175.8 se 2.7. So V2's dynamics earn roughly 170-175 of its ~520 edge: a near-flat fee is out (the e05 flat control should agree; if it differs by much, one harness is wrong).\n- b14 = e04-edge-table/table (result sha dc599951...). Exact-router utility LUT (code sha 6ca9da36...), 4190000..4191999 n=2000: -83.43 se 0.69; by V2-retail-volume tercile -68.7/-83.0/-98.6. Holdout attribution: candidate retail 537.4, arb -96.4 (total 441.0) vs V2 retail 551.8, arb -27.3 (total 524.4): the loss is mainly arb (0 bps on the attracting side invites it), retail too. OOG 37 = V2 37. Host was macOS ARM64 (a deviation; consistent with the Linux results). Its five 256-seed calibrations lost -81 to -136.\nWith b2 (-43.98) and interaction (-13.67), every mapping written from scratch has lost by 14 to 176. The requester's 03:21Z note (new since episode 6) says the same and directs hybrids: keep V2's mapping, change one piece at a time, screen each on 256 seeds before stacking: (1) after a step's first print, a lower fee for the rest of the step on the side not exposed to the gap (leaders' mean fee 1.3 bps below V2, 2.2-2.4 in busy runs); (2) cap the rise of V2's fee with its flow terms (V2 +1.83 bps per 10k retail Y, leaders ~0.9), non-exposed side only; (3) keep the exposed-side fee, floor the other side at a fixed level instead of letting the stale shift widen both. Build on G; keep one item per idea measuring retail and arb edge vs V2.\n\nDECIDED: three batches, 3 copies each (different grids, training and holdout seeds), one per idea, candidate base G (reconstructed from f09f39f5... code_GN by the 03:00Z recipe with sha check 610c1905...; fallback exact V2, declared), comparator exact V2 (sha 28417e11...), harness from b12 (db62dead..., corrected: requested seeds only, never exits on OOG, retail/arb split; fallback attribution patch 27b38b4f...). e07-hyb-afterfirst f1/f2/f3: on first-print calls set the non-exposed fee to min(f,R) or f-d, optional half on the second print. e07-hyb-flowcap c1/c2/c3: scale or cap the flow terms (LAMBDA_COEF, FLOW_SIZE_COEF, ACT_COEF) on the non-exposed side. e07-hyb-floor s1/s2/s3: non-exposed side without the stale shift, floored at F0. Exposed side = the side with V2's higher fee after skew/stale shift. Every item: <=10 variants on 256 seeds, top 2 on 512, freeze with sha before holdout, one 2000-seed confirmation, retail/arb split and terciles on the holdout, full gas for both. Nothing cancelled: the running pos-scale/position items are the Poisson-weighted cousins of idea 1 and worth reading; design B b1/b2 finish on their own. e06-g-base/verify is still the independent check of G; until it lands, G rests on the requester's 03:00Z figures and each item's own sha check.\n\nSEED LEDGER: all 4000000..4289999 allocated or retired, never reassign. Used: routing 4090000..4091999, table 4190000..4191999. Pending old blocks unchanged (phase 4080000, corridor 4100000, a3 4130000, b1 4140000, b2 4150000, s1 4160000, e04 a1 4170000, p1 4200000, p2 4210000, p3 4220000, t1 4230000, t2 4240000, s2 4250000, h2 4260000, h4 4270000, h8 4280000; each confirms the first 2000 of its 10k block). New: f1 4290000..4291999, f2 4300000.., f3 4310000.., c1 4320000.., c2 4330000.., c3 4340000.., floor s1 4350000.., s2 4360000.., s3 4370000.. (first 2000 each, whole 10k block reserved). NEXT FREE = 4380000. Training: f1 10000..10255/12000..12511, f2 20000/22000, f3 30000/32000, c1 40000/42000, c2 50000/52000, c3 60000/62000, s1 70000/72000, s2 80000/82000, s3 90000/92000 (same offsets). Training seeds may be reused across items; holdouts never for a new code hash.\n\nSTANDING RULES: comparator is always exact V2, never a slim build; every brief carries the verbatim OOG sentence, the mended setup (b12 setup.sh has the micromamba fallback), no machine probes, every placeholder a var, <3000 chars filled; valid when candidate OOG <= V2's on the same seeds and other errors 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 (G-based candidates should already have 0 OOG). Do not retry a retired family: corridor/phase pending, routing, table, b2 edge optimiser, interaction, next-mix, zero skew.\n\nNEXT EPISODE (8/10), in order: 1. Read `blocked` first; for measured results check V2 sha, configs, frozen sha before holdout, n=2000 on the assigned block, gas and OOG for both, and whether base G's sha matched. 2. Rank the nine hybrids and the pos-scale/position/threshold/continuation results by holdout mean_diff vs se and read the retail/arb split to see which rung moves. 3. Any piece > +0.3 and > 2 se: spawn (i) an independent replication of its frozen code on a new block from 4380000 (2000 seeds); (ii) stacked combinations of the gaining pieces, each screened on 256 seeds with its own holdout; (iii) if a stack or single piece looks >= +0.3, a submission-grade confirmation: frozen code, 4000 fresh seeds as two 2000 blocks, 0 candidate OOG, 2-3 machines. 4. Pieces at -0.3..+0.3: still candidates for stacking if their split shows a retail gain with a smaller arb loss; clearly negative pieces: record and retire. 5. Plan: episode 9 reads the stacks/confirmations and freezes the submission file; episode 10 reads the last confirmation and finishes. If nothing gains by episode 8, use it for one more bounded round (stack the least-negative pieces or the requester's next direction) and finish by episode 10 with an honest write-up: V2 stays, every family's measured loss and the ~170 value of V2's dynamics recorded. No board submission here; the requester submits.",
 "spawn": [
  {
   "name": "e07-hyb-afterfirst",
   "brief": "<60 min, ONE item, ONE hybrid of V2's fee rule: after a step's first print, a lower fee for the rest of the step on the non-exposed side. Arbs trade first, so fees returned on a first-print call (firstInStep in the source) mostly serve same-step retail. Variants: on first-print calls set the non-exposed fee to min(f, R), R in {{grid}} bps, or to f - d, d in {2,4} bps floored at 20 bps; one variant also applies half the cut on the second print. Later prints and the exposed side stay V2's. Exposed side = the side with V2's higher fee (skew and stale shift included); non-exposed = the other; when equal, change neither side.\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.\nSetup: clone github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704 in your workspace, never /tmp. U=https://api.imd.fun/artifacts/ GET U+db62deadd0a3ec885ad69bd3917fee793a924ead522776d73cc09110923e1e86: `code` = exact V2 (sha256 28417e116f57f1029fdd1803832e852574902c1ae7253c05657f317db76da4ab), the only comparator; source_files [{path,content}]: scratch/setup.sh, instrumentation.patch (gas/OOG counters), harness.py (one strategy per run_batch(...,8) vs VanillaStrategy, configs as MatchRunner._build_configs for the requested seeds only, paired diffs, retail/arb split; if the split is missing use the engine patch in U+27b38b4fd30bae05991e8f1925f83d2fe75ec097a7a93d3ac0af270cce06d5ad). Run sh scratch/setup.sh once; prefix commands with `. scratch/env.sh && `. Setup failure: blocked={step,error}, n=0.\nCandidate base G (V2 with gas trims only, 0 OOG): code_GN of U+f09f39f5092e5b1e56f156df10f397e5df0e194afa630ab24fc699adfd980d31 minus constants MIX_M and MIX_E_SIXTEENTHS, the block from '// Mix the next retail quote' up to the line starting 'slots[0] =' (kept) and the helpers from '// Poisson survival ratio' up to 'function _compressTailWithSlope' (kept); sha256 must be 610c1905e7dd5559b84e40a3b2d6f8e0b53a7b0ac7574ae33b6c1770a28367cb, else use exact V2 as base and say so.\nMethod: amm-match validate each variant; screen <=10 variants on seeds {{screen}} (256) paired vs V2; top 2 on {{select}} (512); freeze the better (sha256 recorded before the holdout); confirm once on {{holdout}} (2000 fresh seeds, never tuned on), also report retail and arb edge means for candidate and V2 and the paired diff by V2-retail-volume tercile. 10000 steps, 250k gas cap.\nReturn JSON: code (frozen Solidity), sha256, base_sha256, variants[{id,params,n,mean_diff,se,oog,v2_oog}], paired{n,mean_diff,se,worst[5]}, split{cand{retail,arb},v2{retail,arb},terciles[{n,mean_diff}]}, gas{max_ok,oog,reverts,other_halts,init_max}, v2_gas{same}, seeds, valid, blocked. Measured numbers only; a loss counts.",
   "items": [
    {
     "key": "f1",
     "vars": {
      "grid": "{28,30,32,34}",
      "screen": "10000..10255",
      "select": "12000..12511",
      "holdout": "4290000..4291999"
     }
    },
    {
     "key": "f2",
     "vars": {
      "grid": "{26,29,32,35}",
      "screen": "20000..20255",
      "select": "22000..22511",
      "holdout": "4300000..4301999"
     }
    },
    {
     "key": "f3",
     "vars": {
      "grid": "{30,32,34,36}",
      "screen": "30000..30255",
      "select": "32000..32511",
      "holdout": "4310000..4311999"
     }
    }
   ],
   "output": {
    "format": "json",
    "maxBytes": 64000
   }
  },
  {
   "name": "e07-hyb-flowcap",
   "brief": "<60 min, ONE item, ONE hybrid of V2's fee rule: cap how much V2's fee rises with its flow terms, non-exposed side only. V2's mid fee rises +1.83 bps per 10k retail Y, the leaders' ~0.9 (mean fee 1.3 bps below V2's, 2.2-2.4 in busy runs). Flow terms: lambdaHat, sizeHat, flowSize, actEma via LAMBDA_COEF, FLOW_SIZE_COEF, ACT_COEF. Variants: on the non-exposed side multiply their sum by c in {{grid}}, or cap it at K bps, K in {3,5,8}; one variant puts the best cap on both sides. Exposed side stays V2's. Exposed side = the side with V2's higher fee (skew and stale shift included); non-exposed = the other; when equal, change both sides.\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.\nSetup: clone github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704 in your workspace, never /tmp. U=https://api.imd.fun/artifacts/ GET U+db62deadd0a3ec885ad69bd3917fee793a924ead522776d73cc09110923e1e86: `code` = exact V2 (sha256 28417e116f57f1029fdd1803832e852574902c1ae7253c05657f317db76da4ab), the only comparator; source_files [{path,content}]: scratch/setup.sh, instrumentation.patch (gas/OOG counters), harness.py (one strategy per run_batch(...,8) vs VanillaStrategy, configs as MatchRunner._build_configs for the requested seeds only, paired diffs, retail/arb split; if the split is missing use the engine patch in U+27b38b4fd30bae05991e8f1925f83d2fe75ec097a7a93d3ac0af270cce06d5ad). Run sh scratch/setup.sh once; prefix commands with `. scratch/env.sh && `. Setup failure: blocked={step,error}, n=0.\nCandidate base G (V2 with gas trims only, 0 OOG): code_GN of U+f09f39f5092e5b1e56f156df10f397e5df0e194afa630ab24fc699adfd980d31 minus constants MIX_M and MIX_E_SIXTEENTHS, the block from '// Mix the next retail quote' up to the line starting 'slots[0] =' (kept) and the helpers from '// Poisson survival ratio' up to 'function _compressTailWithSlope' (kept); sha256 must be 610c1905e7dd5559b84e40a3b2d6f8e0b53a7b0ac7574ae33b6c1770a28367cb, else use exact V2 as base and say so.\nMethod: amm-match validate each variant; screen <=10 variants on seeds {{screen}} (256) paired vs V2; top 2 on {{select}} (512); freeze the better (sha256 recorded before the holdout); confirm once on {{holdout}} (2000 fresh seeds, never tuned on), also report retail and arb edge means for candidate and V2 and the paired diff by V2-retail-volume tercile. 10000 steps, 250k gas cap.\nReturn JSON: code (frozen Solidity), sha256, base_sha256, variants[{id,params,n,mean_diff,se,oog,v2_oog}], paired{n,mean_diff,se,worst[5]}, split{cand{retail,arb},v2{retail,arb},terciles[{n,mean_diff}]}, gas{max_ok,oog,reverts,other_halts,init_max}, v2_gas{same}, seeds, valid, blocked. Measured numbers only; a loss counts.",
   "items": [
    {
     "key": "c1",
     "vars": {
      "grid": "{0.25,0.5,0.75}",
      "screen": "40000..40255",
      "select": "42000..42511",
      "holdout": "4320000..4321999"
     }
    },
    {
     "key": "c2",
     "vars": {
      "grid": "{0.3,0.6}",
      "screen": "50000..50255",
      "select": "52000..52511",
      "holdout": "4330000..4331999"
     }
    },
    {
     "key": "c3",
     "vars": {
      "grid": "{0.4,0.7}",
      "screen": "60000..60255",
      "select": "62000..62511",
      "holdout": "4340000..4341999"
     }
    }
   ],
   "output": {
    "format": "json",
    "maxBytes": 64000
   }
  },
  {
   "name": "e07-hyb-floor",
   "brief": "<60 min, ONE item, ONE hybrid of V2's fee rule: keep V2's exposed-side fee but floor the other side at a fixed level instead of letting the stale shift widen both. Stale shift: the terms using STALE_DIR_COEF, STALE_ATTRACT_FRAC and the silence logic. Variants: non-exposed fee computed without the stale shift, floored at F0, F0 in {{grid}} bps; also F0 only while the shift is active (silent > 1 or its term > 0); one variant keeps the shift but caps the non-exposed side at F0 + 6 bps. Exposed side stays V2's. Exposed side = the side with V2's higher fee (skew and stale shift included); non-exposed = the other; when equal, change neither side.\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.\nSetup: clone github.com/benedictbrady/amm-challenge at 6b6921f8d463314aa7c96234e1be25a25245f704 in your workspace, never /tmp. U=https://api.imd.fun/artifacts/ GET U+db62deadd0a3ec885ad69bd3917fee793a924ead522776d73cc09110923e1e86: `code` = exact V2 (sha256 28417e116f57f1029fdd1803832e852574902c1ae7253c05657f317db76da4ab), the only comparator; source_files [{path,content}]: scratch/setup.sh, instrumentation.patch (gas/OOG counters), harness.py (one strategy per run_batch(...,8) vs VanillaStrategy, configs as MatchRunner._build_configs for the requested seeds only, paired diffs, retail/arb split; if the split is missing use the engine patch in U+27b38b4fd30bae05991e8f1925f83d2fe75ec097a7a93d3ac0af270cce06d5ad). Run sh scratch/setup.sh once; prefix commands with `. scratch/env.sh && `. Setup failure: blocked={step,error}, n=0.\nCandidate base G (V2 with gas trims only, 0 OOG): code_GN of U+f09f39f5092e5b1e56f156df10f397e5df0e194afa630ab24fc699adfd980d31 minus constants MIX_M and MIX_E_SIXTEENTHS, the block from '// Mix the next retail quote' up to the line starting 'slots[0] =' (kept) and the helpers from '// Poisson survival ratio' up to 'function _compressTailWithSlope' (kept); sha256 must be 610c1905e7dd5559b84e40a3b2d6f8e0b53a7b0ac7574ae33b6c1770a28367cb, else use exact V2 as base and say so.\nMethod: amm-match validate each variant; screen <=10 variants on seeds {{screen}} (256) paired vs V2; top 2 on {{select}} (512); freeze the better (sha256 recorded before the holdout); confirm once on {{holdout}} (2000 fresh seeds, never tuned on), also report retail and arb edge means for candidate and V2 and the paired diff by V2-retail-volume tercile. 10000 steps, 250k gas cap.\nReturn JSON: code (frozen Solidity), sha256, base_sha256, variants[{id,params,n,mean_diff,se,oog,v2_oog}], paired{n,mean_diff,se,worst[5]}, split{cand{retail,arb},v2{retail,arb},terciles[{n,mean_diff}]}, gas{max_ok,oog,reverts,other_halts,init_max}, v2_gas{same}, seeds, valid, blocked. Measured numbers only; a loss counts.",
   "items": [
    {
     "key": "s1",
     "vars": {
      "grid": "{28,30,32,34}",
      "screen": "70000..70255",
      "select": "72000..72511",
      "holdout": "4350000..4351999"
     }
    },
    {
     "key": "s2",
     "vars": {
      "grid": "{26,29,32,35}",
      "screen": "80000..80255",
      "select": "82000..82511",
      "holdout": "4360000..4361999"
     }
    },
    {
     "key": "s3",
     "vars": {
      "grid": "{30,33,36}",
      "screen": "90000..90255",
      "select": "92000..92511",
      "holdout": "4370000..4371999"
     }
    }
   ],
   "output": {
    "format": "json",
    "maxBytes": 64000
   }
  }
 ],
 "read": [
  "e03-pilot-rerun/phase",
  "e03-pilot-rerun/corridor",
  "e03-design-a-position/a3",
  "e03-design-b-edge/b1",
  "e03-design-b-edge/b2",
  "e03-pos-scale/s1",
  "e04-position-recovery/a1",
  "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",
  "e06-g-base/verify",
  "e06-continuation/h2",
  "e06-continuation/h4",
  "e06-continuation/h8",
  "e07-hyb-afterfirst/f1",
  "e07-hyb-afterfirst/f2",
  "e07-hyb-afterfirst/f3",
  "e07-hyb-flowcap/c1",
  "e07-hyb-flowcap/c2",
  "e07-hyb-flowcap/c3",
  "e07-hyb-floor/s1",
  "e07-hyb-floor/s2",
  "e07-hyb-floor/s3"
 ],
 "cancel": [],
 "wake": {
  "batches": [
   "e07-hyb-afterfirst",
   "e07-hyb-flowcap",
   "e07-hyb-floor",
   "e05-position-rerun",
   "e05-threshold-rerun",
   "e05-pos-scale-copy",
   "e05-flat-control",
   "e06-g-base",
   "e06-continuation",
   "e03-pos-scale"
  ],
  "afterMinutes": 100
 },
 "finish": false
}
