7ff8aae8fb
De-risking for the #48820 behaviour change: before this branch, credentials in the environment force-enabled twelve platforms regardless of an explicit enabled: false in config.yaml. Now that the explicit disable wins, users who relied on the old override would see the platform go dark with no trace. _enable_from_env (and Slack's inline copy) now emit ONE WARNING per platform per process when the platform is explicitly disabled AND its env credentials are present, naming the platform, the winning key (platforms.<x>.enabled: false), the env var(s) being ignored, and the remedy. A plain disable with no credentials, an enabled platform, and the env-only (no YAML opinion) path stay silent; repeated config reloads do not repeat it. _ENV_ENABLE_CREDENTIALS maps every _enable_from_env platform to its triggering env var(s); a test pins that the map covers every routed branch. Docs: messaging/index.md gains a 'Disabling a platform whose credentials are still in .env' section with the exact warning text. Live repro (real load_gateway_config on a temp HERMES_HOME with platforms.weixin/telegram.enabled: false + WEIXIN_TOKEN/TELEGRAM_BOT_TOKEN in env): before — both stayed disabled with zero log output; after — one WARNING each ('Platform 'weixin' is explicitly disabled by platforms.weixin.enabled: false ... (WEIXIN_TOKEN, WEIXIN_ACCOUNT_ID) will NOT start its adapter ...'), none for the enabled homeassistant, none on the second load.