## 概要 `DevLog::finish` (`src/devlog.rs:358`) は `run.prompt` が無いと何も書かずに戻ります。そのため、プロンプトを組み立てる前に失敗した実行 (`--all` のステージングの失敗など) は dev_log に残りません。 `App::run` (`src/app.rs:741`) のコメントは「出口を増やしても記録漏れが起きないように、1 か所で書き出す」としています。`finish` のコメントも「set_result まで到達しなかった = 途中で失敗した実行」を `failed` として記録する意図です。プロンプトを作る前の失敗だけが、この経路から漏れています。 ## 影響 Stop フックから `git-sc --all --yes --quiet` を切り離して起動すると、標準エラーを受け取る相手がいないので、失敗がどこにも残りません。 実際に、中断された git 操作が残した `.git/index.lock` (0 バイト、握っているプロセスなし) のせいで、自動コミットが数時間にわたって毎回失敗していました。手で `git-sc --dry-run --all` を実行するまで、原因にも失敗そのものにも気付けませんでした。 ## 再現 `[dev_log] enabled = true` の設定で確認しました。 ```bash mkdir repro && cd repro && git init -q . echo a > a.txt && git add a.txt && git commit -qm init echo b >> a.txt touch .git/index.lock ls ~/.config/git-sc/logs/$(date +%F) | wc -l # 実行前の件数 git-sc --all --yes --quiet; echo "exit=$?" # exit=1。標準エラーに index.lock の File exists ls ~/.config/git-sc/logs/$(date +%F) | wc -l # 件数が増えない ``` ## 期待する動作 - プロンプトを作る前に失敗した実行も、`result.status = "failed"` と `result.error` を付けて記録する (`prompt` は null のまま) - このケースの回帰テストを足す (ステージングで失敗しても 1 件記録される) ## 環境 - git-sc 26.9.102 (macOS)
Activity
owayo commentedon Sep 30, 2026
#2 をマージして対応しました。