{"record":{"id":"a44968a82ded7e80","repo":"paperclipai/paperclip","slug":"board-chat-busy","errorCode":"BOARD_CHAT_BUSY","errorMessage":"Too many concurrent board chats — retry shortly","messagePattern":"Too many concurrent board chats — retry shortly","errorType":"http","errorClass":null,"httpStatus":429,"severity":"error","filePath":"server/src/routes/board-chat.ts","lineNumber":143,"sourceCode":"      message?: string;\n      taskId?: string;\n    };\n\n    if (!companyId || !message) {\n      res.status(400).json({ error: \"companyId and message are required\" });\n      return;\n    }\n\n    // The body-supplied companyId must belong to the authenticated actor —\n    // it scopes issue reads/writes below and is exported to the subprocess.\n    assertCompanyAccess(req, companyId);\n\n    // Back-pressure: each request holds a subprocess + SSE stream for up to\n    // 2 minutes; cap simultaneous spawns instead of forking without bound.\n    if (liveBoardChats >= MAX_CONCURRENT_BOARD_CHATS) {\n      res.status(429).json({\n        error: \"Too many concurrent board chats — retry shortly\",\n        code: \"BOARD_CHAT_BUSY\",\n      });\n      return;\n    }\n\n    const issueSvc = issueService(db);\n    let issueId = taskId;\n    const actor = getActorInfo(req);\n\n    // Find or create the standing \"Board Operations\" issue that anchors the\n    // board conversation + decision log.\n    if (!issueId) {\n      const companyIssues = await issueSvc.list(companyId, { q: \"Board Operations\" });\n      const boardIssue = companyIssues.find(\n        (i) =>\n          i.title === \"Board Operations\" &&\n          i.status !== \"done\" &&\n          i.status !== \"cancelled\",\n      );","sourceCodeStart":125,"sourceCodeEnd":161,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/routes/board-chat.ts#L125-L161","documentation":"Error \"Too many concurrent board chats — retry shortly\" thrown in paperclipai/paperclip.","triggerScenarios":"Thrown at server/src/routes/board-chat.ts:143 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Wait for an active board chat session to end, then retry starting a new one."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"120ae5428fa29bee300bcf806491cd4d965fbb7c","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}