801d1a5a85
Two guards for the reconnect-queue eviction fix: - a complete Matrix password config (homeserver + user_id + password) counts as credentialed and stays retryable; - every incomplete variant is still dropped, which is what keeps the #64674 empty-primary multiplex eviction intact. The incomplete cases pin the "read extra, not the environment" property, and they set a fully-populated MATRIX_* environment explicitly to do it. That setenv is load-bearing: tests/conftest.py sandboxes HERMES_HOME to a tempdir and scrubs MATRIX_* from the environment, so production .env is never loaded under pytest. Without the explicit setenv these cases pass against an os.getenv-reading implementation and guard nothing. Verified both directions against throwaway worktrees, live checkout untouched: - pre-fix implementation: the positive case fails (1 failed, 5 passed); - os.getenv-fallback implementation: 4 of the 5 incomplete cases fail. The "blank" case cannot discriminate by construction -- whitespace is truthy, so `extra.get(k) or os.getenv(...)` never consults the environment -- it guards strip()-emptiness instead. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>