[ "hermes_overlay/tests/test_binance_public_fallback.py::test_atr_calculated_from_valid_mark_candles", "hermes_overlay/tests/test_binance_public_fallback.py::test_atr_none_when_insufficient_candles", "hermes_overlay/tests/test_binance_public_fallback.py::test_ds4_fully_valid_binance_not_called", "hermes_overlay/tests/test_binance_public_fallback.py::test_ds4_missing_field_filled_by_binance", "hermes_overlay/tests/test_binance_public_fallback.py::test_ds4_missing_oi_history_filled_by_binance", "hermes_overlay/tests/test_binance_public_fallback.py::test_notradeguard_enforced_even_when_binance_fills_all_gaps", "hermes_overlay/tests/test_binance_public_fallback.py::test_oi_change_calculated_from_valid_history", "hermes_overlay/tests/test_binance_public_fallback.py::test_oi_change_none_when_history_too_short", "hermes_overlay/tests/test_candle_limit_completeness.py::test_candle_shortfall_does_not_invalidate_other_fresh_fields", "hermes_overlay/tests/test_candle_limit_completeness.py::test_futures_market_endpoint_exposes_completeness_fields", "hermes_overlay/tests/test_candle_limit_completeness.py::test_genuinely_old_final_candle_is_stale", "hermes_overlay/tests/test_candle_limit_completeness.py::test_malformed_candles_are_invalid_unavailable", "hermes_overlay/tests/test_candle_limit_completeness.py::test_normalize_candles_does_not_pad_or_fabricate", "hermes_overlay/tests/test_candle_limit_completeness.py::test_over_cap_request_window_uses_provider_cap", "hermes_overlay/tests/test_candle_limit_completeness.py::test_over_cap_returns_fresh_partial_not_stale", "hermes_overlay/tests/test_candle_limit_completeness.py::test_over_cap_warning_emitted_once", "hermes_overlay/tests/test_candle_limit_completeness.py::test_within_cap_limit_returns_fresh_complete[120]", "hermes_overlay/tests/test_candle_limit_completeness.py::test_within_cap_limit_returns_fresh_complete[60]", "hermes_overlay/tests/test_ds4_merge_nested_data.py::test_ds2_cannot_override_valid_nested_ds4_orderbook", "hermes_overlay/tests/test_ds4_merge_nested_data.py::test_ds2_fallback_fires_only_for_genuinely_missing_nested_field", "hermes_overlay/tests/test_ds4_merge_nested_data.py::test_ds4_data_key_missing_entirely_is_treated_as_no_data", "hermes_overlay/tests/test_ds4_merge_nested_data.py::test_merge_reads_futures_fields_from_nested_data", "hermes_overlay/tests/test_ds4_merge_nested_data.py::test_top_level_metadata_unaffected_by_nesting_fix", "hermes_overlay/tests/test_external_ai.py::test_advisory_cannot_clear_ds4_no_trade_guard", "hermes_overlay/tests/test_external_ai.py::test_all_provider_timeouts_return_unavailable", "hermes_overlay/tests/test_external_ai.py::test_all_providers_unavailable_returns_safe_result", "hermes_overlay/tests/test_external_ai.py::test_google_then_huggingface_fallback", "hermes_overlay/tests/test_external_ai.py::test_huggingface_is_last_fallback", "hermes_overlay/tests/test_external_ai.py::test_openrouter_is_first_when_configured", "hermes_overlay/tests/test_external_ai.py::test_openrouter_timeout_falls_back", "hermes_overlay/tests/test_external_ai.py::test_provider_success_is_bounded_and_structured", "hermes_overlay/tests/test_freshness_clock_skew.py::test_large_provider_clock_skew_remains_invalid", "hermes_overlay/tests/test_freshness_clock_skew.py::test_old_provider_timestamp_remains_stale", "hermes_overlay/tests/test_freshness_clock_skew.py::test_small_provider_clock_skew_is_fresh", "hermes_overlay/tests/test_futures_dashboard_and_state.py::test_close_position_handler_clears_book", "hermes_overlay/tests/test_futures_dashboard_and_state.py::test_dashboard_futures_page_returns_html", "hermes_overlay/tests/test_futures_dashboard_and_state.py::test_dashboard_positions_endpoint_returns_valid_json", "hermes_overlay/tests/test_futures_dashboard_and_state.py::test_dashboard_status_endpoint_returns_valid_json", "hermes_overlay/tests/test_futures_dashboard_and_state.py::test_market_endpoint_reports_unavailable_without_fabrication", "hermes_overlay/tests/test_futures_dashboard_and_state.py::test_market_endpoint_returns_only_merged_real_values", "hermes_overlay/tests/test_futures_dashboard_and_state.py::test_state_updates_after_calculate_futures_size_rejection", "hermes_overlay/tests/test_futures_dashboard_and_state.py::test_state_updates_after_execute_futures_position_approval_and_rejection", "hermes_overlay/tests/test_futures_dashboard_and_state.py::test_state_updates_after_rejected_get_market_context", "hermes_overlay/tests/test_futures_dashboard_and_state.py::test_state_updates_after_successful_get_market_context", "hermes_overlay/tests/test_futures_dashboard_ui.py::test_futures_page_contains_responsive_controls_and_advisory_fields", "hermes_overlay/tests/test_futures_dashboard_ui.py::test_symbol_endpoint_returns_normalized_active_pairs", "hermes_overlay/tests/test_futures_integration.py::test_calculate_futures_size_basic", "hermes_overlay/tests/test_futures_integration.py::test_calculate_futures_size_high_atr_reduces_leverage", "hermes_overlay/tests/test_futures_integration.py::test_calculate_futures_size_leverage_capped_by_profile", "hermes_overlay/tests/test_futures_integration.py::test_calculate_futures_size_max_concurrent_positions_blocks_trade", "hermes_overlay/tests/test_futures_integration.py::test_calculate_futures_size_max_daily_loss_blocks_trade", "hermes_overlay/tests/test_futures_integration.py::test_calculate_futures_size_rejects_below_min_notional", "hermes_overlay/tests/test_futures_integration.py::test_calculate_futures_size_rejects_missing_stop_distance", "hermes_overlay/tests/test_futures_integration.py::test_ds2_cannot_override_ds4_field", "hermes_overlay/tests/test_futures_integration.py::test_execute_rejects_cross_margin", "hermes_overlay/tests/test_futures_integration.py::test_execute_rejects_high_slippage", "hermes_overlay/tests/test_futures_integration.py::test_execute_requires_stop_loss", "hermes_overlay/tests/test_futures_integration.py::test_no_trade_guard_honored_from_ds4", "hermes_overlay/tests/test_futures_integration.py::test_no_trade_guard_when_ds4_unreachable", "hermes_overlay/tests/test_futures_integration.py::test_paper_long_then_duplicate_prevention_then_close", "hermes_overlay/tests/test_futures_integration.py::test_paper_short", "hermes_overlay/tests/test_futures_integration.py::test_symbol_normalization[BTC/USDT:USDT]", "hermes_overlay/tests/test_futures_integration.py::test_symbol_normalization[BTC/USDT]", "hermes_overlay/tests/test_futures_integration.py::test_symbol_normalization[BTCUSDT]", "hermes_overlay/tests/test_futures_integration.py::test_symbol_normalization[BTC]", "hermes_overlay/tests/test_futures_integration.py::test_symbol_normalization[btc/usdt]", "hermes_overlay/tests/test_futures_integration.py::test_symbol_normalization_rejects_empty", "hermes_overlay/tests/test_futures_integration.py::test_trading_mode_forces_paper_without_credentials", "hermes_overlay/tests/test_kucoin_public_fallback.py::test_dual_merge_uses_kucoin_after_binance_failure_and_keeps_provenance", "hermes_overlay/tests/test_kucoin_public_fallback.py::test_public_result_normalizes_requested_fields_without_network", "hermes_overlay/tests/test_kucoin_public_fallback.py::test_symbol_mapping_and_contract_normalization", "hermes_overlay/tests/test_luxury_template.py::test_futures_route_serves_packaged_luxury_template", "hermes_overlay/tests/test_luxury_template.py::test_template_contains_execution_safety_guards", "hermes_overlay/tests/test_runtime_optional_mcp.py::test_linear_disabled_is_removed_without_touching_other_servers", "hermes_overlay/tests/test_runtime_optional_mcp.py::test_linear_enabled_with_tokens_is_preserved", "hermes_overlay/tests/test_runtime_optional_mcp.py::test_linear_enabled_without_tokens_is_parked_once", "hermes_overlay/tests/test_runtime_optional_mcp.py::test_unreal_is_parked_independently", "hermes_overlay/tests/test_telegram_webhook.py::test_alert_cooldown_suppresses_duplicate", "hermes_overlay/tests/test_telegram_webhook.py::test_bootstrap_claim_is_private_one_time_and_persists", "hermes_overlay/tests/test_telegram_webhook.py::test_disabled_webhook_is_quiet", "hermes_overlay/tests/test_telegram_webhook.py::test_relay_request_is_hmac_authenticated", "hermes_overlay/tests/test_telegram_webhook.py::test_watchlist_persists", "hermes_overlay/tests/test_telegram_webhook.py::test_webhook_secret_and_authorization", "hermes_overlay/tests/test_trade_cycle_field_paths.py::test_funding_rate_still_none_when_key_absent", "hermes_overlay/tests/test_trade_cycle_field_paths.py::test_funding_rate_uses_currentFundingRate", "hermes_overlay/tests/test_trade_cycle_field_paths.py::test_ohlcv_returns_from_verified_dict_candles", "hermes_overlay/tests/test_trade_cycle_field_paths.py::test_price_change_normalizes_percent_form", "hermes_overlay/tests/test_trade_cycle_field_paths.py::test_price_change_uses_ticker_change24h", "hermes_overlay/tests/test_trade_cycle_field_paths.py::test_reference_price_falls_back_to_dict_ohlcv_close", "hermes_overlay/tests/test_trade_cycle_field_paths.py::test_reference_price_uses_ticker_lastPrice" ]