gastownhall/beads · error

dolt.debug must be "true" or "false", got %q

Error message

dolt.debug must be "true" or "false", got %q

What it means

validateYamlConfigValue rejects a dolt.debug value that is not "true" or "false" (case-insensitive). The %q shows the rejected string. bd throws it because the debug flag is consumed as a strict boolean elsewhere in the Dolt driver setup.

Source

Thrown at internal/config/yaml_config.go:896

	switch key {
	case "hierarchy.max-depth":
		// Must be a positive integer >= 1 (GH#995)
		depth, err := strconv.Atoi(value)
		if err != nil {
			return fmt.Errorf("hierarchy.max-depth must be a positive integer, got %q", value)
		}
		if depth < 1 {
			return fmt.Errorf("hierarchy.max-depth must be at least 1, got %d", depth)
		}
	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)

View on GitHub (pinned to 71377f2769)

Solutions

  1. Use bd config set dolt.debug true (or false)
  2. Convert 1/0 and yes/no to true/false in any automation before setting
  3. Trim whitespace and quotes from values sourced from env vars or flags
  4. Verify the stored value with bd config get dolt.debug after setting

Example fix

// before
SetYamlConfig("dolt.debug", "1") // error
// after
SetYamlConfig("dolt.debug", "true")
Defensive patterns

Strategy: validation

Validate before calling

l := strings.ToLower(strings.TrimSpace(v))
if l != "true" && l != "false" {
    return fmt.Errorf("dolt.debug must be true or false, got %q", v)
}

Type guard

func isBoolString(s string) bool {
    switch strings.ToLower(strings.TrimSpace(s)) {
    case "true", "false":
        return true
    }
    return false
}

Try / catch

if err := SetYamlConfig("dolt.debug", v); err != nil {
    if strings.Contains(err.Error(), "dolt.debug must be") {
        // coerce to a strict boolean string, then retry
    }
    return err
}

Prevention

When it happens

Trigger: SetYamlConfig / SetYamlConfigInDir / SetUserYamlConfig with key "dolt.debug" and values like "1", "yes", "on", "debug", or a value with stray whitespace/quotes.

Common situations: Enabling Dolt debug logging with 'bd config set dolt.debug 1'; YAML habit of writing yes/no; environment-injected values that aren't normalized.

Related errors


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