diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 19323836..a4dc6f35 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -590,7 +590,7 @@ {"id":"bd-trgb","title":"bd sync deleted non-.beads files (skills/beads/*)","description":"On 2025-12-23, commit 7b671662 (bd sync) inadvertently deleted 5 files from skills/beads/ that were added by PR #722 (commit e432fcc8). These files are outside .beads/ and should never be touched by bd sync.\n\nFiles deleted:\n- skills/beads/README.md\n- skills/beads/references/INTEGRATION_PATTERNS.md\n- skills/beads/references/MOLECULES.md\n- skills/beads/references/PATTERNS.md\n- skills/beads/references/TROUBLESHOOTING.md\n\nInvestigation needed:\n1. How did bd sync stage/commit files outside .beads/?\n2. Was this a one-time accident or is there a systematic bug?\n3. Add safeguards to prevent bd sync from touching non-.beads paths\n\nReported via GH#738.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-25T11:56:04.544656-08:00","updated_at":"2025-12-25T12:05:31.785355-08:00","closed_at":"2025-12-25T12:05:31.785355-08:00","close_reason":"Fixed - added pathspec to gitCommit() and commitToExternalBeadsRepo()"} {"id":"bd-ttbf","title":"bd mol reset: Reset molecule to initial state for looping","description":"Implement bd mol reset for patrol loop behavior.\n\n## Command\n\n```bash\nbd mol reset \u003cmol-id\u003e\n```\n\n## Behavior\n\n1. Load molecule state from .beads/molecules/\u003cmol-id\u003e.state.yaml\n2. Reset all step states to pending\n3. Clear current_step (or set to first step)\n4. Preserve: bonded_at, bonded_by, variables\n5. Update: reset_count++, last_reset_at\n\n## Use Case: Deacon Patrol Loop\n\n```\ninbox-check → spawn-work → self-inspect → mol-reset → (loop)\n```\n\nThe Deacon runs its patrol, then resets the molecule to start fresh.\nNo gt handoff needed unless context is high.\n\n## State After Reset\n\n```yaml\nid: mol-deacon-patrol\nstatus: running\ncurrent_step: inbox-check # Back to first\nreset_count: 5\nlast_reset_at: 2025-12-24T...\nsteps:\n inbox-check: pending # All reset\n spawn-work: pending\n self-inspect: pending\n```\n\n## Files\n\n- cmd/bd/mol_reset.go\n- internal/mol/state.go (add Reset method)","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-24T15:53:20.154106-08:00","updated_at":"2025-12-24T16:53:14.837362-08:00","closed_at":"2025-12-24T16:53:14.837362-08:00","close_reason":"REJECTED: Blocked by bd-hulf which was rejected. The concept of 'reset' is valid but must work by reopening child beads - no external state file.","dependencies":[{"issue_id":"bd-ttbf","depends_on_id":"bd-hulf","type":"blocks","created_at":"2025-12-24T15:53:49.159903-08:00","created_by":"daemon"}]} {"id":"bd-tvu3","title":"Improve test coverage for internal/beads (48.1% → 70%)","description":"Improve test coverage for internal/beads package from 48% to 70%.\n\n## Current State\n- Coverage: 48.4%\n- Files: beads.go, fingerprint.go\n- Tests: beads_test.go (moderate coverage)\n\n## Functions Needing Tests\n\n### beads.go (database discovery)\n- [ ] followRedirect - needs redirect file tests\n- [ ] findDatabaseInBeadsDir - needs various dir structures\n- [x] NewSQLiteStorage - likely covered\n- [ ] FindDatabasePath - needs BEADS_DB env var tests\n- [ ] hasBeadsProjectFiles - needs file existence tests\n- [ ] FindBeadsDir - needs directory traversal tests\n- [ ] FindJSONLPath - needs path derivation tests\n- [ ] findGitRoot - needs git repo tests\n- [ ] findDatabaseInTree - needs nested directory tests\n- [ ] FindAllDatabases - needs multi-database tests\n- [ ] FindWispDir - needs wisp directory tests\n- [ ] FindWispDatabasePath - needs wisp path tests\n- [ ] NewWispStorage - needs wisp storage tests\n- [ ] EnsureWispGitignore - needs gitignore creation tests\n- [ ] IsWispDatabase - needs path classification tests\n\n### fingerprint.go (repo identification)\n- [ ] ComputeRepoID - needs various remote URL tests\n- [ ] canonicalizeGitURL - needs URL normalization tests\n- [ ] GetCloneID - needs clone identification tests\n\n## Implementation Guide\n\n1. **Use temp directories:**\n ```go\n func TestFindBeadsDir(t *testing.T) {\n tmpDir := t.TempDir()\n beadsDir := filepath.Join(tmpDir, \".beads\")\n os.MkdirAll(beadsDir, 0755)\n \n // Create test files\n os.WriteFile(filepath.Join(beadsDir, \"beads.db\"), []byte{}, 0644)\n \n // Change to tmpDir and test\n oldWd, _ := os.Getwd()\n os.Chdir(tmpDir)\n defer os.Chdir(oldWd)\n \n result := FindBeadsDir()\n assert.Equal(t, beadsDir, result)\n }\n ```\n\n2. **Test scenarios:**\n - BEADS_DB environment variable set\n - .beads/ in current directory\n - .beads/ in parent directory\n - Redirect file pointing elsewhere\n - No beads directory found\n - Wisp directory alongside main beads\n\n3. **Git remote URL tests:**\n ```go\n tests := []struct{\n input string\n expected string\n }{\n {\"git@github.com:user/repo.git\", \"github.com/user/repo\"},\n {\"https://github.com/user/repo\", \"github.com/user/repo\"},\n {\"ssh://git@github.com/user/repo.git\", \"github.com/user/repo\"},\n }\n ```\n\n## Success Criteria\n- Coverage ≥ 70%\n- All FindXxx functions have tests\n- Environment variable handling tested\n- Edge cases (missing dirs, redirects) covered\n\n## Run Tests\n```bash\ngo test -v -cover ./internal/beads\ngo test -race ./internal/beads\n```","status":"closed","priority":1,"issue_type":"task","assignee":"beads/Beader","created_at":"2025-12-13T20:42:59.739142-08:00","updated_at":"2025-12-23T13:36:17.885237-08:00","closed_at":"2025-12-23T13:36:17.885237-08:00","close_reason":"Coverage improved from 48.4% to 80.2%, exceeding 70% target","dependencies":[{"issue_id":"bd-tvu3","depends_on_id":"bd-iz5t","type":"parent-child","created_at":"2025-12-23T12:44:07.362967-08:00","created_by":"daemon"}]} -{"id":"bd-tvus","title":"bd import reports success but writes nothing to empty database","description":"## Problem\n\nIn a fresh crew clone with no database, `bd import` and `bd sync --import-only` report:\n```\nImport complete: 0 created, 0 updated, 416 unchanged, 203 skipped\n```\n\nBut the database remains empty:\n```\nsqlite3 .beads/beads.db 'SELECT COUNT(*) FROM issues'\n0\n```\n\n## Reproduction Steps\n\n1. Fresh clone (crew/dave) with .beads/issues.jsonl containing 619 issues\n2. `bd init --skip-hooks` creates empty database\n3. `bd import -i .beads/issues.jsonl` reports 416 unchanged\n4. Database still has 0 issues\n\n## Expected\n\nImport should create 416 issues in the database.\n\n## Root Cause Hypothesis\n\nThe 'unchanged' count suggests it's comparing against something (maybe in-memory state?) rather than the actual database. The daemon running from a different clone (mayor/rig) may be confusing the import logic.\n\n## Context\n\nDiscovered during v0.39.0 release. Worked around by doing the release manually instead of using the beads-release molecule.","status":"open","priority":1,"issue_type":"bug","created_at":"2025-12-27T19:56:15.42338-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-27T19:56:15.42338-08:00"} +{"id":"bd-tvus","title":"bd import reports success but writes nothing to empty database","description":"## Problem\n\nIn a fresh crew clone with no database, `bd import` and `bd sync --import-only` report:\n```\nImport complete: 0 created, 0 updated, 416 unchanged, 203 skipped\n```\n\nBut the database remains empty:\n```\nsqlite3 .beads/beads.db 'SELECT COUNT(*) FROM issues'\n0\n```\n\n## Reproduction Steps\n\n1. Fresh clone (crew/dave) with .beads/issues.jsonl containing 619 issues\n2. `bd init --skip-hooks` creates empty database\n3. `bd import -i .beads/issues.jsonl` reports 416 unchanged\n4. Database still has 0 issues\n\n## Expected\n\nImport should create 416 issues in the database.\n\n## Root Cause Hypothesis\n\nThe 'unchanged' count suggests it's comparing against something (maybe in-memory state?) rather than the actual database. The daemon running from a different clone (mayor/rig) may be confusing the import logic.\n\n## Context\n\nDiscovered during v0.39.0 release. Worked around by doing the release manually instead of using the beads-release molecule.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-27T19:56:15.42338-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-27T20:19:16.501855-08:00","closed_at":"2025-12-27T20:19:16.501855-08:00","close_reason":"Fixed doctor to follow redirect when checking database. The bug was that doctor checked the local .beads/beads.db file while import followed the redirect to mayor/rig's database. Updated CheckDatabaseJSONLSync, CheckDatabaseVersion, CheckSchemaCompatibility, CheckDatabaseIntegrity, and CheckDatabaseSize to use resolveBeadsDir()."} {"id":"bd-twbi","title":"Relocate quickstart to bd help quickstart or docs","description":"## Task\nMove `bd quickstart` → `bd help quickstart` or convert to documentation.\n\n## Options\n\n### Option A: Move to bd help quickstart\n- Create a custom help topic\n- Cobra supports additional help topics\n\n### Option B: Convert to docs only\n- Keep content in docs/QUICKSTART.md\n- Remove the command entirely\n- Update references to point to docs\n\n## Recommendation\nOption B - quickstart is essentially documentation, not a functional command.\nThe command just prints formatted text that could live in docs.\n\n## Implementation (Option B)\n1. Ensure docs/QUICKSTART.md has equivalent content\n2. Add hidden alias that prints \"See docs/QUICKSTART.md or bd help\"\n3. Update all references:\n - README.md\n - docs/INSTALLING.md\n - docs/EXTENDING.md\n - npm-package/INTEGRATION_GUIDE.md\n - .beads/README.md\n\n## Files to modify\n- cmd/bd/quickstart.go (hide or remove)\n- Multiple docs (update references)\n","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-27T15:11:10.238898-08:00","created_by":"mayor","updated_at":"2025-12-27T16:09:23.140978-08:00","closed_at":"2025-12-27T16:09:23.140978-08:00","close_reason":"Hid quickstart command with deprecation message, updated docs to point to docs/QUICKSTART.md"} {"id":"bd-u0g9","title":"GH#405: Prefix parsing with hyphens treats first segment as prefix","description":"Prefix me-py-toolkit gets parsed as just me- when detecting mismatches. Fix prefix parsing to handle multi-hyphen prefixes. See GitHub issue #405.","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-16T01:03:18.354066-08:00","updated_at":"2025-12-17T16:11:17.070763-08:00","deleted_at":"2025-12-17T16:11:17.070763-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"bug"} {"id":"bd-u0sb","title":"Merge: bd-uqfn","description":"branch: polecat/cheedo\ntarget: main\nsource_issue: bd-uqfn\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-20T01:11:52.033964-08:00","updated_at":"2025-12-20T23:17:26.994875-08:00","closed_at":"2025-12-20T23:17:26.994875-08:00","close_reason":"Branches nuked, MRs obsolete"}