fix: OptimizerV3Push3 as IOptimizer always returns bear defaults — integration risk (#1063)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
45142e762a
commit
62fc7957b0
4 changed files with 13 additions and 7 deletions
|
|
@ -134,8 +134,8 @@ contract BacktestRunner is Script {
|
|||
// ------------------------------------------------------------------
|
||||
// KrAIken system deployment (follows DeployLocal.sol pattern)
|
||||
//
|
||||
// 1. Deploy OptimizerV3Push3 (no proxy — getLiquidityParams() uses zeroed
|
||||
// inputs, returning bear-mode defaults on every recenter).
|
||||
// 1. Deploy OptimizerV3Push3 (no proxy — getLiquidityParams() always reverts;
|
||||
// LM's try/catch falls back to bear-mode defaults on every recenter).
|
||||
// 2. Deploy LiquidityManager pointing at the shadow pool.
|
||||
// 3. Wire BacktestKraiken.setLiquidityManager(lm).
|
||||
// 4. Set feeDestination = sender.
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@ import { MockToken } from "./MockToken.sol";
|
|||
struct KrAIkenSystem {
|
||||
BacktestKraiken kraiken;
|
||||
/// @dev OptimizerV3Push3 is used as the optimizer address. Its getLiquidityParams()
|
||||
/// uses zeroed inputs (no on-chain stake data) and returns bear-mode defaults on
|
||||
/// every recenter. This is intentional for backtesting.
|
||||
/// always reverts; LM's try/catch then falls back to bear-mode defaults on every
|
||||
/// recenter. This is intentional for backtesting.
|
||||
OptimizerV3Push3 optimizer;
|
||||
LiquidityManager lm;
|
||||
}
|
||||
|
|
@ -65,8 +65,8 @@ library KrAIkenDeployer {
|
|||
returns (KrAIkenSystem memory sys)
|
||||
{
|
||||
// 1. Deploy OptimizerV3Push3.
|
||||
// OptimizerV3Push3.getLiquidityParams() uses zeroed inputs (no stake data),
|
||||
// so every recenter uses bear defaults — conservative and correct for a
|
||||
// OptimizerV3Push3.getLiquidityParams() always reverts; LM's try/catch falls
|
||||
// back to bear defaults on every recenter — conservative and correct for a
|
||||
// baseline backtest.
|
||||
OptimizerV3Push3 optimizer = new OptimizerV3Push3();
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ import { OptimizerV3Push3Lib } from "./OptimizerV3Push3Lib.sol";
|
|||
*/
|
||||
contract OptimizerV3Push3 is IOptimizer {
|
||||
/**
|
||||
* @inheritdoc IOptimizer
|
||||
* @dev Always reverts — this contract is a transpiler harness, not a production optimizer.
|
||||
* Calling getLiquidityParams() on this stub is a deployment misconfiguration.
|
||||
* LiquidityManager.recenter() has a try/catch that falls back to bear-mode defaults,
|
||||
|
|
|
|||
|
|
@ -103,6 +103,13 @@ contract OptimizerV3Push3Test is Test {
|
|||
assertEq(dd, BULL_DISCOVERY, "bull: discoveryDepth");
|
||||
}
|
||||
|
||||
// ---- getLiquidityParams() stub guard ----
|
||||
|
||||
function testGetLiquidityParamsReverts() public {
|
||||
vm.expectRevert("OptimizerV3Push3: not for production use");
|
||||
push3.getLiquidityParams();
|
||||
}
|
||||
|
||||
// ---- Bear cases ----
|
||||
|
||||
function testAlwaysBearAt0Percent() public view {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue