| 12345678910111213141516171819202122232425262728293031323334353637 |
- from hermes_mcp.replay import build_replay_input, compare_to_baseline
- def test_compare_to_baseline_replays_decision_and_exposes_audit():
- concern = {"id": "c1", "account_id": "a1", "market_symbol": "xrpusd", "base_currency": "XRP", "quote_currency": "USD"}
- narrative = {
- "stance": "neutral_rotational",
- "confidence": 0.7,
- "opportunity_map": {"continuation": 0.18, "mean_reversion": 0.68, "reversal": 0.05, "wait": 0.09},
- }
- wallet_state = {
- "inventory_state": "balanced",
- "rebalance_needed": False,
- "grid_ready": True,
- "base_ratio": 0.5,
- "quote_ratio": 0.5,
- }
- strategies = [
- {"id": "protect-1", "strategy_type": "exposure_protector", "mode": "active", "account_id": "a1", "state": {}, "config": {}},
- {"id": "grid-1", "strategy_type": "grid_trader", "mode": "off", "account_id": "a1", "state": {}, "config": {}},
- ]
- replay_input = build_replay_input(
- concern=concern,
- narrative_payload=narrative,
- wallet_state=wallet_state,
- strategies=strategies,
- history_window={"window_seconds": 900, "recent_states": []},
- )
- result = compare_to_baseline(
- replay_input=replay_input,
- baseline={"requires_action": True, "action": "replace_with_grid", "target_strategy": "grid-1"},
- )
- assert result["changed"] is False
- assert result["replayed"]["action"] == "replace_with_grid"
- assert result["decision_audit"]["within_rebalance_tolerance"] is True
|