PJR-SEQC timelineをgantt-chartへ改名し、timelineをトラック順序計画として新設する
1. 概要
現状のtimeline(sch-track群から生成するGantt可視化)をgantt-chartへ改名し、空いたtimelineという名前を、成果物カタログ作成〜トラック実行までのマクロな順序を人間が決めて記録する新しい成果物種別(tml-)として新設する。設計判断は本チケットで確定済みのため、以降の実装はAI Agentが本文の仕様に沿って進めてよい。
2. 確定した設計(実装の前提)
2.1. tml-index.yaml の仕様
- 記述形式: YAML。
- 配置先:
docs/ja/projects/prj-0001/timeline/tml-index.yaml(schedule/等と同様、プロジェクト直下の横断ディレクトリ)。 - ID:
prj-0001:tml-index。prefixはtml-。 - Kata:
specdojo:tml-rulebookのみ新設する(sch-rulebook.mdがrecipe: none/sample: none/template: noneであるのに倣い、recipe/sample/templateは作らない)。 - 保持するフィールド(最低限):
yaml
id: prj-0001:tml-index
type: project
status: draft
rulebook: specdojo:tml-rulebook
project_id: prj-0001
tracks:
- track: <track-id> # sch-strategy-<track>/sch-track-<track> の <track> と対応
domains: [<dct-<domain>.yaml の domain 値の配列>]
catalog_status: not_started | draft | primary # カタログ作成状況
catalog_duration_estimate_days: <number> # draft→primaryに要する見積り工期
order: <int> # 逐次実行時の順序。同値は並行可能候補
parallel_group: <string> # 任意。同じ値を持つtrack同士は並行実行してよい
depends_on: [<track-id>, ...] # 依存する他トラック(先に着手すべきtrack)
note: <string> # 任意の補足catalog_statusは3値固定(not_started/draft/primary)。フル成果物カタログ化(カタログ作成自体を子カタログとしてdone_criteria付きで管理する案)は今回は採用せず、この軽量フィールドと工期見積りで進捗管理する。将来フル化する可能性はtml-rulebook.mdの「今後の検討」節に明記する。
2.2. dct/Schedule との接続方針
schedule build 側がtml-index.yamlを読み込む形にはしない。代わりに 新コマンド specdojo timeline build を新設し、tml-index.yamlを入力として、dct-<domain>.yaml未作成のtrackへのcatalog scaffold相当の準備、およびdepends_on/order/parallel_groupから算出した着手順序の提示(generated/配下への出力)など、後続コマンド(catalog scaffold・schedule build)への入力情報を作る一方通行の生成コマンドとする。既存の「正本→build系コマンド→生成物」という流れに合わせる。具体的な生成内容は実装時にtimeline-build.tsで設計してよい。
2.3. sch-milestones.yaml との関係
廃止しない。sch-milestones.yamlは各trackのphase_gates/group_milestonesから実行後に集計・生成される実績、tml-index.yamlは着手前に人間が決める計画という役割分担をtml-rulebook.mdに明記する。
2.4. 既存生成物・カタログ登録
- 改名後、
docs/ja/projects/prj-0001/execution/generated/timeline*.svg/timeline*.md(現状8ファイル)を削除し、specdojo exec refreshでgantt-chart*として再生成する。 tml-indexをdct-project-management.yamlへ成果物カタログエントリとして登録する(sch-milestones等と同様の粒度)。
3. 完了条件
- 既存
timeline関連モジュール(exec-schedule-timeline.ts/exec-schedule-timeline-scope.ts/exec-schedule-timeline-render.ts)と参照元(exec-schedule.ts/exec-schedule-calendar.ts)のtimelineという語がgantt-chartへ改名されていること(export名・内部変数名を含む)。 - 生成ファイル名(
timeline.svg/timeline.md/timeline-milestones.*/timeline-track-<track>.*)がgantt-chart*系へ改名され、command-reference.md/schedule-design-guide.md/docs/ja/projects/prj-0001/execution/README.mdの記述が追随していること。 - 既存の生成済み
timeline*ファイル(8件)が削除され、gantt-chart*として再生成されていること。 docs/ja/specdojo/rulebooks/tml-rulebook.mdが「2.1」の仕様で新設されていること。docs/ja/projects/prj-0001/timeline/tml-index.yamlが新設され、プロジェクトの既存track(launch/data-flow)と、まだtrack化していないドメインについてcatalog_status・order等を記載していること。specdojo timeline buildコマンドが実装され、「2.2」の contract を満たすこと。tml-indexがdct-project-management.yamlに登録されていること。docs/specdojo/schemas/v1/tml-index.schema.yamlが新設され、tml-rulebook.mdから参照されていること(sch-track.schema.yaml等の既存パターンに倣う)。id-and-file-naming-standard.mdにtml-prefixの命名規則が追記されていること。sch-milestones.yamlとの役割分担がtml-rulebook.mdに明記されていること。docs/ja/specdojo/guides/timeline-design-guide.mdが新設され、timeline buildの生成フロー・運用タイミング・track-design-guide.mdとの関係が記載されていること(sch-がsch-rulebook.mdとschedule-design-guide.mdの両方を持つ構成に揃える)。npm run -s lint:md/npm run typecheck/npm run build/npm run docs:buildが成功すること。
4. 作業内容
| No | 作業 | 担当 | 状態 | メモ |
|---|---|---|---|---|
| 1 | exec-schedule-timeline*.tsのモジュール名・export名・内部変数名の改名 | ARC | done | 3ファイルをexec-schedule-gantt-chart*.tsへgit mv。buildTimelineSvg→buildGanttChartSvg等のexport名、exec-schedule-calendar.tsのtimelineStartDate→ganttChartStartDate等、内部変数timelineStart/timelineEndまで改名 |
| 2 | 生成ファイル名の改名(timeline* → gantt-chart*) | ARC | done | exec-schedule-gantt-chart-scope.tsのfileBaseとexec-schedule.tsのmetadata.json derived_files一覧を変更 |
| 3 | ドキュメント記述の追随 | ARC | done | command-reference.md/schedule-design-guide.md/execution/README.mdを更新。.vitepress/sidebar-config.tsは権限不足で未変更(申し送り) |
| 4 | 既存生成物timeline*(8件)の削除・gantt-chart*としての再生成 | ARC | done | 本worktreeではgenerated/が未生成だったため削除対象なし。exec refreshでgantt-chart*8件(md/svg各4)を生成 |
| 5 | tml-rulebook.mdの新設 | ARC | done | 2.1の仕様、2.3の役割分担(sch-milestones.yamlとの比較表)、今後の検討(フル成果物カタログ化)を記載 |
| 6 | tml-index.yamlの新設 | ARC | done | 既存track(launch/data-flow)+未着手16トラックを6 waveで記載。status: draft、notesに_UNDECIDED_を明記 |
| 7 | specdojo timeline buildコマンドの実装 | ARC | done | src/timeline-build.ts(ロジック)+src/timeline.ts(CLI)を新設しsrc/specdojo.tsへ登録。timeline build/timeline whereを提供 |
| 8 | tml-indexをdct-project-management.yamlへ登録 | ARC | done | タイムライングループ(base_path: timeline)を追加し、done_criteria5件を定義 |
| 9 | docs/specdojo/schemas/v1/tml-index.schema.yamlの新設 | ARC | done | sch-track.schema.yamlに倣い$defs/TrackPlanで定義。tml-rulebook.mdの本文構成から参照 |
| 10 | id-and-file-naming-standard.mdへのtml-prefix追記 | ARC | done | 14.1のプロジェクト関係ドキュメント表へ「トラック順序計画 / Timeline / tml- / tml-index」を追加 |
| 11 | 検証コマンド実行 | ARC | done | typecheck/lint:ts/test(1075件)/build/docs:build/catalog validate すべて成功 |
| 12 | specdojo timeline buildを実プロジェクトで初回実行する | ARC | done | specdojo timeline build --project prj-0001を実行し、timeline/generated/へtimeline-order.md/catalog-scaffold.md/timeline.json(6 wave、catalog_scaffold_targets: 0)を生成。generated/は他成果物と同様gitignore対象のためコミット対象外 |
| 13 | Timeline設計ガイドの新設 | ARC | done | レビューで、sch-がsch-rulebook.md(記述ルール)とschedule-design-guide.md(生成フロー・運用ガイド)の両方を持つのに対し、tml-はrulebookのみで運用ガイドを欠いている点を指摘された。docs/ja/specdojo/guides/timeline-design-guide.mdを新設し、timeline buildの生成アルゴリズム(wave算出・整合性検証・catalog scaffold対象判定)・運用タイミング(tml-index更新のたびに再実行する運用コマンドであること)・track-design-guide.mdとの関係・アンチパターンを記載。command-reference.mdのtimeline節とspecdojo-overview-guide.md8.3節から参照を追加 |
5. 対応結果
- 既存timelineをgantt-chartへ改名し、
tml-系の新成果物種別としてtimelineを新設した。両者の名前空間は完全に分離し、src/・tests/にtimelineという語のGantt由来の用法は残っていない。 - Gantt側の改名は、モジュール名・export名・内部変数名・生成ファイル名・ドキュメント記述の5層すべてで実施した。生成物は
gantt-chart.{md,svg}/gantt-chart-milestones.{md,svg}/gantt-chart-track-{launch,data-flow}.{md,svg}の8件。 - 新timelineは「着手前に人間が決める計画」、
sch-milestones.yamlは「実行後に集計される実績」という役割分担をtml-rulebook.mdに明記し、sch-milestones.yamlは廃止していない。 specdojo timeline buildはtml-index.yamlを入力に、timeline-order.md(着手wave一覧)・catalog-scaffold.md(カタログ未作成ドメインと実行コマンド)・timeline.json(機械可読サマリー)をtimeline/generated/へ出力する一方通行の生成コマンドとして実装した。depends_onの未定義参照・循環・orderとの矛盾・track id重複を検出すると終了コード1で停止する。- カタログの突き合わせは、
data-model/business-modelのように1ドメインが複数ファイルへ分割される実態に合わせ、ファイル名ではなく各dct-*.yamlのdomain値で行う実装とした。 tml-index.yamlのorder・catalog_duration_estimate_daysはtrack-design-guide.mdのウォーターフォール段階分けを基にした初期案であり、status: draftのまま人間レビューに委ねる。本チケットの完了条件はスキーマ・仕組みの整備であり、着手順の最終確定は含まない。- レビュー対応として
specdojo timeline build --project prj-0001を実行し、生成物が実際に問題なく出力されることを確認した。launch/data-flowトラックはtml-index.yaml導入前からprimaryかつSchedule実行済みのため、この2トラックについては追認的な記録(retrofit)である旨を新設したtimeline-design-guide.mdに明記した。 - レビュー対応として
docs/ja/specdojo/guides/timeline-design-guide.mdを新設した。sch-(sch-rulebook.md+schedule-design-guide.md)と同じ「rulebook(記述規範)+guide(生成フロー・運用)」の2文書構成にTimelineも揃え、command-reference.md・specdojo-overview-guide.mdから参照を追加した。guide-authoring-standard.mdの導入ブロック・見出し番号・章タイトル参照規約に従い、npm run lint:md/npm run -s lint:fm/npm run docs:build(mermaid 2図含む)で検証済み。
6. 関連ドキュメント
- specdojo:schedule-design-guide: 改名対象の生成物・現行Schedule設計との関係、
sch-milestonesの生成ロジック - specdojo:command-reference:
exec refreshのtimeline言及箇所 - specdojo:track-design-guide: トラックの標準的な実行順序(新
timelineが機械可読化する対象のプローズ) - specdojo:id-and-file-naming-standard:
tml-prefixを追加する対象 - specdojo:kata-guide: rulebook / recipe / sample / template の役割分担
- specdojo:sch-rulebook: recipe/sample/templateを持たない構成の先例
- prj-0001:dct-project-management:
tml-indexの登録先 - specdojo:timeline-design-guide: レビュー対応で新設した運用ガイド
- specdojo:guide-authoring-standard: guide新設時に従った構成・記述規約