mirror of
https://github.com/luxfi/mpc.git
synced 2026-09-24 00:26:24 +00:00
- F3: consumeSessionForSign now atomically CAS-guards OperationsUsed and ValueAccum inside RunInTransaction with explicit prev-value check; mismatch returns errSessionConflict and the outer loop retries up to 5 times. Prevents over-consuming sessions under concurrent /sign requests. Callers must present a sessionID (403 otherwise — aligns with F1 handler change). - F21: session reaper now loops pagination until a page produces no reaps; per-row Update errors are logged via an audit entry instead of being silently swallowed. Added reapExpiredSessions for direct test-drive. - F24: handleCreateWalletSession now consults wallet policies. If the requested valueLimit trips a require_approval policy the session is created in pending_approval state; if a deny policy matches, the request is rejected 403. operationLimit > 1000 also forces approval. - F25: enforced scope strictly — sign scope is required on the session for /sign and /settlement/sign. Sessions granted only 'authorize' or 'read' cannot sign. Added concurrency test cas_concurrency_test.go: TestConsumeSessionForSign_CASUnderRace (F3 reproducer) TestApproveOperation_CASUnderRace (F2 reproducer) TestInitiatorCannotApprove_Regardless (F23 regression) Tests require -tags json1 for SQLite json_extract; Makefile already sets this on the test target (F30 mitigation).