ADR-0005 — Capability-flagged storage abstraction, MinIO/S3 first

Context

The brief requires multi-cloud storage across MinIO, S3, R2, GCS, and Azure Blob. These differ in consistency, multipart semantics, presigned-URL capabilities, conditional writes, and error taxonomies (R3). Two failure modes loom: an abstraction that leaks provider quirks, or one that collapses to a useless lowest-common-denominator. Building all five adapters before shipping to one customer is also classic overengineering (Ledger).

Decision

Define a narrow, capability-flagged storage interface in the Storage context:

Consequences

Positive

Negative / costs

Alternatives considered