Summary
Replace filesystem-level coupling between gitstore-api and gitstore-git-service with a gRPC contract (Gitaly-inspired) so all Git read/write operations are executed by gitstore-git-service. The API must no longer depend on a shared Git directory or bundle a Git client library such as go-git. Existing websocket notifications continue to be used for push-based update signaling where appropriate.
Scope
In scope:
- Define and implement gRPC APIs in
gitstore-git-service for Git read and write operations required by gitstore-api.
- Migrate
gitstore-api Git operations to gRPC clients and remove direct repository access through shared volume assumptions.
- Remove API-side dependency on embedded Git client behavior for repository mutation/read paths (including eliminating
go-git usage in API Git interaction paths).
- Preserve or adapt websocket-triggered update propagation so API cache/reload behavior still reacts to repository changes.
- Add integration and contract tests for API <-> git-service gRPC interactions covering both read and write flows.
- Update architecture and developer docs to reflect gRPC service boundaries and runtime configuration.
Out of scope:
- Replacing the KV-optimized read layer for latest tag/release or changing its purpose.
- Rewriting unrelated catalog query optimizations not tied to API/git-service transport decoupling.
- Introducing a full Git monolith replacement beyond the scoped gRPC service boundary.
Acceptance Criteria
Tracking
Summary
Replace filesystem-level coupling between
gitstore-apiandgitstore-git-servicewith a gRPC contract (Gitaly-inspired) so all Git read/write operations are executed bygitstore-git-service. The API must no longer depend on a shared Git directory or bundle a Git client library such asgo-git. Existing websocket notifications continue to be used for push-based update signaling where appropriate.Scope
In scope:
gitstore-git-servicefor Git read and write operations required bygitstore-api.gitstore-apiGit operations to gRPC clients and remove direct repository access through shared volume assumptions.go-gitusage in API Git interaction paths).Out of scope:
Acceptance Criteria
gitstore-apiperforms required Git reads/writes via gRPC togitstore-git-service, not via shared Git directory access.go-gitbehavior.Tracking