Skip to content

feat(s3)!: Prepare 0.3 public API cleanup#23

Open
abdufelsayed wants to merge 14 commits into
release/v0.3.0from
feat/s3-public-string-inputs
Open

feat(s3)!: Prepare 0.3 public API cleanup#23
abdufelsayed wants to merge 14 commits into
release/v0.3.0from
feat/s3-public-string-inputs

Conversation

@abdufelsayed

Copy link
Copy Markdown
Owner

Prepare the S3 0.3.0 breaking public API cleanup on the release branch.

This changes the public S3 request boundary to accept ordinary strings and ints at call sites while keeping validated domain types for parsed response facts, internal validation, and advanced support APIs. Request options are now built through validating options / options_exn builders instead of public record construction or record updates. Endpoint configuration and presigned helpers parse public string inputs at their boundaries, and multi-object delete uses Object.Delete_objects.

The release surface also includes focused public-seam validation tests, updated examples and package docs, and a 0.3.0 changelog entry describing caller migration actions. The release-readiness notes intentionally leave PR-only and clean-release-branch gates for the release vehicle rather than claiming them early.

Validation already run locally included the package build, S3 test aliases, protocol fixtures/properties, simulator and transfer-fault aliases, dune runtest, examples/docs, opam generation checks, formatting, and pre-commit hooks. Remaining release gates are Required CI for this PR, package-family matrix or fallback evidence, clean release-branch local gates, and dune-release archive checks.

abdufelsayed and others added 6 commits July 2, 2026 21:03
Make the S3 public request surface string-facing for the completed cleanup slices and keep typed values behind builders and parsed response facts.

Rename Delete_many to Delete_objects, move endpoint configuration constructors to string inputs, and make non-presigned request option records private with semantic helpers for pagination and transfer flows.

Add the ordered S3 0.3 plan suite and record the completed review evidence for the first three implementation slices.

BREAKING CHANGE: S3 callers must use Delete_objects, string-facing endpoint and bucket-create builders, and option builders instead of constructing or updating non-presigned request option records directly.

Co-Authored-By: Codex <noreply@openai.com>
Make presigned request options builder-only so callers validate raw request strings before URL generation.

Move expiration and signed-header validation into operation builders, keep generation defensive, and make endpoint-config presign functions parse public region strings at the boundary.

Update presign examples and protocol coverage to use the new builders.

BREAKING CHANGE: Presigned option records are no longer publicly constructible or updatable, and endpoint-config presign functions now accept region strings.

Co-Authored-By: Codex <noreply@openai.com>
Add focused non-live tests for the S3 string-facing API boundaries.

Exercise operation validation through the recording runtime, option-builder validation, endpoint configuration constructors, presigned builders, and simulator invalid-input behavior so validation failures happen before requests or simulator history are recorded.

Record the remaining adapter smoke coverage as a documented concern because Eio/Lwt delegate through the shared functor and live MinIO coverage is optional for this slice.

Co-Authored-By: Codex <noreply@openai.com>
Update README and S3 odoc snippets so public request inputs are passed as strings and ints through operation and option builders.

Clarify that domain types remain for parsed response facts, internal validation, and advanced support APIs while normal request construction uses the new public boundary.

Co-Authored-By: Codex <noreply@openai.com>
Add the 0.3.0 changelog section for the breaking S3 public API cleanup and record the release-readiness evidence collected on the implementation branch.

Document the remaining release gates that must be completed from the release PR or clean release branch instead of claiming them early.

Co-Authored-By: Codex <noreply@openai.com>
Drop local agent planning files from the branch so the release PR only contains repository changes.

Co-Authored-By: Codex <noreply@openai.com>
@abdufelsayed abdufelsayed marked this pull request as ready for review July 2, 2026 19:22
Trigger pull request CI when a draft PR is marked ready for review.

The jobs already skip draft pull requests, so the workflow also needs the ready_for_review activity to start a fresh run when the draft status changes.

Co-Authored-By: Codex <noreply@openai.com>
@abdufelsayed abdufelsayed changed the base branch from release/0.3.0 to release/v0.3.0 July 2, 2026 19:27
abdufelsayed and others added 7 commits July 2, 2026 23:52
Validate runtime-bound presigned request inputs before resolving credentials so invalid public bucket, key, and part-number values fail without side effects. Add protocol fixture coverage that counts credential resolver calls for invalid presign inputs.

Verification: opam exec -- dune build @s3-protocol-fixtures

Refs GH-23
Co-Authored-By: Codex <noreply@example.com>
Reject DSSE-KMS destination encryption values with bucket-key settings in the public object and multipart option builders. Share the same destination encryption validator with request header validation so builder and execution paths enforce one rule.

Verification: opam exec -- dune build @s3-domain-laws @s3-protocol-fixtures

Refs GH-23
Co-Authored-By: Codex <noreply@example.com>
Reject empty and oversized DeleteObjects batches before simulator bucket lookup, fault injection, or state mutation. Add simulator coverage that preserves an existing object and proves queued faults are not consumed by validation failures.

Verification: opam exec -- dune build @s3-simulator

Refs GH-23
Co-Authored-By: Codex <noreply@example.com>
Validate simulator object tagging and bucket subresource public string inputs before state lookup. Attach S3 operation context to validation and service errors so simulator failures match production operation reporting.

Refs GH-23
Co-Authored-By: Codex <noreply@example.com>
Keep DeleteObjects request members inspectable while requiring callers to construct them through the validated builders.

Refs GH-23
Co-Authored-By: Codex <noreply@example.com>
Record PR 23 traceability for the public S3 API cleanup, validation hardening, and draft-to-ready CI trigger fix.

Refs GH-23
Co-Authored-By: Codex <noreply@example.com>
Keep local agent planning artifacts out of repository status.

Refs GH-23
Co-Authored-By: Codex <noreply@example.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant