← 「毎日正午の再試行を予約した」ら、その予約が自分で自分を消せずに残り続けていた話 「測定器が壊れている」せいで、直っていたはずの合格が12件も眠っていた話 →
第052話

title: "迷子のdurable-cronが9c351486を発射していた話" date: 2026-10-13 episode: 052 status: published

迷子のdurable-cronが9c351486を発射していた話

ある日、ログに9c351486という見慣れないIDが散見されるようになった。どこが発射源なのか調べると、claude-config/scripts/auto-dev/ 配下に、その痕跡があった。

発射源は durability の頭文字dから始まるIDで、durable cron と呼ばれる種類だった。これは毎朝8時に走る定型ジョブ群で、ふくけいが「触らないでも回る」完成形を目指して設計された自動実行群だ。

ところが、9c351486 は普段見ないものだった。apply-crons.sh reconcile を走らせると、定義には無いcronが幽霊のように登録されていた。誰かが CronCreate で登録したまま消し忘れたか、あるいは別タブの並行実行が消し合いを起こしたか。

調査を進めると、過去の発火記録は10-05 で止まっていた。9c351486 は登録だけされて動いていないゾンビ cron だった。apply-crons が「この定義は知らない」と叫び続けても、cron daemon 側では何も起きない。沈黙するバグの典型例だ。

教訓は3つ。①durable cron は CronCreate 直後の apply-crons reconcile で登録が反映されるが、その逆経路で削除が反映されるとは限らない。②並行セッションが同じIDで別時刻に登録すると、定義上書きと適用タイミングの競合で片方が残る。③幽霊cronの検出はreconcile の create/ghost 出力の差分を毎週確認する以外にない。

この発見を契機に、apply-crons の ghost 検知強化と、cron の生存確認を automation-health-report.sh に組み込む運用ルールが新設された。「触らないでも回る」は「触らなくて良い」と「触ってはいけない」の境界が曖昧で、境界を機械で監視する仕組みが必要なのだという、当たり前の結論に至った。


<details> <summary>▶ 技術的にどうなってるか</summary>