feat(dolt): implement automatic bootstrap from JSONL on first access

Add automatic Dolt database bootstrapping when JSONL files exist but no
Dolt database is present (cold-start scenario after git clone).

Key features:
- Lock/wait pattern prevents concurrent bootstrap races
- Graceful degradation skips malformed JSONL lines with warnings
- Multi-table ordering: issues → labels → dependencies
- Prefix auto-detection from JSONL content

New files:
- internal/storage/dolt/bootstrap.go - Bootstrap logic
- internal/storage/dolt/bootstrap_test.go - Comprehensive tests

Modified:
- internal/storage/factory/factory_dolt.go - Integration point

Closes: hq-ew1mbr.10

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
obsidian
2026-01-17 01:54:31 -08:00
committed by gastown/crew/dennis
parent 87f84c5fa6
commit 2cbffca4f3
35 changed files with 812 additions and 7266 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
bd-rig-beads

View File

@@ -1,5 +0,0 @@
{
"database": "beads.db",
"jsonl_export": "issues.jsonl",
"last_bd_version": "0.27.2"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-0e3m",
"branch": "polecat/jade-1767138549967",
"target": "main",
"source_issue": "jade-1767138549967",
"worker": "",
"rig": "beads",
"title": "Merge: jade-1767138549967",
"priority": 2,
"created_at": "2025-12-30T15:55:27.93949-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-0kue",
"branch": "polecat/onyx-1767106262992",
"target": "main",
"source_issue": "onyx-1767106262992",
"worker": "",
"rig": "beads",
"title": "Merge: onyx-1767106262992",
"priority": 2,
"created_at": "2025-12-30T06:59:46.966142-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-1200",
"branch": "polecat/jasper-1767106250817",
"target": "main",
"source_issue": "jasper-1767106250817",
"worker": "",
"rig": "beads",
"title": "Merge: jasper-1767106250817",
"priority": 2,
"created_at": "2025-12-30T07:05:01.456893-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-13c2",
"branch": "polecat/garnet-1767138539231",
"target": "main",
"source_issue": "garnet-1767138539231",
"worker": "",
"rig": "beads",
"title": "Merge: garnet-1767138539231",
"priority": 2,
"created_at": "2025-12-30T16:00:34.709829-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-2c64",
"branch": "polecat/ruby-1767142029451",
"target": "main",
"source_issue": "ruby-1767142029451",
"worker": "",
"rig": "beads",
"title": "Merge: ruby-1767142029451",
"priority": 2,
"created_at": "2025-12-30T17:00:14.138585-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-2lkh",
"branch": "polecat/obsidian-1767138468820",
"target": "main",
"source_issue": "obsidian-1767138468820",
"worker": "",
"rig": "beads",
"title": "Merge: obsidian-1767138468820",
"priority": 2,
"created_at": "2025-12-30T16:14:15.964858-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-3rko",
"branch": "polecat/topaz-1767142022153",
"target": "main",
"source_issue": "topaz-1767142022153",
"worker": "",
"rig": "beads",
"title": "Merge: topaz-1767142022153",
"priority": 2,
"created_at": "2025-12-30T17:06:22.779045-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-5482",
"branch": "polecat/obsidian-1767083466920",
"target": "main",
"source_issue": "obsidian-1767083466920",
"worker": "",
"rig": "beads",
"title": "Merge: obsidian-1767083466920",
"priority": 2,
"created_at": "2025-12-30T00:36:06.075415-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-6vnu",
"branch": "polecat/opal-1767142018955",
"target": "main",
"source_issue": "opal-1767142018955",
"worker": "",
"rig": "beads",
"title": "Merge: opal-1767142018955",
"priority": 2,
"created_at": "2025-12-30T17:14:02.069377-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-71v3",
"branch": "polecat/topaz-1767083484329",
"target": "main",
"source_issue": "topaz-1767083484329",
"worker": "",
"rig": "beads",
"title": "Merge: topaz-1767083484329",
"priority": 2,
"created_at": "2025-12-30T00:39:43.097575-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-7wrh",
"branch": "polecat/jasper-1767083473604",
"target": "main",
"source_issue": "jasper-1767083473604",
"worker": "",
"rig": "beads",
"title": "Merge: jasper-1767083473604",
"priority": 2,
"created_at": "2025-12-30T00:39:04.849184-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-90fs",
"branch": "polecat/amber-1767138546434",
"target": "main",
"source_issue": "amber-1767138546434",
"worker": "",
"rig": "beads",
"title": "Merge: amber-1767138546434",
"priority": 2,
"created_at": "2025-12-30T15:57:38.683138-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-98b4",
"branch": "polecat/onyx-1767138516448",
"target": "main",
"source_issue": "onyx-1767138516448",
"worker": "",
"rig": "beads",
"title": "Merge: onyx-1767138516448",
"priority": 2,
"created_at": "2025-12-30T16:17:51.540906-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-a1t0",
"branch": "polecat/opal-1767138520240",
"target": "main",
"source_issue": "opal-1767138520240",
"worker": "",
"rig": "beads",
"title": "Merge: opal-1767138520240",
"priority": 2,
"created_at": "2025-12-30T15:59:09.907511-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-agye",
"branch": "polecat/quartz-1767083470444",
"target": "main",
"source_issue": "quartz-1767083470444",
"worker": "",
"rig": "beads",
"title": "Merge: quartz-1767083470444",
"priority": 2,
"created_at": "2025-12-30T00:36:39.739127-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-cfxq",
"branch": "polecat/topaz-1767106269860",
"target": "main",
"source_issue": "topaz-1767106269860",
"worker": "",
"rig": "beads",
"title": "Merge: topaz-1767106269860",
"priority": 2,
"created_at": "2025-12-30T07:18:49.116137-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-ehwp",
"branch": "polecat/ruby-1767138542815",
"target": "main",
"source_issue": "ruby-1767138542815",
"worker": "",
"rig": "beads",
"title": "Merge: ruby-1767138542815",
"priority": 2,
"created_at": "2025-12-30T15:59:42.842575-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-g1ai",
"branch": "polecat/opal-1767106266450",
"target": "main",
"source_issue": "opal-1767106266450",
"worker": "",
"rig": "beads",
"title": "Merge: opal-1767106266450",
"priority": 2,
"created_at": "2025-12-30T07:03:00.721165-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-ir5t",
"branch": "polecat/quartz-1767106247671",
"target": "main",
"source_issue": "quartz-1767106247671",
"worker": "",
"rig": "beads",
"title": "Merge: quartz-1767106247671",
"priority": 2,
"created_at": "2025-12-30T07:02:08.920599-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-jjzz",
"branch": "polecat/obsidian-1767106243818",
"target": "main",
"source_issue": "obsidian-1767106243818",
"worker": "",
"rig": "beads",
"title": "Merge: obsidian-1767106243818",
"priority": 2,
"created_at": "2025-12-30T07:00:26.330057-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-jxp6",
"branch": "polecat/jasper-1767142011373",
"target": "main",
"source_issue": "jasper-1767142011373",
"worker": "",
"rig": "beads",
"title": "Merge: jasper-1767142011373",
"priority": 2,
"created_at": "2025-12-30T16:57:20.35112-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-kvwf",
"branch": "polecat/quartz-1767142008267",
"target": "main",
"source_issue": "quartz-1767142008267",
"worker": "",
"rig": "beads",
"title": "Merge: quartz-1767142008267",
"priority": 2,
"created_at": "2025-12-30T16:50:35.729624-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-oajy",
"branch": "polecat/garnet-1767142025508",
"target": "main",
"source_issue": "garnet-1767142025508",
"worker": "",
"rig": "beads",
"title": "Merge: garnet-1767142025508",
"priority": 2,
"created_at": "2025-12-30T17:03:48.371414-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-qvpn",
"branch": "polecat/jasper-1767138512869",
"target": "main",
"source_issue": "jasper-1767138512869",
"worker": "",
"rig": "beads",
"title": "Merge: jasper-1767138512869",
"priority": 2,
"created_at": "2025-12-30T15:51:49.013034-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-s5kf",
"branch": "polecat/onyx-1767083477016",
"target": "main",
"source_issue": "onyx-1767083477016",
"worker": "",
"rig": "beads",
"title": "Merge: onyx-1767083477016",
"priority": 2,
"created_at": "2025-12-30T00:37:08.216603-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-tglv",
"branch": "polecat/onyx-1767142014545",
"target": "main",
"source_issue": "onyx-1767142014545",
"worker": "",
"rig": "beads",
"title": "Merge: onyx-1767142014545",
"priority": 2,
"created_at": "2025-12-30T17:05:30.190725-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-txds",
"branch": "polecat/obsidian-1767142004753",
"target": "main",
"source_issue": "obsidian-1767142004753",
"worker": "",
"rig": "beads",
"title": "Merge: obsidian-1767142004753",
"priority": 2,
"created_at": "2025-12-30T16:57:13.545352-08:00"
}

View File

@@ -1,11 +0,0 @@
{
"id": "bd-wx8t",
"branch": "polecat/topaz-1767138533986",
"target": "main",
"source_issue": "topaz-1767138533986",
"worker": "",
"rig": "beads",
"title": "Merge: topaz-1767138533986",
"priority": 2,
"created_at": "2025-12-30T16:00:41.077442-08:00"
}