Skip to content

feat(local-agent-loop): 系列の止まった run を demo archive --series でまとめてアーカイブする - #295

Merged
coji merged 4 commits into
mainfrom
coji/archive-series
Oct 10, 2026
Merged

coji merged 4 commits into
mainfrom
coji/archive-series

Conversation

@coji

@coji coji commented Oct 10, 2026 •

Copy link
Copy Markdown
Owner

Summary

demo archive --series <runId> を追加し、指定した run が属する系列(task: 最初の run とその下の修正 run すべて)の止まった run を 1 回の操作でアーカイブできるようにした。demo status のテキスト表示は、各 task のブロックに未アーカイブの停止件数と、そのまま貼れる demo archive --series <最初の run の ID> を出す。

Closes #294

Changes

  • src/actions.ts: archiveSeries を追加。系列の判定は既存の repairParentId(repairOf ラベル → 保存済み入力)と taskRunIds を使い、archivable が認める停止 run だけに既存の archiveRun を古い順に適用する。判断待ち・実行中・納品済みの run はエラーにせず残す。アーカイブ済みの停止にも archiveRun を回すので、worktree の片付けの再試行も系列単位でできる。1 件が失敗しても残りは続け、失敗した run を ID 付きで返す。
  • src/cli.ts: archive --series(--run と排他、--delete-branch は各 run に既存規則で適用)、status の stops: 行、使い方。--run の挙動と出力は従来どおり。
  • Task 型、status --format json、web UI の /api/runs は変えていない。web UI に系列アーカイブのボタンは足していない(archiveSeries は actions.ts にあるので後から足せる)。
  • README(status とアーカイブの節)と ADR-0033(本 PR で accepted、索引も accepted)。

判断: 自動除外ではなく、まとめてアーカイブ

「最後の run が承認・納品された系列の停止を、最初から数えない」案は採らなかった。ADR-0028 で、停止した run の worktree の削除と demo prune の対象判定はアーカイブ(人が確認を終えた合図)に結び付いている。自動で数えなくすると、worktree が残ったまま prune にも status にも出ない run ができる。途中の run だけを残したい場合(受け入れ基準 2)にも、自動除外では個別に残せない。納品済みの系列に限って --series を許す案も、放棄した系列や修理中の系列の停止にも同じ片付けが要るため採らなかった。どちらも ADR-0033 に記録した。

進めた工程

spec-implement-accept: 仕様草案 → 仕様レビュー(APPROVE)→ 実装 → 受け入れ検査(APPROVE)→ simplify → 最終確認(COMPLETE)→ ドキュメント確認(追加変更なし)。

Test plan

  • 初回 run・修正 run・孫の修正 run・納品済み run のどの ID を --series に渡しても、同じ task の停止 run がすべてアーカイブされる(tests/cli-config.test.ts の archive --series)
  • 別の task の run はアーカイブされない
  • 判断待ち・実行中・pending・納品済みの run はアーカイブされず、停止 run は処理される
  • 納品済み run を指定しても停止 run をアーカイブでき、納品済みの run の状態は変わらない
  • 系列の 1 件が診断できなくても残りの停止はアーカイブされ、その run の ID を出して 0 以外で終わる
  • アーカイブ済みの停止にも片付けが再実行される(ロックした worktree で警告 → 解除後の再実行で削除)
  • --delete-branch の有無でブランチ削除が既存規則どおりに分かれる
  • --series と --run の同時指定、両方の省略、--series の値なし、存在しない ID は失敗する
  • archive --run は従来どおり 1 件だけを扱い、停止以外を拒否する
  • status の stops: 行に未アーカイブの停止件数(置き換え済みを含み、アーカイブ済みを含まない)と --series <最初の run> が出る
  • 系列の停止をすべてアーカイブすると「wait on a person or stopped unresolved」から外れ、判断待ちの run がある系列は残る
  • status --format json の task と run のキーは変わらない
  • ADR-0033 と索引がともに accepted
  • pnpm validate が通る(local-agent-loop 610 件 pass、turbo 32/32)

Review gate

GO。最終レビューの head は 218d942。全チェックの pass を確かめてから mark-ready.sh で Ready にした。

Round Head Result Blockers Notes
1 67e2814 NO-GO 1 (C1, P2) archiveSeries が diagnose を per-run の try の外で呼んでいたため、1 件の診断が失敗すると残りの停止 run を処理しなかった(ADR-0033 と矛盾)
2 eeb0d6b GO 0 C1 を直してテストを足した(修正前のコードでは失敗する)。差分と C1 の全トリガーを Codex(8 観点)+ Opus で再レビュー
3 218d942 GO 0 round 2 で両トラックが独立に挙げた P3 を修正: エラー文を「could not diagnose or archive every run」に変え、再実行の案内を worktree の片付け警告のときだけに絞った
  • pnpm validate: 218d942 で exit 0(local-agent-loop 610/610、turbo 32/32)
  • CI(218d942): validate / test-node / test-browser / Vercel 2 件すべて pass。round 2 の head では Vercel turso が git_info_fail で失敗していた(Vercel が git 情報を取れず、ビルド前に失敗)。この head では再現していない
  • 非ブロッカー(P3)として残したもの:
    • README の失敗時の説明(「一部の run のアーカイブに失敗しても…0 以外で終わります」)が、診断の失敗に触れていない(ADR と CLI は触れている)
    • 別 job の run を起点に渡すと、0 件で成功扱いになる(demo の job は 1 つだけ)
    • 系列を引く処理が ui/server.ts の lineageOf と同じ手順を繰り返している。停止 run を archiveRun の中でもう一度診断している(競合の防止も兼ねる)。毎回すべての run を読んでいる
    • 残っている停止がすべて置き換え済みの task は、status にブロックが出ないので stops: 行も出ない(既存の表示規則で、ADR-0033 でも維持)
    • テストで setup step の挿入が 2 か所に重複している

Base: main@82d2a849aca64b5f13f1ef5717cb6517a5719acb
Head: 218d942

Generated with spec-implement-accept skill

🤖 Generated with Claude Code

https://claude.ai/code/session_01DuLK93sm6yjP1bMjmdQwMc

@vercel

vercel Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Actions Updated
durably-demo Ignored Ignored Preview Oct 10, 2026 7:22am UTC
durably-demo-vercel-turso Ignored Ignored Preview Oct 10, 2026 7:22am UTC

@coji
coji marked this pull request as ready for review October 10, 2026 07:27
@coji
coji merged commit 0f16329 into main Oct 10, 2026
5 checks passed
@coji
coji deleted the coji/archive-series branch October 10, 2026 07:28
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.

local-agent-loop: 納品済みの系列の止まった run を、まとめてアーカイブできるようにする

1 participant