{"record":{"id":"1aed8d6329dfb6bb","repo":"gastownhall/beads","slug":"failed-to-get-epic-v","errorCode":null,"errorMessage":"failed to get epic: %v","messagePattern":"failed to get epic: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/bd/swarm_proxied_server.go","lineNumber":59,"sourceCode":"\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}\n\n\tif !verbose {\n\t\tanalysis.Issues = nil","sourceCodeStart":41,"sourceCodeEnd":77,"githubUrl":"https://github.com/gastownhall/beads/blob/71377f276968b452ee607177637970a4ff888584/cmd/bd/swarm_proxied_server.go#L41-L77","documentation":"Error from runSwarmValidateProxiedServer in cmd/bd/swarm_proxied_server.go:59. Raised when GetIssue on the resolved epic ID fails with a real (non not-found) error. The proxied not-found gate has already been passed, so this indicates a genuine storage/use-case failure while fetching the epic. The cause is embedded with %v (not wrapped), so it is message-only.","triggerScenarios":"`bd swarm validate <id>` in proxied-server mode when uw.IssueUseCase().GetIssue returns an error other than not-found — transaction failure, storage driver error, or use-case layer fault.","commonSituations":"Dolt connection dropped after ID resolution; serialization/lock conflict inside the read transaction; backend timeout under load; driver misconfiguration in proxied-server mode.","solutions":["Inspect the embedded cause (%v) and address the underlying storage error (connection, timeout, lock).","Retry the command once transient backend issues clear.","Run `bd doctor` to confirm database health and embedded/proxied mode configuration.","If it persists, check proxied-server connectivity to the Dolt backend and restart the server process."],"exampleFix":null,"handlingStrategy":"retry","validationCode":"bd doctor || echo \"fix storage before bd swarm validate\"","typeGuard":null,"tryCatchPattern":"if err != nil && strings.Contains(err.Error(), \"failed to get epic\") {\n    // check backend connectivity, back off, retry\n}","preventionTips":["Ensure the Dolt backend is reachable before running proxied-server commands","Avoid running heavy commands during syncs or migrations","Monitor backend timeouts under load"],"tags":["go","storage","database","cli"],"backgroundTag":"issue-fetch-failed","analyzedSha":"71377f276968b452ee607177637970a4ff888584","analyzedAt":"2026-08-30T18:55:39.744Z","schemaVersion":2},"datasetVersion":"2026-08-30T23:17:21.991Z"}