feat(blob): add bounded HTTP delivery - #482
Merged
Merged
Conversation
aaltshuler
force-pushed
the
codex/blob-read-facade
branch
from
August 12, 2026 20:49
848dffb to
ae1512b
Compare
aaltshuler
force-pushed
the
codex/blob-http-delivery
branch
from
August 12, 2026 21:38
1c01d3c to
1a61be4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
GETand explicitHEAD /graphs/{graph_id}/blobover the engine-owned Blob read facadeIf-Match, weakIf-None-Match, strongIf-Range, one byte range, and exact 304/412/416 semanticsThis is RFC-033 Phase 2A, rebased directly onto
mainafter #480 and #481. It adds no Blob mutation API, CLI surface, recovery-protocol change, manifest-schema bump, or Lance data-format bump. Shared API/error initializers changed only to compose the additive Blob wire contract with the existing graph-commit precondition contract.Validation
cargo fmt --all --checkgit diff --checkscripts/check-agents-md.shcargo test -p omnigraph-server --locked --lib blob_transport::testscargo test -p omnigraph-server --locked --test data_routescargo test -p omnigraph-server --locked --test auth_policycargo test -p omnigraph-server --locked --test openapicargo test -p omnigraph-engine --test branching branch_merge_with_blob_columns_preserves_blob_data -- --exact --nocapturecargo test -p omnigraph-engine --test branching blob_snapshot_inherited_from_main_refuses_named_branch_recreation_aba -- --exact --nocapturecargo test -p omnigraph-engine --features failpoints --test failpoints blob_live_branch_read_refuses_delete_recreate_aba_after_capture -- --exact --nocapturecargo test --workspace --locked --features omnigraph-engine/failpoints,omnigraph-cluster/failpointscargo clippy --workspace --all-targets --locked -- -D warnings -W clippy::dbg_macrocargo clippy --workspace --all-targets --locked --features omnigraph-engine/failpoints,omnigraph-cluster/failpoints -- -D warnings -W clippy::dbg_macrocargo test -p omnigraph-server --features aws --lockedTwo independent final reviews of the rebased candidate reported no findings.
Greptile Summary
The PR adds graph-level bounded Blob delivery over explicit GET and HEAD routes.
Confidence Score: 5/5
The PR appears safe to merge.
No blocking failure remains.
Important Files Changed
Sequence Diagram
sequenceDiagram participant Client participant Auth as Auth middleware participant Handler as Blob handler participant Policy as Read authorization participant Engine as Blob read facade participant Transport as Bounded HTTP transport Client->>Auth: "GET/HEAD /graphs/{id}/blob" Auth->>Handler: Resolved actor and graph Handler->>Policy: Authorize resolved branch/snapshot Policy-->>Handler: Allow Handler->>Engine: read_blob_at(target, cell) Engine-->>Handler: Managed reader or external descriptor Handler->>Transport: Apply validators/range semantics alt Managed Blob Transport-->>Client: 200/206/304/412/416 else Whole external Blob Transport-->>Client: 302 redirect, no-store else Ranged external descriptor Transport-->>Client: Redacted 500 refusal endReviews (2): Last reviewed commit: "feat(blob): add bounded HTTP delivery" | Re-trigger Greptile
Context used (3)