You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
All GTC limit orders placed via @polymarket/clob-client-v2 (^1.0.6) with SignatureTypeV2.POLY_1271 are accepted by the CLOB (status: "live"), then server-cancelled ~11 seconds later. Cancel timestamps are aligned to a 5-second grid (ts mod 5000 ≈ 2547ms ±22ms), consistent with a periodic sweep worker. No cancel_reason is returned in the WS user-channel CANCELED event or via getOrder().
This has been reproduced across:
Multiple markets / asset IDs (non-negRisk)
Single order after 3-minute cooldown (not rate-limiting)
Fresh API key (deleted old, created via createOrDeriveApiKey())
Aggressive heartbeat (every 2s, all OK, 58-97ms latency)
No cancel_reason, cancelReason, or reason field is present.
getOrder(orderId) after cancellation also shows no cancel reason.
Hypothesis
Since all client-side verification passes (EIP-1271 valid, balance sufficient, allowances max, heartbeat healthy, API key valid), the cancellation must be triggered by server-side logic that we cannot inspect. Possible causes:
sum_of_matched_orders counter (ref: py-clob-client-v2 fix: preserve structured errors in paginated methods #34) — internal counter tracking matched volume may have accumulated from prior UI trades (account has 11 positions). If this counter exceeds the balance, the sweep would cancel new orders. We cannot read or reset this counter from the client side.
Server-side EIP-1271 re-verification with different chain state — the sweep worker may re-verify signatures differently than the initial placement validator.
Internal account flag — V2 migration may have left an account-level flag that blocks new order persistence.
Request
Can you inspect the server-side cancel reason for orders from funder 0x3de96AD68A661FA3151C4bAB54155Ab15cD6B112?
Is there a way to read/reset the sum_of_matched_orders counter via API?
Does the 5s-grid sweep worker expose its cancel reason in any way we can access?
Summary
All GTC limit orders placed via
@polymarket/clob-client-v2(^1.0.6) withSignatureTypeV2.POLY_1271are accepted by the CLOB (status: "live"), then server-cancelled ~11 seconds later. Cancel timestamps are aligned to a 5-second grid (ts mod 5000 ≈ 2547ms ±22ms), consistent with a periodic sweep worker. Nocancel_reasonis returned in the WS user-channel CANCELED event or viagetOrder().This has been reproduced across:
createOrDeriveApiKey())Environment
@polymarket/clob-client-v2^1.0.6SignatureTypeV2.POLY_1271(sig_type=3)0x3de96AD68A661FA3151C4bAB54155Ab15cD6B1120xDa493A99dff8cb0C8618B5094d6758A6427bF63Af711d790-5d86-8cce-7a57-19205840aa36getVersion()= 2), contract0xE111180000d2663C0091e4f400237545B87B996BDiagnostic results (10 tests, all passing)
1. Balance & allowance
getBalanceAllowance(COLLATERAL)returns balance=$119.67, allowance=uint256_maxupdateBalanceAllowance(COLLATERAL)pulse succeeds every 30s2. EIP-1271 on-chain verification
owner()returns our EOA (0xDa49...)isValidSignature(eip712_digest, sdk_signature)on deposit wallet returns0x1626ba7e(EIP-1271 MAGIC_VALUE) ✓3. Heartbeat
4. Order version & negRisk
getVersion()= 2 ✓getNegRisk(assetId)= false ✓ (standard market, correct exchange)5. Account state
getClosedOnlyMode()= false ✓6. isOrderScoring
false— but this is maker rewards eligibility, NOT order validity7. API key binding
deriveApiKey()returns same keyf711d790for both EOA and POLY_1271 modesgetApiKeys()returns the keystatus: "live")8. API key re-creation
createOrDeriveApiKey()withPOLY_12719. Cooldown test
10. Multiple markets
WS cancel event payload
The CANCELED event from the user channel contains:
{"status": "CANCELED", "size_matched": "0", "expiration": "0"}No
cancel_reason,cancelReason, orreasonfield is present.getOrder(orderId)after cancellation also shows no cancel reason.Hypothesis
Since all client-side verification passes (EIP-1271 valid, balance sufficient, allowances max, heartbeat healthy, API key valid), the cancellation must be triggered by server-side logic that we cannot inspect. Possible causes:
sum_of_matched_orderscounter (ref: py-clob-client-v2 fix: preserve structured errors in paginated methods #34) — internal counter tracking matched volume may have accumulated from prior UI trades (account has 11 positions). If this counter exceeds the balance, the sweep would cancel new orders. We cannot read or reset this counter from the client side.Server-side EIP-1271 re-verification with different chain state — the sweep worker may re-verify signatures differently than the initial placement validator.
Internal account flag — V2 migration may have left an account-level flag that blocks new order persistence.
Request
0x3de96AD68A661FA3151C4bAB54155Ab15cD6B112?sum_of_matched_orderscounter via API?Related issues
createApiKey()doesn't EIP-1271-wrap L1 auth (we worked around this viacreateOrDeriveApiKey())status=MATCHEDandsize_matchedfor orders whose underlying matches never settle on-chain ("ghost fills") (post V2 cutover 4/28/26) py-clob-client-v2#34 —sum_of_matched_ordersphantom leak causing order blocks