gastownhall/beads · error

failed to set sync branch

Error message

failed to set sync branch: %w

What it means

runTeamWizard persists the chosen sync branch via store.SetConfig(ctx, "sync.branch", syncBranch). If the Dolt-backed storage layer fails to write that config key, the error is wrapped as 'failed to set sync branch: %w' and the wizard aborts. It signals a storage/config write failure, not a git problem.

Solutions

  1. Check the wrapped error to see the underlying storage failure (DB connectivity vs permissions)
  2. Verify the Dolt database is reachable and started (`bd doctor` or dolt sql -q 'select 1')
  3. Ensure the .beads/data directory and files are writable by the current user
  4. Re-run `bd init` to repair/recreate the local database, then retry the team wizard

Example fix

// before
if err := store.SetConfig(ctx, "sync.branch", syncBranch); err != nil {
    return fmt.Errorf("failed to set sync branch: %w", err)
}
// after (caller-side check before wizard)
if err := store.SetConfig(ctx, "sync.branch", "test-probe"); err != nil {
    fmt.Fprintln(os.Stderr, "storage unavailable:", err)
    os.Exit(1)
}
Defensive patterns

Strategy: try-catch

Validate before calling

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
if err := store.Ping(ctx); err != nil { return fmt.Errorf("store unavailable: %w", err) }

Try / catch

if err := runTeamWizard(ctx, st); err != nil {
    if strings.Contains(err.Error(), "failed to set sync branch") {
        log.Printf("storage write failed: %v", err) // inspect wrapped cause
    }
    return err
}

Prevention

When it happens

Trigger: Calling runTeamWizard (via `bd init --team`) when the underlying Dolt store cannot execute the config upsert: database closed/unavailable, connection failure, schema/permission error, or read-only database.

Common situations: Dolt server not running or wrong connection settings; database directory not writable; corrupted local Dolt DB; store closed earlier in the command; disk full.

Related errors


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

Appendix: source

Thrown at cmd/bd/init_team.go:90

		branchName, err := readLineWithContext(ctx, reader, os.Stdin)
		if err != nil {
			if isCanceled(err) {
				return err
			}
			branchName = ""
		}
		branchName = strings.TrimSpace(branchName)

		if branchName == "" {
			syncBranch = "beads-metadata"
		} else {
			syncBranch = branchName
		}

		fmt.Printf("\n%s Sync branch set to: %s\n", ui.RenderPass("✓"), syncBranch)

		if err := store.SetConfig(ctx, "sync.branch", syncBranch); err != nil {
			return fmt.Errorf("failed to set sync branch: %w", err)
		}

		// Create the sync branch if it doesn't exist
		fmt.Printf("\n%s Creating sync branch...\n", ui.RenderAccent("▶"))

		if err := createSyncBranch(syncBranch); err != nil {
			fmt.Fprintf(os.Stderr, "Warning: failed to create sync branch: %v\n", err)
			fmt.Println("  You can create it manually: git checkout -b", syncBranch)
		} else {
			fmt.Printf("%s Sync branch created\n", ui.RenderPass("✓"))
		}

	} else {
		fmt.Printf("%s Direct commits to %s\n", ui.RenderPass("✓"), currentBranch)
		syncBranch = currentBranch
	}

	// Step 3: Configure team settings

View on GitHub (pinned to 71377f2769)