PJR-0D0T YAML の成果物の type を原則に沿った値にそろえる
1. 概要
bdd の domain を data、ifx-cmd・ifx-msg の command・message を api にするなど、YAML の type を成果物の type の値にそろえ、schema・rulebook・テンプレート・sample を直す。古い値はエラーにし、置き換え先を示す。YAML の表示用ページは YAML の type を引き継ぐ
- PJR-RYK8 の決定と PJR-484B の宣言・照合に合わせて、YAML の成果物の type をそろえる。
2. 完了条件
- bdd の
domainをdata、ifx-cmd・ifx-msg のcommand・messageをapiにし、gl にglossaryを書く。YAML の schema・rulebook・テンプレート・sample を rulebook の宣言に合わせて直す。ifx-cmd のテンプレートのtemplateは残す。 domain・command・messageは検証でエラーにし、文面で置き換え先を示す。bdd-rulebookの「type: dataの成果物に適用する」と「typeはdomain固定」の矛盾を、宣言に合わせて解消する。- PJR-484B の照合を、YAML の成果物と sample にも広げる。
src/docs/yaml-pages.tsが YAML の type をそのまま引き継ぎ、配置パスで決める処理と非推奨のsampleを出す処理をなくす。YAML の sample 11 件すべての生成結果をテストで確かめる。- CHANGELOG の
## [Unreleased]に移行の手順を書く。公開済みの版の節は変えない。 - 作業の中で
npm run typecheck・npm run lint:ts・npm run lint:md・npm run lint:fm・npm run test:unitが通り、親の検証 7 件が通る。 - 設計で決めることは executor が決め、理由を本個票の対応結果に書き、報告の
handoffにも書く。
3. 作業内容
| No | 作業 | 担当 | 状態 | メモ |
|---|---|---|---|---|
| 1 | YAML の schema・rulebook・テンプレート・sample を直す | executor | done | bdd を data、ifx-cmd・ifx-msg を api、gl を glossary に統一 |
| 2 | 古い値のエラーと照合の拡張を実装する | executor | done | YAML schema 検証に主 rulebook との照合を追加 |
| 3 | yaml-pages が YAML の type を引き継ぐようにする | executor | done | 配置パスからの分類を削除 |
| 4 | CHANGELOG を更新し、テストを足す | executor | done | 移行手順と全11件の表示ページ・検証の回帰テストを追加 |
| 5 | 再開時の親検証失敗を修正する | executor | done | 型を持たない YAML の表示ページと索引再走査を修正 |
4. 対応結果
- bdd・ifx-cmd の schema、4系統の sample、ifx-cmd の生成物メタ情報を宣言値に統一した。gl schema では
type: glossaryとrulebookを必須にし、sample と既存成果物gl-common.yamlに追加した。ifx-cmd テンプレート自身のtype: templateは維持した。 - YAML 検証に既存の宣言照合を共用し、トップレベル、
x-spec-meta、metadata_templateを対象とした。旧値domain/command/messageはrulebook: noneでも置き換え先を示して拒否する。参照解決・ローカル優先・曖昧さの判定は Markdown と共通である。 - 設計判断: 外部形式とテンプレートも同じ分類原則に従うため、
specdojo-schema: none/validate=falseでは構造検証のみを省略し、メタ情報の照合は行う。照合先を明示するため OpenAPI / AsyncAPI と IF 一覧の sample・rulebook にrulebookを追加した。平坦な dct テンプレートは生成物の雛形を持たず、自身のtemplateは照合対象外とする。 - 設計判断: 表示ページは元 YAML の
typeをそのまま継承し、未記載の分類は補わない。元データの不備を配置パスによる補完で隠さないためである。表示ページの宣言照合除外も撤去し、生成後の Markdown も検査する。本文内のデータ型・CloudEvents のイベント種別は変更しない。 - CHANGELOG の Unreleased に置き換え・メタ情報追加・検証・表示ページ再生成の移行手順を記載した。YAML sample 全11件の表示ページの型と Frontmatter schema 適合、配置先に依存しない継承、テンプレート、旧値・照合不一致・省略指示の回帰テストを追加した。
- 親 runner が typecheck・lint-ts・lint-md・lint-fm・test-unit・test-integration・validate-schema の7件を実行する。executor は同じ検査を重ねて実行せず、個別 schema 検証・整形・hook の補足検証を担当する。
- executor 検証結果: YAML sample 全11件・ifx-cmd テンプレート・既存 gl の modeline 検証は成功した。外部形式の3件とテンプレートもメタ情報の照合を実行している。ifx-cmd の schema には
metadata_template.type: apiも定義し、テンプレートと sample の直接 schema 検証も成功した。 - executor 検証結果: Prettier 整形、変更 Markdown の markdownlint、YAML 表示ページの再生成(91件更新・50件変更なし・他生成器の19件を保持)、登録簿ビュー生成、prj-0001 のカタログ検証が成功した。CLI の補足検証は
.envを読み込まないよう dotenv の読み込み処理を無効にして実施した。カタログ検証には未作成文書への参照警告があるが、エラーはない。result の編集と親7検査の結果記録は後続 reporter・runner に引き継ぐ。 - 再開時の修正・設計判断: 前回の親
lint:fmは、ジョブ定義・ルーチン定義・評価記録など成果物のtypeを持たない YAML の表示ページ74件で失敗した。これらも表示先と本文は維持し、成果物 Frontmatter を付けずに生成する。正本が持つtypeの継承と、配置パスによる分類を補わない原則を両立させるためである。この例外をメタ情報標準に記載し、旧生成ページの更新・冪等性の回帰テストを追加した。成果物の型の欠落は正本 YAML の schema・宣言照合が検出する。 - 再開時の修正: sample 全11件の照合テストは、各ファイルで rulebook 索引を作り直して5秒の制限を超えていた。検証 CLI と同様に checker を共有し、索引構築を1回にした。制限時間は変更していない。
- 再開時の executor 検証結果: sample 全11件・テンプレート・既存 gl の modeline 検証、および bdd・gl・ifx-cmd の直接 schema 検証が成功した。表示ページは77件更新・64件変更なし・他生成器の19件を保持し、ジョブ定義と評価記録の表示ページに不完全な Frontmatter が残っていないことを確認した。登録簿ビュー生成・カタログ検証も成功した(未作成成果物の参照警告のみ)。Prettier・変更 Markdown の markdownlint も成功し、親7検査の再実行と result への反映は runner・reporter が担当する。