Skip to content

[Feature] インデックス状態管理(manifest.json / state.json) #6

@Kewton

Description

@Kewton

概要

インデックスのメタ情報(`state.json`)とファイル一覧・ハッシュ情報(`manifest.json`)の管理機能を実装する。

背景・動機

インデックスの整合性チェック、`status` コマンドの情報源、将来の差分更新(Phase 2)の基盤として必要。

提案する解決策

state.json

インデックス全体のメタ情報を保持する。

{
  "version": "0.1.0",
  "schema_version": 1,
  "created_at": "2026-03-19T12:00:00Z",
  "last_updated_at": "2026-03-19T12:00:00Z",
  "total_files": 42,
  "total_sections": 185,
  "index_root": "/path/to/repo"
}

manifest.json

インデックス対象ファイルの一覧とハッシュを保持する。

{
  "files": [
    {
      "path": "docs/auth.md",
      "hash": "sha256:abc123...",
      "last_modified": "2026-03-19T10:00:00Z",
      "sections": 5
    }
  ]
}

主要な機能

  1. state.json 読み書き: インデックス状態の保存・読み込み
  2. manifest.json 読み書き: ファイル一覧の保存・読み込み
  3. 整合性チェック: スキーマバージョンの照合
  4. ファイルハッシュ計算: SHA-256 によるファイル内容のハッシュ

受け入れ基準

  • state.json を `.commandindex/` に読み書きできる
  • manifest.json を `.commandindex/` に読み書きできる
  • スキーマバージョンの不一致を検知できる
  • ファイルの SHA-256 ハッシュを計算できる
  • state.json が存在しない場合にインデックス未作成と判定できる
  • cargo test / clippy / fmt 全パス

影響範囲

新規ファイル

  • `src/indexer/state.rs`
  • `src/indexer/manifest.rs`
  • `tests/indexer_state.rs`

依存クレート(追加候補)

  • `sha2` — SHA-256 ハッシュ計算
  • `chrono` or `time` — タイムスタンプ管理

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions