# cp-a: COMBO onto TC-A — gas blocked Credit: Taylor (gtmcknight), original solved policy, Gaussian filter, replica, and qm tables. IdentityMD's TwoComp and COMBO sources build on that work. ```json {"blocked":{"step":"gas","error":"Minimum GATE=1 fails: observed mixed dt=1 peak 216964 > 215000 pyrevm gas. Unlimited-gate probe also OOG at seed 70002, callback 1978, dt=11, with gas=245000. No GATE frozen; F and engine not run."}} ``` This is an unsuccessful port and a reproducible gas counterexample, not an eligible candidate or a measured improvement over qt1. The task explicitly directs a gas-blocked return if GATE=1 fails. No requester input is missing. ## Inputs and reconstruction Used pinned [qtr2](https://raw.githubusercontent.com/identity-md-launches/goal-3170-beat-network-s-amm-entry/c1c9a349f00bf18746f17c6a253469df6634860b/reference/qtr2/Strategy.sol) plus the complete unified diff in [TC-A, Contract](https://api.imdnotdead.fun/artifacts/ebab165bd9bc568057d042f7a9364713eb9cbef3f895e046fc1fde8264134fd2), applied with `patch -p1`. Reconstructed TC-A source SHA-256 is exactly `b87234c89e094f4955578417c1266129b0f96e6dfda68e3fb8866e00eeda71a2`; locally compiled runtime **21,102 bytes**, matching the brief. Extracted `combo.py` from [COMBO, Code](https://api.imdnotdead.fun/artifacts/d360bea6c8c982717b7b43a8069a87013169c89ee3e4da25622db4d880b936d4) with SHA-256 exactly `c5b711a0b4fb4783e8879a484bf87a427171f4a11aa5eb5ec3513c24ead1a796`. Used pinned [TwoComp](https://raw.githubusercontent.com/identity-md-launches/goal-3170-beat-network-s-amm-entry/c1c9a349f00bf18746f17c6a253469df6634860b/reference/twocomp/twocomp.py), `DUAL_CUTS=2`, and the pinned qt1 blob. Pinned [qt1 contract](https://raw.githubusercontent.com/identity-md-launches/goal-3170-beat-network-s-amm-entry/c1c9a349f00bf18746f17c6a253469df6634860b/reference/qt1/Strategy.sol) downloaded but never run in the engine. Platform check: Linux x86_64. Challenge and Taylor checkouts match the specified commits. Ran the pinned [setup script](https://raw.githubusercontent.com/identity-md-launches/goal-3170-beat-network-s-amm-entry/c1c9a349f00bf18746f17c6a253469df6634860b/tools/setup.sh) once, as `sh scratch/setup.sh`, from the challenge checkout. Setup passed; engine binary hash matched the script's expected `ff88b6353c2aad7342f0a26194f7347e78b9c3b38d683a7449006d423978cd14`. All state and dependencies were isolated under the disposable `test/scratch/` tree. No command timeout exceeded 470 seconds. ## Gate P PASS, executed before policy changes with plain `python3 -I gates.py` in the pinned Taylor `research/solved` directory. Exact match to [Taylor's published gates](https://raw.githubusercontent.com/gtmcknight/amm-sim/4812a6382311624e1506aca131ca35c378f930d9/research/solved/README.md): ```text seed perfect-info gaussian+plain gaussian+qm lattice+qm 10000 448.261189 443.455598 443.522608 443.663520 10001 576.779199 571.463409 571.623551 571.977293 10002 531.886497 525.168028 525.865859 526.411631 ``` Unmodified COMBO diagnostic, locally recomputed using plain `python3 -I` and matching the brief's six-decimal targets: ```text 10000 444.1953300340616 10001 572.1726816933833 10002 526.2747600532116 ``` These three diagnostic runs are not Gate Q. Selection 60000..61023 and holdout 10000..12047 were not run: no admissible gate survived the prerequisite gas check. No paired replica score is claimed for ComboG. ## Port and probe Candidate uses TC-A's unchanged filter and four packed storage words. No assembly or additional storage. Table coefficients, spline evaluation, and fee conversion arithmetic are unchanged. The original quote is expressed as offsets followed by the existing conversion; the mixed path weights two branch offsets and converts once against the carried mixture mean. Rival clipping for mixed quotes is evaluated in log coordinates using `ln(.997)=-3004509020298721` at WAD precision. This is algebraically equivalent in real arithmetic; fixed-point numerical conformance is **not certified**, because F was not reached. An initial direct implementation compiled to 31,433 runtime bytes and failed deployment size checks. A shared lookup loop reduced it to 22,114 bytes. Further scalar temporary handling and log-coordinate branch inputs reduced the final probe port to **21,853 runtime bytes**, below 24,576. Reconstruction and final compile used the unmodified pinned challenge compiler (solc 0.8.24). Final source SHA-256: `e4c64fa8e2e797ba6154d2436cc883f7ca8065cf26afd2d2fa5e3aaa2c97d93e`. Probe constant: `GATE=1000000000`. This is the unlimited probe setting, **not a selected/frozen gate**. The diff below reconstructs exactly that failed probe candidate. Every attempted callback supplied exactly 245,000 gas using the pinned [check.py call helper](https://raw.githubusercontent.com/identity-md-launches/goal-3170-beat-network-s-amm-entry/c1c9a349f00bf18746f17c6a253469df6634860b/tools/check.py). Fresh deployment for each seed; policies were driven by ComboG at unlimited gate. Successful calls replayed consecutively to preserve Solidity state. The probe completed seeds 70000 and 70001, then aborted at the first OOG on seed 70002. Seeds 70003..70009 were **not replayed**. The full ten-seed probe is therefore incomplete. The table contains observed lower bounds on full-suite peaks, sufficient to reject GATE=1; it does not pretend to be the requested complete coverage. | dt bucket | Successful mixed calls observed | Peak gas on successful calls | Seed | Callback (zero-based) | Failed calls observed | |---|---:|---:|---:|---:|---:| | 1 | 9692 | 216964 | 70001 | 11606 | 0 | | 2 | 1815 | 213187 | 70000 | 850 | 0 | | 3 | 753 | 221425 | 70000 | 4993 | 0 | | 4 | 313 | 218587 | 70001 | 5664 | 0 | | 5-6 | 212 | 226734 | 70000 | 1121 | 0 | | 7-9 | 70 | 238399 | 70000 | 983 | 0 | | 10-12 | 6 | 242198 | 70000 | 7241 | 1 | | >=13 | 0 | unobserved | — | — | 0 | Bucket 10–12 additionally has one failed mixed call at dt=11: OutOfGas(Basic), gas_used=245000, seed 70002, callback 1978. Its required gas is greater than the supplied cap; the successful-call peak in the table excludes it. Empty >=13 is not fitting under the selection rule. The minimum gate already fails by 1,964 gas; all larger allowed gates include dt=1, so **none is admissible**. No gate was selected using score data. The final probe had 23,236 successful afterSwap callbacks before one OOG. For the two completed runs, maximum observed effective-fee error was 0.0000023752300126744785 bps. This incidental comparison is not F: the failed run was incomplete and the required 50×2,000 suite was not executed. ## F, validation and engine F: **not run**, no max_bps/seed/callback result. Probe pyrevm successful peak: 242,198; probe OOG: 1. These are not F statistics. Final `amm-match validate scratch/candidate.sol`: PASS — `Strategy 'TaylorComboGQmTrim2' validated successfully!`. Validator success only checks its own acceptance conditions; it does not override the failed 215,000 probe budget. Engine paired `{n, mean_diff, se, worst5}`: **not available**. Per-arm afterSwap `{calls, peak, mean, oog}`: **not available**. The pinned [engine helper](https://raw.githubusercontent.com/identity-md-launches/goal-3170-beat-network-s-amm-entry/c1c9a349f00bf18746f17c6a253469df6634860b/tools/engine.py) was downloaded but not invoked, because F did not pass. Fresh seeds 9803138..9803153 were never consumed. No claim about board performance or engine gas is made. ## Unified diff vs reconstructed TC-A Apply this diff to the exact reconstructed TC-A source above. It intentionally leaves GATE unlimited for reproducing the failed probe. ```diff --- a/Strategy.sol +++ b/Strategy.sol @@ -2,6 +2,7 @@ pragma solidity ^0.8.24; import {AMMStrategyBase} from "./AMMStrategyBase.sol"; import {TradeInfo} from "./IAMMStrategy.sol"; +// COMBO offset quoting port; credit Taylor (gtmcknight) for replica and solved policy. // Two-component posterior port; credit Taylor (gtmcknight) for policy, filter and tables. // Policy: Taylor's (gtmcknight) solved game, amm-sim 4812a638, research/solved: Gaussian filter (real.py) + qm tables // (qm_k1e-5.json, +3.77 vs HA on Taylor's replica). Filter, state and timing from trim-1 / port-3. @@ -17,9 +18,10 @@ // Taylor source: https://github.com/gtmcknight/amm-sim/tree/4812a6382311624e1506aca131ca35c378f930d9/research/solved contract Strategy is AMMStrategyBase { int256 constant U=1e18; + uint256 constant GATE=1000000000; int256 constant LN2=693147180559945309; struct Belief { int256 m; int256 v; int256 fb; int256 fa; int256 sp; int256 r; uint256 t; uint256 cnt; bool sy; int256 pi; int256 lp; int256 mt; int256 vt; } - function getName() external pure override returns(string memory) { unchecked {return "TaylorTwoCompQmTrim2";} } + function getName() external pure override returns(string memory) { unchecked {return "TaylorComboGQmTrim2";} } function mul(int256 a,int256 b) internal pure returns(int256){ unchecked {return a*b/U;} } function divi(int256 a,int256 b) internal pure returns(int256){ unchecked {return a*U/b;} } function ab(int256 x) internal pure returns(int256){ unchecked {return x<0?-x:x;} } @@ -194,7 +196,7 @@ if(sy){T2s(W);return(W,24,14);}T2c(W);return(W,12,8); } } // real.py RealPolicy.lookup: w, r, sd in WAD bps; returns (bid fee, ask fee) in WAD. - function fees(int256 w,int256 r,uint256 ph,bool sy,int256 sd) internal pure returns(int256 fb,int256 fa){ unchecked { + function offsets(int256 w,int256 r,uint256 ph,bool sy,int256 sd) internal pure returns(int256 a,int256 b){ unchecked { uint256 k;while(k<6&&sd>=S(k+1))k++; int256 tt=(sd-S(k))*U/(S(k+1)-S(k));if(tt<0)tt=0;if(tt>U)tt=U; int256 pw=w/5+160*U;if(pw<0)pw=0;if(pw>320*U)pw=320*U; @@ -207,9 +209,35 @@ int256 Fa=interp(W,X,P,f,g); int256 Fb=interp(W,X,M,U-f,U-g); int256 base=(pw-160*U)*5; - int256 aw=base-w+Fa;int256 bw=w-base+Fb; + return(base+Fa,Fb-base); + } } + function convert(int256 a,int256 b,int256 w) internal pure returns(int256 fb,int256 fa){ unchecked { + int256 aw=a-w;int256 bw=b+w; fa=aw>0?U-exp(-aw/10000):int256(0);fb=bw>0?U-exp(-bw/10000):int256(0); fb=clip(fb,0,U/10);fa=clip(fa,0,U/10); + } } + function quote(Belief memory b,int256 s,bool buy,int256 oldR,uint256 ph,bool mixed) internal pure returns(int256 fb,int256 fa){ unchecked { + int256 ls=ln(s);int256 w=(ls-b.m)*10000; + int256 a;int256 d;uint256 n=mixed?2:1; + int256 lr=mixed?ln(oldR):ln(b.r); + for(uint256 i=0;irival;if(sy)rival=cand; + sd=root(b.vt)*10000; + } + qw=(ls-m)*10000;qr=(rival-m)*10000; + }else {qw=w;qr=(lr-b.m)*10000;phase=ph;sy=b.sy;sd=root(b.v)*10000;} + (int256 ai,int256 bi)=offsets(qw,qr,phase,sy,sd); + if(mixed){int256 weight=i==0?b.pi:U-b.pi;a+=mul(weight,ai);d+=mul(weight,bi);} + else {a=ai;d=bi;} + } + return convert(a,d,w); } } function T0c(uint256[87] memory W) internal pure { unchecked { W[0]=0x2b762af92aaf2a6729f0290226fe2610259925512507248a23b422211e0711d1; @@ -614,17 +642,18 @@ b.sp=int256(uint256(uint128(p2)));b.r=int256(p2>>128); b.fb=int256(uint256(uint64(p3)));b.fa=int256(uint256(uint64(p3>>64))); b.t=uint64(p3>>128);b.cnt=(p3>>192)&((uint256(1)<<63)-1);b.sy=p3>>255==1; - (b.m,b.v)=moments(b.pi,b.lp,0,b.mt,b.vt); int256 s=int256(t.reserveY*1e18/t.reserveX);bool arb; - if(t.timestamp>b.t)arb=update(b,s,t.isBuy,t.timestamp-b.t); + int256 oldR=b.r;uint256 dt=t.timestamp-b.t; + if(dt>0)arb=update(b,s,t.isBuy,dt); + else (b.m,b.v)=moments(b.pi,b.lp,0,b.mt,b.vt); uint256 ph; if(!arb){ int256 c=t.isBuy?divi(mul(s,U-b.fb),997e15):divi(mul(s,997e15),U-b.fa); if(t.isBuy?cb.r){b.r=c;b.sy=true;} b.cnt++;ph=b.cnt==1?1:2; } - int256 w=(ln(s)-b.m)*10000;int256 r=(ln(b.r)-b.m)*10000; - (b.fb,b.fa)=fees(w,r,ph,b.sy,root(b.v)*10000);b.sp=s;b.t=t.timestamp;save(b); + (b.fb,b.fa)=quote(b,s,t.isBuy,oldR,ph,dt>0&&dt<=GATE&&b.pi>5e15&&b.pi<995e15); + b.sp=s;b.t=t.timestamp;save(b); return(uint256(b.fb),uint256(b.fa)); } } } ``` ## Exact ComboG code This is the complete reference used for the failed unlimited-gate probe. It imports the unchanged pinned `twocomp.py`. `self.comp` is always set in the ambiguous branch; only mix construction is gated. ```python """COMBO = two-component filter + weighted-average offset quoting. Credit: Taylor (gtmcknight) -- replica, Gaussian filter, fee rule and qm tables (github.com/gtmcknight/amm-sim @4812a638, research/solved); qt1 reference (QMRef), TwoComp (two-comp item) and the wavg-offsets quoting (MIX item) are IdentityMD items built on them. Standard library only. Needs twocomp.py (the TC artifact's Code block, unmodified) beside it. usage: from combo import Combo; Combo('blob.bin') is a replica2 policy (wants_j). Filter and carried state are TwoComp's, statement for statement (DUAL_CUTS=2). Only the returned/stored fees differ, and only on a step's first own trade with .005 < pi < .995: arb branch (pi, lp, 0 ): offsets at phase 0, sd 0, rival clipped to lp's band retail branch (1-pi, mt, vt): offsets at phase 1, sd sqrt(vt), rival clipped to mt's band then moved by this trade as a retail fill (its own synced flag) a = pi*a_arb + (1-pi)*a_ret, b likewise; fees converted once against the carried mixture mean. Both branches start from the pre-step rival estimate. Nothing is tuned. """ import math from twocomp import TwoComp, SIG2, LD_M, LD_S, MAXF, phi, trunc class ComboG(TwoComp): GATE = 10**9 def __init__(self, blob_path): super().__init__(blob_path) self.new_path_calls = 0 def lookup_offsets(self, w, w2, phs, sd, synced): """QMRef.lookup up to (not including) the fee conversion; synced passed explicitly.""" S = self.S; k = 0 while k < len(S) - 2 and sd >= S[k + 1]: k += 1 tt = min(1.0, max(0.0, (sd - S[k]) / (S[k + 1] - S[k]))) tag = '0c' if phs == 0 else (str(phs) + ('s' if synced else 'c')) A, B = self.T.A[tag], self.T.B[tag] pw = min(self.NW - 1.0, max(0.0, w / self.h + self.W0)) l2 = w2 / self.h if phs == 0: l2 = min(self.FB, max(-self.FB, l2)); p2 = l2 + self.FB; n2 = 2 * self.FB + 1 else: p2 = self._pos2(l2); n2 = len(self.W2L) i = min(int(pw), self.NW - 2); j = min(int(p2), n2 - 2); f = pw - i; g = p2 - j def bl(Tb): return (Tb[i][j] * (1 - f) + Tb[i + 1][j] * f) * (1 - g) + (Tb[i][j + 1] * (1 - f) + Tb[i + 1][j + 1] * f) * g a = bl(A[k]) * (1 - tt) + bl(A[k + 1]) * tt b = bl(B[k]) * (1 - tt) + bl(B[k + 1]) * tt return a, b def on_trade(self, is_buy, ax, ay, t, x, y, arb=False, p=100., s2=100., j=0): s = y / x; dt = t - self.tlast; is_arb = False; mix = None if dt >= 1: # ---- TwoComp filter, unchanged ---- self.cnt = 0 lo = math.log(self.sp * (1 - self.fb)); hi = math.log(self.sp / (1 - self.fa)) prior = self.propagate(dt, lo, hi) lp = math.log(s * (1 - self.fb)) if is_buy else math.log(s / (1 - self.fa)) la = 0.0; Z = 0.0; retail = [] for w, m, v in prior: sd = math.sqrt(v) la += w * phi((lp - m) / sd) / sd z, mt, vt = trunc(m, v, lo, hi) Z += w * z retail.append((w * z, mt, vt)) if Z > 1e-300: ret = [(w / Z, m, v) for w, m, v in retail] mt, vt = self.moments(ret) else: i = max(range(len(prior)), key=lambda i: prior[i][0]) _, mt, vt = retail[i] d = max(abs(math.log(s / self.sp)), 1e-9) lr = Z * .26 * phi((math.log(d) - LD_M) / LD_S) / (d * LD_S) pi = la / (la + lr) if la + lr > 0 else 0. is_arb = pi > .5 if .005 < pi < .995: self.comp = [(pi, lp, 0.), (1 - pi, mt, vt)] if dt <= self.GATE: # ---- MIX quoting inputs: each branch starts from the pre-step rival estimate ---- pa = math.exp(lp); pr = math.exp(mt); old_s2 = self.s2h s2_arb = max(pa * .997, min(pa / .997, old_s2)) s2_ret = max(pr * .997, min(pr / .997, old_s2)) cand_ret = s * (1 - self.fb) / .997 if is_buy else s * .997 / (1 - self.fa) synced_ret = (cand_ret < s2_ret) if is_buy else (cand_ret > s2_ret) if synced_ret: s2_ret = cand_ret mix = (pi, lp, mt, vt, s2_arb, s2_ret, synced_ret) elif is_arb: self.comp = [(1.0, lp, 0.)] else: self.comp = [(1.0, mt, vt)] self.m, self.v = self.moments(self.comp) pe = math.exp(self.m) self.s2h = max(pe * .997, min(pe / .997, self.s2h)) self.synced = False if not is_arb: cand = s * (1 - self.fb) / .997 if is_buy else s * .997 / (1 - self.fa) if (cand < self.s2h) if is_buy else (cand > self.s2h): self.s2h = cand; self.synced = True self.cnt += 1 ph = 1 if self.cnt == 1 else 2 else: ph = 0 self.tlast = t; self.sp = s ls = math.log(s) if mix is None: # every other callback: TwoComp's quote fb, fa = self.lookup((ls - self.m) * 1e4, (math.log(self.s2h) - self.m) * 1e4, ph, math.sqrt(self.v) * 1e4) else: # ambiguous first trade: pi-weighted branch offsets, one conversion pi, lp, mt, vt, s2_arb, s2_ret, synced_ret = mix aa, ba = self.lookup_offsets((ls - lp) * 1e4, (math.log(s2_arb) - lp) * 1e4, 0, 0., False) ar, br = self.lookup_offsets((ls - mt) * 1e4, (math.log(s2_ret) - mt) * 1e4, 1, math.sqrt(vt) * 1e4, synced_ret) a = pi * aa + (1 - pi) * ar; b = pi * ba + (1 - pi) * br w = (ls - self.m) * 1e4 fa = 1.0 - math.exp(-(a - w) * 1e-4) if a > w else 0.0 fb = 1.0 - math.exp(-(b + w) * 1e-4) if b > -w else 0.0 self.new_path_calls += 1 self.fb, self.fa = min(MAXF, max(0.0, fb)), min(MAXF, max(0.0, fa)) return fb, fa ``` ## Commands and probe harness All work was inside `test/scratch/`. Paths below are relative to the challenge checkout unless noted. Commands after setup were prefixed with `. scratch/env.sh &&`; Gate P used that file's absolute path while running in Taylor's solved directory. Long-running commands were bounded by `timeout 470`. The setup script was run once, not retried. ```sh git clone https://github.com/benedictbrady/amm-challenge test/scratch/amm-challenge git -C test/scratch/amm-challenge checkout 6b6921f8d463314aa7c96234e1be25a25245f704 git clone https://github.com/gtmcknight/amm-sim test/scratch/taylor git -C test/scratch/taylor checkout 4812a6382311624e1506aca131ca35c378f930d9 # Download pinned K/tools/setup.sh to scratch/setup.sh, then from challenge root: sh scratch/setup.sh # From Taylor research/solved; source the absolute challenge scratch/env.sh: python3 -I gates.py # Extract A's Contract diff and C's first Python block under Code. # Save qtr2 as scratch/inputs/Strategy.sol, then: . scratch/env.sh && patch -d scratch/inputs -p1 < scratch/inputs/tca.diff . scratch/env.sh && sha256sum scratch/inputs/Strategy.sol scratch/inputs/combo.py # Apply the final unified diff above to TC-A, yielding scratch/candidate.sol. # Place K/tools/check.py and the following probe.py under scratch/tools/. # Copy pinned Taylor solved files to scratch/reference/taylor/; # TwoComp to scratch/reference/twocomp/; ComboG to scratch/reference/mix/; # and blob.bin to scratch/reference/qt1/. . scratch/env.sh && timeout 470 python scratch/tools/probe.py > scratch/probe3.log 2>&1 . scratch/env.sh && timeout 470 amm-match validate scratch/candidate.sol ``` The executed probe harness (uncaught OOG terminates the run; the failed call's bucket is printed before termination): ```python # Credit Taylor (gtmcknight): replica, filter, tables. import sys,json,time from pathlib import Path ROOT=Path(__file__).resolve().parents[1] for d in ['taylor','qt1','twocomp','mix']:sys.path.insert(0,str(ROOT/'reference'/d)) import replica2 as R from combog import ComboG from check import compiled,call,fees from amm_competition.evm.executor import EVMStrategyExecutor def bucket(dt): return str(dt) if dt<=4 else '5-6' if dt<=6 else '7-9' if dt<=9 else '10-12' if dt<=12 else '>=13' code=compiled('scratch/candidate.sol') rows={b:dict(n=0,peak=0,seed=None,callback=None,oog=0) for b in ['1','2','3','4','5-6','7-9','10-12','>=13']} alln=peak=oog=0;beg=time.time();maxerr=0 for seed in range(70000,70010): e=EVMStrategyExecutor(bytes.fromhex(code['creation']));p=ComboG(str(ROOT/'reference/qt1/blob.bin'));init=p.init;trade=p.on_trade;n=0 def initialize(*args): ref=init(*args);call(e,[100*10**18,10000*10**18],True);return ref def record(*args): global n,alln,peak,oog,maxerr dt=args[3]-p.tlast;prev=p.new_path_calls;ref=trade(*args);mix=p.new_path_calls>prev buy,ax,ay,t,x,y,*_=args try: out=call(e,[buy,int(ax*1e18),int(ay*1e18),t,int(x*1e18),int(y*1e18)]) except Exception as exc: print(json.dumps(dict(failed_seed=seed,callback=n,dt=dt,mixed=mix,error=str(exc),buckets=rows)),flush=True);raise gas=e.evm.result.gas_used;peak=max(peak,gas) err=max(abs(a-R.clampf(b))*1e4 for a,b in zip(fees(out),ref));maxerr=max(maxerr,err) if mix: row=rows[bucket(dt)];row['n']+=1 if gas>row['peak']:row.update(peak=gas,seed=seed,callback=n) n+=1;alln+=1 return ref p.init=initialize;p.on_trade=record R.run(seed,p) data=dict(buckets=rows,callbacks=alln,peak=peak,oog=oog,max_error_bps=maxerr,seconds=time.time()-beg,completed_seed=seed) (ROOT/'probe.json').write_text(json.dumps(data));print(json.dumps(data),flush=True) ``` The full terminal failure object for the final candidate: ```json { "failed_seed": 70002, "callback": 1978, "dt": 11, "mixed": true, "error": "Halt { reason: OutOfGas(Basic), gas_used: 245000 }", "buckets": { "1": { "n": 9692, "peak": 216964, "seed": 70001, "callback": 11606, "oog": 0 }, "2": { "n": 1815, "peak": 213187, "seed": 70000, "callback": 850, "oog": 0 }, "3": { "n": 753, "peak": 221425, "seed": 70000, "callback": 4993, "oog": 0 }, "4": { "n": 313, "peak": 218587, "seed": 70001, "callback": 5664, "oog": 0 }, "5-6": { "n": 212, "peak": 226734, "seed": 70000, "callback": 1121, "oog": 0 }, "7-9": { "n": 70, "peak": 238399, "seed": 70000, "callback": 983, "oog": 0 }, "10-12": { "n": 6, "peak": 242198, "seed": 70000, "callback": 7241, "oog": 0 }, ">=13": { "n": 0, "peak": 0, "seed": null, "callback": null, "oog": 0 } } } ``` ## Problems The minimum gate fails the mandatory gas budget. The unlimited probe encounters OOG, leaving ten-seed coverage incomplete. F and engine results cannot be supplied under the task's ordered gates. The reference selection/holdout comparison was not performed. The final candidate is a failed probe artifact, supplied for review and reproduction; it must not be deployed or described as beating qt1. No root `.imd-blocked.json` was written because this is the explicit gas-stop branch, not missing requester input.