Normalize object names without treating them as filesystem paths
The upload API accepts ambiguous separators and empty names. Define an opaque object-name contract.
- Focused work estimate
- 1h 15m + prerequisites
- Priority in the scenario
- Medium
- Engineering practice
- Object storage · Validation
Estimated field mix
- API design60%
- Storage systems40%
Field percentages are editorial estimates of the ticket's engineering focus. They total 100%; they are not measured time, proficiency scores, or ownership evidence.
Review it, then add it to your workspace.
The board opens an editable draft; nothing is saved until you confirm it. Sign-in and workspace permissions apply, and Demo boards remain ephemeral.
Project context
Fictional document archive Fern stores synthetic byte objects. Use a local S3-compatible adapter or deterministic in-memory provider; no cloud credentials are needed.
Setup prerequisites
- Generate small deterministic byte fixtures.
- Implement local multipart provider responses including timeout and missing parts.
Preceding work
No earlier ticket is required. Complete the project setup above.
Acceptance criteria
- Valid names retain documented characters
- Empty and oversized names fail
- Normalization collisions are rejected
Implementation constraints
- Object keys are not local file paths.
Verification to include
- Store valid unicode name
- Reject colliding normalized names
Deliverables
- Name validator and examples
Rollout and recovery
Reject new ambiguous names while keeping existing reads.
Value of the work
For the engineer: Practice object lifecycle, retry semantics and integrity verification.
For the team: Inspect whether uploads avoid corruption, orphan cost and tenant crossover.
Evidence boundaries
Outcome Evidence: Tests, patches, and runbooks are requested deliverables. They become Outcome Evidence only through a qualified Mission and immutable Evidence IDs.
Ownership Evidence: Independent adaptation must be observed under a declared verification policy and cite immutable Evidence IDs. Completing a planning ticket establishes no Ownership Evidence.