{"item":"tail-b","blocked":null,"design_url":"https://api.imdnotdead.fun/artifacts/f0c84ebe66608025bb038a242030d6639f81ec87bf35146ee4495f572c7b74e7","code":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport {AMMStrategyBase} from \"./AMMStrategyBase.sol\";\nimport {TradeInfo} from \"./IAMMStrategy.sol\";\n\ncontract Strategy is AMMStrategyBase {\n    // Size-tail residual: screen-fitted tables, signed tenths of a basis point.\n    // Columns: spot/pEst -150..150 bps at 5 bps; rows: fair Y depth 7000..13000.\n    uint256 constant TAIL_KAPPA = 0;\n    uint256 constant TAIL_DMAX = 500000000000000;\n    bytes constant TAIL_BID = hex\"0096006e009600b40082008c00aa008200aa00c800b400b400aa009600aa00960096008200a000820082009600b400aa00aa00aa00aa00aa00aa00aa00aa00aa00a000aa00aa00960096009600960096008c008c008c008c008c008c008c0082008200820082008200820050001e000000000000000000000000001e003c000a0014003c00140032005a00460046003c0028003c00280028001e00320014001400280050006e009600aa00aa00a000aa00aa00a000aa00a000a000a000960096009600960096008c008c008c008c00820078007800780078006e006e00780078007800780064003200000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000a00320050008200a000aa00aa00a000aa00a000a000a00096009600960082008200820078008200820082007800780078006e006e006e006e006400640064006e006e0064004600140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e00460064008c00aa00aa00a000a0009600960096008c0082008c007800780078006e006e006e0064006400640064005a005a00640064005a005a005a005a005a005a0050002800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014003c005a008200a000a000960096009600820078006e00640064005a005000500050005000500050005000460046004600460046004600460046003c0046004600460046001e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00320050007800960096008c0082006400500046003c003200320028002800280028002800280028001e001e001e001e001e001e00280028001e001e001e001e001e001e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e0046006e00820078005a003c001e001e001400140014000a000a000a000a000a000a000a000a000a0000000000000000000000000000000a000a0000000000000000000000000000000000000000\";\n    bytes constant TAIL_ASK = hex\"000000000000000000000000000a003c006e00820082008200820082008200820082008c008c008c008c009600960096009600aa00aa00aa00a000b400aa00aa00aa00aa00b400a000aa00aa00b4009600820082008c008c0096009600b400a000b400be00a0009600b4008c00b40096008c00be00a00078005a0000000000000000000000000028005a0078007800780078007800780078007800820082008c008c008c008c0096008c008c0096009600a000a000a000a000aa00a000aa00aa00a000aa00aa0096006e0050003200140014001e001e003200320046001e0046001e00320028003c001e0046001e001e0050002800000000000000000000000a003c0064006400640064006400640064006e006e006e006e006e006e0078007800820082008200820082008c0096009600a000a000a000aa00a000aa00aa00a00082005a003200140000000000000000000000000000000a0000000a00000000000000000000000a0000000000000000000000000000000000140046005a005a005a005a005a005a005a006400640064006400640064006e006e006e0078007800780078008c0082008c00960096009600a000a000aa00aa008c006e005000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a003c003c003c003c0046004600460046004600460046004600460046004600460046004600500050005a00640064006e00780082008c008c009600a000a00082005a003c001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e001e001e001e001e001e001e001e001e00280028002800280028002800280028002800280028003200320032003c00460046005a0078008c00960096007800500032000a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000a000a0014001e00280046005a00780082006e0050001e000000000000000000000000000000000000000000000000000000000000000000000000000000000000\";\n\n    uint256 constant ELAPSED_CAP = 8;\n    uint256 constant SIGNAL_THRESHOLD = WAD / 650;\n    uint256 constant DIR_DECAY = 750000000000000000;\n    uint256 constant ACT_DECAY = 530000000000000000;\n    uint256 constant SIZE_DECAY = 530000000000000000;\n    uint256 constant TOX_DECAY = 910000000000000000;\n    uint256 constant SIGMA_DECAY = 690000000000000000;\n    uint256 constant LAMBDA_DECAY = 990000000000000000;\n    uint256 constant SIZE_BLEND_DECAY = 828000000000000000;\n    uint256 constant TOX_BLEND_DECAY = 51000000000000000;\n    uint256 constant ACT_BLEND_DECAY = 985000000000000000;\n    uint256 constant PHAT_ALPHA = 270000000000000000;\n    uint256 constant PHAT_ALPHA_RETAIL = 60000000000000000;\n    uint256 constant PHAT_ALPHA_SAME = 120000000000000000;\n    uint256 constant REVERT_U = 0;\n    uint256 constant DIR_IMPACT_MULT = 4;\n    uint256 constant GATE_SIGMA_MULT = 7200000000000000000;\n    uint256 constant MIN_GATE = 30000000000000000;\n    uint256 constant TRADE_TOX_BOOST = 3500 * BPS;\n    uint256 constant STALE_ATTRACT_FRAC = 1050000000000000000;\n    uint256 constant RET_CAP = WAD / 35;\n    uint256 constant TOX_CAP = WAD / 5;\n    uint256 constant TRADE_RATIO_CAP = WAD / 5;\n    uint256 constant LAMBDA_CAP = 1820000000000000000;\n    uint256 constant STEP_COUNT_CAP = 64;\n    uint256 constant BASE_FEE = 4 * BPS;\n    uint256 constant SIGMA_COEF = 200000000000000000;\n    uint256 constant LAMBDA_COEF = 12 * BPS;\n    uint256 constant FLOW_SIZE_COEF = 4842 * BPS;\n    uint256 constant TOX_COEF = 300 * BPS;\n    uint256 constant TOX_QUAD_COEF = 15000 * BPS;\n    uint256 constant ACT_COEF = 91843 * BPS;\n    uint256 constant DIR_COEF = 20 * BPS;\n    uint256 constant DIR_TOX_COEF = 100 * BPS;\n    uint256 constant STALE_DIR_COEF = 6850 * BPS;\n    uint256 constant SIGMA_TOX_COEF = 500 * BPS;\n    uint256 constant TAIL_KNEE = 600 * BPS;\n    uint256 constant TAIL_SLOPE_PROTECT = 930000000000000000;\n    uint256 constant TAIL_SLOPE_ATTRACT = 850000000000000000;\n\n    function afterInitialize(uint256 initialX, uint256 initialY) external override returns (uint256, uint256) {\n        slots[0] = BASE_FEE; slots[1] = BASE_FEE; slots[3] = WAD; \n        slots[5] = initialX > 0 ? wdiv(initialY, initialX) : 100 * WAD;\n        slots[6] = 950000000000000; slots[7] = 800000000000000000; slots[8] = 2000000000000000;\n        slots[13] = 902500000000; slots[14] = slots[5]; \n        return (BASE_FEE, BASE_FEE);\n    }\n\n    function afterSwap(TradeInfo calldata trade) external override returns (uint256, uint256) {\n        uint256 prevBidFee = slots[0]; uint256 prevAskFee = slots[1]; uint256 lastTs = uint64(slots[2]);\n        uint256 dirState = slots[3]; uint256 actEma = slots[4]; uint256 pHat = slots[5];\n        uint256 sigmaHat = slots[6]; uint256 lambdaHat = slots[7]; uint256 sizeHat = slots[8];\n        uint256 toxEma = slots[9]; uint256 stepTradeCount = slots[10];\n\n        uint256 sigmaForFast = sigmaHat;\n        uint256 fastHat = slots[14];\n        uint256 uncertainty = slots[13];\n        uint256 silent = trade.timestamp > lastTs ? trade.timestamp - lastTs : 0;\n        bool isNewStep = trade.timestamp > lastTs;\n        if (isNewStep) {\n            uint256 elapsedRaw = trade.timestamp - lastTs;\n            uint256 elapsed = elapsedRaw > ELAPSED_CAP ? ELAPSED_CAP : elapsedRaw;\n            dirState = _decayCentered(dirState, DIR_DECAY, elapsed);\n            actEma = wmul(actEma, _powWad(ACT_DECAY, elapsed));\n            sizeHat = wmul(sizeHat, _powWad(SIZE_DECAY, elapsed));\n            toxEma = wmul(toxEma, _powWad(TOX_DECAY, elapsed));\n            if (stepTradeCount > 0 && elapsedRaw > 0) {\n                uint256 lambdaInst = (stepTradeCount * WAD) / elapsedRaw;\n                if (lambdaInst > LAMBDA_CAP) lambdaInst = LAMBDA_CAP;\n                lambdaHat = wmul(lambdaHat, LAMBDA_DECAY) + wmul(lambdaInst, WAD - LAMBDA_DECAY);\n            }\n            // Process variance is propagated inside the censored update.\n            if (uncertainty > 100000000000000) uncertainty = 100000000000000;\n            stepTradeCount = 0;\n        }\n\n        bool firstInStep = stepTradeCount == 0;\n        uint256 spot = trade.reserveX > 0 ? wdiv(trade.reserveY, trade.reserveX) : pHat;\n        if (pHat == 0) pHat = spot;\n\n        uint256 feeUsed = trade.isBuy ? prevBidFee : prevAskFee;\n        uint256 gamma = feeUsed < WAD ? WAD - feeUsed : 0;\n        uint256 pImplied;\n        if (gamma == 0) { pImplied = spot; }\n        else { pImplied = trade.isBuy ? wmul(spot, gamma) : wdiv(spot, gamma); }\n\n        // S: infer a no-trade interval center from the last post-trade spot.\n        uint256 silenceScale = WAD;\n        if (firstInStep && silent > 1) {\n            uint256 g = silent - 1;\n            if (g > 1) g = 1;\n            uint256 w = WAD - _powWad(800000000000000000, g);\n            uint256 s = slots[2] >> 64;\n            if (s == 0) s = pHat;\n            uint256 c = (wmul(s, WAD - prevBidFee) + wdiv(s, WAD - prevAskFee)) / 2;\n            if (c >= pHat) pHat += wmul(w, c - pHat);\n            else pHat -= wmul(w, pHat - c);\n            silenceScale = WAD - wmul(300000000000000000, w);\n        }\n\n        {\n            uint256 ret = pHat > 0 ? wdiv(absDiff(pImplied, pHat), pHat) : 0;\n            uint256 alpha = firstInStep ? PHAT_ALPHA : PHAT_ALPHA_RETAIL;\n            uint256 prePhat = pHat;\n            bool secondPrint = !firstInStep && stepTradeCount == 1;\n            bool sameDir = false; bool oppDir = false;\n            if (secondPrint) {\n                bool up2 = pImplied >= pHat;\n                uint256 d1 = slots[12];\n                if (d1 != 0) { sameDir = (d1 == 1) == up2; oppDir = !sameDir; }\n                if (sameDir) alpha = PHAT_ALPHA_SAME;\n            }\n            if (firstInStep) { slots[12] = pImplied >= pHat ? 1 : 2; }\n            uint256 adaptiveGate = wmul(sigmaHat, GATE_SIGMA_MULT);\n            if (adaptiveGate < MIN_GATE) adaptiveGate = MIN_GATE;\n            alpha = wmul(alpha, silenceScale);\n            adaptiveGate = wmul(adaptiveGate, silenceScale);\n            if (ret <= adaptiveGate) { pHat = wmul(pHat, WAD - alpha) + wmul(pImplied, alpha); }\n            if (oppDir && REVERT_U > 0) {\n                uint256 pre = slots[11];\n                if (pre > pHat) pHat = pHat + wmul(pre - pHat, REVERT_U);\n                else pHat = pHat - wmul(pHat - pre, REVERT_U);\n            }\n            if (firstInStep) {\n                if (ret > RET_CAP) ret = RET_CAP;\n                sigmaHat = wmul(sigmaHat, SIGMA_DECAY) + wmul(ret, WAD - SIGMA_DECAY);\n            }\n        }\n\n        // Interior retail routing equalizes fee-adjusted marginal prices.\n        // Subsequent trades in a step cannot be the initial arbitrage trade.\n        if (!firstInStep && feeUsed > 30 * BPS && gamma > 0) {\n            uint256 normalSpot = trade.isBuy\n                ? wdiv(wmul(spot, gamma), WAD - 30 * BPS)\n                : wdiv(wmul(spot, WAD - 30 * BPS), gamma);\n            pHat = wmul(pHat, 90 * WAD / 100) + wmul(normalSpot, 10 * WAD / 100);\n        }\n\n        // Censored assumed-density posterior. No external or future inputs.\n        (fastHat, uncertainty) = _posterior(PosteriorInput(\n            fastHat, uncertainty, pImplied, spot, slots[2] >> 64,\n            prevBidFee, prevAskFee, firstInStep, silent, trade.isBuy,\n            trade.reserveY > 0 ? wdiv(trade.amountY, trade.reserveY) : 0\n        ));\n        slots[13] = uncertainty;\n        slots[14] = fastHat;\n        uint256 tradeRatio = trade.reserveY > 0 ? wdiv(trade.amountY, trade.reserveY) : 0;\n        if (tradeRatio > TRADE_RATIO_CAP) tradeRatio = TRADE_RATIO_CAP;\n\n        if (tradeRatio > SIGNAL_THRESHOLD) {\n            uint256 push = tradeRatio * DIR_IMPACT_MULT;\n            if (push > WAD / 4) push = WAD / 4;\n            if (trade.isBuy) {\n                dirState = dirState + push;\n                if (dirState > 2 * WAD) dirState = 2 * WAD;\n            } else {\n                dirState = dirState > push ? dirState - push : 0;\n            }\n            actEma = wmul(actEma, ACT_BLEND_DECAY) + wmul(tradeRatio, WAD - ACT_BLEND_DECAY);\n            sizeHat = wmul(sizeHat, SIZE_BLEND_DECAY) + wmul(tradeRatio, WAD - SIZE_BLEND_DECAY);\n            if (sizeHat > WAD) sizeHat = WAD;\n        }\n\n        uint256 tox = pHat > 0 ? wdiv(absDiff(spot, pHat), pHat) : 0;\n        if (tox > TOX_CAP) tox = TOX_CAP;\n        toxEma = wmul(toxEma, TOX_BLEND_DECAY) + wmul(tox, WAD - TOX_BLEND_DECAY);\n        uint256 toxSignal = toxEma;\n\n        stepTradeCount = stepTradeCount + 1;\n        if (stepTradeCount > STEP_COUNT_CAP) stepTradeCount = STEP_COUNT_CAP;\n\n        uint256 flowSize = wmul(lambdaHat, sizeHat);\n        uint256 fBase = BASE_FEE + wmul(SIGMA_COEF, sigmaHat) + wmul(LAMBDA_COEF, lambdaHat) + wmul(FLOW_SIZE_COEF, flowSize);\n        uint256 fMid = fBase + wmul(TOX_COEF, toxSignal) + wmul(TOX_QUAD_COEF, wmul(toxSignal, toxSignal)) + wmul(ACT_COEF, actEma);\n        fMid = fMid + wmul(SIGMA_TOX_COEF, wmul(sigmaHat, toxSignal));\n\n        uint256 dirDev; bool sellPressure;\n        if (dirState >= WAD) { dirDev = dirState - WAD; sellPressure = true; }\n        else { dirDev = WAD - dirState; sellPressure = false; }\n\n        uint256 skew = wmul(DIR_COEF, dirDev) + wmul(DIR_TOX_COEF, wmul(dirDev, toxSignal));\n        uint256 bidFee; uint256 askFee;\n        if (sellPressure) {\n            bidFee = fMid + skew;\n            askFee = fMid > skew ? fMid - skew : 0;\n        } else {\n            askFee = fMid + skew;\n            bidFee = fMid > skew ? fMid - skew : 0;\n        }\n\n        {\n            uint256 staleHat = wmul(pHat, 700000000000000000) + wmul(fastHat, 300000000000000000);\n            uint256 staleTox = wdiv(absDiff(spot, staleHat), staleHat);\n            if (staleTox > TOX_CAP) staleTox = TOX_CAP;\n            uint256 staleShift = wmul(STALE_DIR_COEF, staleTox);\n            uint256 attractShift = wmul(staleShift, STALE_ATTRACT_FRAC);\n            if (spot >= staleHat) {\n                bidFee = bidFee + staleShift;\n                askFee = askFee > attractShift ? askFee - attractShift : 0;\n            } else {\n                askFee = askFee + staleShift;\n                bidFee = bidFee > attractShift ? bidFee - attractShift : 0;\n            }\n        }\n\n        {\n            bool tradeAligned = (trade.isBuy && spot >= pHat) || (!trade.isBuy && spot < pHat);\n            if (tradeAligned) {\n                uint256 tradeBoost = wmul(TRADE_TOX_BOOST, tradeRatio);\n                if (!firstInStep && tradeBoost > 16 * BPS) tradeBoost = 16 * BPS;\n                if (trade.isBuy) { bidFee = bidFee + tradeBoost; }\n                else { askFee = askFee + tradeBoost; }\n            }\n        }\n\n        {\n            uint256 tailP = wmul(pHat,700000000000000000)+wmul(fastHat,300000000000000000);\n            uint256 tailDepth = _isqrt(wmul(wmul(trade.reserveX,trade.reserveY),tailP)*WAD);\n            bidFee = _tailAdd(bidFee,_tail(spot,tailP,tailDepth,bidFee,true));\n            askFee = _tailAdd(askFee,_tail(spot,tailP,tailDepth,askFee,false));\n        }\n\n        if (sellPressure) {\n            bidFee = clampFee(_compressTailWithSlope(bidFee, TAIL_SLOPE_PROTECT));\n            askFee = clampFee(_compressTailWithSlope(askFee, TAIL_SLOPE_ATTRACT));\n        } else {\n            askFee = clampFee(_compressTailWithSlope(askFee, TAIL_SLOPE_PROTECT));\n            bidFee = clampFee(_compressTailWithSlope(bidFee, TAIL_SLOPE_ATTRACT));\n        }\n\n        if (firstInStep) {\n            if (askFee > bidFee && bidFee > 30 * BPS) bidFee = 30 * BPS;\n            else if (bidFee > askFee && askFee > 30 * BPS) askFee = 30 * BPS;\n        }\n\n        if (bidFee > askFee && askFee > 36 * BPS) askFee = 36 * BPS;\n        else if (askFee > bidFee && bidFee > 36 * BPS) bidFee = 36 * BPS;\n\n        slots[0] = bidFee; slots[1] = askFee; slots[2] = (spot << 64) | trade.timestamp;\n        slots[3] = dirState; slots[4] = actEma; slots[5] = pHat;\n        slots[6] = sigmaHat; slots[7] = lambdaHat; slots[8] = sizeHat;\n        slots[9] = toxEma; slots[10] = stepTradeCount;\n\n        return (bidFee, askFee);\n    }\n\n\n    struct PosteriorInput {\n        uint256 mu; uint256 v; uint256 obs; uint256 spot; uint256 preSpot;\n        uint256 bid; uint256 ask; bool first; uint256 silent; bool buy; uint256 size;\n    }\n    function _posterior(PosteriorInput memory x) internal pure returns (uint256, uint256) {\n        if (x.mu == 0) x.mu = x.spot;\n        if (x.v < 10000000000) x.v = 10000000000;\n        uint256 lo = wmul(x.preSpot, WAD-x.bid);\n        uint256 hi = wdiv(x.preSpot, WAD-x.ask);\n        if (x.first) {\n            if (x.silent>1 && x.preSpot>0) {\n                uint256 elapsed=x.silent>8?8:x.silent;\n                x.v += 902500000000*(elapsed-1);\n                (x.mu,x.v)=_band(x.mu,x.v,lo,hi);\n            }\n            x.v+=902500000000;\n        }\n        uint256 mRetail = x.mu;\n        uint256 vRetail = x.v;\n        // A missing own-pool trade is a censored price observation.\n        if (x.first && x.preSpot > 0) {\n            (mRetail, vRetail) = _band(x.mu, x.v, lo, hi);\n        }\n        if (!x.first) {\n            // A later print is retail. Only an interior route is an observation\n            // of the other pool, with explicit observation uncertainty.\n            uint256 fee = x.buy ? x.bid : x.ask;\n            if (fee > 30 * BPS) {\n                uint256 normal = x.buy ? wdiv(wmul(x.spot, WAD-fee), WAD-30*BPS)\n                    : wdiv(wmul(x.spot, WAD-30*BPS), WAD-fee);\n                uint256 residual = wdiv(absDiff(normal, x.mu),x.mu);\n                uint256 noise = 9000000000000 + wmul(residual,residual);\n                uint256 k = wdiv(x.v,x.v+noise);\n                return (_blend(x.mu,normal,k),wmul(x.v,WAD-k));\n            }\n            return (x.mu,x.v);\n        }\n        uint256 e = wdiv(absDiff(x.obs,x.mu),x.mu);\n        uint256 totalV = x.v + 22500000000;\n        uint256 z = wdiv(wmul(e,e),totalV);\n        uint256 density = _powWad(wdiv(WAD,WAD+z/8),4);\n        uint256 odds = wmul(density,wdiv(4000000000000000,_isqrt(totalV*WAD)));\n        if (x.size > 3000000000000000) odds = wmul(odds,4*WAD/10);\n        if (x.silent > 1) odds = wmul(odds,8*WAD/10);\n        uint256 sd = _isqrt(x.v*WAD);\n        uint256 width = wdiv(hi-lo,x.mu);\n        uint256 distance = x.mu<lo?lo-x.mu:(x.mu>hi?x.mu-hi:0);\n        uint256 zBand = wdiv(wdiv(distance,x.mu),sd);\n        uint256 mass = wmul(wdiv(width,width+2*sd),wdiv(WAD,WAD+wmul(zBand,zBand)));\n        if (mass < WAD/100) mass = WAD/100;\n        odds = wdiv(odds,mass);\n        uint256 prob = wdiv(odds,WAD+odds);\n        uint256 kArb = wdiv(x.v,totalV);\n        uint256 mArb = _blend(x.mu,x.obs,kArb);\n        uint256 mean = _blend(mRetail,mArb,prob);\n        uint256 between = wdiv(absDiff(mArb,mRetail),x.mu);\n        uint256 variance = wmul(prob,wmul(x.v,WAD-kArb)) + wmul(WAD-prob,vRetail)\n            + wmul(wmul(prob,WAD-prob),wmul(between,between));\n        if (variance > 100000000000000) variance = 100000000000000;\n        return (mean,variance);\n    }\n    function _blend(uint256 a,uint256 b,uint256 w) internal pure returns(uint256) {\n        return b>=a ? a+wmul(b-a,w) : a-wmul(a-b,w);\n    }\n    function _band(uint256 mu,uint256 v,uint256 lo,uint256 hi) internal pure returns(uint256,uint256) {\n        // Soft interval likelihood avoids discontinuities at quadrature nodes.\n        uint256 sd=wmul(mu,_isqrt(v*WAD));\n        uint256[3] memory acc;\n        for(uint256 j=0;j<7;j++) {\n            uint256 p=j<3 ? (mu>(3-j)*sd?mu-(3-j)*sd:1) : mu+(j-3)*sd;\n            uint256 w=j==3?72:(j==2||j==4?45:(j==1||j==5?10:1));\n            uint256 distance=p<lo?lo-p:(p>hi?p-hi:0);\n            uint256 z=sd>0?wdiv(distance,sd):0;\n            uint256 likelihood=wdiv(WAD,WAD+4*wmul(z,z));\n            w=wmul(w*WAD,likelihood);\n            acc[0]+=w;acc[1]+=wmul(w,p);\n            uint256 d=wdiv(absDiff(p,mu),mu);\n            acc[2]+=wmul(w,wmul(d,d));\n        }\n        uint256 m=wdiv(acc[1],acc[0]);\n        uint256 d=wdiv(absDiff(m,mu),mu);\n        uint256 second=wdiv(acc[2],acc[0]);\n        return(m,second>wmul(d,d)?second-wmul(d,d):10000000000);\n    }\n\n    function _compressTailWithSlope(uint256 fee, uint256 slope) internal pure returns (uint256) {\n        if (fee <= TAIL_KNEE) return fee;\n        return TAIL_KNEE + wmul(fee - TAIL_KNEE, slope);\n    }\n\n    function _powWad(uint256 factor, uint256 exp) internal pure returns (uint256 result) {\n        result = WAD;\n        while (exp > 0) {\n            if (exp & 1 == 1) result = wmul(result, factor);\n            factor = wmul(factor, factor);\n            exp >>= 1;\n        }\n    }\n\n    function _decayCentered(uint256 centered, uint256 decayFactor, uint256 elapsed) internal pure returns (uint256) {\n        uint256 mul = _powWad(decayFactor, elapsed);\n        if (centered >= WAD) { return WAD + wmul(centered - WAD, mul); }\n        uint256 below = wmul(WAD - centered, mul);\n        return below < WAD ? WAD - below : 0;\n    }\n\n    // Floor square root: bit-length seed and seven Newton steps (all uint256).\n    function _isqrt(uint256 x) internal pure returns (uint256 r) {\n        if (x == 0) return 0;\n        unchecked {\n            uint256 y = x;\n            r = 1;\n            if (y >> 128 != 0) { y >>= 128; r <<= 64; }\n            if (y >> 64 != 0) { y >>= 64; r <<= 32; }\n            if (y >> 32 != 0) { y >>= 32; r <<= 16; }\n            if (y >> 16 != 0) { y >>= 16; r <<= 8; }\n            if (y >> 8 != 0) { y >>= 8; r <<= 4; }\n            if (y >> 4 != 0) { y >>= 4; r <<= 2; }\n            if (y >> 2 != 0) { r <<= 1; }\n            r = (r + x / r) >> 1;\n            r = (r + x / r) >> 1;\n            r = (r + x / r) >> 1;\n            r = (r + x / r) >> 1;\n            r = (r + x / r) >> 1;\n            r = (r + x / r) >> 1;\n            r = (r + x / r) >> 1;\n            uint256 t = x / r;\n            return r < t ? r : t;\n        }\n    }\n\n\n    function _tailAt(bytes memory t, uint256 row, uint256 col, uint256 feeCol) internal pure returns(int256) {\n        uint256 i = (row * 61 + col) * 1 + feeCol;\n        uint256 v = uint256(uint8(t[2*i])) * 256 + uint256(uint8(t[2*i+1]));\n        return v >= 32768 ? int256(v) - 65536 : int256(v);\n    }\n    function _tail(uint256 spot, uint256 p, uint256 depth, uint256 fee, bool bid) internal pure returns(int256) {\n        if (TAIL_KAPPA == 0 || p == 0) return 0;\n        int256 coord = (int256(spot) - int256(p)) * 10000 / int256(p) + 150;\n        if (coord < 0) coord = 0;\n        if (coord > 300) coord = 300;\n        uint256 c = uint256(coord) / 5;\n        uint256 cw = uint256(coord) % 5;\n        if (c == 60) { c = 59; cw = 5; }\n        uint256 dv = depth / WAD;\n        if (dv < 7000) dv = 7000;\n        if (dv > 13000) dv = 13000;\n        uint256 r = (dv - 7000) / 1000;\n        uint256 rw = (dv - 7000) % 1000;\n        if (r == 6) { r = 5; rw = 1000; }\n        bytes memory t = bid ? TAIL_BID : TAIL_ASK;\n        uint256 fc = 0;\n        int256 a = (_tailAt(t,r,c,fc)*int256(5-cw)+_tailAt(t,r,c+1,fc)*int256(cw))/5;\n        int256 b = (_tailAt(t,r+1,c,fc)*int256(5-cw)+_tailAt(t,r+1,c+1,fc)*int256(cw))/5;\n        int256 d = (a*int256(1000-rw)+b*int256(rw))/1000;\n        d = d * int256(BPS/10) * int256(TAIL_KAPPA) / int256(WAD);\n        if (d > int256(TAIL_DMAX)) d = int256(TAIL_DMAX);\n        if (d < -int256(TAIL_DMAX)) d = -int256(TAIL_DMAX);\n        return d;\n    }\n    function _tailAdd(uint256 f, int256 d) internal pure returns(uint256) {\n        if (d < 0) return f > uint256(-d) ? f - uint256(-d) : 0;\n        return f + uint256(d);\n    }\n\n    function getName() external pure override returns (string memory) { return \"tail_b_identity\"; }\n}\n","sha256":"c4a9943e43670402fb004e49a5f12c491f55980e99b0ce0b0295ced7329a68c3","family":"S0 identity","params":{"kappa":0,"DMAX_bps":5,"caps":"V10 30/36 bps","shuffle":false,"frozen_name":"identity","lambda":0.5},"parity":{"n":32,"max_abs_diff":0.0,"seeds":[796000,796031],"disabled_sha256":"c4a9943e43670402fb004e49a5f12c491f55980e99b0ce0b0295ced7329a68c3"},"screen":[{"name":"identity","sha256":"c4a9943e43670402fb004e49a5f12c491f55980e99b0ce0b0295ced7329a68c3","n":256,"mean_diff":0.0,"se":0.0,"worst":[{"seed":790000,"d":0.0},{"seed":790001,"d":0.0},{"seed":790002,"d":0.0},{"seed":790003,"d":0.0},{"seed":790004,"d":0.0}],"retail_edge_delta":0.0,"arb_edge_delta":0.0,"gas":{"max_ok":192874,"init_max_ok":220972,"oog":0}},{"name":"identity_45","sha256":"12f229e126e727a9e268a009a53c60b3bf25786e229d95a8efb37f0cf8bfef34","n":256,"mean_diff":-0.01382835602648913,"se":0.009143724062452929,"worst":[{"seed":790045,"d":-0.4779464643505662},{"seed":790038,"d":-0.42610716621175015},{"seed":790108,"d":-0.40289382234084314},{"seed":790063,"d":-0.3898277307486069},{"seed":790145,"d":-0.3622238114105585}],"retail_edge_delta":-0.014895109016164199,"arb_edge_delta":0.0010667529896761507,"gas":{"max_ok":192752,"init_max_ok":220972,"oog":0}},{"name":"s1_extra_k0.5_d2","sha256":"4b7efbfa3c031fb545b7814d1ed93f01c834d58ce37e80da5901efd474c45153","n":256,"mean_diff":-0.6570177050893569,"se":0.044456990151087984,"worst":[{"seed":790187,"d":-3.589406912036111},{"seed":790196,"d":-3.3885160408460706},{"seed":790053,"d":-2.7986637709054776},{"seed":790023,"d":-2.43804914600463},{"seed":790038,"d":-2.309732101203963}],"retail_edge_delta":-2.029077421570028,"arb_edge_delta":1.3720597164806718,"gas":{"max_ok":202754,"init_max_ok":220978,"oog":0}},{"name":"s1_extra_k1_d20","sha256":"6aa5ce35dd6305c289c24af680e7f8b0b974370baeaacc7849a600f1a1a31b34","n":256,"mean_diff":-10.477919217969896,"se":0.13093262370037367,"worst":[{"seed":790053,"d":-19.715360657202496},{"seed":790124,"d":-15.34559375320407},{"seed":790165,"d":-15.113677252351636},{"seed":790254,"d":-14.845526414255687},{"seed":790202,"d":-14.31013318640214}],"retail_edge_delta":-15.550973266060389,"arb_edge_delta":5.073054048090492,"gas":{"max_ok":202732,"init_max_ok":220978,"oog":0}},{"name":"s1_extra_k1.5_d10","sha256":"f7e3b2143b71f4097c20776cba21cbffeaf846d40ce66ed4590cfae34aa45e6c","n":256,"mean_diff":-8.624675921908487,"se":0.1280462779055474,"worst":[{"seed":790053,"d":-18.477327710639884},{"seed":790124,"d":-14.382694515434878},{"seed":790220,"d":-13.413230054278756},{"seed":790109,"d":-12.824832168009152},{"seed":790202,"d":-12.803411834072676}],"retail_edge_delta":-13.807105217951662,"arb_edge_delta":5.182429296043177,"gas":{"max_ok":202754,"init_max_ok":220978,"oog":0}},{"name":"s1_l0_k0.5_d5","sha256":"2975bd70af22280fce6e133bd986aa2980198085da6dfe600cf822fc39a5537c","n":256,"mean_diff":-1.6133868935044555,"se":0.06664650037393431,"worst":[{"seed":790187,"d":-4.518791965985088},{"seed":790053,"d":-4.477074545262212},{"seed":790196,"d":-4.314064607834894},{"seed":790106,"d":-3.984373379394924},{"seed":790124,"d":-3.6302554504953832}],"retail_edge_delta":-4.00027434705512,"arb_edge_delta":2.3868874535506666,"gas":{"max_ok":206151,"init_max_ok":220978,"oog":0}},{"name":"s1_l0_k1_d10","sha256":"48638be5846b8a1d724b9022c41bf271f9b1bdbeb9b0ef8b04512602de706f15","n":256,"mean_diff":-5.0060495850338675,"se":0.09870280925265032,"worst":[{"seed":790053,"d":-9.956192115989552},{"seed":790106,"d":-8.770989888048462},{"seed":790165,"d":-8.72986619074129},{"seed":790196,"d":-8.40767827053412},{"seed":790187,"d":-8.372229707954034}],"retail_edge_delta":-9.17599735514856,"arb_edge_delta":4.169947770114692,"gas":{"max_ok":203268,"init_max_ok":220978,"oog":0}},{"name":"s1_l0.5_k0.5_d5","sha256":"74abac4d4fc18593ce50424b55049e9a0725e4c7159ed4c15469f9a1fc81c764","n":256,"mean_diff":-2.8403984038269607,"se":0.07716366900584586,"worst":[{"seed":790196,"d":-7.085545070442549},{"seed":790053,"d":-6.795458004362331},{"seed":790187,"d":-6.607105346525714},{"seed":790106,"d":-6.264929900270658},{"seed":790124,"d":-5.855948757123656}],"retail_edge_delta":-5.732718191569111,"arb_edge_delta":2.892319787742151,"gas":{"max_ok":202754,"init_max_ok":220978,"oog":0}},{"name":"s1_l0.5_k1_d10","sha256":"7b90d806afa2f040ef1b45107bc5aa96d70b652a435980a1b282c344a6994fd8","n":256,"mean_diff":-8.106876689218165,"se":0.11649161763409288,"worst":[{"seed":790053,"d":-15.778788039059236},{"seed":790124,"d":-13.003398829204002},{"seed":790196,"d":-12.120349544128658},{"seed":790165,"d":-12.05582439514643},{"seed":790220,"d":-11.999610263384852}],"retail_edge_delta":-12.991350223246306,"arb_edge_delta":4.884473534028144,"gas":{"max_ok":202754,"init_max_ok":220978,"oog":0}},{"name":"s1_l1_k0.5_d5","sha256":"5c1c94333a675abd8b825fa7346bd3ee7ca93c0b7d784283930c788be0257bc6","n":256,"mean_diff":-5.17681752629071,"se":0.09281240592338875,"worst":[{"seed":790053,"d":-10.462851472723173},{"seed":790106,"d":-9.534346847920915},{"seed":790187,"d":-9.230455515135418},{"seed":790196,"d":-8.674442627301232},{"seed":790124,"d":-8.60469242190129}],"retail_edge_delta":-8.49165509803333,"arb_edge_delta":3.3148375717426246,"gas":{"max_ok":202715,"init_max_ok":220978,"oog":0}},{"name":"s1_l1_k1_d10","sha256":"c598c2cda30753ebae4f0e496a5bb9ed4d50b8842d26213be43b6ae074b4fc7d","n":256,"mean_diff":-12.741005924969292,"se":0.15199231008131223,"worst":[{"seed":790053,"d":-23.940675446025352},{"seed":790124,"d":-18.80288333262331},{"seed":790165,"d":-18.647874115741104},{"seed":790202,"d":-18.39223972272123},{"seed":790106,"d":-18.08265926693673}],"retail_edge_delta":-18.37413667472659,"arb_edge_delta":5.633130749757299,"gas":{"max_ok":202715,"init_max_ok":220978,"oog":0}},{"name":"lite_l0","sha256":"984bc7c6ac52467cfed30fed865e047ece5aa5d283fbd767b1f9dbceb6f8cf16","n":256,"mean_diff":-0.12912197007535253,"se":0.027247383922193495,"worst":[{"seed":790196,"d":-1.6915976613994417},{"seed":790053,"d":-1.4439136379664887},{"seed":790017,"d":-1.3056499859745827},{"seed":790202,"d":-1.2559500993961592},{"seed":790029,"d":-1.1493584326409518}],"retail_edge_delta":-0.8011703028793218,"arb_edge_delta":0.6720483328039717,"gas":{"max_ok":203347,"init_max_ok":220978,"oog":0}},{"name":"lite_l0.5","sha256":"32a8cf10eb665ad35d69932226eb463abe1b6a1c2d2ddb35d01cd87413d9818e","n":256,"mean_diff":-0.4677546798620362,"se":0.03506572941669741,"worst":[{"seed":790196,"d":-2.426167610707239},{"seed":790038,"d":-2.159042407169977},{"seed":790227,"d":-1.7607632646015645},{"seed":790068,"d":-1.6971508788835763},{"seed":790089,"d":-1.6562645119648778}],"retail_edge_delta":-1.354758439066348,"arb_edge_delta":0.887003759204316,"gas":{"max_ok":206179,"init_max_ok":220978,"oog":0}},{"name":"lite_l1","sha256":"634867ba986ab5c990d8869cd10d0f44663fd80b1f13423f588c78f2580388bc","n":256,"mean_diff":-3.101162168948867,"se":0.059752772955896434,"worst":[{"seed":790196,"d":-6.112315089806771},{"seed":790106,"d":-5.467800423555559},{"seed":790053,"d":-5.368794555250815},{"seed":790076,"d":-5.328154356247978},{"seed":790089,"d":-5.1499223531338885}],"retail_edge_delta":-4.607451887548747,"arb_edge_delta":1.5062897185998856,"gas":{"max_ok":202671,"init_max_ok":220978,"oog":0}},{"name":"s3_k0.25","sha256":"dee17eb1e74de1c5dab39dff6d00185b9e610077d7e42e81b470c1e553d331d1","n":256,"mean_diff":-10.572203915305863,"se":0.13822880043811012,"worst":[{"seed":790053,"d":-17.528958121187657},{"seed":790124,"d":-15.67991185125095},{"seed":790106,"d":-15.649688428903119},{"seed":790165,"d":-15.367736260978404},{"seed":790017,"d":-15.351507736730923}],"retail_edge_delta":-17.180656163773968,"arb_edge_delta":6.608452248468108,"gas":{"max_ok":211047,"init_max_ok":220981,"oog":0}},{"name":"s3_k0.5","sha256":"d85705c4706fca564102f4db8d8198367dfa8e57cabbcf9ad3355bbbffd1b3c7","n":256,"mean_diff":-12.229235761397542,"se":0.16063852196826883,"worst":[{"seed":790053,"d":-22.92716604497332},{"seed":790124,"d":-18.244477159681537},{"seed":790165,"d":-17.986475137624325},{"seed":790106,"d":-17.773514109614666},{"seed":790175,"d":-17.691818930249156}],"retail_edge_delta":-20.392388383237193,"arb_edge_delta":8.163152621839654,"gas":{"max_ok":211085,"init_max_ok":220981,"oog":0}},{"name":"s3_k1","sha256":"62b903f687a30682d615e9228cbdadb17a13b9dc4faaf6708db3e10425961552","n":256,"mean_diff":-12.229235761397542,"se":0.16063852196826883,"worst":[{"seed":790053,"d":-22.92716604497332},{"seed":790124,"d":-18.244477159681537},{"seed":790165,"d":-17.986475137624325},{"seed":790106,"d":-17.773514109614666},{"seed":790175,"d":-17.691818930249156}],"retail_edge_delta":-20.392388383237193,"arb_edge_delta":8.163152621839654,"gas":{"max_ok":211085,"init_max_ok":220981,"oog":0}},{"name":"s1_45_l0","sha256":"106bf194ee66ec081f74ab4a8fd34a090d8d96a9ca8ae1f9c886b60713fae0c2","n":256,"mean_diff":-1.6682311085505699,"se":0.06723751410438061,"worst":[{"seed":790187,"d":-4.668401128944197},{"seed":790196,"d":-4.617988542120884},{"seed":790053,"d":-4.506599610110015},{"seed":790106,"d":-4.441759131692152},{"seed":790136,"d":-4.095054740343244}],"retail_edge_delta":-4.060621223958012,"arb_edge_delta":2.3923901154074425,"gas":{"max_ok":206151,"init_max_ok":220978,"oog":0}},{"name":"s1_45_l0.5","sha256":"baf6193648ca67a4d392e133eae0e63fd61fac3e01394802bf45ffb37eb99b2d","n":256,"mean_diff":-2.8983273069698696,"se":0.07886955699801866,"worst":[{"seed":790053,"d":-6.81838900084108},{"seed":790196,"d":-6.780641115901744},{"seed":790187,"d":-6.610564997605707},{"seed":790106,"d":-6.574101823523051},{"seed":790133,"d":-5.927550027029383}],"retail_edge_delta":-5.7953912853813945,"arb_edge_delta":2.8970639784115297,"gas":{"max_ok":202754,"init_max_ok":220978,"oog":0}},{"name":"s1_45_l1","sha256":"40a8ee742c8410c4e9ebeffead1b50ef83dfed58a6a2af06dff5d766bfe81086","n":256,"mean_diff":-5.203310521984799,"se":0.09324680817956434,"worst":[{"seed":790053,"d":-10.313193049106985},{"seed":790106,"d":-9.951802512673794},{"seed":790187,"d":-9.153798910811474},{"seed":790196,"d":-8.995355871997845},{"seed":790133,"d":-8.521097917390648}],"retail_edge_delta":-8.521668852954942,"arb_edge_delta":3.318358330970149,"gas":{"max_ok":202715,"init_max_ok":220978,"oog":0}},{"name":"F2_center","sha256":"babac03c8d91dfc4dea11e18b7e2a8f1327d2f19b8b3fbcfcb34ccfac234a178","n":256,"mean_diff":-3.1789718114513246,"se":0.07479714872537403,"worst":[{"seed":790040,"d":-6.839352139891616},{"seed":790180,"d":-6.65132296922684},{"seed":790018,"d":-6.163385040454386},{"seed":790006,"d":-6.070437194164867},{"seed":790229,"d":-5.991806054998449}],"retail_edge_delta":2.1980503797750917,"arb_edge_delta":-5.377022191226416,"gas":{"max_ok":203432,"init_max_ok":220978,"oog":0}},{"name":"F5_center","sha256":"a6ab970034478065fc268d7292d93e25c810eb9e92ca5ed65d34106ab7d987f9","n":256,"mean_diff":-2.6777592400916777,"se":0.06611960665639315,"worst":[{"seed":790084,"d":-5.6312804608134},{"seed":790053,"d":-5.176673041482331},{"seed":790089,"d":-5.0563616693819995},{"seed":790134,"d":-4.88535135848133},{"seed":790190,"d":-4.811364429612468}],"retail_edge_delta":-5.546729559417542,"arb_edge_delta":2.868970319325863,"gas":{"max_ok":202811,"init_max_ok":220978,"oog":0}},{"name":"frozen_F2","sha256":"76795f4bb95ebee95c60404d47df6996fb907aa2494c0823d483e98a565b9fed","n":256,"mean_diff":0.0,"se":0.0,"worst":[{"seed":790000,"d":0.0},{"seed":790001,"d":0.0},{"seed":790002,"d":0.0},{"seed":790003,"d":0.0},{"seed":790004,"d":0.0}],"retail_edge_delta":0.0,"arb_edge_delta":0.0,"gas":{"max_ok":192874,"init_max_ok":220972,"oog":0}},{"name":"frozen_F5","sha256":"b6cf10dcf31673a5c713310bee9c2ee700b7ca7403de5c6857667f7bcdf6e7a7","n":256,"mean_diff":0.0,"se":0.0,"worst":[{"seed":790000,"d":0.0},{"seed":790001,"d":0.0},{"seed":790002,"d":0.0},{"seed":790003,"d":0.0},{"seed":790004,"d":0.0}],"retail_edge_delta":0.0,"arb_edge_delta":0.0,"gas":{"max_ok":192874,"init_max_ok":220972,"oog":0}},{"name":"probe_F2","sha256":"cbff99a0c0133fa09b8ad6c82ad60b957c7b1436148636cfac8f83d19b1a1df9","n":256,"mean_diff":-3.347790896701661,"se":0.07061340575460645,"worst":[{"seed":790040,"d":-7.088444290039433},{"seed":790180,"d":-6.987789710457605},{"seed":790191,"d":-6.189483800050084},{"seed":790006,"d":-6.150168831906171},{"seed":790018,"d":-6.142953531357648}],"retail_edge_delta":1.9480201175421314,"arb_edge_delta":-5.2958110142437915,"gas":{"max_ok":203436,"init_max_ok":220978,"oog":0}},{"name":"probe_F5","sha256":"892ae279d90fc6075693019ae8ebb65a89e86cba87f28139e35eb015b30d6a18","n":256,"mean_diff":-0.15808698983365232,"se":0.02415769576701538,"worst":[{"seed":790017,"d":-1.5031437086696542},{"seed":790171,"d":-1.3429131229016775},{"seed":790089,"d":-1.2768293745601795},{"seed":790023,"d":-1.2469416455228952},{"seed":790238,"d":-1.1877202177777235}],"retail_edge_delta":-0.733334052673154,"arb_edge_delta":0.5752470628395017,"gas":{"max_ok":202698,"init_max_ok":220978,"oog":0}}],"re_check":{"seeds":[794000,794255],"selection":{"top_two":["identity","identity_45"],"identity_added":false,"active_primary_diagnostic":"lite_l0","selection_rule":"largest valid screen mean across all arms including F2/F5, plus identity and the best nonzero primary as a prespecified diagnostic"},"arms":[{"name":"identity","sha256":"c4a9943e43670402fb004e49a5f12c491f55980e99b0ce0b0295ced7329a68c3","n":256,"mean_diff":0.0,"se":0.0,"worst":[{"seed":794000,"d":0.0},{"seed":794001,"d":0.0},{"seed":794002,"d":0.0},{"seed":794003,"d":0.0},{"seed":794004,"d":0.0}],"retail_edge_delta":0.0,"arb_edge_delta":0.0,"gas":{"max_ok":196513,"init_max_ok":220972,"oog":0}},{"name":"identity_45","sha256":"12f229e126e727a9e268a009a53c60b3bf25786e229d95a8efb37f0cf8bfef34","n":256,"mean_diff":-0.0035282948228152478,"se":0.008421570020916714,"worst":[{"seed":794212,"d":-0.3467105241355739},{"seed":794136,"d":-0.31988662813148494},{"seed":794221,"d":-0.3121476446911515},{"seed":794238,"d":-0.29231461587312424},{"seed":794055,"d":-0.2897399197803452}],"retail_edge_delta":-0.011529463455610012,"arb_edge_delta":0.008001168632800662,"gas":{"max_ok":196513,"init_max_ok":220972,"oog":0}},{"name":"lite_l0","sha256":"984bc7c6ac52467cfed30fed865e047ece5aa5d283fbd767b1f9dbceb6f8cf16","n":256,"mean_diff":-0.18845794091692447,"se":0.026315392183471772,"worst":[{"seed":794174,"d":-1.9659780989900355},{"seed":794109,"d":-1.2645685953216343},{"seed":794067,"d":-1.256173241490501},{"seed":794139,"d":-1.1037918622708958},{"seed":794209,"d":-1.0774845653060083}],"retail_edge_delta":-0.8700665285334892,"arb_edge_delta":0.6816085876165632,"gas":{"max_ok":207130,"init_max_ok":220978,"oog":0}}]},"held_out":{"seeds":[795000,795511],"frozen":{"name":"identity","sha256":"c4a9943e43670402fb004e49a5f12c491f55980e99b0ce0b0295ced7329a68c3","n":512,"mean_diff":0.0,"se":0.0,"worst":[{"seed":795000,"d":0.0},{"seed":795001,"d":0.0},{"seed":795002,"d":0.0},{"seed":795003,"d":0.0},{"seed":795004,"d":0.0}],"retail_edge_delta":0.0,"arb_edge_delta":0.0,"gas":{"max_ok":195637,"init_max_ok":220972,"oog":0}},"ablation":{"name":"frozen_F2","sha256":"76795f4bb95ebee95c60404d47df6996fb907aa2494c0823d483e98a565b9fed","n":512,"mean_diff":0.0,"se":0.0,"worst":[{"seed":795000,"d":0.0},{"seed":795001,"d":0.0},{"seed":795002,"d":0.0},{"seed":795003,"d":0.0},{"seed":795004,"d":0.0}],"retail_edge_delta":0.0,"arb_edge_delta":0.0,"gas":{"max_ok":195637,"init_max_ok":220972,"oog":0}},"shuffled_ablation":{"name":"frozen_F5","sha256":"b6cf10dcf31673a5c713310bee9c2ee700b7ca7403de5c6857667f7bcdf6e7a7","n":512,"mean_diff":0.0,"se":0.0,"worst":[{"seed":795000,"d":0.0},{"seed":795001,"d":0.0},{"seed":795002,"d":0.0},{"seed":795003,"d":0.0},{"seed":795004,"d":0.0}],"retail_edge_delta":0.0,"arb_edge_delta":0.0,"gas":{"max_ok":195637,"init_max_ok":220972,"oog":0}},"frozen_vs_ablations":{"frozen_F2":{"paired":{"n":512,"mean_diff":0.0,"se":0.0,"worst":[{"seed":795000,"d":0.0},{"seed":795001,"d":0.0},{"seed":795002,"d":0.0},{"seed":795003,"d":0.0},{"seed":795004,"d":0.0}]},"retail_edge_delta":{"mean":0.0,"se":0.0},"arb_edge_delta":{"mean":0.0,"se":0.0},"reconciliation_max_abs":0.0},"frozen_F5":{"paired":{"n":512,"mean_diff":0.0,"se":0.0,"worst":[{"seed":795000,"d":0.0},{"seed":795001,"d":0.0},{"seed":795002,"d":0.0},{"seed":795003,"d":0.0},{"seed":795004,"d":0.0}]},"retail_edge_delta":{"mean":0.0,"se":0.0},"arb_edge_delta":{"mean":0.0,"se":0.0},"reconciliation_max_abs":0.0}},"v10_gas":{"max_ok":194259,"init_max_ok":220981,"oog":0,"revert":0,"other_halt":0,"tx_error":0,"bad_return":0}},"gas":{"max_ok":196513,"init_max_ok":220972,"oog":0},"falsifiers_run":{"F1":{"scope":"prespecified nonzero primary diagnostic on 512 held-out seeds; identity won selection","family":"S1-lite","kappa":0.5,"strict_S1_condition_tested":false,"mean_diff":-0.16149062615803778,"upper_2se":-0.1209154537955518,"below_0_2_upper":true},"F2":"Matched unclipped share(M)*T table; all other fitted inputs, kappa, lambda, DMAX and caps held fixed. If frozen was F2, the matched control restores clipped routing.","F3":{"s1_l0_k0.5_d5":{"mean_diff":-1.6133868935044555,"se":0.06664650037393431,"retail_edge_delta":-4.00027434705512,"arb_edge_delta":2.3868874535506666},"s1_l1_k0.5_d5":{"mean_diff":-5.17681752629071,"se":0.09281240592338875,"retail_edge_delta":-8.49165509803333,"arb_edge_delta":3.3148375717426246}},"F4":{"s1_l0.5_k0.5_d5":{"mean_diff":-2.8403984038269607,"se":0.07716366900584586},"lite_l0.5":{"mean_diff":-0.4677546798620362,"se":0.03506572941669741}},"F5":"Fixed seed-790000 permutation of spot-coordinate table rows, common across sides and depth; same residual magnitudes per depth. Matched held-out comparison above.","F6":{"scope":"Static uniform grid, not occupancy-weighted trajectory evidence","rows":[{"name":"identity","n":854,"pearson":null,"collapsed":null},{"name":"identity_45","n":854,"pearson":null,"collapsed":null},{"name":"s1_extra_k0.5_d2","n":854,"pearson":0.06933044355364651,"collapsed":false},{"name":"s1_extra_k1_d20","n":854,"pearson":-0.014477537030597098,"collapsed":false},{"name":"s1_extra_k1.5_d10","n":854,"pearson":0.06557937582015377,"collapsed":false},{"name":"s1_l0_k0.5_d5","n":854,"pearson":0.3183803843099203,"collapsed":false},{"name":"s1_l0_k1_d10","n":854,"pearson":0.3183803843099203,"collapsed":false},{"name":"s1_l0.5_k0.5_d5","n":854,"pearson":0.053525417836400836,"collapsed":false},{"name":"s1_l0.5_k1_d10","n":854,"pearson":0.053525417836400836,"collapsed":false},{"name":"s1_l1_k0.5_d5","n":854,"pearson":-0.7035767319300834,"collapsed":false},{"name":"s1_l1_k1_d10","n":854,"pearson":-0.7035767319300834,"collapsed":false},{"name":"lite_l0","n":854,"pearson":0.3300311392952816,"collapsed":false},{"name":"lite_l0.5","n":854,"pearson":-0.24703026587702126,"collapsed":false},{"name":"lite_l1","n":854,"pearson":-0.8866054673543716,"collapsed":false},{"name":"s3_k0.25","n":854,"pearson":-0.4527245382082323,"collapsed":false},{"name":"s3_k0.5","n":854,"pearson":null,"collapsed":null},{"name":"s3_k1","n":854,"pearson":null,"collapsed":null},{"name":"s1_45_l0","n":854,"pearson":0.3183803843099203,"collapsed":false},{"name":"s1_45_l0.5","n":854,"pearson":0.053525417836400836,"collapsed":false},{"name":"s1_45_l1","n":854,"pearson":-0.7035767319300834,"collapsed":false},{"name":"F2_center","n":854,"pearson":-0.7584280170802932,"collapsed":false},{"name":"F5_center","n":854,"pearson":-0.017835386382966605,"collapsed":false}]}},"offline_source":{"generator_python_zlib_base64":"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","generator_sha256":"c74a62e17b8a5180a1e71b6226ba5f718c438880fb50886ca7047f2f6ef4905a","generator_decode":"zlib.decompress(base64.b64decode(generator_python_zlib_base64)).decode()","fitted":{"fit_seeds":[790000,790255],"config_fit_seeds":[790000,793999],"M":20.013303911184643,"rate":0.7980330324108584,"sd":0.0009448667904304872,"u_nodes":[-0.00295082152799499,3.6131900447256307e-07,0.002970888183358485],"u_weights":[0.25,0.5,0.25],"opposite_fee":0.0027878161785832986,"depth_grid":[7000.0,8000.0,9000.0,10000.0,11000.0,12000.0,13000.0],"spot_bps":[-150,-145,-140,-135,-130,-125,-120,-115,-110,-105,-100,-95,-90,-85,-80,-75,-70,-65,-60,-55,-50,-45,-40,-35,-30,-25,-20,-15,-10,-5,0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150],"fee_grid_bps":[0,30,60,90,120,150],"quadrature_z_points":141,"z_range":[-7,7],"fee_argmax_grid_bps":[0,150,1]},"input_recipe":"Run unchanged V10 on screen seeds 790000..790255 with the pinned harness; retain every 25th post-step [fair_price, own spot, normalizer spot, bid, ask]. Quantiles of log(normalizer spot/fair) define u nodes. Median own bid/ask defines the opposite fee. M and sigma use config draws from 790000..793999 only. No re-check or held-out data fit any table.","onchain":"Causal TradeInfo and unchanged V10 state only. pEst=0.7*pHat+0.3*fastHat; fair Y-depth=sqrt(reserveX*reserveY*pEst). Bilinear lookup in depth and signed spot/pEst offset. S1 marginalizes three u nodes offline; S1-lite uses u=0. S3 interpolates in actual fee, with nonnegative whole-bps table entries. Delta is bounded before the original tail compression and caps; no additional storage.","harness_python":"\"\"\"Run from the pinned amm-challenge checkout, with the brief's environment active.\npython harness.py --start 5000000 --n 2000 --out measured.json candidate.sol STACK.sol\nDo not use confirmation seeds to choose or change a strategy.\n\"\"\"\nimport argparse,hashlib,json,math\nfrom pathlib import Path\nimport numpy as np\nimport amm_sim_rs as sim\nfrom amm_competition.evm.compiler import SolidityCompiler\n\n\ndef configs(start,n):\n    configs=[]\n    for seed in range(start,start+n):\n        rng=np.random.default_rng(seed)\n        size=rng.uniform(19.,21.)\n        rate=rng.uniform(.6,1.)\n        sigma=rng.uniform(.000882,.001008)\n        configs.append(sim.SimulationConfig(n_steps=10000,initial_price=100.,\n            initial_x=100.,initial_y=10000.,gbm_mu=0.,gbm_sigma=sigma,gbm_dt=1.,\n            retail_arrival_rate=rate,retail_mean_size=size,retail_size_sigma=1.2,\n            retail_buy_prob=.5,seed=seed))\n    return configs\n\n\ndef decomposition(r,initial_fee=.0004):\n    # Fees are outside reserves, so k stays fixed up to floating-point roundoff.\n    # The arb acts before retail, using the preceding step's final spot and fees.\n    steps=r.steps\n    fair=np.array([s.fair_price for s in steps])\n    spots=np.array([r.initial_fair_price]+[s.spot_prices['submission'] for s in steps[:-1]])\n    bids=np.array([initial_fee]+[s.fees['submission'][0] for s in steps[:-1]])\n    asks=np.array([initial_fee]+[s.fees['submission'][1] for s in steps[:-1]])\n    x0,y0=r.initial_reserves['submission'];k=x0*y0\n    x=np.sqrt(k/spots);y=np.sqrt(k*spots)\n    ga=1-asks;gb=1-bids\n    out=np.minimum(np.maximum(x-np.sqrt(k/(ga*fair)),0),.99*x)\n    paid=(k/(x-out)-y)/ga\n    buyprofit=np.where(out>0,np.maximum(out*fair-paid,0),0)\n    gross=np.maximum((np.sqrt(k*gb/fair)-x)/gb,0)\n    received=y-k/(x+gb*gross)\n    sellprofit=np.where(gross>0,np.maximum(received-gross*fair,0),0)\n    arb=-float(np.sum(np.where(spots<fair,buyprofit,sellprofit)))\n    return arb,r.edges['submission']-arb\n\n\ndef aggregate(chunks):\n    out={}\n    for chunk in chunks:\n        for row in chunk['raw']:\n            key=(row['role'],row['callback'])\n            dest=out.setdefault(key,{'role':row['role'],'callback':row['callback']})\n            for k,v in row.items():\n                if k in ['role','callback']:continue\n                dest[k]=max(dest.get(k,0),v) if k=='max_ok_gas' else dest.get(k,0)+v\n    return list(out.values())\n\n\ndef run(source,start,n,vanilla,compiler):\n    compiled=compiler.compile(source)\n    assert compiled.success,compiled.errors\n    rows=[];chunks=[]\n    for first in range(start,start+n,20):\n        count=min(20,start+n-first)\n        sim.gas_stats_reset()\n        batch=sim.run_batch(list(compiled.bytecode),list(vanilla),configs(first,count),8)\n        results=batch.results\n        assert sorted(r.seed for r in results)==list(range(first,first+count))\n        for r in results:\n            arb,retail=decomposition(r)\n            rows.append({'seed':r.seed,'edge':r.edges['submission'],'arb':arb,'retail':retail})\n        chunks.append({'start':first,'raw':sim.gas_stats()})\n        del results,batch\n    return {'sha256':hashlib.sha256(source.encode()).hexdigest(),'rows':rows,\n            'raw_counters':aggregate(chunks),'chunks':chunks}\n\n\ndef stats(d):\n    d=np.asarray(d,dtype=float)\n    return {'mean':float(d.mean()),'se':float(d.std(ddof=1)/np.sqrt(len(d)))}\n\n\ndef compare(candidate,stack):\n    a={r['seed']:r for r in candidate['rows']};b={r['seed']:r for r in stack['rows']}\n    assert a.keys()==b.keys()\n    seeds=sorted(a)\n    d=np.array([a[s]['edge']-b[s]['edge'] for s in seeds])\n    arb=np.array([a[s]['arb']-b[s]['arb'] for s in seeds])\n    retail=np.array([a[s]['retail']-b[s]['retail'] for s in seeds])\n    assert np.max(np.abs(d-arb-retail))<1e-8\n    summary=stats(d)\n    return {'paired':{'n':len(d),'mean_diff':summary['mean'],'se':summary['se'],\n                'worst':[{'seed':seeds[i],'d':float(d[i])} for i in np.argsort(d)[:5]]},\n            'retail_edge_delta':stats(retail),'arb_edge_delta':stats(arb),\n            'reconciliation_max_abs':float(np.max(np.abs(d-arb-retail)))}\n\n\nif __name__=='__main__':\n    p=argparse.ArgumentParser()\n    p.add_argument('--start',type=int,required=True);p.add_argument('--n',type=int,required=True)\n    p.add_argument('--out',required=True);p.add_argument('candidate');p.add_argument('stack')\n    args=p.parse_args()\n    compiler=SolidityCompiler()\n    vanilla=compiler.compile(Path('contracts/src/VanillaStrategy.sol').read_text(),'VanillaStrategy')\n    assert vanilla.success,vanilla.errors\n    candidate=run(Path(args.candidate).read_text(),args.start,args.n,vanilla.bytecode,compiler)\n    stack=run(Path(args.stack).read_text(),args.start,args.n,vanilla.bytecode,compiler)\n    out=compare(candidate,stack);out.update(candidate=candidate,stack=stack)\n    errors=['oog','revert','other_halt','tx_error','bad_return']\n    out['valid']=all(not any(row.get(e,0) for e in errors)\n        for arm in [candidate,stack] for row in arm['raw_counters'])\n    Path(args.out).write_text(json.dumps(out,allow_nan=False))\n    print(json.dumps({k:v for k,v in out.items() if k not in ['candidate','stack']}))\n"},"notes":{"protocol":{"repository":"https://github.com/benedictbrady/amm-challenge","commit":"6b6921f8d463314aa7c96234e1be25a25245f704","compiler":"solc 0.8.24; optimizer 200; viaIR; paris","wheel_sha256":"aedb68280aca34c110968f00148387c95885207913fb2cf19a1ab4c5cfd6887a","baseline_v10_url":"https://api.imdnotdead.fun/artifacts/33f54e81f3372088e9eced52c0174f310ac348af98ef5727b73785c088679194","baseline_sha256":"cd9bdb45ab0537ad25c4fd90ca8618898cef6386de3df65f192eaef65fbca245","harness_source_sha256":"b8a1e110d746241c7201c95dd7e519f1388efffe7eaa0badeda30c3474e2447b","method":"Each arm alone against VanillaStrategy via amm_sim_rs.run_batch(...,8), chunks of 16. All 10,000 steps retained. NumPy default_rng(seed): size, rate, sigma; price seed=seed, retail seed=seed+1. Paired SE=sample SD/sqrt(n). Worst lists the five smallest paired differences. Arbitrage edge reconstructed from prior reserves, fees and current fair; retail=total-arb. gas_stats reset/snapshotted per arm/chunk. No seeds dropped.","runtime":{"python":"3.12.3","numpy":"2.5.4","py_solc_x":"2.1.0","pyrevm":"0.3.7"}},"calibration":{"name":"CH","n":1000,"seeds":[0,999],"sha256":"6dd68f77a70900319460215374143dbd5d924198450a46d9f5f91f6b1e3d35c3","mean_edge":525.5258821780834},"checks":{"numeric":{"point_mass_n":18,"point_mass_max_abs_bps":0.0,"mirror_max_abs_bps":0.0,"quadrature_comparison":[{"q":0.994,"side":"buy","coarse_residual_bps":9.999999999999991,"dense_residual_bps":9.999999999999991,"diff_bps":0.0},{"q":0.994,"side":"sell","coarse_residual_bps":0.0,"dense_residual_bps":0.0,"diff_bps":0.0},{"q":0.997,"side":"buy","coarse_residual_bps":11.999999999999996,"dense_residual_bps":11.999999999999996,"diff_bps":0.0},{"q":0.997,"side":"sell","coarse_residual_bps":17.0,"dense_residual_bps":17.0,"diff_bps":0.0},{"q":1,"side":"buy","coarse_residual_bps":14.000000000000002,"dense_residual_bps":15.0,"diff_bps":-0.9999999999999982},{"q":1,"side":"sell","coarse_residual_bps":14.000000000000002,"dense_residual_bps":15.0,"diff_bps":-0.9999999999999982},{"q":1.003,"side":"buy","coarse_residual_bps":17.0,"dense_residual_bps":17.0,"diff_bps":0.0},{"q":1.003,"side":"sell","coarse_residual_bps":11.999999999999996,"dense_residual_bps":11.999999999999996,"diff_bps":0.0},{"q":1.006,"side":"buy","coarse_residual_bps":0.0,"dense_residual_bps":0.0,"diff_bps":0.0},{"q":1.006,"side":"sell","coarse_residual_bps":9.999999999999991,"dense_residual_bps":9.999999999999991,"diff_bps":0.0}]},"decomposition":{"n_attempted":32,"n_no_retail":6,"steps":100,"configured_retail_rate":0,"effective_rate_floor":0.01,"max_abs_residual_retail":1.8826912251412864e-11},"reported_run_count":41,"reported_seed_evaluations":12584,"max_abs_edge_reconciliation":0,"all_saved_scored_runs_gas":{"max_ok":211085,"init_max_ok":220981,"oog":0},"validation":"Static validator, compiler opcode/storage checks, and runtime gas counters passed for each reported arm; frozen hashes verified before held-out evaluation."},"selection":"All 22 arms screened on 790000..790255. Best two by valid screen mean re-checked, plus identity and the best active primary arm when absent. Largest re-check mean frozen before held-out access. Matched controls screened after freeze without reselection. A nonzero primary diagnostic is retained if a zero-overlay policy wins.","limitations":["Local paired results versus V10 only; no STACK confirmation block or seeds >=5000000 used, per this item assignment. No board claim.","Normalizer end-step quantiles are an approximate offline prior. Fair value, the opposite fee and next-arb charge are model approximations; future retail reversals are omitted. Tables clip the state/depth domain.","141-point lognormal quadrature, 1-bps argmax grid; representative 561-point checks differed by at most 1 bp in the residual. S3 uses whole-bps stored premiums and fee interpolation.","Identity/cap-only selections have trivial zero-strength matched ablations; any separate active diagnostic is clearly labeled."],"identity_won_nonzero_probe":{"freeze":{"arm":{"name":"lite_l0","family":"S1-lite","lam":0,"kappa":0.5,"dmax":5,"cap":0,"shuffle":false,"sha256":"984bc7c6ac52467cfed30fed865e047ece5aa5d283fbd767b1f9dbceb6f8cf16"},"ablation":{"name":"probe_F2","family":"F2-lite","lam":0,"kappa":0.5,"dmax":5,"cap":0,"shuffle":false,"sha256":"cbff99a0c0133fa09b8ad6c82ad60b957c7b1436148636cfac8f83d19b1a1df9"},"shuffled":{"name":"probe_F5","family":"S1-lite","lam":0,"kappa":0.5,"dmax":5,"cap":0,"shuffle":true,"sha256":"892ae279d90fc6075693019ae8ebb65a89e86cba87f28139e35eb015b30d6a18"}},"held_out":{"lite_l0":{"name":"lite_l0","sha256":"984bc7c6ac52467cfed30fed865e047ece5aa5d283fbd767b1f9dbceb6f8cf16","n":512,"mean_diff":-0.16149062615803778,"se":0.020287586181242993,"worst":[{"seed":795145,"d":-1.593401472387768},{"seed":795278,"d":-1.4805785608723454},{"seed":795052,"d":-1.3423491582939278},{"seed":795461,"d":-1.300612502112017},{"seed":795048,"d":-1.2371578787062845}],"retail_edge_delta":-0.8467929469069203,"arb_edge_delta":0.6853023207488843,"gas":{"max_ok":206258,"init_max_ok":220978,"oog":0}},"probe_F2":{"name":"probe_F2","sha256":"cbff99a0c0133fa09b8ad6c82ad60b957c7b1436148636cfac8f83d19b1a1df9","n":512,"mean_diff":-3.219862213129404,"se":0.04928605761089935,"worst":[{"seed":795496,"d":-8.509582558233149},{"seed":795098,"d":-6.476392953165487},{"seed":795321,"d":-5.861274573283367},{"seed":795459,"d":-5.7765283145214426},{"seed":795202,"d":-5.73697766920111}],"retail_edge_delta":2.0452373821523455,"arb_edge_delta":-5.26509959528175,"gas":{"max_ok":205534,"init_max_ok":220978,"oog":0}},"probe_F5":{"name":"probe_F5","sha256":"892ae279d90fc6075693019ae8ebb65a89e86cba87f28139e35eb015b30d6a18","n":512,"mean_diff":-0.205552129460561,"se":0.016303774211991234,"worst":[{"seed":795278,"d":-1.3897957860313},{"seed":795464,"d":-1.3429895347486536},{"seed":795145,"d":-1.1435788785113346},{"seed":795066,"d":-1.1096346987792458},{"seed":795280,"d":-1.1000980606494295}],"retail_edge_delta":-0.7815656303847561,"arb_edge_delta":0.5760135009241962,"gas":{"max_ok":206216,"init_max_ok":220978,"oog":0}}},"frozen_vs_ablations":{"probe_F2":{"paired":{"n":512,"mean_diff":3.058371586971366,"se":0.057327892442833456,"worst":[{"seed":795008,"d":-0.5746288108235831},{"seed":795500,"d":-0.5520816984837893},{"seed":795048,"d":-0.3969100830934167},{"seed":795145,"d":-0.3718235076756855},{"seed":795216,"d":-0.2367893829205059}]},"retail_edge_delta":{"mean":-2.892030329059266,"se":0.06253253965787223},"arb_edge_delta":{"mean":5.950401916030634,"se":0.021117160433582624},"reconciliation_max_abs":1.0658141036401503e-13},"probe_F5":{"paired":{"n":512,"mean_diff":0.04406150330252323,"se":0.017641526569757274,"worst":[{"seed":795448,"d":-1.6669701035758635},{"seed":795013,"d":-0.9573321016798673},{"seed":795456,"d":-0.9028236645641528},{"seed":795192,"d":-0.8995416016888385},{"seed":795337,"d":-0.8625626429389968}]},"retail_edge_delta":{"mean":-0.06522731652216418,"se":0.016435137526569988},"arb_edge_delta":{"mean":0.10928881982468801,"se":0.007154823287346858},"reconciliation_max_abs":1.1368683772161603e-13}}},"gas_scope":"Submission afterSwap/afterInitialize maxima over the frozen hash on scored screen, re-check and held-out blocks; OOG counts summed.","conclusion":"Identity retained; no active size-tail policy won the re-check. Zero-strength held-out comparisons are structural identities; the nonzero diagnostic is reported separately."}}
