mirror of
https://github.com/PerpetualSoftware/pad.git
synced 2026-10-25 14:00:40 +00:00
df5531b815
* fix(cli): pad server stop keeps a legacy bare-pid file instead of deleting a live server's record (BUG-2970) On Unix, pidFileOwner read a free lock as proof that a record was stale, and removed it. That holds for records this build writes, because their server holds the lock for its whole life. It does not hold for a bare-pid file written before BUG-2969: no build that wrote that form took a lock, so a free lock says nothing about its server, which may be live. The day-19 refresh deleted exactly such a record. A record without a fingerprint (zero StartedAt, which is what a bare pid parses to) is now unprovable and left in place, the answer Windows already gave for the same shape. Fingerprinted records are unchanged. Three existing fixtures modelled fingerprinted records without a StartedAt, which no build writes; they now carry one. Claude-Session: https://claude.ai/code/session_01RYiqbqXmxQMoKHsGm8B77N * fix(cli): a legacy PID file naming a dead process is stale and removed; start is never blocked by a kept one (BUG-2970) The kept, unprovable state now applies only while the legacy record's pid exists. A pid with no process behind it cannot be anyone's server, so that record is stale by the same proof as an unheld fingerprinted one, and is removed under the lock. Stop then says "server not running" instead of refusing forever. Tests pin both halves of the way out. Start is never blocked: EnsureServer probes the port, and the new server's ClaimPIDFile takes over a kept legacy file and writes a fingerprinted record stop can address. And the kept refusal names its manual remedy (remove <path>). Claude-Session: https://claude.ai/code/session_01RYiqbqXmxQMoKHsGm8B77N