ADR-0020 — Policy-driven placement & federation

V1 Freeze (2026-06-12): Deferred. V1 uses a single static storage provider; no placement engine, location map, or online migration. Re-opens with multi-region/residency or a second provider (P5+/NG9).

Context

BitVault federates many providers/regions/buckets/tiers (G4). Something must decide where each unit of data lives and the system must always know where it is, while honoring data residency (GDPR), cost (storage + egress vary wildly), durability class, and latency — without coupling a unit’s address to its location (which would make migration and provider exit impossible).

Decision

Consequences

Positive

Negative / costs

Alternatives considered

Scaling

Per-pack location keeps the map ~100× smaller than per-chunk; placement is stateless/ cacheable; migrations are co-located, throttled, watermarked, resumable (a provider exit is a long verify-as-you-go campaign).