概要
現在のディレクトリ移動ベースのタスク管理(tasks/ → completed/ / failed/)を廃止し、.takt/tasks.yaml 単一ファイルによる中央集権的な管理に移行する。
動機
- タスク状態がファイルの物理的な位置に依存しており、メタデータ(失敗理由、直前のエージェント出力等)を持たせにくい
.md / .yaml / .yml の3形式サポートが不要な複雑さを生んでいる
- 手動でファイルを置く運用は実際にはほぼ使われておらず、
takt add 経由が主流
- 並列実行時の claim 管理がインメモリ
Set で、プロセス再起動で消える
設計
単一ファイル .takt/tasks.yaml
tasks:
- name: fix-auth-bug
status: pending # pending | running | completed | failed
content: |
認証バグを修正する
piece: default
created_at: 2026-02-09T10:00:00
started_at: null
completed_at: null
failure: # failed 時のみ
movement: review
error: "確認事項によりABORT"
last_message: "セキュリティ要件の確認が必要です..."
フォーマット
- YAML 固定(
.md サポート廃止)
- タスク作成は
takt add 経由のみ
状態遷移
pending → running → completed
→ failed → pending(retry)
初期化・リセット
tasks.yaml が無い → 空の状態(タスクなし)
tasks.yaml を削除 → 全リセット
takt add 時にファイルが無ければ新規作成
異常状態の自動復旧
| 状態 |
原因 |
対処 |
running のまま残る |
プロセス kill / クラッシュ |
takt run 起動時に running → pending に戻す |
| ロックファイルが残る |
クラッシュ |
stale lock 検出(PID チェック) |
| YAML 破損 |
書き込み中断 |
削除して再作成 |
排他制御
.takt/tasks.yaml.lock ← PID 入りロックファイル
- 取得: lockfile 作成(既存なら PID 生存チェック → stale なら奪取)
- 解放: lockfile 削除
- 書き込み: 一時ファイルに書いて rename(アトミック)
影響範囲
廃止
.takt/completed/ ディレクトリ
.takt/failed/ ディレクトリ
.md 形式のタスクファイルサポート
- ファイル移動ベースの状態管理(
moveTask())
- インメモリ
claimedPaths による claim 管理
変更
src/infra/task/runner.ts — TaskRunner を tasks.yaml ベースに全面書き換え
src/infra/task/parser.ts — YAML 固定に簡素化
src/features/tasks/list/ — listFailedTasks() を tasks.yaml から読むように変更
src/features/tasks/list/taskRetryActions.ts — retry 時に tasks.yaml のステータスを更新
src/features/tasks/execute/taskExecution.ts — 完了/失敗時に tasks.yaml を更新
src/features/tasks/add/ — takt add で tasks.yaml に追記
関連
概要
現在のディレクトリ移動ベースのタスク管理(
tasks/→completed//failed/)を廃止し、.takt/tasks.yaml単一ファイルによる中央集権的な管理に移行する。動機
.md/.yaml/.ymlの3形式サポートが不要な複雑さを生んでいるtakt add経由が主流Setで、プロセス再起動で消える設計
単一ファイル
.takt/tasks.yamlcontent_file: pathで外出し可能フォーマット
.mdサポート廃止)takt add経由のみ状態遷移
初期化・リセット
tasks.yamlが無い → 空の状態(タスクなし)tasks.yamlを削除 → 全リセットtakt add時にファイルが無ければ新規作成異常状態の自動復旧
runningのまま残るtakt run起動時にrunning→pendingに戻す排他制御
影響範囲
廃止
.takt/completed/ディレクトリ.takt/failed/ディレクトリ.md形式のタスクファイルサポートmoveTask())claimedPathsによる claim 管理変更
src/infra/task/runner.ts—TaskRunnerをtasks.yamlベースに全面書き換えsrc/infra/task/parser.ts— YAML 固定に簡素化src/features/tasks/list/—listFailedTasks()をtasks.yamlから読むように変更src/features/tasks/list/taskRetryActions.ts— retry 時にtasks.yamlのステータスを更新src/features/tasks/execute/taskExecution.ts— 完了/失敗時にtasks.yamlを更新src/features/tasks/add/—takt addでtasks.yamlに追記関連
failureフィールドで解決)