Open
Labels
SDKready-for-agentFully specified and ready for an AFK agentFully specified and ready for an AFK agent
Description
Created with Claude Code from the spec in #1341.
Parent
Sub-issue of #1341. Ticket 13 of 14.
What to build
The concurrency and interrupt contract from #1341 holds from the public API:
- Two threads entering their first operation at the same time build one engine client and load the default keyset once.
- Two
Cipherinstances for different models share that client. - Concurrent
encryptanddecryptfrom several threads all succeed and all rows open. - A
KeyboardInterruptduring a longencryptbehaves as ticket 3 found: it lands after the detached call returns, and theCipheris usable afterwards. If ticket 3 amended the fact, implement and test the amended behaviour.
Acceptance criteria
- A test with a barrier releases 8 threads into their first
encrypt; the client-built counter reads 1 and the keyset-load counter reads 1. - 8 threads × 100 encrypts of distinct values, then one
decryptof all 800, all equal. - A subprocess test sends SIGINT during a 5000-value
encrypt; the process observesKeyboardInterruptexactly once, the call did not leave a half-built result, and a subsequentencryptsucceeds. - The README documents the sync-only, GIL-released, one-client-per-process contract in a short section.
Metadata
Metadata
Assignees
Labels
SDKready-for-agentFully specified and ready for an AFK agentFully specified and ready for an AFK agent
Activity
decryptrows back into models #1390queryan equality term #1391