Problem / use case
Summary — Replace the hardcoded Tigris integration with a backend-agnostic BlobStore interface (get/put/head/delete/list) over S3-compatible, local filesystem, and IPFS backends, plus push-latency quick wins. Storage becomes a deployment config concern, not a code
dependency.
Acceptance criteria — no behavior change for existing Tigris deployments; selectable backend; atomic concurrency-safe extraction preserved (the #80 hardening); fmt/clippy/tests green; unit tests for storage::fs + repo_store.
Tracked by: PR #79 · Labels: kind:feature, crate:node, subsystem:storage, sev:medium
Proposed solution
Proposed changes — BlobStore trait + 3 backends; RepoArchive replacing Option; backward-compatible env config (legacy GITLAWB_TIGRIS_BUCKET honored); skip redundant pre-write download on etag match; write-back ack before durable upload.
Alternatives considered
No response
Does this touch the protocol?
No
Problem / use case
Summary — Replace the hardcoded Tigris integration with a backend-agnostic BlobStore interface (get/put/head/delete/list) over S3-compatible, local filesystem, and IPFS backends, plus push-latency quick wins. Storage becomes a deployment config concern, not a code
dependency.
Acceptance criteria — no behavior change for existing Tigris deployments; selectable backend; atomic concurrency-safe extraction preserved (the #80 hardening); fmt/clippy/tests green; unit tests for storage::fs + repo_store.
Tracked by: PR #79 · Labels: kind:feature, crate:node, subsystem:storage, sev:medium
Proposed solution
Proposed changes — BlobStore trait + 3 backends; RepoArchive replacing Option; backward-compatible env config (legacy GITLAWB_TIGRIS_BUCKET honored); skip redundant pre-write download on etag match; write-back ack before durable upload.
Alternatives considered
No response
Does this touch the protocol?
No