Index: 47 open (8 critical, 39 major), 6 resolved. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1.5 KiB
1.5 KiB
issue, title, severity, domain, labels, status, resolved, fix, created, source
| issue | title | severity | domain | labels | status | resolved | fix | created | source | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 004 | POST /api/disputes/:id/resolve (dashboard) does not trigger escrow release — only updates Dispute model | critical | Dispute |
|
resolved | 2026-05-29 | DisputeService.resolveDispute now calls releaseHoldResolve(purchaseRequestId) after saving, clearing escrow hold and unblocking payment release | 2026-05-29 | Doc vs Code Audit 2026-05-29 |
🔴 POST /api/disputes/:id/resolve (dashboard) does not trigger escrow release — only updates Dispute model
Severity: critical Domain: Dispute Labels: bug, backend, escrow, major
Description
The API claims resolveDispute 'triggers refund/release/split escrow action.' DisputeService.resolveDispute only updates the Dispute document. The separate POST /api/disputes/:purchaseRequestId/resolve (releaseHold router) is required to actually unblock escrow. Due to the route shadowing bug, the correct handler may never be reached.
Current Behavior
DisputeService.resolveDispute only updates the Dispute document. Escrow remains blocked until a separate correct API call is made to the releaseHold router.
Expected Behavior
Dispute resolution should atomically update the Dispute record AND release/refund the escrow as indicated by the action field.
Affected Files
backend/src/services/disputeService.tsbackend/src/controllers/disputeController.ts