Skip to content

Add text search status endpoints#18

Merged
dutifulbob merged 1 commit intomainfrom
feat/text-search-status
Apr 15, 2026
Merged

Add text search status endpoints#18
dutifulbob merged 1 commit intomainfrom
feat/text-search-status

Conversation

@dutifulbob
Copy link
Copy Markdown
Member

Summary

  • add persisted repo-level text-search status and freshness state
  • expose /v1/search/repos/{owner}/{repo}/status and ghr search status
  • cover the lifecycle with service, HTTP, and CLI tests and document the new surface

Validation

  • go test ./internal/searchindex/... ./internal/httpapi/... ./internal/ghr/...
  • go test ./...
  • go vet ./...
  • go build ./cmd/ghreplica && go build ./cmd/ghr
  • npm run docs:check

@dutifulbob dutifulbob merged commit 5a2a2aa into main Apr 15, 2026
1 check passed
@dutifulbob dutifulbob deleted the feat/text-search-status branch April 15, 2026 20:32
@dutifulbob
Copy link
Copy Markdown
Member Author

Final report:

Merged and deployed:

Validation run locally:

  • go test ./internal/searchindex/... ./internal/httpapi/... ./internal/ghr/... -> passed
  • go test ./... -> passed
  • go vet ./... -> passed
  • go build ./cmd/ghreplica && go build ./cmd/ghr -> passed
  • npm run docs:check -> passed
  • codex review --base main -> run; no actionable PR comments were produced
  • PR comments checked -> none
  • PR inline review comments checked -> none
  • PR CI validate -> passed
  • merged main CI -> passed: https://github.com/dutifuldev/ghreplica/actions/runs/24476915061

Production deploy:

  • fast-forwarded VM checkout to merged main
  • rebuilt and restarted the stack
  • initial live status endpoint failed because repo_text_search_states had not been created on production
  • applied migrations/000010_repo_text_search_states.up.sql directly on production and revalidated the live API

Production checks that passed:

  • curl -fsS https://ghreplica.dutiful.dev/healthz
  • curl -fsS https://ghreplica.dutiful.dev/readyz
  • GET /v1/search/repos/openclaw/openclaw/status -> passed
  • GET /v1/search/repos/dutifuldev/ghreplica/status -> passed
  • GET /v1/search/repos/nope/nope/status -> 404 Not Found
  • ghr search status -R openclaw/openclaw -> passed
  • ghr search status -R dutifuldev/ghreplica --json repository,text_index_status,document_count,freshness,coverage -> passed
  • POST /v1/search/repos/openclaw/openclaw/mentions with fts, fuzzy, and regex payloads -> passed
  • invalid regex request -> 400 with the expected validation error

Live state transitions verified:

  • dutifuldev/ghreplica moved from missing/empty to ready/current/complete after ghreplica search-index repo dutifuldev/ghreplica
  • openclaw/openclaw status showed building/current/partial during a live search-index repo rebuild

Not fully completed during the validation window:

  • the openclaw/openclaw rebuild was still running when validation ended, so I verified the building state live but did not wait for that large corpus rebuild to finish in production.

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