Atomically delete the entry if it exists. Returns true iff THIS call deleted a non-expired entry.
Non-mutating lookup. Returns null for absent / expired entries. Reading does not mutate state; safe to call repeatedly.
Note: Redis-backed adapters reconstruct expiresAtMs from PTTL and may
drift by <10ms vs the originally-issued epoch ms. The drift is benign —
the wrapper layer (ChallengeCeremony, Task 5) only uses expiresAtMs
to set the subsequent markSeen TTL; the security window remains
TTL-bounded. Per A1 §5.1 (lines 117-122).
Atomically register a server-issued challenge.
Atomic primitives for server-issued challenge tracking. Identifies a single- winner across N concurrent calls; ceremony classification (replayed vs unknown) is layered above by ChallengeCeremony, NOT by this primitive.
Per A1 §5.1 (lines 89-138). Concurrency contract:
Adapters MUST throw ChallengeStorageError per the throw matrix in
./errors.mts. find / consume MUST NOT throw on nonexistent / expired entries (return null / false respectively). This contract is enforced by the shared adapter contract test suite (__tests__/adapters.contract.mts, established in Tasks 3 + 4 and re-imported by the Redis adapter tests in Tasks 11 + 12).