{"record":{"id":"42025d426ef5ddcd","repo":"ruvnet/ruflo","slug":"plan-not-found","errorCode":"PLAN_NOT_FOUND","errorMessage":"Plan not found: ${planId}","messagePattern":"Plan not found: (.+?)","errorType":"exception","errorClass":"TeammateError","httpStatus":null,"severity":"error","filePath":"v3/plugins/teammate-plugin/src/teammate-bridge.ts","lineNumber":2133,"sourceCode":"    }\n  }\n\n  private getTeamOrThrow(teamName: string): TeamState {\n    const team = this.activeTeams.get(teamName);\n    if (!team) {\n      throw new TeammateError(\n        `Team not found: ${teamName}`,\n        TeammateErrorCode.TEAM_NOT_FOUND,\n        teamName\n      );\n    }\n    return team;\n  }\n\n  private getPlanOrThrow(team: TeamState, planId: string): TeamPlan {\n    const plan = team.activePlans.find(p => p.id === planId);\n    if (!plan) {\n      throw new TeammateError(\n        `Plan not found: ${planId}`,\n        TeammateErrorCode.PLAN_NOT_FOUND,\n        team.name\n      );\n    }\n    return plan;\n  }\n\n  private getMailboxPath(teamName: string, teammateId: string): string {\n    return path.join(this.teamsDir, teamName, 'mailbox', `${teammateId}.json`);\n  }\n\n  private async writeToMailbox(\n    teamName: string,\n    teammateId: string,\n    message: MailboxMessage\n  ): Promise<void> {\n    // Security: Path validation already done by getMailboxPath via validateName","sourceCodeStart":2115,"sourceCodeEnd":2151,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/plugins/teammate-plugin/src/teammate-bridge.ts#L2115-L2151","documentation":"getPlanOrThrow() searched team.activePlans for the given planId and found no match. The plan was never submitted to this team, was completed/archived out of activePlans, or the id is wrong — there is no plan object to operate on.","triggerScenarios":"Thrown at v3/plugins/teammate-plugin/src/teammate-bridge.ts:2133 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the referenced identifier exists before use (list available items and match against user input).","Return a clear 404-style error listing valid identifiers, and have the caller retry with an existing id."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fa13ee4ad60ac2090b1480656eb233521790d640","analyzedAt":"2026-08-18T21:34:22.708Z","contentChangedAt":"2026-08-18T21:34:22.708Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}