markharness

0004: Feature id:変更時の移行方針

ステータス

Accepted (reconsideration proposed in 0013)

背景

外部評価レビュー(テスト知識管理のGit-nativeモデル_評価レビュー_有用性判定と修正指示.md P2)で、feature.ymlid:を変更すると同一Featureとして追跡できなくなるという制約が、設計上の既知事項でありながら利用者向けドキュメントに明記されていない、との指摘を受けた。

現状の実装(src/id_cache.rs)は、Feature idをfeature.ymlid:フィールドから読み取ることでディレクトリのリネームには追従できる(論文§3.3)。しかしid:フィールドの値そのものを書き換えた場合、changes compute(論文§3.2〜3.4)は旧idのFeatureが削除され新idのFeatureが追加されたものとして扱い、両者を同一Featureとして結びつける手段を持たない。版履歴(derived_from)がその時点で断絶する。

検討した選択肢

  1. 移行コマンドを実装する(例:markharness feature rename-id <old> <new>が過去のマイルストーンに遡ってchanges/*.yamlを書き換える、またはid_aliasesのようなマッピングファイルを追加する)。
  2. 明示的なエイリアス機構を設計に追加する(feature.ymlaliases: [旧id, ...]を持たせ、changes computeが旧idの履歴も辿れるようにする)。
  3. 何も実装せず、制約を利用者向けドキュメントに明記するに留める

決定内容

選択肢3を採用する。移行コマンド・エイリアス機構のいずれも実装しない。

理由

対応内容

将来の再検討条件