Skip to content
frontmatter
キー値
specdojo.idprj-0001:pjr-rf3b-register-item-frontmatter-schema
specdojo.typeproject
specdojo.statusready
specdojo.rulebookspecdojo:pjr-rulebook
specdojo.part_ofprj-0001:pjr-index
specdojo.item_typetodo
specdojo.item_statusdone
specdojo.priorityhigh
specdojo.ownerARC
specdojo.registered_at2026-08-09T08:48:42Z
specdojo.due_on2026-08-31
specdojo.completed_at2026-08-09T10:55:22Z

PJR-RF3B 登録項目の個票 frontmatter スキーマを定義する ​

1. 概要 ​

PJR-ES57 の分割1。処理状態・優先度・担当・期限・完了日・結論・分類を個票 frontmatter へ定義し、共通スキーマで検証できるようにする。

prj-0001:pjr-es57-register-file-ssot-migration の分割1。移行の起点となる作業として、登録項目の構造化フィールドを個票 frontmatter へ定義し、共通の frontmatter スキーマで検証できるようにする。以降の CLI 変更・一覧生成・既存項目移行はすべてこのスキーマに依存する。

2. 完了条件 ​

  • 登録項目の構造化フィールド(処理状態・優先度・担当・登録日・期限・完了日・結論・分類)が個票 frontmatter の項目として定義されている。
  • 値の enum(type / status / priority)が既存の定義と一致し、表記ゆれが生じない。
  • 共通 frontmatter スキーマから検証でき、必須項目の欠落と不正値がエラーになる。
  • 既存の個票 frontmatter 項目(id / type / status / rulebook / part_of / item_type)との関係が整理され、文書成熟度の status と登録項目の処理状態が区別されている。

3. 作業内容 ​

No作業担当状態メモ
1現行の一覧列と個票 frontmatter の項目対応を洗い出すARCdone一覧の標準列と pjr-index-content.schema.yaml の列規則を入力にした
2個票 frontmatter のスキーマを定義するARCdoneregister-item-frontmatter.schema.yaml を追加。処理状態は item_status
3既存 enum の再利用と検証経路を確認するARCdone表専用スキーマの enum を $defs へ移送し、成果物スキーマからも参照させた
4サンプル個票で検証が機能することを確認するARCdone正常系2件・不正値6件を ajv strict で確認(結果は対応結果を参照)

4. 対応結果 ​

  • 登録項目の構造化フィールドを個票 frontmatter へ定義するスキーマ docs/specdojo/schemas/v1/register-item-frontmatter.schema.yaml を追加した。一覧の標準列との対応は次のとおりで、値の未定は「プレースホルダ文字列」ではなく「キーの省略」で表す。
一覧の列frontmatter 項目必須未定時の表現
IDid から導出○(id)-
ステータスitem_status○-
タイトルH1 から導出--
説明本文から導出--
分類item_type○-
優先度priority○-
担当owner任意キーを省略
登録日registered_on条件(新規項目)キーを省略
期限due_on任意未定は省略、期限なしは null
完了日completed_on条件(終端状態で必須)キーを省略
結論conclusion任意キーを省略
個票ファイル自身--
  • 表示 ID・タイトル・説明は frontmatter に重複定義せず、id の pjr-XXXX 部分・H1・本文から導出する方針とした。個票が唯一の正本になるため、同じ値を2か所に持たない。
  • 文書成熟度の status(draft / ready / deprecated)と登録項目の処理状態を区別するため、処理状態は item_status とし、既存の item_type と命名を揃えた。両者の役割の違いはスキーマの description に明記した。
  • enum は pjr-index-content.schema.yaml の列規則を移送元とし、item_type(7値)・item_status(8値)・priority(3値)を $defs に定義した。値は表専用スキーマと一致させ、表記ゆれを作らない。
  • 終端状態のうち done / decided / rejected は completed_on を必須にする条件分岐を入れた。deferred は register defer が完了日を記録しないため対象外とした。
  • 日付は format: date の文字列とし、YAML では引用符付きで書く必要がある(引用符なしは timestamp 値として読み込まれ文字列にならない)ことをスキーマに明記した。既存一覧186件のうち165件は登録日が _TODO_ であり、移行時に真偽不明の日付を捏造しないため、履歴項目に限って registered_on の省略を許可した。register add は従来どおり登録日を必ず書き込む。また、期限の未定(_TODO_)と期限なし(-)を移行後も区別するため、前者は due_on の省略、後者は due_on: null として表す。
  • 既存の個票 frontmatter 項目との関係を整理し、item_type の定義を新スキーマの $defs へ一元化したうえで、成果物 frontmatter スキーマ(deliverable-frontmatter.schema.yaml)からそれを参照させた。あわせて登録項目の各フィールドを任意項目として許可し、unevaluatedProperties: false に阻まれずに CLI 側の書き込み(prj-0001:pjr-tt4j-register-cli-write-to-tickets)と段階的な移行(prj-0001:pjr-9p5q-migrate-existing-register-items)を進められるようにした。
  • 新スキーマは .remarkrc.yaml の schemaRules へまだ登録していない。既存個票は登録項目のフィールドを持たないため、先に登録すると必須項目の欠落で全件が検証エラーになる。適用の切り替えは既存項目の移行(prj-0001:pjr-9p5q-migrate-existing-register-items)と検証経路の更新(prj-0001:pjr-vc94-update-validation-and-tests)で同時に行う。
  • サンプル個票の frontmatter を ajv(2020-12 / strict)で検証し、正常系2件が valid、不正値6件(必須欠落、enum 違反、終端状態の完了日欠落、プレースホルダ日付と未知キー、引用符なし日付、ID 書式違反)がいずれも意図したエラーで invalid になることを確認した。

5. 関連ドキュメント ​