Closed both backup/restore review findings.
- Hardened private archive and
space.jsonwrites with unpredictable same-directory temporary files, exclusive creation, explicit 0600 permissions, atomic rename, and failure cleanup. A regression test proves the former predictable.tmpsymlink cannot redirect cleartext. - Added shared validation for durable wants and applied it while decoding archive headers, before import opens or mutates a replica. Wants now require an admitted-envelope-compatible DID, Radial collection, rkey, and canonical private record CID, and archives are capped at 1,000 wants.
- Added malformed, oversized, invalid-CID, invalid-collection, and over-count archive coverage while retaining valid want-list backup/restore behavior.
Checks: pnpm lint; pnpm test (core 288, atproto 32, ingest 36, sidecar 88, daemon 559, UI node 61, UI Vitest 570; all passed).
Remaining risks: none identified within this change's scope.