feat(BA-6159): add /upload/status endpoint and progress headers#11770
Draft
jopemachine wants to merge 1 commit into
Draft
feat(BA-6159): add /upload/status endpoint and progress headers#11770jopemachine wants to merge 1 commit into
jopemachine wants to merge 1 commit into
Conversation
This was referenced May 22, 2026
305ca0e to
e87b033
Compare
This was referenced May 22, 2026
dada14e to
0d1bf13
Compare
358a152 to
beffe63
Compare
7dcbab8 to
84e303d
Compare
beffe63 to
fb51bcd
Compare
84e303d to
fc4dc36
Compare
fb51bcd to
f446c82
Compare
fc4dc36 to
968d6c3
Compare
f446c82 to
0a8f7f3
Compare
968d6c3 to
b40ebc8
Compare
0a8f7f3 to
4dfa415
Compare
b40ebc8 to
a94454f
Compare
4dfa415 to
66abc1a
Compare
a94454f to
583cb92
Compare
66abc1a to
1675929
Compare
583cb92 to
1f2fc01
Compare
1675929 to
0f683a3
Compare
0f683a3 to
7326420
Compare
1f2fc01 to
4c07f47
Compare
8e00135 to
e40f226
Compare
e37ca75 to
cf51fc2
Compare
e40f226 to
66ffac3
Compare
cf51fc2 to
c171fa4
Compare
66ffac3 to
48bb49c
Compare
c171fa4 to
e517c70
Compare
035b09b to
c884ca9
Compare
6acff68 to
e14f59f
Compare
6448b90 to
9465584
Compare
51181ab to
fccee9f
Compare
7c677c9 to
00f7754
Compare
fccee9f to
ee1e510
Compare
00f7754 to
9e1cf59
Compare
ee1e510 to
087b43d
Compare
383e193 to
61da25a
Compare
5dd870e to
c9c67a8
Compare
bf6d34a to
f8db68f
Compare
c9c67a8 to
e35aee1
Compare
f8db68f to
efb9080
Compare
Standard TUS HEAD only returns Upload-Offset, which is ambiguous when
chunks arrive out of order: the client cannot tell which byte ranges are
still missing. This sub-task surfaces the session metadata so resume is
precise.
- GET /upload/status?token=… returns JSON: session, total_size,
committed_offset, chunks_received (list of offsets),
missing_ranges (list of {offset, length} gaps),
progress_percent, status. Authenticated via the same upload JWT.
- PATCH responses gain three additive headers:
X-Backend-Ai-Chunks-Received, X-Backend-Ai-Progress-Percent,
X-Backend-Ai-Total-Expected. Headers are exposed via CORS
Access-Control-Expose-Headers so browser clients can read them.
Tests cover the status endpoint for empty / partial / out-of-order /
missing-session cases plus the new PATCH response headers.
Resolves BA-6159. Part of epic BA-6153 (implements BA-3974).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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.
📚 Stacked PRs
This PR is part of a 5-PR stack implementing BA-3974 (epic: BA-6153). Merge in order:
feat(BA-6155): add metadata-driven chunk-store upload session enginefix(BA-6156): rewire TUS PATCH/HEAD to chunk-based store(actual user-visible fix)test(BA-6157): add multi-proxy NFS race regression testfeat(BA-6158): support TUS Checksum extensionfeat(BA-6159): add /upload/status endpoint + progress headers← you are hereSummary
Resolves BA-6159.