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 = nil

View on GitHub (pinned to 71377f2769)

Solutions

  1. Inspect the embedded cause (%v) and address the underlying storage error (connection, timeout, lock).
  2. Retry the command once transient backend issues clear.
  3. Run `bd doctor` to confirm database health and embedded/proxied mode configuration.
  4. 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

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


AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30). Data as JSON: /api/errors/1aed8d6329dfb6bb. Report an issue: GitHub.