e4257c171a
Architecture fix for the bug class behind the Termux --version NameError (live on main since eb4040242): version-printing kept being reimplemented as *_fast() copies at the top of hermes_cli/main.py, each duplicating canonical logic (project-root resolution, container detection, profile detection). The copies drift silently — eb4040242 edited the canonical output and referenced the PROJECT_ROOT module constant inside the fast function, which doesn't exist yet at the fast exit point. - hermes_cli/_startup_fast.py: THE implementations, stdlib-only. main.py's *_fast() names become thin delegates (kept for test/back-compat), and PROJECT_ROOT itself derives from the same helper — the constant and the fast path can no longer disagree. - Fast output now includes the .install_method stamp (one cheap file read) and a 'Run hermes version for update status' pointer, so globalizing the fast path doesn't silently drop slow-path info. - Guard tests: (1) import-weight — subprocess-imports _startup_fast and fails if any heavy module (config/yaml/argparse/cli/run_agent/httpx) lands in sys.modules; (2) subprocess parity on+off Termux — the test that would have caught eb4040242 the day it landed; (3) install-method stamp surfacing. hermes --version: ~3.8s cold / 0.2-0.4s warm -> 0.01-0.02s everywhere.