mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-09 22:48:57 +02:00
A browse daemon started before an upgrade keeps serving the OLD binary's code after `git reset --hard` + `./setup` — the running process holds the old executable, so users on the "new" version kept getting pre-upgrade behavior (and config-mismatch refusals against the new CLI) until they happened to stop it by hand. New unconditional Step 4.8 in gstack-upgrade/SKILL.md.tmpl (+ regen, same commit): compare the running daemon's recorded binaryVersion (the readVersionHash git-SHA the server stamps into its state file) against the freshly built browse/dist/.version. - Stale + responsive → `browse stop` (graceful), telling the user old→new hash; the next command boots a daemon on the new binary. - Stale + BUSY → DEFER (decision 10): never kill a busy daemon during upgrade. Print the old→new hash and the escape hatch — `browse stop` when it finishes, or `browse --force-restart stop` now. - Dead pid / matching hash / no state → silent no-op. Tests: skill-validation + gen-skill-docs 731 pass after regen. Fixes #2551. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>