Offer an S3-compatible object storage API backed by content-addressed decentralized storage, so tenants get a familiar interface without a central storage operator. Per ADR-012 §3, object payloads are a content-addressed class and tenant objects are tenant-private: confidentiality comes from client-side encryption with tenant-held keys, not from access control at the gateway.
Blocked by: ADR-018 (see ADR-012 §6) — no implementation before acceptance.
Acceptance criteria:
- ADR-018 selects the storage network and states its pinning strategy, retention proofs, cost model, and gateway trust assumptions;
- the S3-compatible surface states precisely which operations and semantics are supported and which are not; unsupported operations fail explicitly rather than silently diverging from S3 behavior;
- tenant objects are encrypted client-side with tenant-held keys before leaving the tenant boundary; a storage node learns only ciphertext and size;
- erasure is implemented by key destruction, per ADR-012 §4, and the residual-ciphertext consequence is documented for the tenant;
- retention is backed by a proof, not by a promise: a node claiming to store data it does not hold is detectable;
- data unavailability produces an explicit error, never a silent empty result, per ADR-012 §4;
- access-pattern correlation between tenants is addressed as a privacy threat, per the storage-node row of the ADR-012 §2 threat table;
- tests cover put/get/delete round-trips, a node silently losing data, a node lying about possession, an unavailable pinset, erasure by key destruction, and a partitioned gateway.
Original request (FR, preserved verbatim):
Fournir une interface S3 pour le stockage d'objets en utilisant des protocoles de stockage décentralisés.
Offer an S3-compatible object storage API backed by content-addressed decentralized storage, so tenants get a familiar interface without a central storage operator. Per ADR-012 §3, object payloads are a content-addressed class and tenant objects are tenant-private: confidentiality comes from client-side encryption with tenant-held keys, not from access control at the gateway.
Blocked by: ADR-018 (see ADR-012 §6) — no implementation before acceptance.
Acceptance criteria:
Original request (FR, preserved verbatim):