44640149f7
Fixes #69379 (v2026.7.20 Docker multiplex regression: the scoped runner reload dropped API_SERVER_* set via the container environment, silently losing the api_server platform) by the canonical mechanism — corrects the direction of #69524, which patched gateway/config._getenv to fall through to os.environ on EVERY scoped miss, re-opening the cross-profile borrow for all credentials. API_SERVER_ENABLED / API_SERVER_HOST / API_SERVER_PORT / API_SERVER_CORS_ORIGINS are deployment listener settings (Docker compose environment: block, systemd Environment=), not profile secrets: they join _GLOBAL_ENV_EXACT so get_secret reads them from os.environ regardless of scope. API_SERVER_KEY is deliberately NOT allowlisted — it IS a credential and stays profile-scoped, which keeps tests/gateway/test_config.py's secondary-profile isolation semantics intact (a secondary profile without the key still doesn't bind a listener). Ports #69524's regression test in the corrected form: container-env API_SERVER_* stays visible during the scoped runner reload while the key resolves through the profile scope; plus unit tests locking the allowlist membership and the deliberate exclusion of API_SERVER_KEY.