From a56a622846da34e64f95d5fe752573280c04eb13 Mon Sep 17 00:00:00 2001 From: Harwinder Sekhon Date: Tue, 21 Jul 2026 13:30:15 -0400 Subject: [PATCH] Docs: correct PlatformConfig overlay scope (credentials never pass through the factory) Claude-Session: https://claude.ai/code/session_01VPNF37MP9Kuv62B1VBrZ1b --- CLAUDE.md | 2 +- telegram_bot.py | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 899e6d8..7e70c34 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -112,7 +112,7 @@ Legacy fields kept for config-shape compatibility: `rsi_entry_threshold`, `min_e ### PlatformConfig (top level) `symbol="XAU/USD"`, primary TF H1, confirmations [M15, H4], `data_lookback_days=60`, `scan_pairs=[XAUUSD]` (mirrors config.json `scanning.pairs` — see below), `scan_timeframes=[M5,M15,H1,H4]`, `candle_buffer_seconds=10`, `ws_cooldown_seconds=300`. -Deployment settings (credentials, scan pairs/TFs, per-pair base blocked hours, alert quality, log level) overlay from config.json via `app_config.apply_pair_overrides`, applied in the pair factory BEFORE per-TF deltas. `scanning.pairs` in config.json is now the actual deployment switch for what the bot scans — `PlatformConfig.scan_pairs` just carries the resolved value. +Per-pair base blocked hours plus `scan_pairs`/`scan_timeframes` overlay from config.json via `app_config.apply_pair_overrides`, applied in the pair factory BEFORE per-TF deltas. Credentials, alert quality, and log level never touch `PlatformConfig` — `telegram_bot.py` and `data_provider.py` read them directly from `app_config.get_app_config()` and its resolvers. `scanning.pairs` in config.json is the deployment switch for what the bot scans — `PlatformConfig.scan_pairs` just carries the resolved value. --- diff --git a/telegram_bot.py b/telegram_bot.py index 1962a82..7f3aa46 100755 --- a/telegram_bot.py +++ b/telegram_bot.py @@ -113,11 +113,9 @@ _CHANNEL_ID_RAW = telegram_channel_id() CHANNEL_ID: Optional[int] = int(_CHANNEL_ID_RAW) if _CHANNEL_ID_RAW else None # ── Pairs & buttons ─────────────────────────────────────────────────── -# The scanned pair list is config-driven: `scanning.pairs` in config.json -# (read via app_config) is the single switch for single- vs multi-pair -# operation — `apply_pair_overrides` stamps it onto PlatformConfig.scan_pairs -# so the two stay in sync. Buttons, WS subscriptions, and scan loops all -# derive from it. +# The scanned pair list is config.json-driven (`scanning.pairs`, read via +# app_config) and is the single switch for single- vs multi-pair operation. +# Buttons, WS subscriptions, and scan loops all derive from it. SCAN_PAIRS = list(_APP.scan_pairs)