Skip to content

feat(storage): backend-agnostic BlobStore layer (S3 / filesystem / IPFS) #89

Description

@kevincodex1

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    crate:nodegitlawb-node — the serving node and REST APIkind:featureNew capability or surfacesev:mediumDegraded but workaround existssubsystem:storageBlob/object store, Arweave, IPFS, archives

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions