{"blocked":null,"files":[{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapeintStrategyV6.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"e0b6392c7fb06182c0943aedb9cd2f91b3eb0304c9bc479ad15991e5b901a15d","valid":true,"d32":-151.5192161389937,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV10.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"48531320796e8f34c43ab8ff70ea1c1aba7d3f9acc2617ee7d69ee23fbedef97","valid":false,"d32":null,"oog":130101,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV11.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"c283d82d8b347a2d6ae68e3919e45ea0a29d3f95aa3c31b743cb590e6f96edc5","valid":false,"d32":null,"oog":130101,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV12.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"b584a3d214fc34480b21ca047882381377ea2ea56c566258245e666a5af48bca","valid":false,"d32":null,"oog":11,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV13.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"5ebf24dcab47ab4a181205900a1ed06968bb0182e1cb8688c6688b6ab26ecad4","valid":false,"d32":null,"oog":130101,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV14.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"3748c673f4d22fcee93cfa5c7822cf7599280694878cf80b62f268f821a2d42c","valid":true,"d32":-151.52317602820798,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV15.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"e124086aadc2e1c2ed7a1341bfdc61bef96dd188f2f5fe07875d693beaaab79f","valid":true,"d32":-151.7312779626871,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV16.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"de32575846934efe813528098a0115e629fdbf3511cc5c2da1d90889d516cf38","valid":true,"d32":-466.25059958191116,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV17.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"ce89948bbd5a63f603e9f475d0da1407f33477c836ccf4424736cff1270674d1","valid":true,"d32":-157.61894434178504,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV18.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"d72aae13001844c0b855afbf751cd26cfbc5bc73b9ba9a75501a5d9085472302","valid":true,"d32":-151.52317602820798,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV19.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"adfd6a5a2e32a2e7dbbca3be1c7444c5d58eab701d81cd5d82855c4207402147","valid":true,"d32":-151.52317602820798,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV20.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"4e8b2f98fe7533ee01b33e3238f53d00fb13667c0ac72cae79ef0ad8de8c6290","valid":true,"d32":-151.52317602820798,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV21.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"11b90510d97cf336c4dc43922a50820c33c723ebc4d3b505a32c43a9c097d15c","valid":true,"d32":-151.52317602820798,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV22.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"42b8d89e8ef91e8839107dfc725f0ed152b55502ad55cc5a809a2337693554bd","valid":false,"d32":null,"oog":475466,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV23.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"494d3d2760c60eb7e66b07885d2808221d38877a20514a109b36801f4b632804","valid":true,"d32":-151.866180979329,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV24.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"0a7014df6fce59d6d8eb1082df5b59a53dfcfc9c84eca72fdaed6e594032c14e","valid":false,"d32":null,"oog":533460,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV25.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"cccf2169a6ac8b3078cbf9f402a357bb1c438aa895bf2f08b4d44179798def36","valid":false,"d32":null,"oog":533460,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV26.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"64cb1d0a5c2fc9691c2ea2c63a637e801ef163adf7c25ed52ecb0351af575399","valid":false,"d32":null,"oog":533460,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV27.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"f62ca54e830ae6238a067a0827e39ebc5965f1ac2f9ba1fe798fa19e34d85b8e","valid":false,"d32":null,"oog":533460,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV28.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"1840dbdc2894a7d8b97f684063fc2f65da9e4abf5855c4c367d12f6f99556a87","valid":false,"d32":null,"oog":533460,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV29.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"f3e317febad35a9294ea6902a1c6e302c10087aef4b1fbde504bf4b1e3d74884","valid":true,"d32":-151.866180979329,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV31.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"9b13b51ddd35dce4fe77c7dc5477f7dc41bca171203dbaf556b0f6087d4826f6","valid":false,"d32":null,"oog":533460,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV32.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"c1491456fe71afed0c443173f4fb66dae70243ff9274f0f2706178b55dd3aaed","valid":false,"d32":null,"oog":533460,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV33.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"c7d4ec00915307f5a4e26d0ac466a01d49a93ffa72b863cac0485c8db3c0b1f5","valid":false,"d32":null,"oog":533460,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV34.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"7cd055c850ae327ab5d3509ef579d3d71d514f5925e1d1785b4fee3d514d37a4","valid":true,"d32":-2.8743337699932106,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV35.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"b3499f7e7de56d4f5069c83674043c8495a0751e8a140cf5f924e22d1f5a7db7","valid":true,"d32":-17.00693581991463,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV36.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"ce63107ce461d95359b7a1dcd3421327e9d1fd5f2f6514f039303ee664caa0c5","valid":true,"d32":-2.9293691635171104,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV37.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"a5f9878752147ba90a5760fd9aa11d6581f16e6bb6a40f1ca1f6b95cc1203cc2","valid":true,"d32":-2.996294497785989,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV38.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"a0513d0900874ed69d15f0a2c088995781c27d615b519a5f165c14dbf26cf883","valid":true,"d32":-3.5601292211945417,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV39.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"5567ee16c871c753010cfba3c6e1e25173b0b209289735a58ed6d752e15a526e","valid":true,"d32":-2.90900635494852,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV4.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"0ad2aabaa5db1e9c3f860be704f1693e31382136f34c2d49fc6258e235c80d84","valid":true,"d32":-157.61133911857084,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV40.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"88e280c3b2b4eda33ff528e3814d7b5810cf74fc8d3c936e4f89ef2886a3c3bc","valid":true,"d32":-2.8743337699932106,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV41.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"2987050656354783961e646ed873ecfdb2d4bb3aa5299b0d49d81a1335cb2550","valid":true,"d32":-3.447027501160999,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV42.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"a7664f72ffef3f889590dd49be6061d82ec2e31488c446952543d3b644e89308","valid":true,"d32":-20.31953092495265,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV43.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"508c9a449ea20119590ec0e058b4d635251a826796c9125a5384eed198a070ab","valid":true,"d32":-2.872510517020782,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV44.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"40fdf409559e312e76c3e471d919d70ebd194aa353da87d40752d0556510ba0a","valid":true,"d32":-2.9770984150867985,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV45.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"139f529ac6dbfe48cf51930052ee9818df2931493fe97704643b263a53ca06cf","valid":true,"d32":-2.9099560527965966,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV46.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"7cd60d2ce108889d6ad242c56027ad6cc6e23918234e549ad3e9d3d841449cea","valid":true,"d32":-10.497609822742819,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV47.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"50946c29e7d3683a31b1e25e35b35c1bdcd501ddbc7aa69624a65c73c7a98b86","valid":true,"d32":-3.4778016691923597,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV48.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"bcf389d8c4ae886c08c2fae7f051f19178e655372c05b36c55e7aa1339c0e45d","valid":true,"d32":-3.11954735832855,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV49.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"076c571a09b0d020464c5ffd04741e8b0fde11d6a84da0d9974e1a428c194261","valid":true,"d32":-2.9042627670295236,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV5.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"076bfe56e582393bf120d63188f35116fe6d877e97b94d15886d86bae868f918","valid":true,"d32":-157.61133911857084,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV7.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"fd6a6236ae57d964790dc94a6e3048cda1268d748be860c64ba6d34ebb97283a","valid":true,"d32":-151.5192161389937,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV8.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"5c00968196c7ba7f1439280771e3ae138f1f3caa1d91c37934d179f3a888f5ea","valid":false,"d32":null,"oog":11,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/SapientStrategyV9.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"7ac7360fa24bcf54b55730707b6dc6d186b2cb2f0d003e1fb21dd47284b99558","valid":false,"d32":null,"oog":11,"validation_passed":true,"invalid_reason":"Runtime callback failure; score invalidated."},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/VanillaStrategy.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"64b62042f06d3b48d61c1387c0b6f08b0c291c9d2419a0ca65a5fc1d1cc19f96","valid":true,"d32":-189.78043012830778,"oog":0},{"fork":"maxnorm/amm-challenge","branch":"main","path":"contracts/src/refs/YQStrategy.sol","commit":"ee285c088f214145a743bee69628e2a780267492","sha256":"28dd08eecff2748c812c9ab2e267cc62a59f9af4eadd911e228e0f05d2ad36f2","valid":true,"d32":-2.8743337699932106,"oog":0},{"fork":"ccashwell/amm-challenge","branch":"claude/uniswap-v4-hooks-56HKd","path":"contracts/src/AMMStrategyBase.sol","commit":"9d2c72df292d374e5f0a411fb952681c674a6389","sha256":"1b135e669ddf1c72c978c5256cc5de014c63fbde9518d54d4e1a895f08af3fc8","valid":false,"d32":null,"oog":null,"invalid_reason":"Validating strategy...\nValidation failed:\n  - Contract must be named 'Strategy' and inherit from AMMStrategyBase\n  - Must implement getName() function\n  - Import 'v4-core/interfaces/IPoolManager.sol' is not allowed. Only './AMMStrategyBase.sol' and './IAMMStrategy.sol' are allowed.\n  - Import 'v4-core/types/PoolKey.sol' is not allowed. Only './AMMStrategyBase.sol' and './IAMMStrategy.sol' are allowed.\n  - Import 'v4-core/types/BalanceDelta.sol' is not allowed. Only './AMMStrategyBase.sol' and './IAMMStrategy.sol' are allowed.\n  - Import 'v4-core/types/BeforeSwapDelta.sol' is not allowed. Only './AMMStrategyBase.sol' and './IAMMStrategy.sol' are allowed.\n  - Missing required base imports: './AMMStrategyBase.sol'\n  - Redefining reserved identifier 'AMMStrategyBase' is not allowed."},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_best_asym.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"14bd2e2236deb3f93b1ba8ebe0ac5b924226f2f3081d5263f99b110078ca5959","valid":true,"d32":-151.7480092308896,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_fine_77.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"c085b6edb399a18d463382308c8e681b04c7d16e0ebda02fecf0d1e0c74c35b3","valid":true,"d32":-151.5088865477324,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_fine_78.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"6c459ccf26060307ffd156d1bc467ffb80e35a75f244cbde0f3ce2b381f200a6","valid":true,"d32":-151.5454246713048,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_fine_79.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"de5f023941955837455cee942eeebd1b1488e20ab635836e00230bef0e0890c3","valid":true,"d32":-151.60339894893724,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_fine_81.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"f42b60f2af7944037f6107b5ee0b49f2967a624d08cb4d29e105b27dab47dfbb","valid":true,"d32":-151.79612134881953,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_fine_82.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"c019d7234ddc18ca3bb0b957ab6dbc5f50482221b3819a1e86c18732222b1c36","valid":true,"d32":-151.92684112616314,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_fine_83.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"c2b465433927ad02b53517af13f7b241b5d192e7c3ee3dd625648562b6c91bff","valid":true,"d32":-152.08056644499067,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_sweep_75.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"24a40a28171c21115559e8bc35cb67c26f65180adb319fcec4077a7497ce4c27","valid":true,"d32":-151.51733895333967,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_sweep_78.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"53f4d5c38b2123707f4c478ae391e02b10a6e113f6b3f2e21e340de10de986f9","valid":true,"d32":-151.5454246713048,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_sweep_80.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"b6fb8a44c38cdd3b4e480ce8b4bd33bd7469247e84c4c00f9ef16972942e53a4","valid":true,"d32":-151.68595908862505,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_sweep_82.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"67410be477e6ffcf59bea3fff9c9403db391920c186573c77561da5e4417c5ff","valid":true,"d32":-151.92684112616314,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_sweep_85.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"03e57333989245177d09aca0cae3402e7845acfca94601eb5b5f3385fa706455","valid":true,"d32":-152.45506062797102,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_sweep_88.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"39deb3a83c1b5dd0edf18c31262a8274b4687ff954deeb51468b821b4052436e","valid":true,"d32":-153.18873084121506,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_sweep_90.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"102f6e3ac6b24b745f1f126380e2fd9211a88b9c2f9b9d8c957be567a9f67c26","valid":true,"d32":-153.7828866498501,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/_test_asym.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"d65b596d662cf9b0b07e2b44e7b67d62b961f79f3ca7e15b1f704cb6b0e46ab2","valid":true,"d32":-153.81735530159375,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/asymmetric_v3a.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"d3b95400b5e83a2a1303eb695240a6707ba82dfadd6239945a245dc4195fc5ff","valid":true,"d32":-151.66944697999895,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/asymmetric_v3b.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"74dfdab8759cb9d64ceae1736d29ec4aea7529e2602248f5fe2835942ffa2eab","valid":true,"d32":-151.6564335023175,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/combined_v4c.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"88cea0ee9d98216ce0a784bbdd6531e59ead6d9519d6fc57291a674f91244150","valid":true,"d32":-152.37009104264007,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/dir_adjust_v5.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"fb2561ca4bb9eb93ef3db40dd0ea663abbd3f37266a9a16632bb061926a3fac2","valid":true,"d32":-154.2013235916005,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/directional_v2b.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"d894d49e3f03145c98f62edcef7325b17de6b47d1e8012e4a7d86ba3b059c717","valid":true,"d32":-176.66052439563992,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/escalating_v3c.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"104e1a033852bcee3ab29e297aa38782b753ecc6b9e71064040d1177f3ef2cec","valid":true,"d32":-162.3585508237065,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/ewma_vol_v2c.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"a8cd6ae0089c725091018ccd93da2a72edb69c2e033a8f1be6066590ca57cf31","valid":true,"d32":-386.2807743457402,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/impact_reactive_v1.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"10bb1540a42fc7185ab0c4a9553289a4bebffdc5b7c7edfbca00545849311e26","valid":true,"d32":-151.891668626562,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/inventory_linear_v4b.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"066873bd482acc034dfdbff6bef82e2cb555e637020b1afb5a233e6f2d42e054","valid":true,"d32":-160.88342092731747,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/reverse_asym_v4a.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"aef7d5a3d85bd8ebf979c5d53212e1d74615db8bebef79d68e4d2c97c4ba6fbc","valid":true,"d32":-151.696531895626,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/static_asym.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"9536b1faf5addd2620eace7eca55a5a807b5948987f22901b0623597a02329b3","valid":true,"d32":-151.687790007221,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/timestamp_two_tier_v2a.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"635bb1a246d5bd5db629946ff3dba6974e700dfc68c08027d62c7fe3c71987de","valid":true,"d32":-190.73561858343928,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/timestamp_v3d.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"d4095b59faf7629076046460754f2388d5adaff27ad066f99ed479c78cee6cd2","valid":true,"d32":-156.7679408206091,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/vol_regime_dir_v5.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"4881dca3e5756812acb66bf65a4b51cfce112b75087376b4504d3f1d0a017c5c","valid":true,"d32":-123.80685007213376,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/vol_responsive_v5.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"178ee14eea2a014ea945295ca1dc097f4f454a1fa162f5e4a6ca0b0bd15d0683","valid":true,"d32":-198.21847945024524,"oog":0},{"fork":"enriquedlh97/amm-challenge","branch":"feat/strategy-development","path":"strategies/static_fee.sol","commit":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","sha256":"e3bc82954847fe40ed7ef525e016e0e668ee4f59b17785e07dd49a541a8b0b48","valid":true,"d32":-189.78043012830778,"oog":0},{"fork":"kmadorin/amm-challenge","branch":"main","path":"autoresearch/Strategy.sol","commit":"ec151d5a2da3810a65736d6dbe0519f81219286d","sha256":"f0999affeaeb0d3a9bfd432baa01ea879cc49e70ac9937b704f78d2137d578fd","valid":true,"d32":-189.78043012830778,"oog":0}],"top3":[{"sha256":"508c9a449ea20119590ec0e058b4d635251a826796c9125a5384eed198a070ab","paired":{"n":256,"mean_diff":-2.730271945093559,"se":0.07757488914538758,"worst":[{"seed":901156,"d":-9.29750342327577},{"seed":901180,"d":-8.009583494556182},{"seed":901133,"d":-5.57204877715094},{"seed":901204,"d":-5.372957274346618},{"seed":901048,"d":-5.306158381597811}]},"retail_edge_delta":{"mean":-1.8372337884720742,"se":0.09032151283699849},"arb_edge_delta":{"mean":-0.8930381566214871,"se":0.04572012993000737},"url":"https://github.com/maxnorm/amm-challenge/blob/ee285c088f214145a743bee69628e2a780267492/contracts/src/SapientStrategyV43.sol","gas":{"max_ok":152687,"oog":0,"other_errors":{"revert":0,"other_halt":0,"tx_error":0,"bad_return":0}},"mechanism":"V43 maintains a second, slower fair-price EMA with update weight 0.05, and adds a symmetric fee term when the fast/slow relative gap exceeds 1%, capped at a 10% gap. It also includes V34's cubic toxicity surcharge; RS2 has quadratic toxicity but no cubic surcharge or slow-EMA gap trigger. Its remaining stale-price, sigma, flow and direction components largely share RS2's fee family, so these are incremental mechanisms rather than a wholly new rule family.","mean_edge":531.004887294198},{"sha256":"7cd055c850ae327ab5d3509ef579d3d71d514f5925e1d1785b4fee3d514d37a4","paired":{"n":256,"mean_diff":-2.730905464885787,"se":0.07757919730518127,"worst":[{"seed":901156,"d":-9.29795016706089},{"seed":901180,"d":-8.009805892983081},{"seed":901133,"d":-5.570670043617838},{"seed":901204,"d":-5.373609550495189},{"seed":901048,"d":-5.3075022238934935}]},"retail_edge_delta":{"mean":-1.8372431375745042,"se":0.09031504848533768},"arb_edge_delta":{"mean":-0.8936623273112869,"se":0.04574538063572393},"url":"https://github.com/maxnorm/amm-challenge/blob/ee285c088f214145a743bee69628e2a780267492/contracts/src/SapientStrategyV34.sol","gas":{"max_ok":147039,"oog":0,"other_errors":{"revert":0,"other_halt":0,"tx_error":0,"bad_return":0}},"mechanism":"V34 adds a cubic toxicity surcharge, TOX_CUBIC_COEF times toxSignal cubed, beyond the quadratic toxicity term present in RS2. It uses first-trade versus retail price-update weights without RS2's separate same-direction update weight, and opens at 3 bps rather than 4 bps. Its stale-price lean, sigma, activity, flow and tail compression otherwise remain in the same broad family as RS2, so no distinct new market mechanism was found here.","mean_edge":531.0042537744058},{"sha256":"88e280c3b2b4eda33ff528e3814d7b5810cf74fc8d3c936e4f89ef2886a3c3bc","paired":{"n":256,"mean_diff":-2.730905464885787,"se":0.07757919730518127,"worst":[{"seed":901156,"d":-9.29795016706089},{"seed":901180,"d":-8.009805892983081},{"seed":901133,"d":-5.570670043617838},{"seed":901204,"d":-5.373609550495189},{"seed":901048,"d":-5.3075022238934935}]},"retail_edge_delta":{"mean":-1.8372431375745042,"se":0.09031504848533768},"arb_edge_delta":{"mean":-0.8936623273112869,"se":0.04574538063572393},"url":"https://github.com/maxnorm/amm-challenge/blob/ee285c088f214145a743bee69628e2a780267492/contracts/src/SapientStrategyV40.sol","gas":{"max_ok":147613,"oog":0,"other_errors":{"revert":0,"other_halt":0,"tx_error":0,"bad_return":0}},"mechanism":"V40 adds a silence surcharge: on the first trade of a new timestamp, it multiplies both quoted fees by one plus 0.002 times elapsed steps, capped at eight steps. It also retains V34's cubic toxicity surcharge, which RS2 lacks. These sit on the same stale-price, sigma and flow framework as RS2, and V40 produced exactly the same total-edge rows as V34 on the requested seeds, so the silence addition showed no measurable benefit here.","mean_edge":531.0042537744058}],"code":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\nimport {AMMStrategyBase} from \"./AMMStrategyBase.sol\";\nimport {TradeInfo} from \"./IAMMStrategy.sol\";\n\n/// @title Sapient Strategy V43 — V34 + two-speed pHat\n/// @notice Same as V34 (YQ baseline) plus: pHat_slow (slower EMA). When |pHat - pHat_slow|/pHat_slow > threshold, add a fee term (regime change).\n/// @dev Unique angle 2.7 from docs/2025-02-10-V34-explanation-and-unique-angles.md. One new slot: slots[11] = pHat_slow.\ncontract Strategy is AMMStrategyBase {\n    // --- decay / update constants ---\n    uint256 constant ELAPSED_CAP = 8;\n    uint256 constant SIGNAL_THRESHOLD = WAD / 500; // ~20 bps of reserve\n    uint256 constant DIR_DECAY = 800000000000000000; // 0.80\n    uint256 constant ACT_DECAY = 700000000000000000; // 0.70\n    uint256 constant SIZE_DECAY = 700000000000000000; // 0.70\n    uint256 constant TOX_DECAY = 910000000000000000; // 0.91\n    uint256 constant SIGMA_DECAY = 824000000000000000; // 0.824\n    uint256 constant LAMBDA_DECAY = 990000000000000000; // 0.99\n    uint256 constant SIZE_BLEND_DECAY = 818000000000000000; // 0.818\n    uint256 constant TOX_BLEND_DECAY = 51000000000000000; // 0.051\n    uint256 constant ACT_BLEND_DECAY = 985000000000000000; // 0.985\n    uint256 constant PHAT_ALPHA = 260000000000000000; // 0.26\n    uint256 constant PHAT_ALPHA_RETAIL = 50000000000000000; // 0.05\n    uint256 constant PHAT_SLOW_ALPHA = 50000000000000000; // 0.05 — slow EMA of fair price\n    uint256 constant DIR_IMPACT_MULT = 2;\n\n    // --- Adaptive Shock Gate ---\n    uint256 constant GATE_SIGMA_MULT = 10 * WAD;\n    uint256 constant MIN_GATE = 30000000000000000; // 0.03 WAD\n\n    // --- Two-speed pHat (angle 2.7): gap = |pHat - pHat_slow|/pHat_slow ---\n    uint256 constant GAP_THRESH = 1e16; // 1% — add fee only when gap above this\n    uint256 constant GAP_CAP = 1e17; // 10%\n    uint256 constant GAP_COEF = 10 * BPS; // fee per WAD of gap\n\n    // --- Cubic Toxicity ---\n    uint256 constant TOX_CUBIC_COEF = 15000 * BPS;\n\n    // --- Trade-Tox Boost ---\n    uint256 constant TRADE_TOX_BOOST = 2500 * BPS;\n\n    // --- Asymmetric Stale Dir ---\n    uint256 constant STALE_ATTRACT_FRAC = 1124000000000000000; // 1.124\n\n    // --- state caps ---\n    uint256 constant RET_CAP = WAD / 10; // 10%\n    uint256 constant TOX_CAP = WAD / 5; // 20%\n    uint256 constant TRADE_RATIO_CAP = WAD / 5; // 20%\n    uint256 constant LAMBDA_CAP = 5 * WAD; // max 5 trades/step estimate\n    uint256 constant STEP_COUNT_CAP = 64; // guardrail\n\n    // --- fee model constants ---\n    uint256 constant BASE_FEE = 3 * BPS;\n    uint256 constant SIGMA_COEF = 200000000000000000; // 0.20\n    uint256 constant LAMBDA_COEF = 12 * BPS;\n    uint256 constant FLOW_SIZE_COEF = 4842 * BPS;\n    uint256 constant TOX_COEF = 250 * BPS;\n    uint256 constant TOX_QUAD_COEF = 11700 * 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 = 500 * BPS;\n    uint256 constant TAIL_SLOPE_PROTECT = 930000000000000000; // 0.93\n    uint256 constant TAIL_SLOPE_ATTRACT = 955000000000000000; // 0.955\n\n    // slots[0] = bid fee\n    // slots[1] = ask fee\n    // slots[2] = last timestamp\n    // slots[3] = dirState\n    // slots[4] = actEma\n    // slots[5] = pHat (fast)\n    // slots[6] = sigmaHat\n    // slots[7] = lambdaHat\n    // slots[8] = sizeHat\n    // slots[9] = toxEma\n    // slots[10] = stepTradeCount\n    // slots[11] = pHat_slow\n\n    function afterInitialize(uint256 initialX, uint256 initialY) external override returns (uint256, uint256) {\n        uint256 p0 = initialX > 0 ? wdiv(initialY, initialX) : 100 * WAD;\n        slots[0] = BASE_FEE;\n        slots[1] = BASE_FEE;\n        slots[2] = 0;\n        slots[3] = WAD;\n        slots[4] = 0;\n        slots[5] = p0;\n        slots[6] = 950000000000000;\n        slots[7] = 800000000000000000;\n        slots[8] = 2000000000000000;\n        slots[9] = 0;\n        slots[10] = 0;\n        slots[11] = p0; // pHat_slow = same as pHat initially\n        return (BASE_FEE, BASE_FEE);\n    }\n\n    function afterSwap(TradeInfo calldata trade) external override returns (uint256, uint256) {\n        uint256 prevBidFee = slots[0];\n        uint256 prevAskFee = slots[1];\n        uint256 lastTs = slots[2];\n        uint256 dirState = slots[3];\n        uint256 actEma = slots[4];\n        uint256 pHat = slots[5];\n        uint256 lambdaHat = slots[7];\n        uint256 sizeHat = slots[8];\n        uint256 toxEma = slots[9];\n        uint256 stepTradeCount = slots[10];\n\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\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\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\n            stepTradeCount = 0;\n        }\n\n        bool firstInStep = stepTradeCount == 0;\n\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) {\n            pImplied = spot;\n        } else {\n            pImplied = trade.isBuy ? wmul(spot, gamma) : wdiv(spot, gamma);\n        }\n\n        uint256 sigmaHat;\n        {\n            sigmaHat = slots[6];\n            uint256 ret = pHat > 0 ? wdiv(absDiff(pImplied, pHat), pHat) : 0;\n            uint256 alpha = firstInStep ? PHAT_ALPHA : PHAT_ALPHA_RETAIL;\n            uint256 adaptiveGate = wmul(sigmaHat, GATE_SIGMA_MULT);\n            if (adaptiveGate < MIN_GATE) adaptiveGate = MIN_GATE;\n            if (ret <= adaptiveGate) {\n                pHat = wmul(pHat, WAD - alpha) + wmul(pImplied, alpha);\n                _updatePhatSlowV43(pImplied);\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        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\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\n            actEma = wmul(actEma, ACT_BLEND_DECAY) + wmul(tradeRatio, WAD - ACT_BLEND_DECAY);\n\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\n        fMid = fMid + wmul(SIGMA_TOX_COEF, wmul(sigmaHat, toxSignal));\n\n        {\n            uint256 toxCubed = wmul(toxSignal, wmul(toxSignal, toxSignal));\n            fMid = fMid + wmul(TOX_CUBIC_COEF, toxCubed);\n        }\n\n        if (slots[11] > 0) {\n            uint256 gap = wdiv(absDiff(pHat, slots[11]), slots[11]);\n            if (gap > GAP_CAP) gap = GAP_CAP;\n            if (gap > GAP_THRESH) fMid = fMid + wmul(GAP_COEF, gap);\n        }\n\n        uint256 dirDev;\n        bool sellPressure;\n        if (dirState >= WAD) {\n            dirDev = dirState - WAD;\n            sellPressure = true;\n        } else {\n            dirDev = WAD - dirState;\n            sellPressure = false;\n        }\n\n        uint256 skew = wmul(DIR_COEF, dirDev) + wmul(DIR_TOX_COEF, wmul(dirDev, toxSignal));\n\n        uint256 bidFee;\n        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 staleShift = wmul(STALE_DIR_COEF, toxSignal);\n            uint256 attractShift = wmul(staleShift, STALE_ATTRACT_FRAC);\n            if (spot >= pHat) {\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) {\n                    bidFee = bidFee + tradeBoost;\n                } else {\n                    askFee = askFee + tradeBoost;\n                }\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;\n        slots[1] = askFee;\n        slots[2] = trade.timestamp;\n        slots[3] = dirState;\n        slots[4] = actEma;\n        slots[5] = pHat;\n        slots[6] = sigmaHat;\n        slots[7] = lambdaHat;\n        slots[8] = sizeHat;\n        slots[9] = toxEma;\n        slots[10] = stepTradeCount;\n\n        return (bidFee, askFee);\n    }\n\n    function _updatePhatSlowV43(uint256 pImplied) internal {\n        slots[11] = wmul(slots[11], WAD - PHAT_SLOW_ALPHA) + wmul(pImplied, PHAT_SLOW_ALPHA);\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) {\n            return WAD + wmul(centered - WAD, mul);\n        }\n        uint256 below = wmul(WAD - centered, mul);\n        return below < WAD ? WAD - below : 0;\n    }\n\n    function getName() external pure override returns (string memory) {\n        return \"Sapient v43 - two-speed pHat\";\n    }\n}\n","sha256":"508c9a449ea20119590ec0e058b4d635251a826796c9125a5384eed198a070ab","url":"https://github.com/maxnorm/amm-challenge/blob/ee285c088f214145a743bee69628e2a780267492/contracts/src/SapientStrategyV43.sol","author":"maxnorm","author_source":"https://api.github.com/repos/maxnorm/amm-challenge/commits/ee285c088f214145a743bee69628e2a780267492","author_commit":"ee285c088f214145a743bee69628e2a780267492","licence":"Selected source declares SPDX-License-Identifier: MIT; no repository-level LICENSE, LICENCE or COPYING file was found at the inspected fork branch heads.","forks":[{"fork":"maxnorm/amm-challenge","heads":{"main":"ee285c088f214145a743bee69628e2a780267492"},"distinct_changed_afterSwap_files":47,"kept":47},{"fork":"ccashwell/amm-challenge","heads":{"claude/uniswap-v4-hooks-56HKd":"9d2c72df292d374e5f0a411fb952681c674a6389","main":"6b6921f8d463314aa7c96234e1be25a25245f704"},"distinct_changed_afterSwap_files":1,"kept":1},{"fork":"enriquedlh97/amm-challenge","heads":{"feat/strategy-development":"d52d5300440fdabca9a07d1fd32ab83543e69bf3","main":"4c56cc246ef3d8fed49b7d458ff82b8b83cf6e20"},"distinct_changed_afterSwap_files":31,"kept":31},{"fork":"kmadorin/amm-challenge","heads":{"main":"ec151d5a2da3810a65736d6dbe0519f81219286d"},"distinct_changed_afterSwap_files":1,"kept":1}],"calibration":{"seeds":"0..999","n":1000,"mean":525.5258821780834,"expected":525.5258821780834,"passed":true,"oog":0},"baseline":{"name":"RS2","sha256":"f24b6ca198b744c380842c3a17964a6dc21f311bb04984b26733afa3fee8eaf2","url":"https://api.imdnotdead.fun/artifacts/19f2ec857df536e8ab62ab1da89ec6623332521ce46849f15bccff402c63e1e5","screen":{"n":32,"mean_edge":542.3651755555325,"gas":{"max_ok":197184,"oog":0,"other_errors":{"revert":0,"other_halt":0,"tx_error":0,"bad_return":0}}},"confirmation":{"n":256,"mean_edge":533.7351592392916,"gas":{"max_ok":202386,"oog":0,"other_errors":{"revert":0,"other_halt":0,"tx_error":0,"bad_return":0}}}},"notes":["No candidate beat RS2 on either the 32-seed screen or the 256-seed finalist comparison. This item evaluated public fork files against RS2 as explicitly assigned; it did not compare against STACK or claim leaderboard improvement.","All remote branch heads were cloned and inspected as data. No fork scripts were run and no fork packages were installed. SHA-256 deduplication yielded 80 files globally; no fork exceeded the 50-file cap. Sources identical to any pinned upstream Solidity file were excluded. Files requiring external dependencies were not repaired or rewritten.","Protocol: upstream 6b6921f8d463314aa7c96234e1be25a25245f704; supplied setup succeeded; amm-match validate was run on every collected file after copying into contracts/src. 79 passed validation; 15 then had OOG callbacks. valid includes runtime success on the screening seeds, d32 is null when invalid, and oog is null for files never simulated. Each file source is https://github.com/{fork}/blob/{commit}/{path}.","Screen seeds 900000..900031; finalists and RS2 use 901000..901255. Each arm ran alone against VanillaStrategy using amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8), in chunks of at most 20. Configs: 10000 steps, price 100, reserves 100/10000, mu 0, dt 1; default_rng(seed) draws retail size uniform(19,21), arrival uniform(0.6,1), sigma uniform(0.000882,0.001008), in that order; retail size sigma 1.2 and buy probability 0.5. Price seed is seed and retail seed seed+1. No seed >=5000000 was run.","Finalists selected by highest valid d32, with ties in inventory order. V34, V40 and refs/YQStrategy.sol had tied total-edge screen results, but distinct source hashes; V34 and V40 were selected ahead of refs/YQStrategy.sol. Top3 is ordered by 256-seed mean difference. Selection on 32 seeds can be noisy and these results do not establish leaderboard performance.","paired differences are candidate edge minus RS2 edge on the same seed; se uses sample standard deviation divided by sqrt(n); worst lists the five lowest paired differences and their seeds. Retail and arb deltas report mean and se and reconcile to total paired edge to floating-point precision.","Retail/arb reconstruction follows the supplied harness_source constant-product formulas. Its first-step 4-bps fee assumption was corrected to actual afterInitialize bid/ask fees (3 bps for all finalists, 4 bps for RS2): common first fair-price draws were replayed with n_steps=1 on the same 256 seeds, and only first-step arb/retail attribution was adjusted. Total edge and all selection scores are unchanged.","Gas counters were reset before each batch and aggregated per arm; gas.max_ok is peak successful Submission afterSwap gas, gas.oog counts OOG across all callbacks and roles. All other halt, revert, transaction and bad-return counters were also checked. Top3 and RS2 have zero callback failures on both requested seed blocks.","Inference from source inspection: the closest files add modest mechanisms to the same fee family as RS2. They provide no measured improvement in this assignment."]}