Hound 10.2.0 - brick-proof self-update + doctor + rollback
The old hound -u could brick the install, and once bricked hound -u itself was dead so the tool could not self-heal. This release rebuilds the whole update lifecycle to make it flawless.
Root causes of the brick
hound -uranpip install --upgrade hound-mcp[all]. The[all]extra pulls onnxruntime (~100 MB), tokenizers, rapidocr, pdfplumber - slow and fragile. When it failed mid-install, pip had already deletedmaster_fetchbut could not replacehound.exe(Windows locks a running .exe), so everyhoundcommand crashed with ModuleNotFoundError, includinghound -u.- The recovery messages told users to run a bare
pip install --force-reinstallwhile a hound server held the launcher - the exact command that bricks it.
The fix (new updater.py module)
- --no-deps, no extras. The self-update only touches hound-mcp itself. Dependencies already installed are left alone; a user's
[all]extra is preserved. Fast, deterministic, cannot fail on a heavy dep. - Windows: a detached helper runs pip after the launcher exits. The running
hound -uIS hound.exe, which Windows locks against overwrite. The helper is a standalonepython -c(no master_fetch dependency) that waits for the parent launcher to exit, frees it via the rename trick (Windows permits renaming a running .exe, just not overwriting it), then runs pip with the launcher free. A running server keeps the old code in memory until restarted - no need to stop it. Never refuses, never bricks. - Self-heal. If pip's first pass leaves the version unchanged or broken, a
--force-reinstall --no-depspass runs (the launcher is free by then) and re-verifies. - Surviving repair.
~/.hound/repair.py(pure stdlib, outside site-packages) is written on every update. If hound is ever bricked,python ~/.hound/repair.pystops hound and force-reinstalls. It survives because it is not part of the hound-mcp package, so a failed pip uninstall never removes it. - Safe messages. Every failure prints the safe recovery (
python ~/.hound/repair.py), never a bare destructive pip command.
New commands
hound doctor- proactive health check (launcher, imports, metadata consistency, stale .old, core deps, PyPI, repair script). Catches a half-broken install before it bricks.hound --rollback- reinstall the version from before the last update.
Compatibility
No new tools, no MCP schema changes, no response-shape changes, no new runtime dependencies. The CLI gained --doctor and --rollback. 705 tests (+12 updater).
Full notes: https://github.com/dondai1234/master-fetch/blob/master/CHANGELOG.md