Skip to content

dashboardの登録簿・daemon故障をtyped errorで返す(0.71.2) - #5

Merged
quolu merged 1 commit into
mainfrom
snowwhite/dashboard-typed-errors
Oct 3, 2026
Merged

quolu merged 1 commit into
mainfrom
snowwhite/dashboard-typed-errors

Conversation

@quolu

@quolu quolu commented Oct 3, 2026

Copy link
Copy Markdown
Collaborator

何を直すか

mac-kite の launchd(lattice todo dashboard ensure --json、120秒毎)のlogに、INTERNAL_FAILURE が57行あった。

  • 56行: dashboard daemon is alive but temporarily unresponsive(0.60.6〜0.69.0の頃)。終了したdaemonのPIDを別processが再利用し、生存中と誤認して復旧が止まっていた。原因は0.69.1(f1a97d39)で修正済み。
  • 1行: dashboard registry lock timeout(2026-10-03、0.71.x、Macの高負荷時)。

どちらも error.code(DASHBOARD_DAEMON_UNRESPONSIVE・DASHBOARD_REGISTRY_BUSY)を持つのに、detail が無いため todo-cli のtyped分岐(code+detail)に乗らず、INTERNAL_FAILURE とstack抜粋で返っていた。外部状態(別process・lock・負荷)の不整合であって内部故障ではない。

  • src/todo-dashboard-registry.mjs: DASHBOARD_* の11箇所を dashboardError() に揃え、detail: { reason, next_action } を必ず持たせる。再実行で解ける種類は next_action: 'lattice todo dashboard ensure --json'、登録簿の破損は null。
  • 登録簿JSON破損のmessageから、localの絶対pathを外した。
  • 試験 test/todo-dashboard-typed-errors.test.mjs: 握られたlockで関数とCLIの両方を確かめる。修正前は2件とも赤。

試験

  • ローカル npm run ci: root 1935件中、失敗は hooks-cli.test.mjs の1件だけ。試験中に共有HOMEの ~/.claude/settings.json が外部から書き換えられた(Aitermのhook登録)のを検知したもので、単体の再実行は51/51成功。この変更とは無関係。

🤖 Generated with Claude Code

mac-kiteのlaunchd(todo dashboard ensure、120秒毎)のlogに、lock待ち切れやdaemon無応答が
INTERNAL_FAILUREとstack抜粋で残っていた。codeだけのErrorはCLIのtyped契約(code+detail)に
乗らないため。detailを必ず持たせ、再実行で解ける種類はnext_actionで示す。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@quolu
quolu merged commit dba77df into main Oct 3, 2026
8 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant