概要
commandindex update コマンドを実装する。manifestファイルのハッシュ比較をもとにインデックスを差分更新し、フルリビルドを不要にする。
背景・動機
Phase 1 では index コマンドで毎回フルビルドしていた。日常的なワークフローでは、数ファイルの変更に対してフルビルドは非効率。update コマンドにより高速な差分更新を実現する。
提案する解決策
CLI インターフェース
commandindex update [--path < DIR> ]
オプション
デフォルト
説明
--path
.
インデックス対象ディレクトリ
処理フロー
インデックスの存在確認(未作成ならフォールバックでフルインデックスを自動実行)
manifest.json を読み込み
差分検知エンジン([Feature] 差分検知エンジン(manifest比較による変更/追加/削除ファイル検出) #25 )でmanifestハッシュ比較による変更/追加/削除を検出
tantivy 差分更新([Feature] tantivy インデックス差分更新(追加/変更/削除のドキュメント単位更新) #26 )を実行
manifest.json / state.json を更新
結果サマリーを表示
出力例
Incremental update completed:
Added: 3 files (12 sections)
Modified: 2 files (8 sections)
Deleted: 1 files
Unchanged: 38 files
Skipped: 0 files
Duration: 0.80s
インデックス未作成時
フォールバック動作:自動的にフルインデックスを実行し、結果をインクリメンタル更新サマリーとして表示する。
Note: No existing index found. Running full index...
Incremental update completed:
Added: 5 files (20 sections)
...
変更なしの場合
サマリー形式で変更なしを表現(Added/Modified/Deleted が全て0、Unchanged にファイル数を表示)。
Incremental update completed:
Added: 0 files (0 sections)
Modified: 0 files (0 sections)
Deleted: 0 files
Unchanged: 42 files
Skipped: 0 files
Duration: 0.05s
性能要件
注意事項(影響範囲レビューで検出)
[本Issue対応] state.jsonのu64アンダーフロー対策 : total_files/total_sections の減算に saturating_sub() を使用し、state破損時のpanic/wrapを防止する
[認識済みリスク] commit後のmanifest保存失敗 : tantivyのcommit()成功後にmanifest.save()が失敗した場合、次回updateで冪等に再処理されるため致命的ではないが、認識すべきリスク
[将来対応] 拡張子定数の統一 : run()内のハードコード拡張子フィルタをSUPPORTED_EXTENSIONS定数に統一すべき(本Issueスコープ外、将来の拡張時に対応)
受け入れ基準
依存 Issue
レビュー履歴
Stage 1 通常レビュー(2026-03-20)
修正済み : Issueタイトル「Git差分ベース」→「manifestハッシュ比較ベース」に修正(実装はGit非依存)
修正済み : インデックス未作成時の挙動をフォールバック動作に更新
修正済み : 出力例を実装に合わせて更新
修正済み : 変更なし時の挙動をサマリー形式に更新
Stage 3 影響範囲レビュー(2026-03-20)
追記 : state.jsonのu64アンダーフロー対策を注意事項と受け入れ基準に追加
追記 : commit後のmanifest保存失敗リスクを注意事項に記録
追記 : 拡張子定数の統一を注意事項に追加
Stage 5 通常レビュー 2回目(2026-03-20)
明確化 : 注意事項のスコープを [本Issue対応] / [認識済みリスク] / [将来対応] に分類
確認済み : saturating_sub()は実装フェーズ(Phase 5 TDD)で修正予定
概要
commandindex updateコマンドを実装する。manifestファイルのハッシュ比較をもとにインデックスを差分更新し、フルリビルドを不要にする。背景・動機
Phase 1 では
indexコマンドで毎回フルビルドしていた。日常的なワークフローでは、数ファイルの変更に対してフルビルドは非効率。updateコマンドにより高速な差分更新を実現する。提案する解決策
CLI インターフェース
--path.処理フロー
出力例
インデックス未作成時
フォールバック動作:自動的にフルインデックスを実行し、結果をインクリメンタル更新サマリーとして表示する。
変更なしの場合
サマリー形式で変更なしを表現(Added/Modified/Deleted が全て0、Unchanged にファイル数を表示)。
性能要件
注意事項(影響範囲レビューで検出)
total_files/total_sectionsの減算にsaturating_sub()を使用し、state破損時のpanic/wrapを防止するrun()内のハードコード拡張子フィルタをSUPPORTED_EXTENSIONS定数に統一すべき(本Issueスコープ外、将来の拡張時に対応)受け入れ基準
--pathオプションで対象ディレクトリを指定できる依存 Issue
レビュー履歴
Stage 1 通常レビュー(2026-03-20)
Stage 3 影響範囲レビュー(2026-03-20)
Stage 5 通常レビュー 2回目(2026-03-20)