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
- Use bd config set dolt.debug true (or false)
- Convert 1/0 and yes/no to true/false in any automation before setting
- Trim whitespace and quotes from values sourced from env vars or flags
- 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
- Set debug toggles strictly with the strings "true" or "false"
- Sanitize env-derived values (trim, lowercase) before config writes
- Read back with bd config get dolt.debug to confirm stored format
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
- dolt.shared-server must be "true" or "false", got %q
- server: NewDoltServer: doltBinExec is required
- server: NewDoltServer: rootDir is required
- server: NewDoltServer: configPath is required
- hierarchy.max-depth must be a positive integer, got %q
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/b62fa83a314810ca.
Report an issue: GitHub.