feat(surfaces): report an honest no-thinking-engine state
Add DRAIN_STATE_NO_ENGINE, taking precedence over the realtime/deferred mode check so the state is honest in both modes.
Add the thinking_engine_not_chosen readiness reason in all four registries: Python reason codes, presenter entries, chat-reasons JS, and health JS. The no-engine state is intercepted before cloud readiness so it never collapses into provider_key_missing.
generate consumers that previously degraded on a missing API key now degrade identically on no-brain rather than crashing: transcript segmentation/JSON, creation-time detection, depict, enrich, and describe. Import and capture keep working; only analysis defers.