{"record":{"id":"b2fb285584f62112","repo":"paperclipai/paperclip","slug":"board-access-required-b2fb28","errorCode":null,"errorMessage":"Board access required","messagePattern":"Board access required","errorType":"http","errorClass":null,"httpStatus":403,"severity":"error","filePath":"server/src/routes/issues.ts","lineNumber":11555,"sourceCode":"        try {\n          const existingWake = await findExistingIssueBlockersResolvedWakeForReadyState(db, {\n            companyId: issue.companyId,\n            dependentIssueId: input.dependentIssueId,\n            blockerIssueIds: input.blockerIssueIds,\n            blockedTransitionAt: input.blockedTransitionAt,\n          });\n          if (existingWake) return;\n        } catch (err) {\n          logger.warn(\n            { err, issueId: input.dependentIssueId, idempotencyKey },\n            \"failed to check existing dependency wake before issue update wake\",\n          );\n        }\n        addWakeup(input.agentId, {\n          source: \"automation\",\n          triggerDetail: \"system\",\n          reason: ISSUE_BLOCKERS_RESOLVED_WAKE_REASON,\n          payload: {\n            issueId: input.dependentIssueId,\n            resolvedBlockerIssueId: input.resolvedBlockerIssueId,\n            blockerIssueIds: input.blockerIssueIds,\n            mutation: input.mutation,\n          },\n          idempotencyKey,\n          requestedByActorType: actor.actorType,\n          requestedByActorId: actor.actorId,\n          contextSnapshot: {\n            issueId: input.dependentIssueId,\n            taskId: input.dependentIssueId,\n            wakeReason: ISSUE_BLOCKERS_RESOLVED_WAKE_REASON,\n            source: input.source,\n            resolvedBlockerIssueId: input.resolvedBlockerIssueId,\n            blockerIssueIds: input.blockerIssueIds,\n          },\n        });\n      };","sourceCodeStart":11537,"sourceCodeEnd":11573,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/routes/issues.ts#L11537-L11573","documentation":"403 guard on POST /issues/:id/admin/force-release. Fires when the actor is not a board user; the admin force-release escape hatch (releasing a stuck checkout) is board-only and never exposed to agent keys.","triggerScenarios":"Thrown at server/src/routes/issues.ts:10771 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include the required field(s) in the request path, query, or body as named by the error message, then retry.","Check the API contract in packages/shared validators for the exact required shape of this endpoint."],"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-14T05:17:10.506Z"}