{"record":{"id":"41ebb6382195aef0","repo":"paperclipai/paperclip","slug":"entering-blocked-requires-unresolved-blockers-a-p","errorCode":null,"errorMessage":"Entering blocked requires unresolved blockers, a pending interaction/approval, or unblockDescriptor","messagePattern":"Entering blocked requires unresolved blockers, a pending interaction/approval, or unblockDescriptor","errorType":"http","errorClass":null,"httpStatus":422,"severity":"error","filePath":"server/src/routes/issues.ts","lineNumber":10069,"sourceCode":"    await assertCanManageIssueMonitor(access, req, issue.companyId, issue.assigneeAgentId, true);\n\n    const actor = getActorInfo(req);\n    await heartbeat.triggerIssueMonitor(issue.id, {\n      actorType: actor.actorType,\n      actorId: actor.actorId,\n      agentId: actor.agentId ?? null,\n      runId: actor.runId ?? null,\n    });\n\n    res.json({ ok: true });\n  });\n\n  router.post(\"/issues/:id/scheduled-retry/retry-now\", async (req, res) => {\n    assertBoard(req);\n    const id = req.params.id as string;\n    const issue = await getAccessibleResource(req, res, svc.getById(id), \"Issue not found\");\n    if (!issue) return;\n\n    const actor = getActorInfo(req);\n    const result = await heartbeat.retryScheduledRetryNow({\n      issueId: issue.id,\n      actor: {\n        actorType: actor.actorType,\n        actorId: actor.actorId,\n      },\n    });\n\n    await logActivity(db, {\n      companyId: issue.companyId,\n      actorType: actor.actorType,\n      actorId: actor.actorId,\n      action: \"issue.scheduled_retry_retry_now\",\n      entityType: \"issue\",\n      entityId: issue.id,\n      agentId: result.scheduledRetry?.agentId ?? issue.assigneeAgentId ?? null,\n      runId: result.scheduledRetry?.runId ?? null,","sourceCodeStart":10051,"sourceCodeEnd":10087,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/routes/issues.ts#L10051-L10087","documentation":"422 on status change to blocked. Fires when the caller requests status=blocked but none of the preconditions hold: no unresolved dependency blockers, no pending thread interaction, no pending approval, and no unblockDescriptor supplied — the blocked state must be backed by at least one of these.","triggerScenarios":"Thrown at server/src/routes/issues.ts:9388 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Correct the request so it satisfies the condition stated in the error message, then retry; see the throwing line in the named file for the exact check."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}