PJR-2JYE dashboard に routine の実行状況・着手可能な登録項目のおすすめ順・要対応一覧を追加し毎朝 5 時に更新する
1. 概要
現行の dashboard(Schedule / タイムライン / 登録簿の件数 / routine の最終実行)には「今日なにをすべきか」を判断する情報がない。次の 3 節を追加し、毎朝 5:00 に routine で再生成する。
- 昨日実行した routine と本日予定の routine の実行状況
- 着手可能な登録項目のおすすめ順(
exec run --registerの候補) - 要対応(解除待ち): 登録簿の
waiting項目と exec のblockedタスク
1.1. 決定事項
- routine の実行履歴は新設する(決定 B)。
routine runが routine ごとの実行をroutines/generated/routine-runs.jsonlへ追記し(routine id、scheduled_for、開始・終了時刻、結果、job run id)、dashboard はこれを読む。routine-state.jsonのlast_run/last_resultは現行どおり維持する。 - 「着手可能」は
item_status: openかつ実行対象 type(todo / issue / change-request / question / risk)に限り、waitingは含めない。 waiting(登録簿)とblocked(exec タスク)は「要対応(解除待ち)」として別節に出し、理由(最新のwaitイベントの reason、最新のblockイベントの msg)と次の行動を添える。- おすすめ順は、期日超過 → 期日が近い → 優先度(high > medium > low)→ 関連ドキュメントに open の PJR があるものは後ろ → 登録日が古い順とし、上位 10 件を根拠列付きで表示する。
- 毎朝の更新は cron 直叩きではなく routine
rtn-dashboard-refresh(0 5 * * *、jobjob-dashboard-build)で行い、実行記録を残す。.devcontainer/specdojo-routine.cronのroutine run --dueに 5:00 と 6:00 を追加する(6:00 のrtn-grade-deliverable-recheckが 8:00 まで待たされexec busyで skip される問題も併せて解消する)。
2. 完了条件
routine runがroutines/generated/routine-runs.jsonlへ 1 実行 1 行を追記し、schema がdocs/specdojo/schemas/v1/に定義されnpm run validate:schemaを通過している。- dashboard に「routine 実行状況(昨日・本日)」「着手可能な登録項目(おすすめ順)」「要対応(解除待ち)」の節があり、それぞれ上記の決定事項どおりの列と根拠を持つ。
rtn-dashboard-refreshとjob-dashboard-buildが定義され、routine run --id rtn-dashboard-refreshで dashboard が再生成される。.devcontainer/specdojo-routine.cronが 0,5,6,8,16 時にroutine run --dueを呼ぶ。- 単体テストで、履歴の追記、昨日・本日の抽出(Asia/Tokyo 境界)、おすすめ順のソート、waiting / blocked の理由抽出が検証されている。
docs/ja/specdojo/guides/routine-operation-guide.mdとcommand-reference.mdに履歴ファイルと dashboard の新節が記載されている。npm run checkが通過している。
3. 作業内容
| No | 作業 | 担当 | 状態 | メモ |
|---|---|---|---|---|
| 1 | routine run に routine-runs.jsonl の追記を実装し、schema とテストを追加する | DEV | done | 1実行1行の JSON Lines 履歴と schema を追加 |
| 2 | dashboard に routine 実行状況(昨日・本日)の節を追加する | DEV | done | Asia/Tokyo の日付境界で実績と予定を集計 |
| 3 | dashboard に着手可能な登録項目のおすすめ順と要対応(waiting / blocked)の節を追加する | DEV | done | 根拠列、解除理由、次の行動を表示 |
| 4 | rtn-dashboard-refresh / job-dashboard-build を定義し、cron に 5:00・6:00 を追加する | OPS | done | 5時更新と due runner の追加確認枠を定義 |
| 5 | guide / command-reference を更新する | DEV | done | 履歴正本、dashboard 新節、cron 設定を記載 |
| 6 | 生成結果を確認し、順位付けの根拠列や表の粒度を調整する | PM | done | 上位10件に期日・優先度・関連項目数・登録日時を表示 |
| 7 | routine に exec の実行ロックを取らない action.kind: specdojo を追加し、dashboard 更新を毎時にする | DEV | done | オーケストレーターが直接対応。job-dashboard-build は廃止 |
| 8 | devcontainer の cron を毎時の routine run --due にする | OPS | done | オーケストレーターが直接対応 |
4. 対応結果
routine runが完了時にroutines/generated/routine-runs.jsonlへ実行枠、開始・終了時刻、結果、Job Run ID を追記するようにした。- dashboard に昨日・本日の routine、着手可能な登録項目の上位10件、register の
waitingと exec のblockedをまとめた解除待ち一覧を追加した。 job-dashboard-buildと毎朝5時のrtn-dashboard-refreshを追加し、devcontainer の due runner を0時・1時・5時・6時・8時・16時に起動する構成へ更新した。既存の1時の成果物評価枠は維持した。- 単体テストへ履歴追記、Asia/Tokyo の日付境界、候補の並び順、最新の
wait/block理由抽出を追加した。 - 残課題はない。routine の実行履歴は次回の実運用実行から蓄積される。
4.1. 追記(2026-09-19)
dashboard build は agent を呼ばずトークンも消費しないため、利用者の判断で毎時更新に変更した。ただし routine の job action は exec run --job --if-busy skip を経由し、grade や register の実行中は skip されるため、実行ロックを取らずに specdojo サブコマンドを直接起動する action.kind: specdojo を routine に追加し、rtn-dashboard-refresh を cron: "0 * * * *"・args: [dashboard, build] に置き換えた(job-dashboard-build は廃止)。devcontainer の cron は毎時 routine run --due を呼ぶ形にし、各 routine の発火時刻は routine 側の cron で決まる。
作業 6 の調整として、routine 実行状況の表を Asia/Tokyo の月日・時分で表示し、予定時刻を過ぎて履歴がない行を「未実行」と区別し、1 日に 3 回以上動く routine(毎時の dashboard 更新)は最新の実行 1 行に実行回数をまとめるようにした。
4.2. レビュー結果(2026-09-21)
完了条件を develop で確認した。routine-runs.jsonl(schema 付き)、dashboard の 3 節、毎時の rtn-dashboard-refresh(specdojo action)、テスト、guide / command-reference、npm run check はいずれも満たしている。cron の時刻は PJR-W5JT と毎時化で「毎時 routine run --due」に置き換わった。レビュー時点で dashboard の「routine 実行状況」が 9/21 1:00 / 6:00 の夜間 grade を「未実行」と示し、9/20 12:00〜9/21 10:00 JST に cron が動いていなかった(コンテナが VS Code 外で再起動され postStartCommand が走らず cron デーモンが起動していなかった)ことを検知できた。対策として postAttachCommand で cron の起動を確認する。
5. 関連ドキュメント
- specdojo:routine-operation-guide
- specdojo:command-reference
src/dashboard.tssrc/routine.ts.devcontainer/specdojo-routine.cron