Skip to content

feat: auto-reindex on git events (watchdog, hooks, watch)#68

Open
VioletCranberry wants to merge 1 commit intomainfrom
feat/auto-reindex
Open

feat: auto-reindex on git events (watchdog, hooks, watch)#68
VioletCranberry wants to merge 1 commit intomainfrom
feat/auto-reindex

Conversation

@VioletCranberry
Copy link
Copy Markdown
Owner

Three composable layers that keep the index in sync without manual reindex, all sharing one core (src/cocosearch/auto_reindex.py):

  • MCP server watchdog (on by default, stdio): polls git state every autoReindex.intervalSeconds and triggers an incremental reindex on branch/commit drift, reusing the existing _indexing_lock/_active_indexing pair so it coordinates with /api/reindex.
  • cocosearch hooks install/uninstall/status: marker-wrapped post-checkout, post-merge, post-commit, post-rewrite hooks in $(git rev-parse --git-common-dir)/hooks. Append-safe (husky/pre-commit/lefthook coexistence), idempotent, worktree-safe.
  • cocosearch watch: foreground polling loop calling run_reindex_sync every --interval seconds (default 30). Cheap because flow.update() is already content-hash incremental.

Adds --if-exists and --quiet flags on cocosearch index so hooks stay silent and never auto-create indexes. Adds AutoReindexSection to config schema (enabled/intervalSeconds) plus env var overrides. Dependency extraction auto-reruns on every trigger when the deps table exists.

Three composable layers that keep the index in sync without manual reindex,
all sharing one core (src/cocosearch/auto_reindex.py):

- MCP server watchdog (on by default, stdio): polls git state every
  autoReindex.intervalSeconds and triggers an incremental reindex on
  branch/commit drift, reusing the existing _indexing_lock/_active_indexing
  pair so it coordinates with /api/reindex.
- cocosearch hooks install/uninstall/status: marker-wrapped post-checkout,
  post-merge, post-commit, post-rewrite hooks in $(git rev-parse
  --git-common-dir)/hooks. Append-safe (husky/pre-commit/lefthook
  coexistence), idempotent, worktree-safe.
- cocosearch watch: foreground polling loop calling run_reindex_sync every
  --interval seconds (default 30). Cheap because flow.update() is already
  content-hash incremental.

Adds --if-exists and --quiet flags on cocosearch index so hooks stay silent
and never auto-create indexes. Adds AutoReindexSection to config schema
(enabled/intervalSeconds) plus env var overrides. Dependency extraction
auto-reruns on every trigger when the deps table exists.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant