{"item": "b", "batch": "e03-v10-floor", "blocked": null, "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    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    uint256 constant KAPPA = 800000000000000000;\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        { uint256 fl = wmul(KAPPA, _isqrt(uncertainty * WAD)); if (fMid < fl) fMid = fl; }\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        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    function getName() external pure override returns (string memory) { return \"censored_10\"; }\n}\n", "sha256": "ebf9989a4a3d47e0473411213da63bc683598ffb1e855891e7ba2e8fec952e6e", "kappa": 0.8, "kappa_wad": "800000000000000000", "base": {"v10_sha256": "cd9bdb45ab0537ad25c4fd90ca8618898cef6386de3df65f192eaef65fbca245", "stack_sha256": "2eaafc7960e520b8a7fd322ec8afaff8fa677c730228a961efb509cc30b25719", "hashes_verified": true}, "change": "added `uint256 constant KAPPA = 0.8e18;` and, right after fMid gets its SIGMA_TOX term and before skew: `{ uint256 fl = wmul(KAPPA, _isqrt(uncertainty * WAD)); if (fMid < fl) fMid = fl; }`. Nothing else differs from V10.", "scale_check": {"v10": 0.0015919872381250002, "stack": 0.006404864248875, "ratio_stack_over_v10": 4.023188186117922, "seeds": "420000..420007", "per_seed": {"v10": [0.001536198713, 0.001624381275, 0.001654303595, 0.001581457868, 0.001609180188, 0.001561920563, 0.0015790436859999997, 0.001589412017], "stack": [0.006155095107, 0.006403848911, 0.006479557340000001, 0.006362324608999999, 0.00648726762, 0.006429459865, 0.006439196217, 0.006482164322]}, "method": "Instrumented copies of each strategy, run alone vs Vanilla. The copy writes floor(isqrt(slots[13]*WAD)/1e10), capped at 999999, into the low 6 decimal digits of the returned bid fee only (stored fees untouched, so the path is perturbed by <1e-12). The value is decoded from each step's reported submission bid fee and averaged over steps, then over seeds. Units: sqrt(uncertainty) as a WAD fraction."}, "screen": [{"kappa": 0.1, "n": 128, "seeds": "420000..420127", "mean_diff": 0.0, "se": 0.0, "max_abs_d": 0.0, "oog": 0, "stage": "brief_grid_first128"}, {"kappa": 0.2, "n": 128, "seeds": "420000..420127", "mean_diff": 0.0, "se": 0.0, "max_abs_d": 0.0, "oog": 0, "stage": "brief_grid_first128"}, {"kappa": 0.3, "n": 128, "seeds": "420000..420127", "mean_diff": 0.0, "se": 0.0, "max_abs_d": 0.0, "oog": 0, "stage": "brief_grid_first128"}, {"kappa": 0.45, "n": 128, "seeds": "420000..420127", "mean_diff": 0.0, "se": 0.0, "max_abs_d": 0.0, "oog": 0, "stage": "brief_grid_first128"}, {"kappa": 0.6, "n": 128, "seeds": "420000..420127", "mean_diff": 0.0, "se": 0.0, "max_abs_d": 0.0, "oog": 0, "stage": "brief_grid_first128"}, {"kappa": 0.0, "n": 16, "seeds": "420000..420015", "mean_diff": 0.0, "se": 0.0, "max_abs_d": 0.0, "oog": 0, "stage": "equality_check_kappa0_16seeds"}, {"kappa": 0.9, "n": 128, "seeds": "420000..420127", "mean_diff": -0.004652517342058626, "se": 0.00646802310597134, "max_abs_d": 0.5304426798447821, "oog": 0, "stage": "extension_scale_matched"}, {"kappa": 1.2, "n": 128, "seeds": "420000..420127", "mean_diff": -1.0140940239171563, "se": 0.055832647040764544, "max_abs_d": 2.576825075734405, "oog": 0, "stage": "extension_scale_matched"}, {"kappa": 1.8, "n": 128, "seeds": "420000..420127", "mean_diff": -35.40587510776863, "se": 0.48326383876975654, "max_abs_d": 48.55714830003575, "oog": 0, "stage": "extension_scale_matched"}, {"kappa": 2.4, "n": 128, "seeds": "420000..420127", "mean_diff": -139.21181415888586, "se": 1.6621109615886158, "max_abs_d": 186.64663462789593, "oog": 0, "stage": "extension_scale_matched"}, {"kappa": 4.0, "n": 128, "seeds": "420000..420127", "mean_diff": -274.9109547744654, "se": 3.722487984857109, "max_abs_d": 355.79017708861136, "oog": 0, "stage": "extension_scale_matched"}, {"kappa": 0.7, "n": 128, "seeds": "420000..420127", "mean_diff": 0.0, "se": 0.0, "max_abs_d": 0.0, "oog": 0, "stage": "extension_gap"}, {"kappa": 0.8, "n": 128, "seeds": "420000..420127", "mean_diff": 0.0005036065588561733, "se": 0.00031558127772019997, "max_abs_d": 0.03959263364282606, "oog": 0, "stage": "extension_gap"}, {"kappa": 0.6, "n": 384, "seeds": "420128..420511", "mean_diff": 3.530030074442673e-05, "se": 3.530030074442673e-05, "max_abs_d": 0.013555315485859865, "oog": 0, "stage": "shortlist_next384"}, {"kappa": 0.8, "n": 384, "seeds": "420128..420511", "mean_diff": 6.160340376378433e-05, "se": 0.00024395949408807918, "max_abs_d": 0.06332675198052584, "oog": 0, "stage": "shortlist_next384"}], "shortlist": [0.6, 0.8], "shortlist_reason": "All five brief-grid values (0.1..0.6) were exactly 0 on all 128 seeds: the floor never binds, because V10 sqrt(uncertainty) is about 4x smaller than STACK's. A scale-matched extension (0.7..4.0) showed the floor first binds near 0.8 and loses from 0.9 up (1.2: -1.01, 1.8: -35.4, 2.4: -139). Shortlist: 0.8 (only positive mean) and 0.6 (largest grid value; tests whether it stays non-binding).", "freeze": {"kappa": 0.8, "why": "higher mean on the 384 seeds (+6.2e-5, se 2.4e-4, vs 0.6: +3.5e-5, se 3.5e-5); the difference is not significant", "kappa0_equals_v10": "exact on 420000..420015 (16 seeds, max |d| = 0)", "amm_match_validate": "passed (censored_10 validated successfully)"}, "confirm": {"seeds": "5014000..5015999", "n": 2000, "vs_stack": {"n": 2000, "mean_diff": 0.18236411895041843, "se": 0.04046483899952992, "worst": [{"seed": 5014736, "d": -2.6497201519990767}, {"seed": 5015972, "d": -2.3327072156209283}, {"seed": 5015816, "d": -2.2674851910468306}, {"seed": 5015432, "d": -2.200836988101969}, {"seed": 5014094, "d": -2.0955581849354985}]}, "vs_v10": {"n": 2000, "mean_diff": 0.00017859562930885886, "se": 0.0001604829557281328, "worst": [{"seed": 5014623, "d": -0.05188252397704218}, {"seed": 5014258, "d": -0.04244894576521574}, {"seed": 5015630, "d": -0.040986983874006455}, {"seed": 5015666, "d": -0.04067232442235991}, {"seed": 5014028, "d": -0.037267700618372146}], "retail_edge_delta": {"mean": 4.3641685714732145e-05, "se": 0.00014350548048563033}, "arb_edge_delta": {"mean": 0.00013495394359404678, "se": 4.212133078356895e-05}, "seeds_with_nonzero_d": 972}, "retail_edge_delta": {"mean": -1.1130631958592558, "se": 0.015034961232340124}, "arb_edge_delta": {"mean": 1.2954273148096744, "se": 0.03362897368865322}, "reconciliation_max_abs": 2.2737367544323206e-13, "v10_vs_stack_same_block": {"n": 2000, "mean_diff": 0.18218552332110957, "se": 0.04046641997245594}, "arm_mean_edge": {"frozen": 521.575186732796, "v10": 521.5750081371667, "stack": 521.3928226138456}, "gas": {"max_ok": 220975, "oog": 0, "submission_afterSwap_max_ok": 196935, "halts_or_errors_total": 0, "per_arm": {"frozen": {"max_ok_any_callback": 220975, "oog": 0, "halts_or_errors": 0, "submission_afterSwap_max_ok": 196935}, "v10": {"max_ok_any_callback": 220981, "oog": 0, "halts_or_errors": 0, "submission_afterSwap_max_ok": 196048}, "stack": {"max_ok_any_callback": 220962, "oog": 0, "halts_or_errors": 0, "submission_afterSwap_max_ok": 214760}}}}, "checks": {"setup": "scratch/setup.sh ran cleanly; StarterStrategy validated", "CH_seeds_0_999_mean_edge": 525.5258821780834, "CH_matches_expected": true}, "notes": ["Result: the floor adds nothing on V10. Frozen vs V10 on the confirm block is +0.00018 (se 0.00016, 972/2000 seeds nonzero), noise-level. Frozen vs STACK is +0.182 (se 0.040), almost all inherited from V10 (V10 vs STACK on the same block: +0.182). That is far below the +5.0 the top-10 goal needs.", "The brief's grid {0.1..0.6} was set from STACK's scale. On V10 none of it binds (exactly 0 diff on 128 seeds). Scaling by the measured ~4x ratio puts STACK's winning 0.3 at about 1.2 on V10, which loses -1.01 there. A binding floor hurts V10, the same pattern as STACK at >=0.45.", "Max_ok across all callbacks is set by afterInitialize (~221k for every arm). The afterSwap peaks are frozen 196,935, V10 196,048, STACK 214,760; the STACK figure matches the brief's 214k. No OOG and no halts or errors in any arm or run.", "Arb edge is rebuilt with the harness decomposition function from V10's artifact (prior-step spot and fees, plus fair price); retail = total - arb; reconciliation error < 3e-13.", "Harness: the harness_source shipped in the V10 artifact (run_batch(X, Vanilla, configs, 8), configs per MatchRunner._build_configs with BASELINE_VARIANCE ranges, chunks of 20 with gas_stats per chunk). Confirm seeds were used once for this decision, after freezing.", "The brief-grid 128-seed screen results are copied from the run's console output; its JSON file was overwritten by the extension run that used the same seed range."]}