PJR-B4Y4 register に epic の type を追加する
1. 概要
schema・個票のテンプレート・register の各コマンドで epic を扱い、exec run --register の対象から外す。子 todo を --from でたどる一覧を出す
- PJR-NJJ7 の決定に従い、track の仕事を担う新しい type
epicを register に加える。
2. 完了条件
- 個票の frontmatter の schema と event の schema の type に
epicがある。状態は todo と同じ(終端はdone、ほかにrejected/deferred)。 epicは担う track を frontmatter に持つ。フィールド名は executor が決める。tml-index.yamlがあるときは、その track が定義済みかを検証する。- 個票のテンプレート
pjr-epic-template.mdがあり、節は「概要」「範囲(track と domain)」「完了の判断の基準」「子項目」「対応結果」「関連ドキュメント」である。 register add/close/updateなどの記帳のコマンドでepicを扱える。exec run --registerにepicを指定すると、epic は実行の対象ではないと示して止まる。夜間の orchestrator はepicを飛ばす。register buildが、epicごとに子項目(derived_fromでepicを指す項目)とその状態を並べたビューを生成する。- pjr-rulebook と register-operation-guide の type の表に
epicを足し、command-reference に反映する。 - CHANGELOG の
## [Unreleased]に追記する。公開済みの版の節は変えない。 - orchestrator の指示(agent の定義)の type の表は保護された設定のため直接変えず、変更の案を本個票の対応結果と報告の
handoffに書く。反映は利用者の承認のもとで行う。 - 単体テストで、schema・記帳・実行から外す判定・ビューを確かめる。
- 作業の中で
npm run typecheck・npm run lint:ts・npm run lint:md・npm run test:unitが通り、親の検証 7 件が通る。 - 設計で決めることは executor が決め、理由を本個票の対応結果に書き、報告の
handoffにも書く。
3. 作業内容
| No | 作業 | 担当 | 状態 | メモ |
|---|---|---|---|---|
| 1 | schema・テンプレート・記帳のコマンドに epic を追加 | executor | done | - |
| 2 | 実行の対象から外す判定を実装する | executor | done | - |
| 3 | epic ごとの子項目のビューを追加する | executor | done | - |
| 4 | rulebook・ガイド・command-reference・CHANGELOG を更新 | executor | done | - |
| 5 | 単体テストを追加し、検査を通す | executor | done | - |
4. 対応結果
epicを個票・event の schema と register の分類に追加し、todo と同じ状態遷移・通常終端done・例外終端rejected/deferredを使用する。type の event は個票 schema の共通 enum を参照する。- track のフィールド名は
trackとした。timeline の既存キーと一致させ、実行対象文書のtargetsと区別できるため。epic で必須、他 type では指定不可とし、add・update・build で検証する。--trackで設定・置換し、削除は認めない。timeline_path(既定timeline)にあるtml-index.yamlを既存の読み取り処理で検証し、定義済み track に限定する。timeline がなければ形式だけを検証して保持し、schedule を使わない子 todo の分解も可能にする。 - 個票テンプレートは指定された六つの節を追加した。子項目の状態を本文へ重複保存せず、
--fromが記録するderived_fromを再利用し、generated/pjr-epic-items.mdに epic ごとの直接の子、type、現在の状態を表示する。既存の派生関係の収集を使って別 project の子も識別し、子がない epic も残す。孫の再帰集計・状態の自動集約・自動 close は行わず、人が子と schedule を材料に判断する。 trackを個票の読み書き・update・topic 変更・追記イベント・統合時のイベント再適用・外部 project 起票への引き渡しに対応させた。close・reject・defer・reopen は既存の共通処理を使用する。- 実行対象の既存の許可リストを維持し、epic の直接実行は type と「実行対象外」を示すエラーで停止する。filter と夜間 queue も除外する。夜間の承認対象も既存どおり todo・issue に限定する。
- pjr-rulebook、register-operation-guide、command-reference、状態遷移設計、一覧テンプレート、CHANGELOG の Unreleased を更新した。
- schema・track の記帳と定義検証・終了と再開・イベント再適用・直接実行拒否・filter / 夜間 queue 除外・直接の子と状態の表示について単体テストを追加した。親検証 7 件(typecheck・lint-ts・lint-fm・lint-md・validate-schema・test-unit・test-integration)は executor で重複実行せず、runner の結果を正とする。
- 再開時に前回の単体テスト失敗 2 件を確認した。epic テンプレートのタイトルを生成処理が置換する
_EPIC_TITLE_に修正し、生成した個票の H1 と読み取ったタイトルの検証を追加した。また、共通成果物 schema にもtrackを許可し、識別子の定義を個票 schema の$defs/Trackに集約して参照する。個票と汎用の成果物検査で同じ形式を検証するためである。単体テストの再実行は親 runner が担当する。 - 今回の再開では、親の単体テストで残ったタイトルの期待値の不一致を修正した。既存の
titleFromBodyは一覧用の値として|をエスケープするため、読み取り結果の期待値を業務 \| 整備とし、個票の H1 には業務 | 整備が残ることも確認する。既存の読み取り仕様は変更していない。生成個票が共通成果物 schema に適合する回帰テストも追加し、状態遷移設計の Mermaid 図の完了対象に epic を反映した。 - 再開時の executor 検証: 変更ファイル 30 件の Prettier 整形、生成した epic 個票と子項目ビューの markdownlint、生成個票の個票用・共通成果物用 schema と event schema の
validate:schema:file、register build --project prj-0001、hook と同じ catalog 検証、git diff --checkが成功した。catalog 検証は未作成成果物に関するbased_onの警告を出したが、終了コードは 0。ソースの lint・単体テストを含む親検証 7 件の判定は runner が追記する。 - 統合後の確認は pm-orchestrator-playbook の runner・register・exec の変更時の手順に従い、オーケストレーターが PJR-JSEY の確認対象へ PJR-B4Y4 を加えて
claude-executorで実行する。start から review までと event の actor を確認する。実 agent CLI の起動と使用枠を伴うため、executor sandbox では実施せず申し送る。 - 保護された設定の変更案(未適用):
.agents/specdojo-orchestrator.agent.mdの type 表へepic(用途: track ごとの仕事の着手・完了を管理、通常終端:done)の行を加える。本文に「--trackで track を指定し、具体的な作業は--from <epic-id>の子 todo に分解する。epic 自体を実行せず、夜間も飛ばし、子項目と schedule を材料に人が close を判断する」を加える。利用者の承認後に SSOT を編集し、npm run orchestrator:syncで配布用ラッパーを同期する。今回は agent 定義・ラッパーを編集していない。