v2.25.1
Highlights since v2.25.0. See the CHANGELOG for the full detail.
Features
- Aave V3 expected-pool assertion. Supply and withdraw intents accept an optional
expected_pooladdress, validated and matched against the canonical registry Pool before any approval or calldata, failing closed on drift. Never a routing override. (#3707) almanak strat testlifecycle path coverage. Test output now classifies action and teardown evidence and exposesrequested_paths_exercised, so a HOLD or empty teardown is never reported as lifecycle validation. (#3708)
Fixes
- Address-first demo strategies. Packaged demos resolve every price, valuation, and indicator read through explicit chain-specific addresses (validated demo configs), removing the symbol/address mismatch that caused hollow runs — both GMX demos now complete one-year backtests. (#3711)
- Chainlink rETH/USD derived from exact feeds. Fixes a mislabeled Ethereum feed and derives rETH/USD as rETH/ETH × ETH/USD with provenance, freshness, and fail-closed timestamp checks. (#3712)
- Managed gateway surfaces actionable startup causes.
almanak strat testreturns a typed 422 with the real redacted cause instead of an opaque HTTP 500; the EVM zero address is rejected as an ERC-20anvil_fundingkey; per-token funding failures blame only the tokens that failed. (#3713) - Address-native backtesting readiness. Readiness canonicalizes through registered (chain, address) pairs, stops requiring price history for cash equivalents, and honors a strategy's configured
data_granularity. (#3705) - Honest teardown consolidation reporting. Executed, skipped, successful, and failed teardown operations are counted independently; safety-skipped swaps are no longer shown as completed. (#3697)
- Exact Ethereum USDf Anvil funding. Funds USDf from a verified EOA holder and fails loudly instead of unsafe fallbacks; paper trading stops clearly when required funding fails. (#3709)