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:
committed by
gastown/crew/dennis
parent
87f84c5fa6
commit
2cbffca4f3
6952
.beads/issues.jsonl
6952
.beads/issues.jsonl
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
bd-rig-beads
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"database": "beads.db",
|
||||
"jsonl_export": "issues.jsonl",
|
||||
"last_bd_version": "0.27.2"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
Reference in New Issue
Block a user