IDIssueCategoryRuleLocationDifficulty
D3Refund is not capped at the remaining balanceThis requirementrefund.js:18 · §11Spec deviation§11refund.js:18Low
D5Gateway refund fails, ledger still records successrefund.js:56 · §12Swallowed error§12refund.js:56Low
D2Two concurrent holds can both succeed and oversellinventory.js:49 · §4Async race§4inventory.js:49Mid
D4Exactly 10 or 50 units miss the volume discountpricing.js:32 · §8Off by one§8pricing.js:32Low
D6A throw inside the lock never releases itdb.js:186 · §14Resource leak§14db.js:186Mid
D7Commit leaves status HELD, expiry releases stock twicereservation.js:93 · §5Cross-file invariant§5reservation.js:93High
D1Expired holds leave the availability cache stalereservation.js:162 · §6Cross-method state§6reservation.js:162Mid
Found byRule scan0/7AI semantic review7/7None has a syntactic signature; 102 Semgrep seed rules hit none