509960e827
The hermes console entry point is hermes_cli.main:main, and main.py imports dotenv (via env_loader) and yaml (via config) at module level. In the #57828 failure state — a failed lazy backend refresh wiping a core package's import files while metadata survives — a normal launch crashed while importing main.py, before _recover_from_interrupted_install() and the recovery markers from PR #58004 could act. - hermes_cli/_early_recovery.py: stdlib-only bootstrap repair invoked at the very top of main.py, before any third-party import. Probes the fragile core packages via real imports, force-reinstalls broken ones using the pyproject.toml pins, shares main.py's single-flight recovery lock, and never clears markers (the confirmed lifecycle stays with the full recovery path in main.py). - Probe/repair tables now have one canonical home in _early_recovery, reused by main.py so the two layers cannot drift. - Manual --force-reinstall fallback commands now print pinned specs via _lazy_refresh_repair_specs() instead of bare package names. - tests: entry-point lifecycle coverage proving a broken dotenv import crashes main.py without repair and imports cleanly with it, a stdlib-only import guard for _early_recovery, and unit coverage for marker gating, lock single-flight, pinned specs, and marker preservation.