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
- Check the wrapped cause; configure committer identity if it's an identity error (dolt config --global user.email/user.name)
- Run `dolt status` to verify dolt_ignore is actually staged; if unstaged, the DOLT_ADD step failed silently — re-run migrations
- Resolve any HEAD/detached-branch state, then retry MigrateUp
- 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
- Configure dolt user.name/user.email globally on new machines
- Keep HEAD on a real branch (not detached/conflicted) before migrating
- Run migrations once per workspace, serialized via MigrateUpWithLock
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
- committing 0040 nonlocal repair: %w
- committing 0041 nonlocal repair: %w
- seeding dolt_ignore pattern %q: %w
- staging seeded dolt_ignore patterns: %w
- committing migrations: %w
AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30).
Data as JSON: /api/errors/7a28c3541104abb8.
Report an issue: GitHub.