2.5 KB · updated 2026-07-31 · md

v0.19.1.ja.md

docs/i18n/release-notes/v0.19.1.ja.md

Tesserae v0.19.1 — doctor がライブなデーモンを疑うのをやめる

<!-- translations:start -->

English · 한국어 · 中文 · Русский · Español · Français · Deutsch

<!-- translations:end -->

Released 2026-07-11 · PyPI · GitHub release · pip install --upgrade tesserae==0.19.1

バグ修正は 1 件ですが、doctor --fix がそれに基づいて動作しうるため、パッチリリースに値します。

バグ

macOS では、エンジンの pidfile の同一性判定に ps -o lstart= を使っており、その出力はロケール依存です。韓国語ロケールのシェルで起動されたデーモンは 2026년 7월 11일… と記録しますが、英語ロケールで動くチェッカーは同じ時刻を Sat Jul 11… と読み取ります。この不一致が PID の再利用と解釈され、tesserae doctor稼働中のエンジンデーモンを古い pidfile として報告していました — さらに --fix は実行中プロセスの足元から pidfile の削除を提案し、2 つ目のデーモンが起動する扉を開いていました。

修正

ps の呼び出しを LC_ALL=C に固定したため、今後は書き手と読み手が常に開始時刻を同一の表記でレンダリングします。以前のビルドが書いた pidfile については、owner_is_alive に一方向のレスキューを追加しました:開始時刻の表記が一致しない場合、完全なコマンドラインの厳密一致が「稼働中」の判定を復元します。このレスキューは「稼働中」を広げる方向にしか働きません — 本当に再利用された PID は、両方の同一性シグナルが異なるため、引き続き stale と判定されます。

0.19.0 のエンジンデーモンを起動した数分後に、韓国語ロケールのマシン上でライブに発見されました;両方向(ロケール不一致 → 稼働中、真の PID 再利用 → stale)の回帰テストに加え、ps 呼び出しがロケール固定のままであることを保証するソースレベルのガードも追加されています。