gastownhall/beads · error

committing seeded dolt_ignore patterns: %w

Error message

committing seeded dolt_ignore patterns: %w

What it means

This error wraps a failure of `CALL DOLT_COMMIT('-m', 'schema: seed dolt_ignore patterns')` in commitSeededDoltIgnore. After seeding and staging dolt_ignore patterns, MigrateUp commits them as an isolated labeled commit; failing here means the seed is staged but uncommitted, violating the clean-working-set contract.

Source

Thrown at internal/storage/schema/schema.go:461

		// next commit, exactly the pre-scoped-commit behavior.
		if n, raErr := res.RowsAffected(); raErr == nil && n > 0 {
			changed = true
		}
	}
	return changed, nil
}

// commitSeededDoltIgnore stages and commits freshly seeded dolt_ignore rows
// in a scoped, labeled commit. Both MigrateUp paths use it: on the no-work
// short-circuit nothing downstream would ever commit the seed, and on the
// migration path the seed must be committed before the first step so an
// interrupted pass leaves a clean working set (#4566 self-heal contract).
func commitSeededDoltIgnore(ctx context.Context, db DBConn) error {
	if err := DrainCall(ctx, db, "CALL DOLT_ADD('dolt_ignore')"); err != nil {
		return fmt.Errorf("staging seeded dolt_ignore patterns: %w", err)
	}
	if err := DrainCall(ctx, db, "CALL DOLT_COMMIT('-m', 'schema: seed dolt_ignore patterns')"); err != nil {
		return fmt.Errorf("committing seeded dolt_ignore patterns: %w", err)
	}
	return nil
}

func LatestVersion() int {
	latestOnce.Do(func() {
		latestVer = mainSource.latest()
	})
	return latestVer
}

func LatestIgnoredVersion() int {
	latestIgnoredOnce.Do(func() {
		latestIgnoredVer = ignoredSource.latest()
	})
	return latestIgnoredVer
}

View on GitHub (pinned to 71377f2769)

Solutions

  1. Check the wrapped cause; configure committer identity if it's an identity error (dolt config --global user.email/user.name)
  2. Run `dolt status` to verify dolt_ignore is actually staged; if unstaged, the DOLT_ADD step failed silently — re-run migrations
  3. Resolve any HEAD/detached-branch state, then retry MigrateUp
  4. As a last resort, commit the staged dolt_ignore change manually and re-run migrations

Example fix

// before: DOLT_COMMIT fails with missing identity
$ bd migrate
// after: set Dolt identity once
$ dolt config --global user.email "you@example.com"
$ dolt config --global user.name "You"
$ bd migrate
Defensive patterns

Strategy: try-catch

Validate before calling

// ensure Dolt committer identity exists before migrations that commit
out, err := db.QueryContext(ctx, "SELECT config_value FROM dolt_config WHERE config_name='user.email'")
// empty result => set identity before migrating

Try / catch

if err := commitSeededDoltIgnore(ctx, db); err != nil {
	if strings.Contains(err.Error(), "committing seeded dolt_ignore") {
		// DOLT_COMMIT failed: check identity/HEAD state, then retry
	}
}

Prevention

When it happens

Trigger: MigrateUp calling commitSeededDoltIgnore where DOLT_ADD succeeded but DOLT_COMMIT fails — e.g. no user.name/user.email configured for Dolt commits, nothing staged, or server-side commit rejection.

Common situations: Fresh machine where Dolt committer identity is unset (most common); HEAD in detached/conflicted state; database opened in a mode that disallows commits.

Related errors


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