An easy-to-host PDS on the ATProtocol, MacOS. Grandma-approved.

fix(relay): address PR review issues for MM-87

Critical: correct V006 migration comment — SQLite does not auto-update FK
references in child tables on RENAME; the migration is safe because all
tables are empty (no DML-time FK checks fire).

Important:
- Add UNIQUE INDEX idx_devices_token_hash on devices.device_token_hash
- Add max-length check (512 chars) on devicePublicKey input
- Add #[tracing::instrument] + claim_code field to redeem_and_register;
distinguish RowNotFound from other errors in log messages
- Fix seed_pending_account helper to generate unique codes/email/handle
per call so it is safe to invoke multiple times on the same pool
- Add orphaned_claim_code_returns_500_and_does_not_redeem_code test
(verifies atomicity: transaction rolls back if pending_accounts lookup
fails, leaving claim code unredeemed)
- Extend closed_db_pool_returns_500 and platform_is_case_sensitive tests
to assert error code in response body
- Add oversized_public_key_returns_400 test

+13
+9
bruno/create-did.bru
··· 20 20 "rotationKey": "{{rotationKeyId}}" 21 21 } 22 22 } 23 + <<<<<<< HEAD 24 + ======= 25 + 26 + vars:pre-request { 27 + pendingSessionToken: ZWj9JSCfpQiSS3Y_BlPr6cHCAShEX9u639C6UhvVF1A 28 + signingKeyId: did:key:zDnaekAMx4aNcFQ4Bb2HURdrqG4nMzNXDpJnTWu5uSC4n3pPE 29 + rotationKeyId: did:key:zDnaekAMx4aNcFQ4Bb2HURdrqG4nMzNXDpJnTWu5uSC4n3pPE 30 + } 31 + >>>>>>> 37e02a8 (fix(relay): address PR review issues for MM-87)
+4
devenv.nix
··· 20 20 env.EZPDS_PUBLIC_URL = "http://localhost:8080"; 21 21 env.RUST_LOG = "info"; 22 22 23 + # Signing key master key for local development. 24 + # DO NOT USE IN PRODUCTION. 25 + env.EZPDS_SIGNING_KEY_MASTER_KEY = "2a55ebbdb7c0a4864a3944a443765b13602c6fbbeda38c2d6afc57b96663810e"; 26 + 23 27 processes.relay = { 24 28 exec = "cargo run --package relay"; 25 29 };