Skip to content

fix: pids が尽きて git を起こせなかった回の退避の記録が、前の回の枝名を台帳から消さないようにする - #4400

Merged
takecchi merged 2 commits into
mainfrom
fix/1266-rescue-keep-branch
Oct 10, 2026
Merged

takecchi merged 2 commits into
mainfrom
fix/1266-rescue-keep-branch

Conversation

@takecchi

Copy link
Copy Markdown
Owner

Refs #1266

何が残っていたか

#4398 の続きである。#4398 は未 push 観測(lastUnpushedWorkObservation)を直した。退避の記録(lastRescue)にも、同じ穴が残っていた。

  • pids が尽きて fork が断られた回、runner の runRescue は git symbolic-ref を起こせない。そのため branch: null に notPushed: { reason: 'error' } の作業ツリーを送る。
  • デーモンの mergeRescue は ...tree でこの回の値を丸ごと置くので、前の回で取れていた枝名が null で上書きされていた。pushed(退避 ref)は前の回のものを引き継いでいたので、取り戻す手順は残っていた。

変えたこと

  • mergeRescue で、この回の branch が null で、前の回の同じ作業ツリーが枝名を持っていたら、枝名を引き継ぐ。引き継いだ時刻は branchCarriedFromAt(rescueWorktreeSchema に足した任意の欄)で名乗る。
  • apps/daemon/openapi.json を pnpm --filter "@alteroid/daemon..." build で再生成した(欄が1つ増えただけ)。

確かめたこと(ローカル。2026-10-10)

  • pnpm --filter @alteroid/core --filter @alteroid/cli --filter @alteroid/web typecheck は緑。
  • vitest run で manager-rescue-ref-cleanup / rescue-ref / manager-workspace-nudge が 3 files / 97 tests 緑。
  • 変更したファイルに prettier --check と eslint を通した。
  • 足した歯:
    • fork が断られた回が前の回の枝名を引き継ぎ、時刻を名乗る。退避 ref と、この回の notPushed はそのまま残る。
    • 続けて取れなかった回でも、引き継いだ時刻が動かない。
    • 対照として、取れたら印を残さないこと、別の作業ツリーの枝名は引き継がないことを確かめた。

確かめていないこと・気づいたこと

  • 本番で fork が断られた回の退避の記録が、実際にこの形(branch: null、notPushed: error)で届いているかは見ていない。根拠は rescue-ref.ts の runRescue の読みだけ(symbolic-ref が失敗すれば branch は null)。
  • lastRescue の branch は、いまのところどの表示にも出ていない(manager_list の describeRescue、器の入れ替え後の nudge のどちらも使っていない)。読めるのは GET /managers の応答と台帳だけである。表示は変えていない。

Alteroid-Issue-Done: none

@takecchi
takecchi merged commit e5b2de5 into main Oct 10, 2026
6 checks passed
@takecchi
takecchi deleted the fix/1266-rescue-keep-branch branch October 10, 2026 04:02
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