fix(s3lite): bound ranges and serve HEAD from retained metadata - #81
Merged
Conversation
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.
Ranged HEAD requests now use retained object metadata without indexing a body discarded by the emulator's benchmark mode. Range parsing returns bounded, nonempty
usizeslices with checked wire-integer conversions. Zero-length suffixes use the existing invalid-range full-response fallback; other valid and invalid range behavior stays covered by explicit vectors.Addresses five inherited warnings, including a narrow poison/header invariant contract on the GET snapshot owner. Both active platform inventories and the source ceiling are pruned; immutable adoption inventories are unchanged. Targets
slateand includes #63 with its prerequisites.The old source fails the discarded-body HEAD regression with a slice panic and returns the wrong status for the zero suffix; a valid-range control passes. The corrected release build passes all four binary tests, including 1,024 generated range cases and exact
u64::MAXboundary vectors. Pinned workspace Clippy and both ratchets pass (3,517 warnings on this minimal branch), as do the common quality gate (12 syntax/47 Python controls), 52 invariant tests at 1,024 property cases, and 11 service invariant tests. Full-target verification planning selects compiler, properties, Loom and Miri; it finds no critical mutation scope. All 13 exact-head CI checks passed or were intentionally skipped (the noisy campaign); ready for review.This preserves this emulator's invalid-range fallback; it does not claim full S3 Range compliance.