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