Skip to content
frontmatter
キー値
specdojo.idprj-0001:pjr-9y7g-register-item-file-as-ssot
specdojo.typeproject
specdojo.statusready
specdojo.rulebookspecdojo:pjr-rulebook
specdojo.part_ofprj-0001:pjr-index
specdojo.item_typedecision
specdojo.item_statusdecided
specdojo.priorityhigh
specdojo.ownerPO
specdojo.registered_at2026-08-09T00:19:28Z
specdojo.due_on2026-08-31
specdojo.completed_at2026-08-09T10:55:22Z
specdojo.conclusion選択肢Bを採択。個票 frontmatter を正本とし pjr-index を生成ビュー化する

PJR-9Y7G 登録簿の正本を1項目1ファイルへ移し pjr-index を生成ビュー化する ​

1. 背景 ​

登録項目の正本を個票 frontmatter へ一本化し、pjr-index.md を generated の派生ビューへ変更するかを判断する。表の差分レビュー喪失の代替手段も選択肢比較に含める。

登録簿は pjr-index.md の登録項目一覧(表)を正本とし、詳細が必要な項目のみ個票 pjr-XXXX-<topic>.md へ分離する二層構造をとっている。この構造について、正本の粒度を実体(登録項目)単位のファイルへ移すべきかを判断する必要がある。

判断が必要になった事実と制約は次のとおり。

  • 1つの登録項目の属性が2ファイルへ分割保管されている。specdojo:pjr-rulebook の index と個別登録項目の同期 で、処理状態・優先度・担当・期限・完了日・結論要約は pjr-index 側、背景・経緯は個票側という分割と、両者を一致させる同期規則が定義されている。
  • 表を共有単位とするため、並行編集で行の追記・編集が衝突しうる。これに対して PJR-ID の乱数化、register add の統合ブランチ自動ルーティング、--reserve / --local / --strict-sync、register where --integration、register renumber、worktree 隔離と lifecycleLock による補償機構を実装済みである(prj-0001:pjr-0137-register-id-uniqueness、prj-0001:pjr-0138-register-add-on-integration-branch)。
  • 表セルは構造化データの器としての制約(| のエスケープ、wikilink 表示名区切りの escape、整形ツールによる表崩れ、未定値をプレースホルダ文字列で埋める規約)を持ち、検証には表専用の pjr-index-content.schema.yaml を要する。他の成果物では構造化メタを frontmatter に置き、frontmatter スキーマで検証している。
  • SpecDojo 全体は「正本=成果物ファイル、派生=generated/」を採用し、docs/**/generated/* は .gitignore で非追跡としている。pjr-index.md のみ表が正本という例外になっている。
  • SpecDojo は未リリースのため、移行コストではなく設計の妥当性を主たる判断軸にできる。

判断は PO が行う。期限は登録簿一覧の「期限」欄で管理する。

2. 検討した選択肢 ​

選択肢内容利点懸念
A現状維持。pjr-index.md の表を正本とし、詳細のみ個票へ分離する台帳全体を1ファイルの差分で追える。表を人が直接編集・レビューできる。移行不要正本の粒度が実体と一致せず同期規則が必要。並行編集が不可換で補償機構の維持が要る。表専用スキーマが残る
B個票 frontmatter を唯一の正本とし、pjr-index.md を generated/ の派生ビューへ変更する正本の粒度が実体と一致し同期規則が不要。項目の追加・遷移が構造的に可換で衝突しない。既存 frontmatter スキーマで検証できる。framework 内の正本・派生の扱いが統一される台帳の変更履歴が個票へ分散し1ファイルの差分で追えない。表の手編集を運用から外す必要がある。CLI・スキーマ・rulebook・テンプレート・既存項目の移行が必要
C折衷。表を正本のまま維持し、補償機構(--reserve / --local 等)のみ簡素化する移行が小さく、既存の運用と差分レビューを維持できる正本の粒度と同期規則の問題は残る。衝突は運用規律に依存し続ける

選択肢 B を採る場合の成立条件は次のとおり。

  • 構造化フィールド(処理状態・優先度・担当・期限・完了日・結論・分類)は個票 frontmatter を唯一の正本とし、本文へ複製しない。
  • pjr-index.md を generated/ 配下の生成物へ移し、追跡対象から外す。手編集を運用から外す。
  • 「個票を作る項目/作らない項目」の二分を廃止し、全項目を1ファイルとする。
  • 生成の決定性(ID 昇順などの固定ソート)を担保する。
  • 補償機構を撤去し、renumber は乱数 ID 衝突の救済のみへ縮小する。
  • 台帳の差分レビュー喪失に対する代替(個票の履歴で追う、pull request では frontmatter 差分を見る、一覧表示コマンドを用意する等)を決める。

評価の結果、選択肢 B を採択した。決定内容と採択理由は後続の章に記載する。

3. 決定内容 ​

Bを選択する。

4. 採択理由 ​

  • 正しい設計がBで、本格展開前に移行する。

5. 承認 ​

項目内容
決定者PO(GitHub アカウント: naoji3x)
決定日2026-08-09
承認方式PR(選択肢 B は framework の schema と CLI に破壊的変更を伴うため)
証跡PR: https://github.com/specdojo/specdojo/pull/3 / merge SHA: 98f507236c5997f82106e4139a82a4a3485a4c71
  • 承認方式は commit または PR を記載する。PR の場合は証跡に PR URL と merge SHA を本文テキストで記載する。
  • 不可逆・高リスク・framework schema 破壊的変更に該当する決定は PR 方式で承認する。

6. 影響範囲とフォローアップ ​

項目内容
影響範囲選択肢 B 採択時: register CLI(add / 状態遷移 / build / renumber / where)、pjr-index-content.schema.yaml、specdojo:pjr-rulebook、specdojo:register-operation-guide、pjr-index-template.md と個票テンプレート、派生ビュー生成、既存の全登録項目の移行
必要な対応B を採択したため、移行タスク(CLI・スキーマ・rulebook・テンプレート・既存項目の移行)を別途起票する
追跡先本個票(PJR-9Y7G)

7. 関連ドキュメント ​