Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
00e802f
feat: make metadata queryable from bd list, bd search, and bd query (…
turian Feb 22, 2026
2480e7c
fix: waits-for readiness in bd ready and molecule analysis (#1900)
mrmaxsteel Feb 22, 2026
f383ce3
feat(setup): add Mux setup recipe with layered AGENTS and managed hooks
steveyegge Feb 22, 2026
6e4ad9b
feat(otel): opt-in OpenTelemetry instrumentation (#1940)
pae23 Feb 22, 2026
8244818
feat: add commit message parameter to RunInTransaction for Dolt history
steveyegge Feb 22, 2026
b92ce05
chore(deps): update actions/cache action to v5
renovate[bot] Feb 23, 2026
2e425d0
fix: isolate test suite from production Dolt server (bd-2lf6)
steveyegge Feb 23, 2026
00f546f
feat: transaction isolation, retry, and batch wrapping for Dolt concu…
steveyegge Feb 23, 2026
9b745dc
fix: add DOLT_COMMIT to CRUD operations and fix transaction safety
steveyegge Feb 23, 2026
062aedb
docs: remove stale daemon references from all documentation (GH#1982)
steveyegge Feb 23, 2026
3790768
fix: correct help text, dead code in markdown parser, stale cgo build…
steveyegge Feb 23, 2026
7269df8
fix(cook): make cookFormula atomic — single transaction for issues, l…
steveyegge Feb 23, 2026
70f251d
fix: isolate dolt package tests from production server (test-ckvw)
steveyegge Feb 23, 2026
41a64b6
fix: make bond spawn+attach and squash operations atomic (bd-wvplu, b…
steveyegge Feb 23, 2026
3631aba
fix: bd list --limit applies after --sort, trim whitespace in edit (G…
steveyegge Feb 23, 2026
e66c7af
docs: remove stale bd daemon references from documentation (GH#1982)
steveyegge Feb 23, 2026
b4489d1
fix(ready): pass --parent filter to GetReadyWork/GetBlockedIssues and…
steveyegge Feb 23, 2026
625aeb2
fix: repo sync cross-prefix hydration and close guard consistency (GH…
steveyegge Feb 23, 2026
da8a1bf
fix: doctor lock false positive and stale bd sync references (GH#1981…
steveyegge Feb 23, 2026
94d8607
fix(hooks): use 'bd hooks run' instead of nonexistent 'bd hook' in in…
steveyegge Feb 23, 2026
6219b86
fix: CI formatting, lint, and test failures blocking release
steveyegge Feb 23, 2026
e7d0d93
fix(test): isolate regression tests from production Dolt server
steveyegge Feb 23, 2026
c14fc2b
chore: bump version to 0.56.0
steveyegge Feb 23, 2026
9da9039
refactor: remove JSONL fork protection (dead code after Dolt migration)
steveyegge Feb 23, 2026
48bfaaa
fix(release): remove verify-cgo hook from CGO_ENABLED=0 builds
steveyegge Feb 23, 2026
0af9580
docs: clarify --status flag vs bd blocked for dependency blocking (BU…
turian Feb 23, 2026
52438be
docs: v0.56.1 release newsletter
steveyegge Feb 23, 2026
8f260f0
fix: panic if BEADS_TEST_MODE=1 without BEADS_DOLT_PORT (bd-zt7)
steveyegge Feb 23, 2026
e2ded3a
test(protocol): split blocked-status test into separate file
turian Feb 23, 2026
68be32a
fix: CI formatting, lint, and test failures blocking release
steveyegge Feb 23, 2026
f236701
fix(test): isolate regression tests from production Dolt server
steveyegge Feb 23, 2026
a388c3e
fix: prevent OSC escape leaks in git hooks, detect stale hooks in doc…
steveyegge Feb 23, 2026
6940075
fix(test): skip TestInitCommand when dolt not installed
steveyegge Feb 23, 2026
ef4c85c
fix(test): add skipIfNoDolt guard to all init tests that need Dolt
steveyegge Feb 23, 2026
c980b96
fix: remove JSONL storage functions and config field (bd-9ni.2)
steveyegge Feb 23, 2026
fe30a71
fix: clean up stale jsonl_export references in test files (bd-9ni.3)
steveyegge Feb 23, 2026
191eed8
fix(test): skip Dolt-dependent tests when server not available
steveyegge Feb 23, 2026
b69ae5b
fix: remove JSONL references from core Go files (bd-9ni.2)
steveyegge Feb 23, 2026
9dfac4f
fix: remove JSONL gitignore rules, merge driver, and issues tracking …
steveyegge Feb 23, 2026
5e243b1
refactor: remove JSONL storage layer from core Go files (bd-9ni.2)
steveyegge Feb 23, 2026
51bb656
fix(test): comprehensive Dolt skip guards across all test files
steveyegge Feb 23, 2026
8ee993a
refactor: remove JSONL references from core Go files (bd-9ni.2)
steveyegge Feb 23, 2026
cc55e34
refactor: surgical JSONL removal from core Go files (bd-9ni.2)
steveyegge Feb 23, 2026
24ed5a3
feat: auto-migrate SQLite to Dolt on first bd command (bd-3dx)
steveyegge Feb 23, 2026
90da8f6
docs: remove stale JSONL references from ~73 markdown files (bd-9ni.4)
steveyegge Feb 23, 2026
8569471
fix: remove dead JSONL converter examples (bd-9ni.5)
steveyegge Feb 23, 2026
befc254
fix: remove stale bd export/sync references from prime output (GH#2007)
steveyegge Feb 23, 2026
87f3286
feat: support issue_id_mode=counter for sequential IDs (#2013)
gm2211 Feb 23, 2026
f473b75
fix: counter mode parity for transaction path, remove dead code (#201…
steveyegge Feb 23, 2026
13a8daa
feat: auto-migration shim: SQLite to Dolt via sqlite3 CLI (bd--3y8)
steveyegge Feb 23, 2026
fdb45f5
fix(doctor): gracefully handle non-git-repo in fingerprint and role c…
Xexr Feb 23, 2026
c9fabf2
fix: reject non-positive --days flag on bd stale
turian Feb 23, 2026
d3e581b
fix: reject empty and whitespace-only comment text
turian Feb 23, 2026
f4a858c
fix: warn when bd defer --until date is in the past
turian Feb 23, 2026
aebbc5a
fix: validate JSON metadata on create path to match update path
turian Feb 23, 2026
c879f33
fix: resolve lint errors blocking all CI (gosec G304, unused param)
steveyegge Feb 23, 2026
0dc6bdb
fix(lint): check AcceptanceCriteria field in LintIssue
Xexr Feb 23, 2026
3d62376
fix(doctor): use configured server port in federation checks
miteshashar Feb 23, 2026
ffb09e6
fix(storage): find ephemeral beads with explicit IDs in single-bead l…
Xexr Feb 23, 2026
041b74b
fix: resolve CI failures on main (6 tests, formatting)
steveyegge Feb 23, 2026
8c0c007
fix(lint): check AcceptanceCriteria field in LintIssue
steveyegge Feb 23, 2026
9e8567a
fix(doctor): use configured server port in federation checks
steveyegge Feb 23, 2026
a6f73dd
chore(deps): update actions/cache action to v5
steveyegge Feb 23, 2026
9b995e3
fix: reject non-positive --days flag on bd stale
steveyegge Feb 23, 2026
fae207e
fix: reject empty and whitespace-only comment text
steveyegge Feb 23, 2026
df47a96
fix: warn when bd defer --until date is in the past
steveyegge Feb 23, 2026
1e33b31
fix: add field validation parity to createWisp (#2032)
turian Feb 23, 2026
1172880
fix(doctor): gracefully handle non-git-repo in fingerprint and role c…
steveyegge Feb 23, 2026
2a89def
fix: validate JSON metadata on issue creation path
steveyegge Feb 23, 2026
72e6c74
docs: clarify --status flag filters stored status, not dependency blo…
steveyegge Feb 23, 2026
d220955
fix: exit non-zero when all close/update attempts fail (GH#2014)
steveyegge Feb 23, 2026
13190ef
fix: reject empty title and empty label on update/label add (GH#1994)
steveyegge Feb 23, 2026
3ef50b8
fix: validate status on update against built-in + custom statuses (#2…
steveyegge Feb 23, 2026
322a084
fix(create): commit post-create metadata (deps, labels) to Dolt (GH#2…
Xexr Feb 23, 2026
a87c579
Merge pull request #2054 from Xexr/fix/ephemeral-explicit-id-lookup
steveyegge Feb 23, 2026
2276c5f
fix: report correct status when reopen/undefer is a no-op (GH#2037)
turian Feb 23, 2026
6704274
fix: include waits-for deps in bd blocked output (GH#2043)
steveyegge Feb 23, 2026
d510a7f
fix: complete explicit-ID ephemeral routing across all storage layers…
steveyegge Feb 23, 2026
27680fa
fix: repair migrations_test.go for modern dolt versions
steveyegge Feb 23, 2026
d02b810
test: convert doctor test fixtures from SQLite to Dolt (bd-o0u.1)
steveyegge Feb 23, 2026
97fc30d
refactor: convert doctor test fixtures from SQLite to Dolt (GH#bd-o0u.1)
steveyegge Feb 23, 2026
7d7da19
refactor: remove SQLite from doctor/database.go and doctor/deep.go (b…
steveyegge Feb 23, 2026
70d7c62
refactor: remove SQLite from doctor/integrity.go and config_values.go…
steveyegge Feb 23, 2026
7d4a18e
refactor: remove SQLite from doctor/perf.go, multirepo.go, installati…
steveyegge Feb 23, 2026
ce0ed23
refactor: remove SQLite from doctor/migration*.go and fix/validation.…
steveyegge Feb 23, 2026
5f023a1
refactor: remove dead SQLite helpers, connstring.go, and --to-sqlite …
steveyegge Feb 23, 2026
07e60f1
fix: update test fixture to use backend instead of sqlite_version (bd…
steveyegge Feb 23, 2026
d19a3a1
fix: update stale SQLite error messages in perf_dolt.go (bd-gv7)
steveyegge Feb 23, 2026
6157920
feat: add bd dolt start/stop commands for server lifecycle management…
steveyegge Feb 23, 2026
0ed2e1a
feat: add .dolt/ and *.db to project .gitignore on bd init (GH#2034)
steveyegge Feb 23, 2026
d81badd
fix: include labels, deps, and parent in bd ready --json output (bd-x…
steveyegge Feb 23, 2026
6f9fcc1
refactor: remove duplicate DB() method from DoltStore (bd-ar6)
steveyegge Feb 23, 2026
893f6fc
feat: self-managing Dolt server for standalone users (GH#2049, GH#2050)
steveyegge Feb 23, 2026
162ab27
fix: replace information_schema queries with SHOW COLUMNS/TABLES to a…
steveyegge Feb 23, 2026
93f3425
fix: add unique DB naming and cleanup to doctor test helpers (bd-cv9)
steveyegge Feb 23, 2026
c48f544
fix: update stale SQLite comments in doctor package (bd-516)
steveyegge Feb 23, 2026
1fda04c
feat: port collision fallback, idle monitor, and crash watchdog for D…
steveyegge Feb 23, 2026
fd21fa4
fix: restore bd init --from-jsonl for server mode (bd-phzy)
steveyegge Feb 23, 2026
da508e8
fix: allow bd dolt push/pull/commit to initialize store (GH#2042)
steveyegge Feb 23, 2026
6254803
fix: use upsert logic for issue insert to prevent duplicate primary k…
steveyegge Feb 23, 2026
fd6f9bd
fix: doctor validate checks use server config for Dolt connections (b…
steveyegge Feb 23, 2026
59898e8
fix: prevent storage/dolt tests from hitting production Dolt server
Feb 24, 2026
eb84f6f
fix: one dolt server per town, not per worktree
steveyegge Feb 24, 2026
651bb13
fix: doctor and fix tests now use isolated dolt server
steveyegge Feb 24, 2026
3f147b6
fix: root package tests now use isolated dolt server
steveyegge Feb 24, 2026
3700441
fix: add Gas Town daemon guardrails to dolt server operations
steveyegge Feb 24, 2026
7122679
fix: add Gas Town guardrails to beads Dolt server management
steveyegge Feb 24, 2026
f625c95
fix: remove redundant tx.Commit() after DOLT_COMMIT in transactions
steveyegge Feb 24, 2026
02197ee
feat: add stale database detection to bd doctor and bd dolt clean-dat…
steveyegge Feb 24, 2026
aadef18
fix: replace port-fallback with kill-before-start to prevent server p…
steveyegge Feb 24, 2026
9a6a860
fix: fix server adoption in dolt anti-proliferation guardrails
steveyegge Feb 24, 2026
87fba0c
fix: set BEADS_TEST_MODE=1 in all test server setups for DB isolation
steveyegge Feb 24, 2026
3a0e582
fix: isolate protocol tests with unique per-test Dolt databases
steveyegge Feb 24, 2026
2e1df31
fix: make Commit() tolerate 'nothing to commit' like other Dolt opera…
steveyegge Feb 24, 2026
301952a
fix: connect directly to Dolt server in clean-databases command
steveyegge Feb 24, 2026
70c2b0b
fix: harden test dolt server startup with retry loop and longer timeout
steveyegge Feb 24, 2026
b837a23
fix: wrap doctor fix DELETEs in explicit transactions for autocommit-…
steveyegge Feb 24, 2026
2345c82
fix: rewrite protocol tests to use bd show --json instead of deleted …
steveyegge Feb 24, 2026
228dc21
fix: expand stale database prefixes and fix per-op timeout in clean-d…
steveyegge Feb 24, 2026
2785358
fix: IsRunning() checks daemon PID file under Gas Town
steveyegge Feb 24, 2026
b21ec9e
fix: exclude zombie/defunct processes from isDoltProcess checks
steveyegge Feb 24, 2026
b68d555
fix: flush Dolt working set before server stop to prevent data loss
steveyegge Feb 24, 2026
8f7480a
fix: add backpressure to clean-databases to prevent server exhaustion
steveyegge Feb 24, 2026
517ae19
Merge remote-tracking branch 'origin/polecat/obsidian/beads-2zj@mm055…
steveyegge Feb 24, 2026
582b190
Merge remote-tracking branch 'origin/polecat/jasper/beads-69o@mm0568gv'
steveyegge Feb 24, 2026
880b60b
fix: CleanStaleTestServers now removes orphaned temp dirs and legacy …
steveyegge Feb 24, 2026
efdd6f7
fix: prevent tests from connecting to prod Dolt server
steveyegge Feb 24, 2026
83a02d8
fix: protocol tests now use isolated Dolt server instead of prod
steveyegge Feb 24, 2026
d99ad71
fix: normalize issue_prefix to prevent double-hyphen bead IDs
steveyegge Feb 24, 2026
9457158
feat: add has_metadata_key to bd query DSL
turian Feb 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
74 changes: 33 additions & 41 deletions .agent/workflows/resolve-beads-conflict.md
Original file line number Diff line number Diff line change
@@ -1,59 +1,51 @@
---
description: How to resolve merge conflicts in .beads/issues.jsonl
description: How to resolve merge conflicts in the beads Dolt database
---

# Resolving `issues.jsonl` Merge Conflicts
# Resolving Beads Merge Conflicts

If you encounter a merge conflict in `.beads/issues.jsonl` that doesn't have standard git conflict markers (or if `bd merge` failed automatically), follow this procedure.
Beads uses Dolt as its storage backend. Dolt handles merges natively using its built-in three-way merge, similar to git.

## 1. Identify the Conflict
Check if `issues.jsonl` is in conflict:
```powershell
git status
```
## 1. Check for Conflicts

## 2. Extract the 3 Versions
Git stores three versions of conflicted files in its index:
1. Base (common ancestor)
2. Ours (current branch)
3. Theirs (incoming branch)

Extract them to temporary files:
```powershell
git show :1:.beads/issues.jsonl > beads.base.jsonl
git show :2:.beads/issues.jsonl > beads.ours.jsonl
git show :3:.beads/issues.jsonl > beads.theirs.jsonl
```bash
bd doctor
bd sync
```

## 3. Run `bd merge` Manually
Run the `bd merge` tool manually with the `--debug` flag to see what's happening.
Syntax: `bd merge <output> <base> <ours> <theirs>`
If `bd sync` reports merge conflicts, Dolt will list the conflicting tables and rows.

## 2. Resolve Conflicts

Dolt provides SQL-based conflict resolution:

```bash
# View conflicts
bd sql "SELECT * FROM dolt_conflicts"

```powershell
bd merge beads.merged.jsonl beads.base.jsonl beads.ours.jsonl beads.theirs.jsonl --debug
# Resolve by accepting ours or theirs
bd sql "CALL dolt_conflicts_resolve('--ours')"
# OR
bd sql "CALL dolt_conflicts_resolve('--theirs')"
```

## 4. Verify the Result
Check the output of the command.
- **Exit Code 0**: Success. `beads.merged.jsonl` contains the clean merge.
- **Exit Code 1**: Conflicts remain. `beads.merged.jsonl` will contain conflict markers. You must edit it manually to resolve them.
## 3. Verify and Complete

Optionally, verify the content (e.g., check for missing IDs if you suspect data loss).
```bash
# Verify the resolution
bd list --json | head

## 5. Apply the Merge
Overwrite the conflicted file with the resolved version:
```powershell
cp beads.merged.jsonl .beads/issues.jsonl
# Complete the sync
bd sync
```

## 6. Cleanup and Continue
Stage the resolved file and continue the merge:
```powershell
## Legacy: JSONL Merge Conflicts

If you encounter merge conflicts in `.beads/issues.jsonl` from a legacy setup, import the resolved file:

```bash
# Resolve the git conflict in the JSONL file manually, then:
bd import -i .beads/issues.jsonl
git add .beads/issues.jsonl
git merge --continue
```

## 7. Cleanup Temporary Files
```powershell
rm beads.base.jsonl beads.ours.jsonl beads.theirs.jsonl beads.merged.jsonl
```
16 changes: 2 additions & 14 deletions .beads/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,25 +30,13 @@ bd.db
# Must not be committed as paths would be wrong in other clones
redirect

# Merge artifacts (temporary files from 3-way merge)
beads.base.jsonl
beads.base.meta.json
beads.left.jsonl
beads.left.meta.json
beads.right.jsonl
beads.right.meta.json

# Sync state (local-only, per-machine)
# These files are machine-specific and should not be shared across clones
.sync.lock
sync_base.jsonl
export-state/

# Process semaphore slot files (runtime concurrency limiting)
sem/

# NOTE: Do NOT add negation patterns (e.g., !issues.jsonl) here.
# They would override fork protection in .git/info/exclude, allowing
# contributors to accidentally commit upstream issue databases.
# The JSONL files (issues.jsonl, interactions.jsonl) and config files
# are tracked by git by default since no pattern above ignores them.
# NOTE: Config files (metadata.json, config.yaml) are tracked by git
# by default since no pattern above ignores them.
84 changes: 68 additions & 16 deletions .beads/BD_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ It is auto-generated and version-stamped to track bd upgrades.
### Why bd?

- Dependency-aware: Track blockers and relationships between issues
- Git-friendly: Auto-syncs to JSONL for version control
- Git-friendly: Dolt provides version control with branching and merging
- Agent-optimized: JSON output, ready work detection, discovered-from links
- Prevents duplicate tracking systems and confusion

Expand Down Expand Up @@ -70,13 +70,13 @@ bd close bd-42 --reason "Completed" --json
4. **Discover new work?** Create linked issue:
- `bd create "Found bug" -p 1 --deps discovered-from:<parent-id>`
5. **Complete**: `bd close <id> --reason "Done"`
6. **Commit together**: Always commit the `.beads/issues.jsonl` file together with the code changes so issue state stays in sync with code state
6. **Sync**: Run `bd sync` at end of sessions to ensure changes are committed and pushed

### Auto-Sync

bd automatically syncs with git:
- Exports to `.beads/issues.jsonl` after changes (5s debounce)
- Imports from JSONL when newer (e.g., after `git pull`)
bd uses Dolt for storage and sync:
- All changes are stored directly in the Dolt database
- `bd sync` handles commit, pull, merge, and push via Dolt-native replication
- No manual export/import needed!

### GitHub Copilot Integration
Expand Down Expand Up @@ -132,6 +132,60 @@ history/
- ✅ Preserves planning history for archeological research
- ✅ Reduces noise when browsing the project

### Counter Mode (Sequential IDs)

By default, beads assigns hash-based IDs (e.g., `bd-a3f2`). For projects that prefer
human-readable sequential IDs (e.g., `bd-1`, `bd-2`), enable counter mode:

```bash
bd config set issue_id_mode counter
```

**When to use counter mode:**

- Project-management workflows where stakeholders reference issue numbers in conversations
- Multi-agent coordination where readable IDs reduce confusion (e.g., "fix bd-42")
- Teams migrating from Jira/Linear/GitHub Issues that expect sequential numbering

**When to keep hash IDs (default):**

- Multi-agent or multi-branch workflows where issues may be created concurrently on different branches
- Hash IDs are collision-free by construction; counter IDs can diverge if parallel branches both create issues

**How to enable:**

```bash
# Enable for this project
bd config set issue_id_mode counter

# New issues now get sequential IDs
bd create "Fix login bug" -p 1 # → bd-1
bd create "Add dark mode" -p 2 # → bd-2
```

**Migration considerations:**

If the repo already has hash-based IDs, those existing IDs are unchanged. New issues created
after enabling counter mode will start from 1 (or wherever the counter currently sits). To
avoid collisions with any existing sequential IDs (e.g., from a previous counter-mode period),
check the highest integer ID in use before switching.

**Explicit --id overrides counter mode:**

Passing `--id` on `bd create` always uses the provided ID and does not increment the counter:

```bash
bd create "Backport fix" -p 1 --id bd-special
# → bd-special (counter unchanged)
```

**Per-prefix isolation:**

Each prefix has its own counter. If this project routes to multiple prefixes, each prefix
counts independently (e.g., `bd-1`, `bd-2` and `plug-1`, `plug-2` are separate sequences).

See [docs/CONFIG.md](../docs/CONFIG.md) for full `issue_id_mode` reference.

### Important Rules

- ✅ Use bd for ALL task tracking
Expand All @@ -156,15 +210,15 @@ For more details, see README.md and QUICKSTART.md.

**Key Features:**
- Dependency-aware issue tracking
- Auto-sync with Git via JSONL
- Auto-sync via Dolt-native replication
- AI-optimized CLI with JSON output
- Built-in daemon for background operations
- Dolt server mode for background operations
- MCP server integration for Claude and other AI assistants

## Tech Stack

- **Language**: Go 1.21+
- **Storage**: SQLite (internal/storage/sqlite/)
- **Storage**: Dolt (version-controlled SQL database)
- **CLI Framework**: Cobra
- **Testing**: Go standard testing + table-driven tests
- **CI/CD**: GitHub Actions
Expand All @@ -174,7 +228,7 @@ For more details, see README.md and QUICKSTART.md.

### Testing
- Always write tests for new features
- Use `BEADS_DB=/tmp/test.db` to avoid polluting production database
- Use `t.TempDir()` in Go tests to avoid polluting production database
- Run `go test -short ./...` before committing
- Never create test issues in production DB (use temporary DB)

Expand All @@ -185,9 +239,8 @@ For more details, see README.md and QUICKSTART.md.
- Update docs when changing behavior

### Git Workflow
- Always commit `.beads/issues.jsonl` with code changes
- Run `bd sync` at end of work sessions
- Install git hooks: `bd hooks install` (ensures DB ↔ JSONL consistency)
- Install git hooks: `bd hooks install`

## Issue Tracking with bd

Expand Down Expand Up @@ -238,14 +291,13 @@ beads/
├── internal/
│ ├── types/ # Core data types
│ └── storage/ # Storage layer
│ └── sqlite/ # SQLite implementation
│ └── dolt/ # Dolt implementation
├── integrations/
│ └── beads-mcp/ # MCP server (Python)
├── examples/ # Integration examples
├── docs/ # Documentation
└── .beads/
├── beads.db # SQLite database (DO NOT COMMIT)
└── issues.jsonl # Git-synced issue storage
└── dolt/ # Dolt database (source of truth)
```

## Available Resources
Expand All @@ -272,10 +324,10 @@ Use the beads MCP server for native function calls instead of shell commands:
- ✅ Use bd for ALL task tracking
- ✅ Always use `--json` flag for programmatic use
- ✅ Run `bd sync` at end of sessions
- ✅ Test with `BEADS_DB=/tmp/test.db`
- ✅ Test with `t.TempDir()` in Go tests
- ❌ Do NOT create markdown TODO lists
- ❌ Do NOT create test issues in production DB
- ❌ Do NOT commit `.beads/beads.db` (JSONL only)
- ❌ Do NOT manually modify `.beads/dolt/`

---

Expand Down
4 changes: 2 additions & 2 deletions .beads/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ bd sync
### Working with Issues

Issues in Beads are:
- **Git-native**: Stored in `.beads/issues.jsonl` and synced like code
- **Git-native**: Stored in Dolt database with version control and branching
- **AI-friendly**: CLI-first design works perfectly with AI coding agents
- **Branch-aware**: Issues can follow your branch workflow
- **Always in sync**: Auto-syncs with your commits
Expand All @@ -53,7 +53,7 @@ Issues in Beads are:
🔧 **Git Integration**
- Automatic sync with git commits
- Branch-aware issue tracking
- Intelligent JSONL merge resolution
- Dolt-native three-way merge resolution

## Get Started with Beads

Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"name": "beads",
"source": "./claude-plugin",
"description": "AI-supervised issue tracker for coding workflows",
"version": "0.55.4"
"version": "0.56.1"
}
]
}
3 changes: 0 additions & 3 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@

# Use bd merge for beads JSONL files
.beads/issues.jsonl merge=beads

# Shell scripts must always use LF line endings (especially git hook templates)
*.sh text eol=lf
cmd/bd/templates/hooks/* text eol=lf
19 changes: 9 additions & 10 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@

**Key Features:**
- Dependency-aware issue tracking
- Auto-sync with Git via JSONL
- Auto-sync via Dolt-native replication
- AI-optimized CLI with JSON output
- Built-in daemon for background operations
- Dolt server mode for background operations
- MCP server integration for Claude and other AI assistants

## Tech Stack

- **Language**: Go 1.21+
- **Storage**: Dolt (internal/storage/dolt/)
- **Storage**: Dolt (version-controlled SQL database)
- **CLI Framework**: Cobra
- **Testing**: Go standard testing + table-driven tests
- **CI/CD**: GitHub Actions
Expand All @@ -36,7 +36,7 @@

### Git Workflow
- Install git hooks: `bd hooks install`
- Use `bd dolt push` / `bd dolt pull` for remote sync
- Use `bd sync` for remote sync (Dolt-native replication)

## Issue Tracking with bd

Expand All @@ -59,7 +59,7 @@ bd list --status open --priority 1 --json
bd show <id> --json

# Sync (if remote configured)
bd dolt push # Push to Dolt remote
bd sync # Sync with Dolt remote
```

### Workflow
Expand All @@ -69,7 +69,7 @@ bd dolt push # Push to Dolt remote
3. **Work on it**: Implement, test, document
4. **Discover new work?** `bd create "Found bug" --description="What was found and why" -p 1 --deps discovered-from:<parent-id> --json`
5. **Complete**: `bd close <id> --reason "Done" --json`
6. **Sync**: `bd dolt push` (push to Dolt remote if configured)
6. **Sync**: `bd sync` (sync with Dolt remote if configured)

**IMPORTANT**: Always include `--description` when creating issues. Issues without descriptions lack context for future work.

Expand All @@ -95,8 +95,7 @@ beads/
├── examples/ # Integration examples
├── docs/ # Documentation
└── .beads/
├── dolt/ # Dolt database (DO NOT COMMIT)
└── issues.jsonl # Git-synced issue storage
└── dolt/ # Dolt database (source of truth)
```

## Available Resources
Expand All @@ -122,11 +121,11 @@ Use the beads MCP server for native function calls instead of shell commands:

- ✅ Use bd for ALL task tracking
- ✅ Always use `--json` flag for programmatic use
- ✅ Use `bd dolt push` for remote sync
- ✅ Use `bd sync` for remote sync
- ✅ Test with `t.TempDir() in Go tests`
- ❌ Do NOT create markdown TODO lists
- ❌ Do NOT create test issues in production DB
- ❌ Do NOT commit `.beads/dolt/` (JSONL only)
- ❌ Do NOT manually modify `.beads/dolt/`

---

Expand Down
Loading