{"record":{"id":"1295a824b4d677cb","repo":"paperclipai/paperclip","slug":"board-authentication-required-1295a8","errorCode":null,"errorMessage":"Board authentication required","messagePattern":"Board authentication required","errorType":"http","errorClass":null,"httpStatus":403,"severity":"error","filePath":"server/src/routes/issues.ts","lineNumber":7801,"sourceCode":"        },\n        tx,\n      );\n      if (!recoveryAction) throw notFound(\"Active recovery action not found\");\n\n      return { issue, recoveryAction };\n    });\n    if (result.replayed) {\n      res.json({ issue: result.issue, recoveryAction: result.recoveryAction });\n      return;\n    }\n    for (const publication of postCommitActivityPublications) publishActivity(publication);\n    await flushIssuePostCommitActions(postCommitIssueActions);\n\n    await routinesSvc.syncRunStatusForIssue(result.issue.id);\n\n    if (sourceIssueStatus && existing.status !== result.issue.status) {\n      await logActivity(db, {\n        companyId: result.issue.companyId,\n        actorType: actor.actorType,\n        actorId: actor.actorId,\n        agentId: actor.agentId,\n        runId: actor.runId,\n        agentApiKeyId: actor.agentApiKeyId,\n        action: \"issue.updated\",\n        entityType: \"issue\",\n        entityId: result.issue.id,\n        details: {\n          identifier: result.issue.identifier,\n          status: result.issue.status,\n          source: \"recovery_action_resolution\",\n          recoveryActionId: result.recoveryAction.id,\n          _previous: {\n            status: existing.status,\n          },\n        },\n      });","sourceCodeStart":7783,"sourceCodeEnd":7819,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/routes/issues.ts#L7783-L7819","documentation":"403 guard on POST /issues/:id/documents/:key/lock (document lock/unlock). Fires when the authenticated actor is an agent API key rather than a board user; document locking is a board-only operation.","triggerScenarios":"Thrown at server/src/routes/issues.ts:7317 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"}