{"record":{"id":"7fc868a4fc633234","repo":"paperclipai/paperclip","slug":"only-board-users-may-set-structured-comment-presen","errorCode":null,"errorMessage":"Only board users may set structured comment presentation or metadata","messagePattern":"Only board users may set structured comment presentation or metadata","errorType":"http","errorClass":null,"httpStatus":403,"severity":"error","filePath":"server/src/routes/issues.ts","lineNumber":5183,"sourceCode":"    };\n  }\n\n  async function assertDeliverableMutationAllowedByRunContext(\n    req: Request,\n    res: Response,\n    issue: { id: string; companyId: string },\n  ) {\n    const run = await loadActorRunContext(req, issue.companyId);\n    if (!run) return true;\n    if (!isStatusOnlyRecoveryContext(run.contextSnapshot)) return true;\n\n    res.status(403).json({\n      error: \"Status-only recovery runs cannot update issue documents, plans, or deliverable artifacts\",\n      details: {\n        issueId: issue.id,\n        runId: run.id,\n        recoveryIntent: \"status_only\",\n        resumeRequiresNormalModel: true,\n      },\n    });\n    return false;\n  }\n\n  async function assertApprovalMutationAllowedByRunContext(\n    req: Request,\n    res: Response,\n    issue: { id: string; companyId: string },\n  ) {\n    const run = await loadActorRunContext(req, issue.companyId);\n    if (!run) return true;\n    if (!isStatusOnlyRecoveryContext(run.contextSnapshot)) return true;\n\n    res.status(403).json({\n      error: \"Status-only recovery runs cannot create or modify approvals\",\n      details: {\n        issueId: issue.id,","sourceCodeStart":5165,"sourceCodeEnd":5201,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/routes/issues.ts#L5165-L5201","documentation":"403 from assertStructuredCommentFieldsAllowed: the comment payload includes structured presentation or metadata fields, which only board users may set; agent actors are rejected.","triggerScenarios":"Thrown at server/src/routes/issues.ts:5027 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["This is an authorization rule, not a bug: perform the action with an actor that satisfies the stated constraint (board user, the owning agent, or an in-scope resource).","If access should be allowed, verify the actor's credentials/company scope and the resource's ownership before retrying."],"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"}