Published in openvibe-contracts v0.33.0 (docs/adr/ADR-006-media-objects.md), rendered as is.

ADR-006: Media object, location and namespace model

Status: Accepted 2026-09-22; implementation in progress (OpenVibe.Media Wave 4)

Context and current evidence

Media stored VODs, clips, files and paste screenshots in separate predecessor-shaped tables with a single mutable provider field; copies in local/B2/R2 were implicit.

Decision

Alternatives considered

Migration consequences

Backfill creates an object per existing row without moving bytes; reconciliation verifies locations before any state is trusted.

Rollback

The object layer is additive; old routes keep working throughout.

Acceptance tests

Non-Live app uploads/reads with only a capability grant; deliberate replica loss is detected; private objects cannot be fetched without a grant; invariant violations are reported.