File size: 9,363 Bytes
3401f26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
[
  "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"
]