markharness

0028: Knowledge authoringをknowledge reconcileへ統合する

ステータス

Accepted(2026-09-13決定、2026-09-13実装完了)。0027の「ADR 0028開始ゲート」を満たしたうえで実行した。

背景

0027は、Knowledge Intentの解析、状態依存検証、UID発行、参照解決、更新・rename、および原子的保存をknowledge reconcileの一つのInterfaceへ集約する。

現在のknowledge addknowledge scaffoldknowledge validateknowledge applyは、同じKnowledge authoringを対話入力、旧KnowledgeDraftの雛形、検証、保存という手続き的な段階へ分割している。feature rename-idも、UIDで既存Featureを選択してdisplay IDを変更するため、UID付きIntentによるrenameと同じ状態遷移になる。

新旧Interfaceを並存させると、二つの入力schema、二つの検証規則、二つの原子的書込み経路、および複数の推奨手順を維持することになる。0026の後方互換を考えない方針に従い、移行先が完成した後は重複を残さない。

決定

1. 重複するauthoringコマンドをすべて廃止する

0027の「ADR 0028開始ゲート」を満たした後、次を同一変更で削除する。

旧コマンドのalias、非推奨期間、互換wrapper、旧引数を受け取る隠し経路は設けない。削除後のKnowledge authoring Interfaceは次だけとする。

markharness knowledge reconcile <intent-file> [--check] [--json] [--dir <path>]
markharness knowledge reconcile --print-template

複数Knowledge要素は一つのIntentへ記述するため、旧--batch相当の別モードを設けない。--checkは旧knowledge validateおよびknowledge apply --dry-runの役割を包含する。--print-templateは旧knowledge scaffoldを置き換える。

2. 旧KnowledgeDraft実装を削除する

旧コマンドからだけ利用されるKnowledgeDraftの型、parser、validator、apply処理、editor loop、template、参考schema、テスト、および専用ドキュメントを削除する。現行ファイル名では少なくとも次が対象候補になるが、削除時には参照検索で実際の到達可能性を確認する。

Reconciliation Moduleと共有すべきdomain validation、Knowledge parser/serializer、filesystem safety、identity replayおよびcrash recoveryは削除せず、移行先Moduleから利用する。旧Moduleを残して新Moduleから呼ぶ構造にはせず、必要な規則を現在の責務に対応する場所へ移してから旧Moduleを削除する。

3. 人間向け操作も同じInterfaceへ統一する

対話promptと$VISUAL/$EDITOR起動をKnowledge authoringの組込み機能として残さない。人もIntent templateを取得・編集し、knowledge reconcileを実行する。エディタ起動はshellやエディタ自身の責務とする。

Featureのrenameも、対象UIDと新しいdisplay IDを含むKnowledge Intentで行う。feature rename-id専用のmutation pathは残さない。Reconciliation Moduleは既存のidentity eventとcrash-recovery不変条件を維持した同じrename結果を生成する。

FeatureとRequirementの関連追加・削除は、UID付きFeatureのcontributes_to collectionを全置換するpatchで行う。External Requirementの固定参照更新は、UID付きRequirementのsource_revision: currentで行う。requirement linkunlinkrepin専用のmutation pathは残さない。

4. identity保守・監査とAxis管理は残す

次はKnowledge authoringと責務が異なるため廃止しない。

markharness validateは正規Knowledge・Axis・関連する保存状態全体を検証するコマンドであり、未保存Intentを検証する旧knowledge validateとは異なるため残す。

5. 実行順序を固定する

実装順序は次のとおりとする。

  1. 0027のReconciliation Module、Knowledge Intent schema、CLIおよび回復テストを実装する。
  2. ADR 0027の「ADR 0028開始ゲート」を満たし、更新・rename・Scenario reparent・Requirement関連の追加と削除・external Requirementのrepin・複数要素・--check・雛形出力が機能することを確認する。
  3. README、AI向け文書、日英CLIマニュアル、例をknowledge reconcileへ切り替える。
  4. 本ADRの§1・§2に従い、旧コマンドと旧KnowledgeDraft実装を同一変更で削除する。
  5. 全テスト、lint、format、license、生成物自己検証、およびCLIから旧コマンドが到達不能であることを確認する。

旧コマンドを先に削除して一時的にauthoring不能な状態を作らない。一方、移行先完成後に新旧経路を複数リリース並存させない。0027は本ADRの削除完了を受け入れ条件とする。

帰結

検討したが採用しない選択肢