feat: OptimizerV3 with direct 2D staking-to-LP parameter mapping

Core protocol changes for launch readiness:

- OptimizerV3: binary bear/bull mapping from (staking%, avgTax) — avoids
  exploitable AW 30-90 kill zone. Bear: AS=30%, AW=100, CI=0, DD=0.3e18.
  Bull: AS=100%, AW=20, CI=0, DD=1e18. UUPS upgradeable with __gap[48].
- Directional VWAP: only records prices on ETH inflow (buys), preventing
  sell-side dilution of price memory
- Floor formula: unified max(scarcity, mirror, clamp) — VWAP mirror uses
  distance from adjusted VWAP as floor distance, no branching
- PriceOracle (M-1 fix): correct fallback TWAP divisor (60000s, not 300s)
- Access control (M-2 fix): deployer-only guard on one-time setters
- Recenter rate limit (M-3 fix): 60-second cooldown for open recenters
- Safe fallback params: recenter() optimizer-failure defaults changed from
  exploitable CI=50%/AW=50 to safe bear-mode CI=0/AW=100
- Recentered event for monitoring and indexing
- VERSION bump to 2, kraiken-lib COMPATIBLE_CONTRACT_VERSIONS updated

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
openhands 2026-02-13 18:21:18 +00:00
parent 21857ae8ca
commit 85350caf52
38 changed files with 3793 additions and 205 deletions

View file

@ -0,0 +1,26 @@
# Claude Code Supervisor configuration
# Copy to ~/.config/claude-code-supervisor/config.yml
# or .claude-code-supervisor.yml in your project root.
triage:
# Command that accepts a prompt on stdin and returns text on stdout.
# Default: claude -p (uses Claude Code's own auth)
command: "claude -p --no-session-persistence"
model: "claude-haiku-4-20250414"
max_tokens: 150
notify:
# Command that receives a JSON string as its last argument.
# Called when triage determines action is needed.
# Examples:
# openclaw: openclaw gateway call wake --params
# ntfy: curl -s -X POST https://ntfy.sh/my-topic -d
# webhook: curl -s -X POST https://example.com/hook -H 'Content-Type: application/json' -d
# script: /path/to/my-notify.sh
command: "openclaw gateway call wake --params"
# Quiet hours — suppress non-urgent escalations
quiet_hours:
start: "23:00"
end: "08:00"
timezone: "Europe/Berlin"