The review-participant recovery release ran inside the issue-execution lock transaction. When responsible-user resolution returned null, the release code threw. The throw unwound that same transaction, so it undid the lock release the transaction had already run: the issue's execution and checkout references stayed on the finished run instead of clearing. Stop the release from throwing for this one case. Return a "blocked" outcome instead, the same way the release already handles a missing or non-invokable recovery agent. The lock-clearing writes now commit together with the blocked decision, and the board sees the usual stranded-issue notice instead of the release silently failing. - server/src/modules/wake-queue/application/use-cases.ts: return a blocked outcome (notice kind execution_review_participant) instead of throwing WakeQueueApplicationError when the review-participant recovery run has no responsible user. - server/src/modules/wake-queue/application/use-cases.test.ts: update the unit test for this branch to assert the blocked outcome and the stranded-issue escalation call, instead of the removed throw. - server/src/modules/wake-queue/adapters/postgres.test.ts: add an integration test that drives the real release use case against a real Postgres transaction and proves the issue's execution and checkout references clear even when identity resolution fails. Co-authored-by: Paperclip <noreply@paperclip.ing> |
||
|---|---|---|
| .. | ||
| scripts | ||
| src | ||
| CHANGELOG.md | ||
| package.json | ||
| tsconfig.json | ||
| vitest.config.ts | ||