{"record":{"id":"0fbed890f1de9023","repo":"gastownhall/beads","slug":"epic-s-not-found","errorCode":null,"errorMessage":"epic '%s' not found","messagePattern":"epic '(.+?)' not found","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/bd/swarm_proxied_server.go","lineNumber":56,"sourceCode":"\tverbose, _ := cmd.Flags().GetBool(\"verbose\")\n\n\tif uowProvider == nil {\n\t\treturn HandleErrorRespectJSON(\"proxied-server UOW provider not initialized\")\n\t}\n\n\tanalysis, err := uow.RunTxRead(ctx, uowProvider, func(ctx context.Context, uw uow.UnitOfWork) (*SwarmAnalysis, error) {\n\t\tr := uowMolReader{uw: uw}\n\n\t\tepicID, err := utils.ResolvePartialID(ctx, r, args[0])\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"epic '%s' not found: %v\", args[0], err)\n\t\t}\n\n\t\tepic, err := uw.IssueUseCase().GetIssue(ctx, epicID)\n\t\tif gateProxiedNotFound(err) || (err == nil && epic == nil) {\n\t\t\t// Classic reports a nil epic after a successful resolve this way;\n\t\t\t// keep the message for parity.\n\t\t\treturn nil, fmt.Errorf(\"epic '%s' not found\", epicID)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to get epic: %v\", err)\n\t\t}\n\n\t\tif epic.IssueType != types.TypeEpic && epic.IssueType != \"molecule\" {\n\t\t\treturn nil, fmt.Errorf(\"'%s' is not an epic or molecule (type: %s)\", epicID, epic.IssueType)\n\t\t}\n\n\t\tanalysis, err := analyzeEpicForSwarm(ctx, r, epic)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to analyze epic: %v\", err)\n\t\t}\n\t\treturn analysis, nil\n\t})\n\tif err != nil {\n\t\treturn HandleErrorRespectJSON(\"%v\", err)\n\t}","sourceCodeStart":38,"sourceCodeEnd":74,"githubUrl":"https://github.com/gastownhall/beads/blob/71377f276968b452ee607177637970a4ff888584/cmd/bd/swarm_proxied_server.go#L38-L74","documentation":"Error from runSwarmValidateProxiedServer in cmd/bd/swarm_proxied_server.go:56. Raised when the epic ID resolved successfully but GetIssue returns a proxied not-found signal or a nil issue with nil error. The comment in source notes this mirrors classic-mode parity: resolution found a candidate that does not actually exist as a readable issue.","triggerScenarios":"`bd swarm validate <id>` in proxied-server mode where ResolvePartialID succeeded but uw.IssueUseCase().GetIssue(ctx, epicID) reports not-found (gateProxiedNotFound) or returns (nil, nil).","commonSituations":"Stale ID from another machine or a deleted issue; partially synced database where the ID index knows the prefix but the issue row is absent; race where the epic was removed between listing and validate.","solutions":["Verify the issue exists: `bd show <id>`.","Re-sync the database: `bd dolt pull` (the row may be missing locally).","If the epic was deleted intentionally, pick the correct current epic ID.","If sync is broken, check the git remote refs/dolt data and push/pull to repair."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"bd show \"$EPIC_ID\" >/dev/null 2>&1 || echo \"epic missing locally; run bd dolt pull\"","typeGuard":null,"tryCatchPattern":"if err != nil && strings.HasSuffix(err.Error(), \"not found\") {\n    // verify with bd show, re-sync, then retry\n}","preventionTips":["Sync before validating epics created on other machines","Never assume an ID seen in an old plan still exists — check bd show","Watch for concurrent deletes when scripting"],"tags":["go","cli","not-found","sync"],"backgroundTag":"issue-id-not-found","analyzedSha":"71377f276968b452ee607177637970a4ff888584","analyzedAt":"2026-08-30T18:55:39.744Z","schemaVersion":2},"datasetVersion":"2026-08-30T23:17:21.991Z"}