gastownhall/beads · error
failed to get epic: %v
Error message
failed to get epic: %v
What it means
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.
Source
Thrown at cmd/bd/swarm_proxied_server.go:59
return HandleErrorRespectJSON("proxied-server UOW provider not initialized")
}
analysis, err := uow.RunTxRead(ctx, uowProvider, func(ctx context.Context, uw uow.UnitOfWork) (*SwarmAnalysis, error) {
r := uowMolReader{uw: uw}
epicID, err := utils.ResolvePartialID(ctx, r, args[0])
if err != nil {
return nil, fmt.Errorf("epic '%s' not found: %v", args[0], err)
}
epic, err := uw.IssueUseCase().GetIssue(ctx, epicID)
if gateProxiedNotFound(err) || (err == nil && epic == nil) {
// Classic reports a nil epic after a successful resolve this way;
// keep the message for parity.
return nil, fmt.Errorf("epic '%s' not found", epicID)
}
if err != nil {
return nil, fmt.Errorf("failed to get epic: %v", err)
}
if epic.IssueType != types.TypeEpic && epic.IssueType != "molecule" {
return nil, fmt.Errorf("'%s' is not an epic or molecule (type: %s)", epicID, epic.IssueType)
}
analysis, err := analyzeEpicForSwarm(ctx, r, epic)
if err != nil {
return nil, fmt.Errorf("failed to analyze epic: %v", err)
}
return analysis, nil
})
if err != nil {
return HandleErrorRespectJSON("%v", err)
}
if !verbose {
analysis.Issues = nilView on GitHub (pinned to 71377f2769)
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.
Defensive patterns
Strategy: retry
Validate before calling
bd doctor || echo "fix storage before bd swarm validate"
Try / catch
if err != nil && strings.Contains(err.Error(), "failed to get epic") {
// check backend connectivity, back off, retry
} Prevention
- Ensure the Dolt backend is reachable before running proxied-server commands
- Avoid running heavy commands during syncs or migrations
- Monitor backend timeouts under load
When it happens
Trigger: `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.
Common situations: Dolt connection dropped after ID resolution; serialization/lock conflict inside the read transaction; backend timeout under load; driver misconfiguration in proxied-server mode.
Related errors
- failed to get issue %s: %w
- failed to get issue: %v
- get molecule children: %w
- unable to find orphaned issues: %w
- failed to remove relates-to %s -> %s: %w
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/1aed8d6329dfb6bb.
Report an issue: GitHub.