v0.19.1.md
docs/release-notes/v0.19.1.md
Tesserae v0.19.1 — doctor stops second-guessing live daemons
<!-- translations:start -->
한국어 · 中文 · 日本語 · Русский · Español · Français · Deutsch
<!-- translations:end -->
Released 2026-07-11 · PyPI · GitHub release · pip install --upgrade tesserae==0.19.1
One bug fix, worth a patch because doctor --fix could act on it.
The bug
On macOS, the engine's pidfile identity uses ps -o lstart=, whose output is locale-dependent. A daemon started under a Korean-locale shell records 2026년 7월 11일…; a checker running under an English locale reads Sat Jul 11… for the same instant. The mismatch was interpreted as PID reuse, so tesserae doctor reported a live engine daemon as a stale pidfile — and --fix offered to delete the pidfile out from under the running process, opening the door to a second daemon.
The fix
The ps invocation is pinned to LC_ALL=C, so writer and reader always render the start time identically from now on. For pidfiles written by earlier builds, owner_is_alive gains a one-way rescue: when the start-time renderings disagree, an exact full-command-line match restores the alive verdict. The rescue can only ever widen "alive" — a genuinely recycled PID still reads as stale because both identity signals differ.
Found live on a Korean-locale machine minutes after starting the 0.19.0 engine daemon; regression-tested for both directions (locale mismatch → alive, true PID reuse → stale) plus a source-level guard that the ps call stays locale-pinned.