{
 "item": "verify",
 "batch": "e06-g-base",
 "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\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            uncertainty += wmul(sigmaForFast, sigmaForFast) * elapsedRaw;\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        {\n            uint256 ret = fastHat > 0 ? wdiv(absDiff(pImplied, fastHat), fastHat) : 0;\n            uint256 alpha;\n            if (firstInStep) {\n                uint256 processSigma = sigmaForFast;\n                uint256 obsVar = uncertainty + wmul(processSigma, processSigma);\n                uint256 probArb;\n                uint256 z2 = wdiv(wmul(ret, ret), obsVar);\n                uint256 density = _powWad(wdiv(WAD, WAD + z2 / 16), 8);\n                uint256 sigmaObs = _isqrt(obsVar * WAD);\n                uint256 odds = wmul(density, wdiv(6700000000000000, sigmaObs));\n                bool arbFlag = ret <= wmul(sigmaForFast, 1220000000000000000);\n                uint256 prior = arbFlag ? 650000000000000000 : 400000000000000000;\n                uint256 tr = trade.reserveY > 0 ? wdiv(trade.amountY, trade.reserveY) : 0;\n                if (tr > 3000000000000000) prior = wmul(prior, 6 * WAD / 10);\n                if (silent > 1) prior = wmul(prior, 8 * WAD / 10);\n                odds = wmul(odds, wdiv(prior, WAD - prior));\n                probArb = wdiv(odds, WAD + odds);\n                alpha = wmul(probArb, 600000000000000000) + wmul(WAD - probArb, 80000000000000000);\n                slots[15] = pImplied >= fastHat ? 1 : 2;\n                uncertainty = wmul(uncertainty, WAD - alpha);\n            } else {\n                if ((slots[15] == 1) == (pImplied >= fastHat)) alpha = PHAT_ALPHA_RETAIL;\n            }\n            uint256 gate = wmul(sigmaHat, GATE_SIGMA_MULT);\n            if (gate < MIN_GATE) gate = MIN_GATE;\n            if (ret <= gate) fastHat = wmul(fastHat, WAD - alpha) + wmul(pImplied, alpha);\n            slots[13] = uncertainty;\n        }\n\n        if (!firstInStep && feeUsed > 30 * BPS && gamma > 0) {\n            uint256 normalObs = trade.isBuy\n                ? wdiv(wmul(spot, gamma), WAD - 30 * BPS)\n                : wdiv(wmul(spot, WAD - 30 * BPS), gamma);\n            if ((slots[15] == 1) == (normalObs >= fastHat)) {\n                fastHat = wmul(fastHat, 9 * WAD / 10) + wmul(normalObs, WAD / 10);\n            }\n        }\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 (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        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    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 \"no_cubic\"; }\n}\n",
 "sha256": "610c1905e7dd5559b84e40a3b2d6f8e0b53a7b0ac7574ae33b6c1770a28367cb",
 "v2_sha256": "28417e116f57f1029fdd1803832e852574902c1ae7253c05657f317db76da4ab",
 "source_artifacts": {
  "H": "https://api.imd.fun/artifacts/db62deadd0a3ec885ad69bd3917fee793a924ead522776d73cc09110923e1e86",
  "Gsrc": "https://api.imd.fun/artifacts/f09f39f5092e5b1e56f156df10f397e5df0e194afa630ab24fc699adfd980d31"
 },
 "simulator_commit": "6b6921f8d463314aa7c96234e1be25a25245f704",
 "commands": [
  "clone pinned simulator commit in workspace; sh scratch/setup.sh",
  "git apply scratch/instrumentation.patch",
  "maturin develop --release --uv --manifest-path amm_sim_rs/Cargo.toml",
  "python scratch/tests.py",
  "python scratch/harness.py scratch/V2.sol 0 1000 scratch/calibration.json --control",
  "python scratch/harness.py scratch/G.sol 10000 10512 scratch/paired.json --ref scratch/V2.sol",
  "set GAS_LIMIT_TRADE=1000000; rebuild; run harness G vs V2 on 10000..10127",
  "restore GAS_LIMIT_TRADE=250000; rebuild"
 ],
 "calibration": {
  "seeds": [
   0,
   999
  ],
  "expected_mean": 526.9433475904315,
  "observed_mean": 526.9433475904315,
  "tolerance": 1e-08,
  "passed": true,
  "repeat_bit_identical": true,
  "paired_control": {
   "label": "control",
   "n": 1000,
   "mean_diff": 0.0,
   "se": 0.0,
   "sd": 0.0,
   "n_nonzero": 0,
   "max_abs_diff": 0.0,
   "worst": [
    {
     "seed": 0,
     "diff": 0.0,
     "edge_a": 479.82669838853377,
     "edge_b": 479.82669838853377
    },
    {
     "seed": 1,
     "diff": 0.0,
     "edge_a": 601.090284254864,
     "edge_b": 601.090284254864
    },
    {
     "seed": 2,
     "diff": 0.0,
     "edge_a": 416.1210479345224,
     "edge_b": 416.1210479345224
    },
    {
     "seed": 3,
     "diff": 0.0,
     "edge_a": 476.0685087435023,
     "edge_b": 476.0685087435023
    },
    {
     "seed": 4,
     "diff": 0.0,
     "edge_a": 523.204567294945,
     "edge_b": 523.204567294945
    }
   ]
  },
  "gas_first": {
   "submission": {
    "max_ok": 243510,
    "oog": 18,
    "other_errors": 0,
    "by_callback": {
     "afterInitialize": {
      "calls": 1000,
      "ok": 1000,
      "max_ok_gas": 236377,
      "sum_ok_gas": 236377000,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "afterSwap": {
      "calls": 10340327,
      "ok": 10340309,
      "max_ok_gas": 243510,
      "sum_ok_gas": 1152004012573,
      "oog": 18,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "getName": {
      "calls": 1000,
      "ok": 1000,
      "max_ok_gas": 21545,
      "sum_ok_gas": 21545000,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     }
    },
    "oog_seeds": [
     [
      96,
      1
     ],
     [
      99,
      1
     ],
     [
      194,
      1
     ],
     [
      413,
      1
     ],
     [
      430,
      4
     ],
     [
      494,
      2
     ],
     [
      588,
      2
     ],
     [
      802,
      2
     ],
     [
      979,
      4
     ]
    ]
   },
   "normalizer": {
    "max_ok": 22592,
    "oog": 0,
    "other_errors": 0,
    "by_callback": {
     "afterInitialize": {
      "calls": 1000,
      "ok": 1000,
      "max_ok_gas": 21796,
      "sum_ok_gas": 21796000,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "afterSwap": {
      "calls": 10762385,
      "ok": 10762385,
      "max_ok_gas": 22592,
      "sum_ok_gas": 242831320024,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "getName": {
      "calls": 1000,
      "ok": 1000,
      "max_ok_gas": 21526,
      "sum_ok_gas": 21526000,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     }
    },
    "oog_seeds": []
   }
  },
  "gas_repeat": {
   "submission": {
    "max_ok": 243510,
    "oog": 18,
    "other_errors": 0,
    "by_callback": {
     "afterInitialize": {
      "calls": 1000,
      "ok": 1000,
      "max_ok_gas": 236377,
      "sum_ok_gas": 236377000,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "afterSwap": {
      "calls": 10340327,
      "ok": 10340309,
      "max_ok_gas": 243510,
      "sum_ok_gas": 1152004012573,
      "oog": 18,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "getName": {
      "calls": 1000,
      "ok": 1000,
      "max_ok_gas": 21545,
      "sum_ok_gas": 21545000,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     }
    },
    "oog_seeds": [
     [
      96,
      1
     ],
     [
      99,
      1
     ],
     [
      194,
      1
     ],
     [
      413,
      1
     ],
     [
      430,
      4
     ],
     [
      494,
      2
     ],
     [
      588,
      2
     ],
     [
      802,
      2
     ],
     [
      979,
      4
     ]
    ]
   },
   "normalizer": {
    "max_ok": 22592,
    "oog": 0,
    "other_errors": 0,
    "by_callback": {
     "afterInitialize": {
      "calls": 1000,
      "ok": 1000,
      "max_ok_gas": 21796,
      "sum_ok_gas": 21796000,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "afterSwap": {
      "calls": 10762385,
      "ok": 10762385,
      "max_ok_gas": 22592,
      "sum_ok_gas": 242831320024,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "getName": {
      "calls": 1000,
      "ok": 1000,
      "max_ok_gas": 21526,
      "sum_ok_gas": 21526000,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     }
    },
    "oog_seeds": []
   }
  }
 },
 "paired": {
  "n": 512,
  "mean_diff": 0.0015018653465587173,
  "se": 0.0014330475717100326,
  "worst": {
   "seed": 10300,
   "diff": -0.03500575096325065,
   "edge_a": 650.5947451321298,
   "edge_b": 650.629750883093
  },
  "max_abs_diff": 0.7304987692035638,
  "valid": true,
  "invalid_reasons": [],
  "summary": {
   "label": "candidate_minus_V2",
   "n": 512,
   "mean_diff": 0.0015018653465587173,
   "se": 0.0014330475717100326,
   "sd": 0.03242616498301054,
   "n_nonzero": 9,
   "max_abs_diff": 0.7304987692035638,
   "worst": [
    {
     "seed": 10300,
     "diff": -0.03500575096325065,
     "edge_a": 650.5947451321298,
     "edge_b": 650.629750883093
    },
    {
     "seed": 10044,
     "diff": -0.023879557265217954,
     "edge_a": 581.4479025749735,
     "edge_b": 581.4717821322387
    },
    {
     "seed": 10295,
     "diff": -0.002757448246313743,
     "edge_a": 411.9648334328374,
     "edge_b": 411.9675908810837
    },
    {
     "seed": 10057,
     "diff": -0.0020430751104640876,
     "edge_a": 441.40959048771265,
     "edge_b": 441.4116335628231
    },
    {
     "seed": 10000,
     "diff": 0.0,
     "edge_a": 489.4875846678468,
     "edge_b": 489.4875846678468
    }
   ]
  },
  "seed_range_inclusive": [
   10000,
   10511
  ],
  "n_steps": 10000,
  "afterSwap_gas_limit": 250000,
  "G_gas": {
   "submission": {
    "max_ok": 220944,
    "oog": 0,
    "other_errors": 0,
    "by_callback": {
     "afterInitialize": {
      "calls": 512,
      "ok": 512,
      "max_ok_gas": 220944,
      "sum_ok_gas": 113123328,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "afterSwap": {
      "calls": 5297448,
      "ok": 5297448,
      "max_ok_gas": 211186,
      "sum_ok_gas": 519420973571,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "getName": {
      "calls": 512,
      "ok": 512,
      "max_ok_gas": 21557,
      "sum_ok_gas": 11037184,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     }
    },
    "oog_seeds": []
   },
   "normalizer": {
    "max_ok": 22592,
    "oog": 0,
    "other_errors": 0,
    "by_callback": {
     "afterInitialize": {
      "calls": 512,
      "ok": 512,
      "max_ok_gas": 21796,
      "sum_ok_gas": 11159552,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "afterSwap": {
      "calls": 5507942,
      "ok": 5507942,
      "max_ok_gas": 22592,
      "sum_ok_gas": 124275436048,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "getName": {
      "calls": 512,
      "ok": 512,
      "max_ok_gas": 21526,
      "sum_ok_gas": 11021312,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     }
    },
    "oog_seeds": []
   }
  },
  "V2_gas": {
   "submission": {
    "max_ok": 243701,
    "oog": 13,
    "other_errors": 0,
    "by_callback": {
     "afterInitialize": {
      "calls": 512,
      "ok": 512,
      "max_ok_gas": 236377,
      "sum_ok_gas": 121025024,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "afterSwap": {
      "calls": 5297454,
      "ok": 5297441,
      "max_ok_gas": 243701,
      "sum_ok_gas": 590137895022,
      "oog": 13,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "getName": {
      "calls": 512,
      "ok": 512,
      "max_ok_gas": 21545,
      "sum_ok_gas": 11031040,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     }
    },
    "oog_seeds": [
     [
      10043,
      2
     ],
     [
      10044,
      1
     ],
     [
      10057,
      1
     ],
     [
      10150,
      2
     ],
     [
      10231,
      1
     ],
     [
      10295,
      1
     ],
     [
      10300,
      1
     ],
     [
      10305,
      2
     ],
     [
      10386,
      2
     ]
    ]
   },
   "normalizer": {
    "max_ok": 22592,
    "oog": 0,
    "other_errors": 0,
    "by_callback": {
     "afterInitialize": {
      "calls": 512,
      "ok": 512,
      "max_ok_gas": 21796,
      "sum_ok_gas": 11159552,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "afterSwap": {
      "calls": 5507931,
      "ok": 5507931,
      "max_ok_gas": 22592,
      "sum_ok_gas": 124275187416,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "getName": {
      "calls": 512,
      "ok": 512,
      "max_ok_gas": 21526,
      "sum_ok_gas": 11021312,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     }
    },
    "oog_seeds": []
   }
  },
  "V2_oog_seeds_and_call_counts": [
   [
    10043,
    2
   ],
   [
    10044,
    1
   ],
   [
    10057,
    1
   ],
   [
    10150,
    2
   ],
   [
    10231,
    1
   ],
   [
    10295,
    1
   ],
   [
    10300,
    1
   ],
   [
    10305,
    2
   ],
   [
    10386,
    2
   ]
  ],
  "non_v2_oog_seed_count": 503,
  "non_v2_oog_exact_match": true,
  "non_v2_oog_nonzero_count": 0,
  "nonzero_differences": [
   {
    "seed": 10043,
    "diff": 0.028341622381276466,
    "v2_oog_calls": 2
   },
   {
    "seed": 10044,
    "diff": -0.023879557265217954,
    "v2_oog_calls": 1
   },
   {
    "seed": 10057,
    "diff": -0.0020430751104640876,
    "v2_oog_calls": 1
   },
   {
    "seed": 10150,
    "diff": 0.7304987692035638,
    "v2_oog_calls": 2
   },
   {
    "seed": 10231,
    "diff": 0.01073530243274945,
    "v2_oog_calls": 1
   },
   {
    "seed": 10295,
    "diff": -0.002757448246313743,
    "v2_oog_calls": 1
   },
   {
    "seed": 10300,
    "diff": -0.03500575096325065,
    "v2_oog_calls": 1
   },
   {
    "seed": 10305,
    "diff": 0.038812831313407514,
    "v2_oog_calls": 2
   },
   {
    "seed": 10386,
    "diff": 0.02425236369231243,
    "v2_oog_calls": 2
   }
  ],
  "all_differences_are_v2_oog_seeds": true,
  "retail_volume_y_terciles_based_on_V2": [
   {
    "cut_points": [
     70801.51346196356,
     81476.10583980606
    ]
   },
   {
    "tercile": "low",
    "n": 171,
    "volume_y_range": [
     57146.525064967944,
     70797.2247006939
    ],
    "mean_diff": -2.8073236004548715e-05,
    "se": 2.001281883049862e-05,
    "nonzero_differences": 2,
    "v2_oog_seed_count": 2
   },
   {
    "tercile": "middle",
    "n": 170,
    "volume_y_range": [
     70810.0909845029,
     81466.8400249973
    ],
    "mean_diff": 0.004834738744650354,
    "se": 0.004305399412403895,
    "nonzero_differences": 4,
    "v2_oog_seed_count": 4
   },
   {
    "tercile": "high",
    "n": 171,
    "volume_y_range": [
     81480.73874721043,
     98205.47208725398
    ],
    "mean_diff": -0.0002815789812615155,
    "se": 0.00025547493456060637,
    "nonzero_differences": 3,
    "v2_oog_seed_count": 3
   }
  ],
  "per_seed_evidence": {
   "encoding": "base64(gzip(JSON)); rows columns: seed,diff G-V2,V2 retail_volume_y,G retail_volume_y,V2 OOG calls",
   "data": "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"
  }
 },
 "identity_diagnostic": {
  "seeds": [
   10000,
   10127
  ],
  "afterSwap_gas_limit": 1000000,
  "scored": false,
  "valid": true,
  "paired": {
   "label": "candidate_minus_V2",
   "n": 128,
   "mean_diff": 0.0,
   "se": 0.0,
   "sd": 0.0,
   "n_nonzero": 0,
   "max_abs_diff": 0.0,
   "worst": [
    {
     "seed": 10000,
     "diff": 0.0,
     "edge_a": 489.4875846678468,
     "edge_b": 489.4875846678468
    },
    {
     "seed": 10001,
     "diff": 0.0,
     "edge_a": 552.3376592263003,
     "edge_b": 552.3376592263003
    },
    {
     "seed": 10002,
     "diff": 0.0,
     "edge_a": 443.04632640588295,
     "edge_b": 443.04632640588295
    },
    {
     "seed": 10003,
     "diff": 0.0,
     "edge_a": 651.7063161382114,
     "edge_b": 651.7063161382114
    },
    {
     "seed": 10004,
     "diff": 0.0,
     "edge_a": 484.2388697905094,
     "edge_b": 484.2388697905094
    }
   ]
  },
  "bit_identical_rows": true,
  "G_gas": {
   "submission": {
    "max_ok": 220944,
    "oog": 0,
    "other_errors": 0,
    "by_callback": {
     "afterInitialize": {
      "calls": 128,
      "ok": 128,
      "max_ok_gas": 220944,
      "sum_ok_gas": 28280832,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "afterSwap": {
      "calls": 1313463,
      "ok": 1313463,
      "max_ok_gas": 211186,
      "sum_ok_gas": 128871513927,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "getName": {
      "calls": 128,
      "ok": 128,
      "max_ok_gas": 21557,
      "sum_ok_gas": 2759296,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     }
    },
    "oog_seeds": []
   },
   "normalizer": {
    "max_ok": 22592,
    "oog": 0,
    "other_errors": 0,
    "by_callback": {
     "afterInitialize": {
      "calls": 128,
      "ok": 128,
      "max_ok_gas": 21796,
      "sum_ok_gas": 2789888,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "afterSwap": {
      "calls": 1361265,
      "ok": 1361265,
      "max_ok_gas": 22592,
      "sum_ok_gas": 30714145296,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "getName": {
      "calls": 128,
      "ok": 128,
      "max_ok_gas": 21526,
      "sum_ok_gas": 2755328,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     }
    },
    "oog_seeds": []
   }
  },
  "V2_gas": {
   "submission": {
    "max_ok": 264240,
    "oog": 0,
    "other_errors": 0,
    "by_callback": {
     "afterInitialize": {
      "calls": 128,
      "ok": 128,
      "max_ok_gas": 236377,
      "sum_ok_gas": 30256256,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "afterSwap": {
      "calls": 1313463,
      "ok": 1313463,
      "max_ok_gas": 264240,
      "sum_ok_gas": 146468627696,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "getName": {
      "calls": 128,
      "ok": 128,
      "max_ok_gas": 21545,
      "sum_ok_gas": 2757760,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     }
    },
    "oog_seeds": []
   },
   "normalizer": {
    "max_ok": 22592,
    "oog": 0,
    "other_errors": 0,
    "by_callback": {
     "afterInitialize": {
      "calls": 128,
      "ok": 128,
      "max_ok_gas": 21796,
      "sum_ok_gas": 2789888,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "afterSwap": {
      "calls": 1361265,
      "ok": 1361265,
      "max_ok_gas": 22592,
      "sum_ok_gas": 30714145296,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     },
     "getName": {
      "calls": 128,
      "ok": 128,
      "max_ok_gas": 21526,
      "sum_ok_gas": 2755328,
      "oog": 0,
      "revert": 0,
      "other_halt": 0,
      "tx_error": 0,
      "bad_return": 0
     }
    },
    "oog_seeds": []
   }
  },
  "restored_afterSwap_gas_limit": 250000,
  "restoration_rebuild_succeeded": true
 },
 "math_and_packing_checks": {
  "isqrt": {
   "exact_integer_replica_compared_to_math_isqrt": true,
   "cases": 20727,
   "includes_0_through_10000": true,
   "power_of_two_neighbors_through_256_bits": true,
   "deterministic_random_256_bit_inputs": true,
   "floor_equal": true
  },
  "slot2": {
   "layout": "(spot << 64) | timestamp",
   "timestamp_bits": 64,
   "spot_bits": 192,
   "roundtrip_boundary_cases": 5,
   "timestamp_max": 18446744073709551615,
   "spot_max": 6277101735386680763835789423207666416102355444464034512895,
   "scored_steps": 10000
  }
 },
 "harness_tests": {
  "counter_per_seed_global_mismatch_rejected": true,
  "abs_reconciliation_error_ge_1e-8_rejected": true,
  "per_seed_retail_volume_y_exported": true,
  "all_pass": true,
  "validity_cases": 13,
  "MatchRunner_config_equality": true,
  "allocation_scale_check": true,
  "unchanged_V2_score_and_repeated_rows": true
 },
 "reusable_sources_bundle": {
  "encoding": "base64(gzip(JSON mapping filename to UTF-8 source))",
  "files": [
   "setup.sh",
   "instrumentation.patch",
   "harness.py",
   "tests.py",
   "V2.sol"
  ],
  "data": "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"
 },
 "discrepancies": [
  "The paired +0.0015018653465587173 is specific to the measured 512-seed block; it is not an extrapolated gain.",
  "V2 OOG: 13 swap calls on 9 seeds. G OOG: zero. Every nonzero paired difference is on a V2 OOG seed; all other 503 seeds match exactly.",
  "The 1M-gas diagnostic was followed by a successful rebuild restoring the 250k afterSwap limit."
 ],
 "not_measured": [
  "No tuning or holdout run.",
  "No board submission or rank gain claimed."
 ]
}
