gastownhall/beads · error

prime.max-memories must be a non-negative integer (0 = unlim

Error message

prime.max-memories must be a non-negative integer (0 = unlimited), got %q

What it means

When setting prime.max-memories, validateYamlConfigValue parses the value with strconv.Atoi; a non-integer string fails parsing and returns this error. The value must be a non-negative integer where 0 means unlimited memories during bd prime.

Source

Thrown at internal/config/yaml_config.go:906

	case "dolt.shared-server":
		lower := strings.ToLower(value)
		if lower != "true" && lower != "false" {
			return fmt.Errorf("dolt.shared-server must be \"true\" or \"false\", got %q", value)
		}
	case "dolt.debug":
		lower := strings.ToLower(value)
		if lower != "true" && lower != "false" {
			return fmt.Errorf("dolt.debug must be \"true\" or \"false\", got %q", value)
		}
	case "dolt.mode":
		lower := strings.ToLower(value)
		if lower != "server" && lower != "embedded" {
			return fmt.Errorf("dolt.mode must be \"server\" or \"embedded\", got %q", value)
		}
	case "prime.max-memories":
		n, err := strconv.Atoi(value)
		if err != nil {
			return fmt.Errorf("prime.max-memories must be a non-negative integer (0 = unlimited), got %q", value)
		}
		if n < 0 {
			return fmt.Errorf("prime.max-memories must be a non-negative integer (0 = unlimited), got %q", value)
		}
	case "prime.max-memory-chars":
		n, err := strconv.Atoi(value)
		if err != nil {
			return fmt.Errorf("prime.max-memory-chars must be a non-negative integer (0 = unlimited), got %q", value)
		}
		if n < 0 {
			return fmt.Errorf("prime.max-memory-chars must be a non-negative integer (0 = unlimited), got %q", value)
		}
	}
	return nil
}

View on GitHub (pinned to 71377f2769)

Solutions

  1. Pass a plain non-negative integer, e.g. `bd config set prime.max-memories 1000`
  2. Use 0 to explicitly mean unlimited instead of a word like "unlimited"
  3. Strip units/whitespace from scripted values before setting

Example fix

// before
SetYamlConfig("prime.max-memories", "unlimited")
// after
SetYamlConfig("prime.max-memories", "0")
Defensive patterns

Strategy: validation

Validate before calling

n, err := strconv.Atoi(strings.TrimSpace(value))
if err != nil || n < 0 {
    return fmt.Errorf("prime.max-memories must be a non-negative integer, got %q", value)
}

Try / catch

if err := bd.SetYamlConfig("prime.max-memories", v); err != nil {
    log.Fatalf("invalid prime.max-memories %q: %v", v, err)
}

Prevention

When it happens

Trigger: `bd config set prime.max-memories abc` or `bd config set prime.max-memories 1.5` via SetYamlConfig/SetYamlConfigInDir/SetUserYamlConfig (Atoi error branch at yaml_config.go:906).

Common situations: Passing "unlimited", "50M", a float, or a value with units/whitespace instead of a plain integer.

Understand the failure class

Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.

Related errors


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