{"record":{"id":"fba0e790be8515f3","repo":"multica-ai/multica","slug":"project-not-found-in-this-workspace","errorCode":null,"errorMessage":"project not found in this workspace","messagePattern":"project not found in this workspace","errorType":"validation","errorClass":"ErrProjectNotFound","httpStatus":400,"severity":"error","filePath":"server/internal/service/issue.go","lineNumber":143,"sourceCode":"// ErrActiveDuplicate signals that the duplicate guard found an active\n// issue with the same (workspace, project, parent, title) tuple and\n// AllowDuplicate was false. The IssueCreateResult.DuplicateIssue field is\n// populated when this error is returned so callers can render the\n// conflict (HTTP 409, Lark card, etc.).\nvar ErrActiveDuplicate = errors.New(\"active duplicate issue exists\")\n\n// ErrParentIssueNotFound signals that the supplied ParentIssueID does\n// not exist in the issue's workspace. The service refuses to create\n// orphaned or cross-workspace child issues; callers translate this into\n// their transport's 400 / Lark card error.\nvar ErrParentIssueNotFound = errors.New(\"parent issue not found in this workspace\")\n\n// ErrProjectNotFound signals that the supplied ProjectID does not exist\n// in the issue's workspace. Cross-workspace project IDs are rejected\n// here so every create entry (HTTP `POST /issues`, Lark `/issue`, future\n// MCP / API key callers) enforces the same workspace boundary without\n// having to remember it. Callers translate this into 400.\nvar ErrProjectNotFound = errors.New(\"project not found in this workspace\")\n\n// ErrIssueLabelNotFound signals that one of the supplied LabelIDs does not\n// exist in the issue's workspace or is not an issue-scoped label. The whole\n// create is rejected so a new issue is never born with a partial or wrong\n// label set. Callers translate this into their transport's 400.\nvar ErrIssueLabelNotFound = errors.New(\"issue label not found in this workspace\")\n\n// IssueCreateResult is the typed return from IssueService.Create.\n//\n//   - On the happy path: Issue is the new row, Attachments lists the\n//     linked attachments (may be empty), DuplicateIssue is nil.\n//   - On ErrActiveDuplicate: DuplicateIssue is the row that blocked the\n//     create; Issue and Attachments are zero.\ntype IssueCreateResult struct {\n\tIssue       db.Issue\n\tAttachments []db.Attachment\n\t// AssignedTaskID is populated when Create enqueues the automatic task for\n\t// an agent assignee, including a task deferred by AssignedAgentRunFireAt.","sourceCodeStart":125,"sourceCodeEnd":161,"githubUrl":"https://github.com/multica-ai/multica/blob/2c0912b6ec764b373d44eeea1e80f0d9f11ab417/server/internal/service/issue.go#L125-L161","documentation":"Error \"project not found in this workspace\" thrown in multica-ai/multica.","triggerScenarios":"Thrown at server/internal/service/issue.go:143 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pick a project that exists in this workspace."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2c0912b6ec764b373d44eeea1e80f0d9f11ab417","analyzedAt":"2026-08-15T13:25:18.241Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}