1. Tar paths now match _pushed_hashes keys — backends tar from /
so entries have full absolute paths (e.g. root/.hermes/skills/f.py)
instead of relative ./skills/f.py that never matched hash lookups
2. _infer_host_path simplified — removed broken grandparent match
that computed garbled suffixes for new remote files
3. Lock path uses get_hermes_home() instead of Path.home() — fixes
wrong lock path when HERMES_HOME is overridden or using profiles
4. SIGINT trap guarded by threading.current_thread() check — skips
signal.signal() on non-main threads (gateway workers) instead of
crashing with ValueError on every retry attempt