diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 9e3b5b78..76473e1b 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -1,7 +1,7 @@ {"id":"bd-0088","content_hash":"7449088a4560a2a2821eeda8dca1e44c0017667314236a13df8d8112cda20101","title":"Create npm package structure for bd-wasm","description":"Set up npm package for distribution:\n- Create package.json with bd-wasm name\n- Bundle bd.wasm + wasm_exec.js\n- Create CLI wrapper (bin/bd) that invokes WASM\n- Add installation scripts if needed\n- Configure package for Claude Code Web sandbox compatibility","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T21:58:07.295058-08:00","updated_at":"2025-11-03T20:56:22.700641-08:00","closed_at":"2025-11-03T20:56:22.700641-08:00","source_repo":".","dependencies":[{"issue_id":"bd-0088","depends_on_id":"bd-44d0","type":"parent-child","created_at":"2025-11-02T22:23:49.475356-08:00","created_by":"stevey"}]} {"id":"bd-0134cc5a","content_hash":"d45c0e44c01c5855f14f07693bd800f4bfeac3084e10ceb17970ff54c58f6a40","title":"Fix auto-import creating duplicates instead of updating issues","description":"ROOT CAUSE: server_export_import_auto.go line 221 uses ResolveCollisions: true for ALL auto-imports. This is wrong.\n\nProblem:\n- ResolveCollisions is for branch merges (different issues with same ID)\n- Auto-import should UPDATE existing issues, not create duplicates\n- Every git pull creates NEW duplicate issues with different IDs\n- Two agents ping-pong creating endless duplicates\n\nEvidence:\n- 31 duplicate groups found (bd duplicates)\n- bd-236-246 are duplicates of bd-224-235\n- Both agents keep pulling and creating more duplicates\n- JSONL file grows endlessly with duplicates\n\nThe Fix:\nChange checkAndAutoImportIfStale in server_export_import_auto.go:\n- Remove ResolveCollisions: true (line 221)\n- Use normal import logic that updates existing issues by ID\n- Only use ResolveCollisions for explicit bd import --resolve-collisions\n\nImpact: Critical - makes beads unusable for multi-agent workflows","acceptance_criteria":"- Auto-import does NOT create duplicates when pulling git changes\n- Existing issues are updated in-place by ID match\n- No ping-pong commits between agents\n- Test: two agents updating same issue should NOT create duplicates\n- bd duplicates shows 0 groups after fix","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-27T21:48:57.733846-07:00","updated_at":"2025-10-30T17:12:58.21084-07:00","closed_at":"2025-10-27T22:26:40.627239-07:00","source_repo":"."} {"id":"bd-02a4","content_hash":"fbaca84d9502239656f05a14f62e8e6adec8f8dd492b1e91694fefcd0bdf310c","title":"Modify CreateIssue to support parent resurrection","description":"Update internal/storage/sqlite/sqlite.go:182-196 to call TryResurrectParent before failing on missing parent. Coordinate with EnsureIDs changes for consistent behavior. Handle edge case where parent never existed in JSONL (fail gracefully).","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-04T12:31:59.701571-08:00","updated_at":"2025-11-05T00:08:42.811436-08:00","closed_at":"2025-11-05T00:08:42.81144-08:00","source_repo":"."} -{"id":"bd-0447029c","content_hash":"f32f7d8f0b07aaaeb9d07d8a1d000eef8fc79cf864e8aa20ebb899f6e359ebda","title":"bd find-duplicates - AI-powered duplicate detection","description":"Find semantically duplicate issues.\n\nApproaches:\n1. Mechanical: Exact title/description matching\n2. Embeddings: Cosine similarity (cheap, scalable)\n3. AI: LLM-based semantic comparison (expensive, accurate)\n\nUses embeddings by default for \u003e100 issues.\n\nFiles: cmd/bd/find_duplicates.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-20T12:40:11.705915-05:00","updated_at":"2025-11-20T12:40:11.705915-05:00","closed_at":"2025-10-29T16:15:10.64719-07:00","source_repo":"."} +{"id":"bd-0447029c","content_hash":"f32f7d8f0b07aaaeb9d07d8a1d000eef8fc79cf864e8aa20ebb899f6e359ebda","title":"bd find-duplicates - AI-powered duplicate detection","description":"Find semantically duplicate issues.\n\nApproaches:\n1. Mechanical: Exact title/description matching\n2. Embeddings: Cosine similarity (cheap, scalable)\n3. AI: LLM-based semantic comparison (expensive, accurate)\n\nUses embeddings by default for \u003e100 issues.\n\nFiles: cmd/bd/find_duplicates.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-20T12:05:34.818282-05:00","updated_at":"2025-11-20T12:05:34.818282-05:00","closed_at":"2025-10-29T16:15:10.64719-07:00","source_repo":"."} {"id":"bd-0458","content_hash":"c4427da2aec84621525f7f286c626f6c94365a7e6ff8e35e9676b184c85e1adb","title":"Consolidate export/import/commit/push into sync.go","description":"Create internal/daemonrunner/sync.go with Syncer type. Add ExportOnce, ImportOnce, CommitAndMaybePush methods. Replace createExportFunc/createAutoImportFunc with thin closures calling Syncer.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-01T11:41:14.874539-07:00","updated_at":"2025-11-02T12:32:00.157369-08:00","closed_at":"2025-11-02T12:32:00.157375-08:00","source_repo":"."} {"id":"bd-05a1","content_hash":"b79b0efa41b4eca8d7e5ab9738d5ecaa403c35497877a056a502efe0583ca251","title":"Isolate RPC server startup into rpc_server.go","description":"Create internal/daemonrunner/rpc_server.go with StartRPC function. Move startRPCServer logic here and return typed handle.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-01T11:41:14.876839-07:00","updated_at":"2025-11-02T12:32:00.158054-08:00","closed_at":"2025-11-02T12:32:00.158057-08:00","source_repo":"."} {"id":"bd-0650a73b","content_hash":"a596aa8d6114d4938471e181ebc30da5d0315f74fd711a92dbbb83f5d0e7af88","title":"Create cmd/bd/daemon_debouncer.go (~60 LOC)","description":"Implement Debouncer to batch rapid events into single action. Default 500ms, configurable via BEADS_DEBOUNCE_MS. Thread-safe with mutex.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-28T16:20:02.431118-07:00","updated_at":"2025-10-30T17:12:58.221711-07:00","closed_at":"2025-10-28T12:03:35.614191-07:00","source_repo":"."} @@ -12,29 +12,1132 @@ {"id":"bd-08e556f2","content_hash":"cd9e7cc106b733dc4893e92a75feae3331b422238f261a7c738c21a18e29719f","title":"Remove Cache Configuration Docs","description":"Remove documentation of deprecated cache env vars","acceptance_criteria":"- Documentation doesn't reference removed env vars\n- CHANGELOG documents breaking change\n- No mentions of storage cache except in CHANGELOG\n\nFiles to update:\n- ADVANCED.md (remove cache configuration section)\n- commands/daemons.md (remove cache env vars)\n- integrations/beads-mcp/SETUP_DAEMON.md (remove cache tuning)\n- CHANGELOG.md (add removal entry)\n\nDeprecated env vars:\n- BEADS_DAEMON_MAX_CACHE_SIZE\n- BEADS_DAEMON_CACHE_TTL\n- BEADS_DAEMON_MEMORY_THRESHOLD_MB","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-28T10:50:15.125488-07:00","updated_at":"2025-10-30T17:12:58.216329-07:00","closed_at":"2025-10-28T10:48:20.606979-07:00","source_repo":"."} {"id":"bd-08fd","content_hash":"1fc998c05fb1ccb8725bc0fe9b930b201c0c291353b9f9d578c44865eef5dde9","title":"Test child issue","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-02T11:50:40.640901-08:00","updated_at":"2025-11-02T11:50:47.309652-08:00","closed_at":"2025-11-02T11:50:47.309652-08:00","source_repo":".","dependencies":[{"issue_id":"bd-08fd","depends_on_id":"bd-ce75","type":"blocks","created_at":"2025-11-02T11:50:40.642073-08:00","created_by":"stevey"}]} {"id":"bd-09b5f2f5","content_hash":"02c69c90dc76c4982976362b9cb00ce01bc3fc3d17618feec3a02bab6fa4d196","title":"Daemon fails to auto-import after git pull updates JSONL","description":"After git pull updates .beads/issues.jsonl, daemon doesn't automatically re-import changes, causing stale data to be shown until next sync cycle (up to 5 minutes).\n\nReproduction:\n1. Repo A: Close issues, export, commit, push\n2. Repo B: git pull (successfully updates .beads/issues.jsonl)\n3. bd show \u003cissue\u003e shows OLD status from daemon's SQLite db\n4. JSONL on disk has correct new status\n\nRoot cause: Daemon sync cycle runs on timer (5min). When user manually runs git pull, daemon doesn't detect JSONL was updated externally and continues serving stale data from SQLite.\n\nImpact:\n- High for AI agents using beads in git workflows\n- Breaks fundamental git-as-source-of-truth model\n- Confusing UX: git log shows commit, bd shows old state\n- Data consistency issues between JSONL and daemon\n\nSee WYVERN_SYNC_ISSUE.md for full analysis.","design":"Three possible solutions:\n\nOption 1: Auto-detect and re-import (recommended)\n- Before serving any bd command, check if .beads/issues.jsonl mtime \u003e last import time\n- If newer, auto-import before processing request\n- Fast check, minimal overhead\n\nOption 2: File watcher in daemon\n- Daemon watches .beads/issues.jsonl for mtime changes\n- Auto-imports when file changes\n- More complex, requires file watching infrastructure\n\nOption 3: Explicit sync command\n- User runs `bd sync` after git pull\n- Manual, error-prone, defeats automation\n\nRecommended: Option 1 (auto-detect) + Option 3 (explicit sync) as fallback.","acceptance_criteria":"1. After git pull updates .beads/issues.jsonl, next bd command sees fresh data\n2. No manual import or daemon restart required\n3. Performance impact \u003c 10ms per command (mtime check is fast)\n4. Works in both daemon and non-daemon modes\n5. Test: Two repo clones, update in one, pull in other, verify immediate sync","notes":"**Fixed in v0.21.2!**\n\nThe daemon auto-import is fully implemented:\n- internal/autoimport package handles staleness detection\n- internal/importer package provides shared import logic (used by both CLI and daemon)\n- daemon's checkAndAutoImportIfStale() calls autoimport.AutoImportIfNewer()\n- importFunc uses importer.ImportIssues() with auto-rename enabled\n- All tests passing\n\nThe critical data corruption bug is FIXED:\n✅ After git pull, daemon detects JSONL is newer (mtime check)\n✅ Daemon auto-imports before serving requests\n✅ No stale data served\n✅ No data loss in multi-agent workflows\n\nVerification needed: Run two-repo test to confirm end-to-end behavior.","status":"closed","priority":0,"issue_type":"epic","created_at":"2025-10-25T23:13:12.270766-07:00","updated_at":"2025-11-01T16:52:50.931197-07:00","closed_at":"2025-11-01T16:52:50.931197-07:00","source_repo":"."} -{"id":"bd-0a43","content_hash":"5d53e4f9d5929940c0734a174d80f51f5bc800ce1b3efc5058a9d3b798fbe65b","title":"Split monolithic sqlite.go into focused files","description":"internal/storage/sqlite/sqlite.go is 1050 lines containing initialization, 20+ CRUD methods, query building, and schema management.\n\nSplit into:\n- store.go: Store struct \u0026 initialization (150 lines)\n- bead_queries.go: Bead CRUD (300 lines)\n- work_queries.go: Work queries (200 lines) \n- stats_queries.go: Statistics (150 lines)\n- schema.go: Schema \u0026 migrations (150 lines)\n- helpers.go: Common utilities (100 lines)\n\nImpact: Impossible to understand at a glance; hard to find specific functionality; high cognitive load\n\nEffort: 6-8 hours","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-16T14:51:16.520465-08:00","updated_at":"2025-11-20T19:10:55.197667-05:00","closed_at":"2025-11-20T16:08:12.352662-08:00","source_repo":"."} +{"id":"bd-0a43","content_hash":"5d53e4f9d5929940c0734a174d80f51f5bc800ce1b3efc5058a9d3b798fbe65b","title":"Split monolithic sqlite.go into focused files","description":"internal/storage/sqlite/sqlite.go is 1050 lines containing initialization, 20+ CRUD methods, query building, and schema management.\n\nSplit into:\n- store.go: Store struct \u0026 initialization (150 lines)\n- bead_queries.go: Bead CRUD (300 lines)\n- work_queries.go: Work queries (200 lines) \n- stats_queries.go: Statistics (150 lines)\n- schema.go: Schema \u0026 migrations (150 lines)\n- helpers.go: Common utilities (100 lines)\n\nImpact: Impossible to understand at a glance; hard to find specific functionality; high cognitive load\n\nEffort: 6-8 hours","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-16T14:51:16.520465-08:00","updated_at":"2025-11-20T19:11:50.948967-05:00","closed_at":"2025-11-20T16:08:12.352662-08:00","source_repo":"."} {"id":"bd-0a90","content_hash":"8f19f9a9e01ccf3a4dd42673a84610f2550db9a9e744806105dc3b9e070f4e46","title":"bd show --json doesn't include dependency type field","description":"Fix GitHub issue #202. The JSON output from bd show and bd list commands should include the dependency type field (and optionally created_at, created_by) to match internal storage format and enable better tooling integration.","notes":"PR #203 updated with cleaner implementation: https://github.com/steveyegge/beads/pull/203\n\n## Final Implementation\n\nCleanest possible approach - no internal helper methods needed:\n\n**Design:**\n- `GetDependenciesWithMetadata()` / `GetDependentsWithMetadata()` - canonical implementations with full SQL query\n- `GetDependencies()` / `GetDependents()` - thin wrappers that strip metadata for backward compat\n- `scanIssuesWithDependencyType()` - shared helper for scanning rows with dependency type\n\n**Benefits:**\n- Single source of truth - the `...WithMetadata()` methods ARE the implementation\n- Eliminated ~139 lines of duplicated SQL and scanning code\n- All tests passing (14 dependency-related tests)\n- Backward compatible\n- dependency_type field appears correctly in JSON output\n\n**Note on scan helpers:**\nThe duplication between `scanIssues()` and `scanIssuesWithDependencyType()` is necessary because they handle different SQL result shapes (16 vs 17 columns). This is justified as they serve fundamentally different purposes based on query structure.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-02T09:42:08.712725096Z","updated_at":"2025-11-02T11:50:54.292546-08:00","closed_at":"2025-11-02T11:50:54.292546-08:00","external_ref":"https://github.com/steveyegge/beads/issues/202","source_repo":"."} {"id":"bd-0d9c","content_hash":"a61ba371d6c50f21a92e4debeaaa00a4c3eb77ef96fbcdfa89f80e9b13ffff7a","title":"YABB: Spurious issue updates during normal operations","description":"Issue bd-627d was updated during config refactoring session without any actual changes to it. Only timestamps and content_hash changed.\n\nObserved: Running various bd commands (list, create, etc.) caused bd-627d updated_at to change from 14:14 to 14:31.\n\nExpected: Issues should only be updated when explicitly modified.\n\nThis causes:\n- Dirty JSONL after every session\n- False conflicts in git\n- Confusing git history\n\nLikely culprit: Daemon auto-import/export cycle or database migration touching all issues.","notes":"Investigated thoroughly - unable to reproduce. The import logic has IssueDataChanged() checks before calling UpdateIssue (importer/importer.go:458). All tests pass. May have been fixed by recent refactorings. Closing as cannot reproduce - please reopen with specific repro steps if it occurs again.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-02T14:36:31.023552-08:00","updated_at":"2025-11-02T16:27:39.023535-08:00","closed_at":"2025-11-02T16:27:39.023539-08:00","source_repo":"."} -{"id":"bd-0dcea000","content_hash":"5f3eccf8635195729691e83818486c31c81e608d939e03a2241f944f645ce90d","title":"Add tests for internal/importer package","description":"Currently 0.0% coverage. Need tests for JSONL import logic including collision detection and resolution.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T14:06:21.071024-07:00","updated_at":"2025-11-08T22:42:08.859374-08:00","closed_at":"2025-11-08T18:06:20.150657-08:00","source_repo":".","dependencies":[{"issue_id":"bd-0dcea000","depends_on_id":"bd-cbed9619.5","type":"blocks","created_at":"2025-10-29T19:52:05.531279-07:00","created_by":"import-remap"},{"issue_id":"bd-0dcea000","depends_on_id":"bd-cbed9619.4","type":"blocks","created_at":"2025-10-29T19:52:05.53166-07:00","created_by":"import-remap"}]} +{"id":"bd-0dcea000","content_hash":"5f3eccf8635195729691e83818486c31c81e608d939e03a2241f944f645ce90d","title":"Add tests for internal/importer package","description":"Currently 0.0% coverage. Need tests for JSONL import logic including collision detection and resolution.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T14:06:21.071024-07:00","updated_at":"2025-11-08T18:06:20.150657-08:00","closed_at":"2025-11-08T18:06:20.150657-08:00","source_repo":".","dependencies":[{"issue_id":"bd-0dcea000","depends_on_id":"bd-cbed9619.5","type":"blocks","created_at":"2025-10-29T19:52:05.531279-07:00","created_by":"import-remap"},{"issue_id":"bd-0dcea000","depends_on_id":"bd-cbed9619.4","type":"blocks","created_at":"2025-10-29T19:52:05.53166-07:00","created_by":"import-remap"}]} {"id":"bd-0do3","content_hash":"e6d85ab6360e5704e3d6792eade15bbec8d19d13b878c15e4021f3375cb3d515","title":"Test issue 0","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-07T19:00:15.156832-08:00","updated_at":"2025-11-07T22:07:17.340826-08:00","closed_at":"2025-11-07T21:55:09.425092-08:00","source_repo":"."} {"id":"bd-0e1f2b1b","content_hash":"c0b1677fe3f4aa3f395ae4d79bff5362632d5db26477bf571c09f9177b8741ef","title":"Event-driven daemon architecture","description":"Replace 5-second polling sync loop with event-driven architecture that reacts instantly to changes. Eliminates stale data issues while reducing CPU ~60%. Key components: FileWatcher (fsnotify), Debouncer (500ms), RPC mutation events, optional git hooks. Target latency: \u003c500ms (vs 5000ms). See event_driven_daemon.md for full design.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-10-28T16:20:02.430479-07:00","updated_at":"2025-10-30T17:12:58.221424-07:00","closed_at":"2025-10-28T16:30:26.631191-07:00","source_repo":"."} {"id":"bd-0e74","content_hash":"d8ab25b7a6ac1ba0e5012677cac3ac1320d3ca1059df97c979aab8c43ecb579d","title":"Comprehensive testing for separate branch workflow","description":"Comprehensive testing for separate branch workflow including unit tests, integration tests, and performance testing.\n\nTasks:\n- Unit tests for worktree management\n- Unit tests for config parsing\n- Integration tests: create/update/close → beads branch\n- Integration test: merge beads → main\n- Integration test: protected branch scenario\n- Integration test: network failure recovery\n- Integration test: config change handling\n- Manual testing guide\n- Performance testing (worktree overhead)\n\nTest scenarios: fresh setup, issue operations, merge workflow, protected branch, error handling, migration, multiple workspaces, sparse checkout\n\nEstimated effort: 4-5 days","acceptance_criteria":"- All unit tests pass\n- All integration tests pass\n- Manual testing guide works\n- No data loss in any scenario\n- Performance acceptable (\u003c 100ms overhead per commit)","notes":"Completed comprehensive test coverage. Added 4 new integration tests: config change handling, multiple concurrent clones (3-way), performance testing (avg 77ms \u003c 150ms target), and network failure recovery. All tests pass. Coverage includes fresh setup, issue ops, error handling, multiple workspaces, sparse checkout, config changes, network failures, and performance.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T15:22:35.580741-08:00","updated_at":"2025-11-02T21:40:35.337464-08:00","closed_at":"2025-11-02T21:40:35.337468-08:00","source_repo":".","dependencies":[{"issue_id":"bd-0e74","depends_on_id":"bd-a101","type":"parent-child","created_at":"2025-11-02T15:22:51.348226-08:00","created_by":"stevey"}]} {"id":"bd-0fvq","content_hash":"6fb6e394efe3010fd5d9213669417e5f6376017de4187988d5a6fd0d36c80b40","title":"bd doctor should recommend bd prime migration for existing repos","description":"bd doctor should detect old beads integration patterns and recommend migrating to bd prime approach.\n\n## Current behavior\n- bd doctor checks if Claude hooks are installed globally\n- Doesn't check project-level integration (AGENTS.md, CLAUDE.md)\n- Doesn't recommend migration for repos using old patterns\n\n## Desired behavior\nbd doctor should detect and suggest:\n\n1. **Old slash command pattern detected**\n - Check for /beads:* references in AGENTS.md, CLAUDE.md\n - Suggest: These slash commands are deprecated, use bd prime hooks instead\n \n2. **No agent documentation**\n - Check if AGENTS.md or CLAUDE.md exists\n - Suggest: Run 'bd onboard' or 'bd setup claude' to document workflow\n \n3. **Old MCP-only pattern**\n - Check for instructions to use MCP tools but no bd prime hooks\n - Suggest: Add bd prime hooks for better token efficiency\n\n4. **Migration path**\n - Show: 'Run bd setup claude to add SessionStart/PreCompact hooks'\n - Show: 'Update AGENTS.md to reference bd prime instead of slash commands'\n\n## Example output\n\n⚠ Warning: Old beads integration detected in CLAUDE.md\n Found: /beads:* slash command references (deprecated)\n Recommend: Migrate to bd prime hooks for better token efficiency\n Fix: Run 'bd setup claude' and update CLAUDE.md\n\n💡 Tip: bd prime + hooks reduces token usage by 80-99% vs slash commands\n MCP mode: ~50 tokens vs ~10.5k for full MCP scan\n CLI mode: ~1-2k tokens with automatic context recovery\n\n## Benefits\n- Helps existing repos adopt new best practices\n- Clear migration path for users\n- Better token efficiency messaging","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-12T03:20:25.567748-08:00","updated_at":"2025-11-12T03:20:25.567748-08:00","source_repo":"."} -{"id":"bd-0kz8","content_hash":"e76bf68f5018ebfcbec864700a712944688dcba0d478fa8d9f2c3d310289eff5","title":"Fix default .beads/.gitignore to ignore merge artifacts (GH #274)","description":"Updated the default .gitignore template created by `bd init` to properly ignore merge artifacts and fix overly broad patterns.\n\nChanges:\n- Added `*.db?*` pattern for database files with query strings\n- Added explicit patterns for merge artifacts: beads.{base,left,right}.{jsonl,meta.json}\n- Changed `!*.jsonl` to `!issues.jsonl` to avoid including merge artifact JSONL files\n\nThis fixes GitHub issue #274 reported by rscorer.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-09T11:23:25.595551-08:00","updated_at":"2025-11-09T11:23:28.780095-08:00","closed_at":"2025-11-09T11:23:28.780095-08:00","source_repo":"."} +{"id":"bd-0kz8","content_hash":"b641c9c097cdeaa44b090d632eac2f89d89a5c3579f0ea58c8b02320b0fa49f7","title":"Fix default .beads/.gitignore to ignore merge artifacts (GH #274)","description":"Updated the default .gitignore template created by `bd init` to properly ignore merge artifacts and fix overly broad patterns.\n\nChanges:\n- Added `*.db?*` pattern for database files with query strings\n- Added explicit patterns for merge artifacts: beads.{base,left,right}.{jsonl,meta.json}\n- Changed `!*.jsonl` to `!issues.jsonl` to avoid including merge artifact JSONL files\n\nThis fixes GitHub issue #274 reported by rscorer.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-09T11:23:25.595551-08:00","updated_at":"2025-11-09T11:23:28.780095-08:00","closed_at":"2025-11-09T11:23:28.780095-08:00","source_repo":"."} {"id":"bd-0qeg","content_hash":"50f35dcc442b133e766668f3201f5e4820a66dd05cfac1c5d30595d11806f98e","title":"Fix bd doctor hash ID detection for short all-numeric hashes","description":"bd doctor incorrectly flags hash-based IDs as sequential when they are short (3-4 chars) and all-numeric (e.g., pf-158).\n\nRoot cause: isHashID() in cmd/bd/migrate_hash_ids.go:328-358 uses faulty heuristic:\n- For IDs \u003c 5 chars, only returns true if contains letters\n- But base36 hash IDs can be 3+ chars and all-numeric (MinLength: 3)\n- Example: pf-158 is valid hash ID but flagged as sequential\n\nFix: Check multiple IDs (10-20 samples) instead of single-ID pattern matching:\n- Sample IDs across database \n- Check majority pattern (sequential vs hash format)\n- Sequential: 1-4 digits (bd-1, bd-2...)\n- Hash: 3-8 chars base36 (pf-158, pf-3s9...)\n\nImpact: False positive warnings in bd doctor output","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-16T13:45:20.733761-08:00","updated_at":"2025-11-16T14:27:48.143485-08:00","closed_at":"2025-11-16T14:27:48.143485-08:00","source_repo":"."} {"id":"bd-0vfe","content_hash":"e142bd97d91f70e50e8fea0681d8cdcffb17f17fdbd4c106d56607e243005d21","title":"Blocked issue","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T19:07:17.105974-08:00","updated_at":"2025-11-07T22:07:17.342098-08:00","closed_at":"2025-11-07T21:55:09.425545-08:00","source_repo":"."} -{"id":"bd-1022","content_hash":"0b712a337844711597d2dd950d27d4c032a3b746a27f44326d62db740f5944e9","title":"Use external_ref as primary matching key for import updates","description":"Enable re-syncing from external systems (Jira, GitHub, Linear) by using external_ref as the primary matching key during imports. Currently imports treat any content change as a collision, making it impossible to sync updates from external systems without creating duplicates.\n\nSee GH #142 for detailed proposal and implementation plan.\n\nKey changes needed:\n1. Add findByExternalRef() query function\n2. Update DetectCollisions() to match by external_ref first\n3. Update import_shared.go to update existing issues when external_ref matches\n4. Add index on external_ref for performance\n5. Preserve local issues (no external_ref) from being overwritten\n\nThis enables hybrid workflows: import external backlog, break down with local tasks, re-sync anytime.","notes":"## Code Review Complete ✅\n\n**Overall Assessment**: EXCELLENT - Production ready\n\n### Implementation Quality\n- ✓ Clean architecture with proper interface extension\n- ✓ Dual backend support (SQLite + Memory)\n- ✓ Smart matching priority: external_ref → ID → content hash\n- ✓ O(1) lookups with database index\n- ✓ Timestamp-based conflict resolution\n- ✓ Comprehensive test coverage (11 test cases)\n\n### Follow-up Issues Filed\nHigh Priority (P2):\n- bd-897a: Add UNIQUE constraint on external_ref column\n- bd-7315: Add validation for duplicate external_ref in batch imports\n\nMedium Priority (P3):\n- bd-f9a1: Add index usage verification test\n- bd-3f6a: Add concurrent import race condition tests\n\nLow Priority (P4):\n- bd-e166: Improve timestamp comparison readability\n- bd-9e23: Optimize Memory backend with index\n- bd-537e: Add external_ref change tracking\n- bd-df11: Add import metrics\n- bd-9f4a: Document external_ref in content hash\n\n### Key Features\n✅ External systems (Jira, GitHub, Linear) can re-sync without duplicates\n✅ Hybrid workflows: import external backlog, add local tasks, re-sync anytime\n✅ Local issues protected from being overwritten\n✅ Timestamp checking ensures only newer updates applied\n✅ Performance optimized with database index\n\n**Confidence Level**: 95% - Ship it! 🚀","status":"closed","priority":0,"issue_type":"feature","created_at":"2025-11-02T14:55:56.355813-08:00","updated_at":"2025-11-02T15:34:56.634126-08:00","closed_at":"2025-11-02T15:27:44.810375-08:00","source_repo":"."} -{"id":"bd-1048","content_hash":"1a889d79a98f8c0919f99094736ee7c856c6d8a2ee062a0add49ce2c06c40174","title":"Daemon crashes silently on RPC query after startup","description":"The daemon fails to handle 'show' RPC commands when:\n1) JSONL is newer than database (needs import)\n2) git pull fails due to uncommitted changes\n\nSymptoms:\n- Daemon appears to run (ps shows process)\n- 'bd list' and other commands work fine \n- 'bd show \u003cid\u003e' returns \"failed to read response: EOF\"\n- No panic or error logged in daemon.log\n\nRoot cause likely: auto-import deadlock or state corruption when import is blocked by git conflicts.\n\nWorkaround: \n- Restart daemon after syncing git state (commit/push changes)\n- OR use --no-daemon flag for all commands\n\nThe panic recovery added in server_lifecycle_conn.go:183 didn't catch any panics, confirming this isn't a panic-based crash.","notes":"Root cause found and fixed: Two bugs - (1) nil pointer check missing in handleShow causing panic, (2) double JSON encoding in show.go ID resolution. Both fixed. bd show now works with daemon.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-02T17:05:03.658333-08:00","updated_at":"2025-11-03T12:08:12.947672-08:00","closed_at":"2025-11-03T12:08:12.947676-08:00","source_repo":"."} +{"id":"bd-1","content_hash":"54ac9980ed203f25e95b0507df82fdd387179b9c1aa0b05266eab804d623c435","title":"Task A under epic","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.51598-07:00","closed_at":"2025-10-16T10:07:34.129516-07:00","source_repo":"."} +{"id":"bd-10","content_hash":"0318031ccdc2f9e89c40e5e9b3b2110c330ff9ff5a28fb77cac7928819d3e738","title":"Optimize export dependency queries (N+1 problem)","description":"Export triggers separate GetDependencyRecords() per issue. For large DBs (1000+ issues), this is N+1 queries. Add GetAllDependencyRecords() to fetch all dependencies in one query. Location: cmd/bd/export.go:52-59, import.go:138-142","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.516581-07:00","closed_at":"2025-10-14T02:51:52.19905-07:00","source_repo":"."} +{"id":"bd-100","content_hash":"3b547b1f0e39e0586a401bbefd4ad66331c976d2a13ecb5bc487105fa22f6b2b","title":"Add 'bd repos' command for multi-repo aggregation","description":"When using daemon in multi-repo mode, users need commands to view/manage work across all active repositories.\n\nAdd 'bd repos' subcommand with:\n\n1. bd repos list\n - Show all repositories daemon has cached\n - Display: path, prefix, issue count, last activity\n - Example output:\n ~/src/project1 [p1-] 45 issues (active)\n ~/src/project2 [p2-] 12 issues (2m ago)\n\n2. bd repos ready --all \n - Aggregate ready work across all repos\n - Group by repo or show combined list\n - Support priority/assignee filters\n\n3. bd repos stats\n - Combined statistics across all repos\n - Total issues, breakdown by status/priority\n - Per-repo breakdown\n\n4. bd repos clear-cache\n - Close all cached storage connections\n - Useful for freeing resources\n\nImplementation notes:\n- Requires daemon to track active storage instances\n- May need RPC protocol additions for multi-repo queries\n- Should gracefully handle repos that no longer exist\n\nDepends on: Global daemon flag (makes this more useful)\n\nContext: This provides the UX layer on top of existing multi-repo support. The daemon can already serve multiple repos - this makes it easy to work with them.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-17T20:43:49.816998-07:00","updated_at":"2025-10-21T00:25:40.516883-07:00","closed_at":"2025-10-18T00:04:42.197247-07:00","source_repo":"."} +{"id":"bd-1000","content_hash":"5a6291718890e0140312420a35c98927faa6a6589677e3c40c941ddc1dee100e","title":"Batch Issue 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.945004-07:00","updated_at":"2025-11-20T12:29:36.284897-05:00","closed_at":"2025-11-20T12:29:36.284897-05:00","source_repo":"."} +{"id":"bd-1001","content_hash":"d2fbfa683edacdf95f7b42613d5b8750cbde285730ec029e3f0cdf171c5bfae9","title":"Agent 1 Batch 0 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.946615-07:00","updated_at":"2025-11-20T12:28:04.22102-05:00","closed_at":"2025-11-20T12:28:04.22102-05:00","source_repo":"."} +{"id":"bd-1002","content_hash":"a1c78e4228ce685e7b8991c665011717b094095b5c7d24621606563d589d421a","title":"Agent 1 Batch 0 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.947259-07:00","updated_at":"2025-11-20T12:27:43.356549-05:00","closed_at":"2025-11-20T12:27:43.356549-05:00","source_repo":"."} +{"id":"bd-1003","content_hash":"758c2eb6e06e9196df2a9dcbc44d8fb152486c383d98f5cb27956ff6776a8ca9","title":"Agent 1 Batch 1 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.947894-07:00","updated_at":"2025-11-20T12:28:04.22029-05:00","closed_at":"2025-11-20T12:28:04.22029-05:00","source_repo":"."} +{"id":"bd-1004","content_hash":"1e9a487f1dce842ca3e92131e9622eb384a66c544b6e1b417a6096591f044d6d","title":"Agent 1 Batch 1 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.948422-07:00","updated_at":"2025-11-20T12:27:43.356395-05:00","closed_at":"2025-11-20T12:27:43.356395-05:00","source_repo":"."} +{"id":"bd-1005","content_hash":"940ca435801193d7094da076d033845a7842dc4b23bc7b1de5e3b4ca1c841470","title":"Agent 1 Batch 2 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.94894-07:00","updated_at":"2025-11-20T12:28:04.220095-05:00","closed_at":"2025-11-20T12:28:04.220095-05:00","source_repo":"."} +{"id":"bd-1006","content_hash":"495aac0d3671c12897c6276702c196023a403cb184171cd775f1a373f9d308b7","title":"Agent 1 Batch 2 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.949463-07:00","updated_at":"2025-11-20T12:27:43.356209-05:00","closed_at":"2025-11-20T12:27:43.356209-05:00","source_repo":"."} +{"id":"bd-1007","content_hash":"629aa3a775a81ef8b9d48fdb437161a2a68c005b0a6ee923daa838117db73c5e","title":"Agent 1 Batch 3 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.950053-07:00","updated_at":"2025-11-20T12:28:04.219903-05:00","closed_at":"2025-11-20T12:28:04.219903-05:00","source_repo":"."} +{"id":"bd-1008","content_hash":"df5224fcbda20388a9f34edeec709061ba9ffd63b59574410255945aa863476f","title":"Agent 1 Batch 3 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.950579-07:00","updated_at":"2025-11-20T12:27:43.356008-05:00","closed_at":"2025-11-20T12:27:43.356008-05:00","source_repo":"."} +{"id":"bd-1009","content_hash":"c16a43ed5ae1f9800d4512dc2d21252e0e6560e4aa38ee05333cf9b9b20786d3","title":"Agent 1 Batch 4 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.951355-07:00","updated_at":"2025-11-20T12:28:04.219671-05:00","closed_at":"2025-11-20T12:28:04.219671-05:00","source_repo":"."} +{"id":"bd-101","content_hash":"7a8532a8ba50f057d25309e094d538cd62618190994d16f6cbd23a2bcee64fb1","title":"Add daemon auto-start on first use","description":"Currently users must manually start daemon with 'bd daemon'. For better UX, auto-start daemon when first bd command is run.\n\nImplementation:\n\n1. In PersistentPreRun, check if daemon is running\n2. If not, check if auto-start is enabled (default: true)\n3. Start daemon with appropriate flags (--global if configured)\n4. Wait for socket to be ready (with timeout)\n5. Retry connection to newly-started daemon\n6. Silently fail back to direct mode if daemon won't start\n\nConfiguration:\n- BEADS_AUTO_START_DAEMON env var (default: true)\n- --no-auto-daemon flag to disable\n- Config file option: auto_start_daemon = true\n\nSafety considerations:\n- Don't auto-start if daemon failed recently (exponential backoff)\n- Log auto-start to daemon.log\n- Clear error messages if auto-start fails\n- Never auto-start if --no-daemon flag is set\n\nBenefits:\n- Zero-configuration experience\n- Daemon benefits (speed, multi-repo) automatic\n- Still supports direct mode as fallback\n\nDepends on: Global daemon flag would make this more useful","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-17T20:43:50.961453-07:00","updated_at":"2025-10-21T00:25:40.517251-07:00","closed_at":"2025-10-17T23:33:57.173903-07:00","source_repo":"."} +{"id":"bd-1010","content_hash":"c7e9298d063a59f9fb9f26fdfc931cc0d0c86e848633f2e41aeba34b5e92df59","title":"Agent 1 Batch 4 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.951871-07:00","updated_at":"2025-11-20T12:27:43.355836-05:00","closed_at":"2025-11-20T12:27:43.355836-05:00","source_repo":"."} +{"id":"bd-1011","content_hash":"445c37cd1685ac4893f8e7e2325bc9c5516670abad7ea74e3f8417455f0dc1c5","title":"Agent 1 Batch 5 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.952394-07:00","updated_at":"2025-11-20T12:28:04.21949-05:00","closed_at":"2025-11-20T12:28:04.21949-05:00","source_repo":"."} +{"id":"bd-1012","content_hash":"328ae1d9901c6c9fe892c92c80ad4fb2c5f6e5c69d3b6a251fa59f9c49db7577","title":"Agent 1 Batch 5 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.952916-07:00","updated_at":"2025-11-20T12:27:43.355671-05:00","closed_at":"2025-11-20T12:27:43.355671-05:00","source_repo":"."} +{"id":"bd-1013","content_hash":"9a848691fd4d120253989bc3feff0478d405985efd6e5143b1b3b65a1ca03181","title":"Agent 1 Batch 6 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.953422-07:00","updated_at":"2025-11-20T12:28:04.219314-05:00","closed_at":"2025-11-20T12:28:04.219314-05:00","source_repo":"."} +{"id":"bd-1014","content_hash":"2037133bfb06dc5229e3ea51c1dcc1fe8251898ab2fc7ebd46c814bf5f22e608","title":"Agent 1 Batch 6 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.953906-07:00","updated_at":"2025-11-20T12:27:43.355506-05:00","closed_at":"2025-11-20T12:27:43.355506-05:00","source_repo":"."} +{"id":"bd-1015","content_hash":"f8c279ac0bd10c2760eea69890c4a38260e8a54713b64e587f9d832993c1f39f","title":"Agent 1 Batch 7 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.95442-07:00","updated_at":"2025-11-20T12:28:04.219134-05:00","closed_at":"2025-11-20T12:28:04.219134-05:00","source_repo":"."} +{"id":"bd-1016","content_hash":"b98723e1d2cbacb22a5d9d491ae552db9ff52748d5623ef3df289d550b1c4275","title":"Agent 1 Batch 7 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.954912-07:00","updated_at":"2025-11-20T12:27:43.355317-05:00","closed_at":"2025-11-20T12:27:43.355317-05:00","source_repo":"."} +{"id":"bd-1017","content_hash":"6e6568e9988e4a7137d37e082fe7c3e9ba185d6bfc5d3a661048ac2e7e3e3a3d","title":"Agent 1 Batch 8 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.955421-07:00","updated_at":"2025-11-20T12:28:04.218956-05:00","closed_at":"2025-11-20T12:28:04.218956-05:00","source_repo":"."} +{"id":"bd-1018","content_hash":"e77100a08a5f3eb226fd0688d2dafd3e9223f7458288984a5d2e221eaf4b5d44","title":"Agent 1 Batch 8 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.955904-07:00","updated_at":"2025-11-20T12:27:43.355165-05:00","closed_at":"2025-11-20T12:27:43.355165-05:00","source_repo":"."} +{"id":"bd-1019","content_hash":"ac91af57a51fdf0eacf66f91ad83b0558313f5bb06aa24057ee6db96fabea51a","title":"Agent 1 Batch 9 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.956409-07:00","updated_at":"2025-11-20T12:28:04.2188-05:00","closed_at":"2025-11-20T12:28:04.2188-05:00","source_repo":"."} +{"id":"bd-102","content_hash":"3f966b1f4277beca045400d0b6b4009a82485b34042259cc252c6947d67e5ca9","title":"Add workspace config file for multi-repo management (optional enhancement)","description":"For users who want explicit control over multi-repo setup without daemon, add optional workspace config file.\n\nConfig file: ~/.beads/workspaces.toml\n\nExample:\n[workspaces]\ncurrent = \"global\"\n\n[workspace.global]\ndb = \"~/.beads/global.db\"\ndescription = \"System-wide tasks\"\n\n[workspace.project1] \ndb = \"~/src/project1/.beads/db.sqlite\"\ndescription = \"Main product\"\n\n[workspace.project2]\ndb = \"~/src/project2/.beads/db.sqlite\"\ndescription = \"Internal tools\"\n\nCommands:\nbd workspace list # Show all workspaces\nbd workspace add NAME PATH # Add workspace\nbd workspace remove NAME # Remove workspace \nbd workspace use NAME # Switch active workspace\nbd workspace current # Show current workspace\nbd --workspace NAME \u003ccommand\u003e # Override for single command\n\nImplementation:\n- Load config in PersistentPreRun\n- Override dbPath based on current workspace\n- Store workspace state in config file\n- Support both workspace config AND auto-discovery\n- Workspace config takes precedence over auto-discovery\n\nPriority rationale:\n- Priority 3 (low) because daemon approach already solves this\n- Only implement if users request explicit workspace management\n- Adds complexity vs daemon's automatic discovery\n\nAlternative: Users can use BEADS_DB env var for manual workspace switching today.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-10-17T20:43:52.348572-07:00","updated_at":"2025-10-21T00:25:40.517687-07:00","closed_at":"2025-10-20T16:04:27.216482-07:00","source_repo":"."} +{"id":"bd-1020","content_hash":"a6f8781ae92af038c757aeb0b47dfb57ce2a4ee83bbecd0fbb52e2265a551a25","title":"Agent 1 Batch 9 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.956919-07:00","updated_at":"2025-11-20T12:27:43.355005-05:00","closed_at":"2025-11-20T12:27:43.355005-05:00","source_repo":"."} +{"id":"bd-1021","content_hash":"f1ec76f89adb778985bb8fac083997d75c549d3595f7785f5e2a1935f926bbf7","title":"Agent 1 Batch 10 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.957421-07:00","updated_at":"2025-11-20T12:28:04.218647-05:00","closed_at":"2025-11-20T12:28:04.218647-05:00","source_repo":"."} +{"id":"bd-1022","content_hash":"0b712a337844711597d2dd950d27d4c032a3b746a27f44326d62db740f5944e9","title":"Use external_ref as primary matching key for import updates","description":"Enable re-syncing from external systems (Jira, GitHub, Linear) by using external_ref as the primary matching key during imports. Currently imports treat any content change as a collision, making it impossible to sync updates from external systems without creating duplicates.\n\nSee GH #142 for detailed proposal and implementation plan.\n\nKey changes needed:\n1. Add findByExternalRef() query function\n2. Update DetectCollisions() to match by external_ref first\n3. Update import_shared.go to update existing issues when external_ref matches\n4. Add index on external_ref for performance\n5. Preserve local issues (no external_ref) from being overwritten\n\nThis enables hybrid workflows: import external backlog, break down with local tasks, re-sync anytime.","notes":"## Code Review Complete ✅\n\n**Overall Assessment**: EXCELLENT - Production ready\n\n### Implementation Quality\n- ✓ Clean architecture with proper interface extension\n- ✓ Dual backend support (SQLite + Memory)\n- ✓ Smart matching priority: external_ref → ID → content hash\n- ✓ O(1) lookups with database index\n- ✓ Timestamp-based conflict resolution\n- ✓ Comprehensive test coverage (11 test cases)\n\n### Follow-up Issues Filed\nHigh Priority (P2):\n- bd-897a: Add UNIQUE constraint on external_ref column\n- bd-7315: Add validation for duplicate external_ref in batch imports\n\nMedium Priority (P3):\n- bd-f9a1: Add index usage verification test\n- bd-3f6a: Add concurrent import race condition tests\n\nLow Priority (P4):\n- bd-e166: Improve timestamp comparison readability\n- bd-9e23: Optimize Memory backend with index\n- bd-537e: Add external_ref change tracking\n- bd-df11: Add import metrics\n- bd-9f4a: Document external_ref in content hash\n\n### Key Features\n✅ External systems (Jira, GitHub, Linear) can re-sync without duplicates\n✅ Hybrid workflows: import external backlog, add local tasks, re-sync anytime\n✅ Local issues protected from being overwritten\n✅ Timestamp checking ensures only newer updates applied\n✅ Performance optimized with database index\n\n**Confidence Level**: 95% - Ship it! 🚀","status":"closed","priority":0,"issue_type":"feature","created_at":"2025-10-21T00:29:10.957929-07:00","updated_at":"2025-11-12T10:57:44.246019-08:00","closed_at":"2025-11-02T15:27:44.810375-08:00","source_repo":"."} +{"id":"bd-1023","content_hash":"5037109eefd2184ed74f4f83175c0c29c351896c896d02204179dd5b8586f0ab","title":"Agent 1 Batch 11 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.958477-07:00","updated_at":"2025-11-20T12:28:04.218468-05:00","closed_at":"2025-11-20T12:28:04.218468-05:00","source_repo":"."} +{"id":"bd-1024","content_hash":"4d2ee8fc15478bff994fef598e75b51e42fe041d5fab857a32897369777e1fd3","title":"Agent 1 Batch 11 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.959027-07:00","updated_at":"2025-11-20T12:27:43.354836-05:00","closed_at":"2025-11-20T12:27:43.354836-05:00","source_repo":"."} +{"id":"bd-1025","content_hash":"d6719cf565dc04132f536063ac6c8e26bfc5e409b8ee9d3ca77a9626cf5f6e4e","title":"Agent 1 Batch 12 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.959546-07:00","updated_at":"2025-11-20T12:28:04.218231-05:00","closed_at":"2025-11-20T12:28:04.218231-05:00","source_repo":"."} +{"id":"bd-1026","content_hash":"8edc526aa8682713fbb199d55d359922ca091b7a7f7855c0322c5d4c33e39ae2","title":"Agent 1 Batch 12 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.960084-07:00","updated_at":"2025-11-20T12:27:43.354568-05:00","closed_at":"2025-11-20T12:27:43.354568-05:00","source_repo":"."} +{"id":"bd-1027","content_hash":"0bd73bfb479ed2271e52b7e092f935e3e466e9267ca1a679a3daf652f82b4b83","title":"Agent 1 Batch 13 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.960662-07:00","updated_at":"2025-11-20T12:28:04.218077-05:00","closed_at":"2025-11-20T12:28:04.218077-05:00","source_repo":"."} +{"id":"bd-1028","content_hash":"0a5d91b2bc9ade000d587ece88aba19caee32bb1c698c9089da020edeed8ac11","title":"Agent 1 Batch 13 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.961806-07:00","updated_at":"2025-11-20T12:27:43.354367-05:00","closed_at":"2025-11-20T12:27:43.354367-05:00","source_repo":"."} +{"id":"bd-1029","content_hash":"ff19468bd42e32e36380ae0e4f5ad941cb6d3c2068fef6a44e5df982bd1c1f69","title":"Agent 1 Batch 14 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.962571-07:00","updated_at":"2025-11-20T12:28:04.217876-05:00","closed_at":"2025-11-20T12:28:04.217876-05:00","source_repo":"."} +{"id":"bd-103","content_hash":"fba25471350515eeee18f0955a805c9f964c55541391935ddaacfffb8cced7e9","title":"Add cross-repo issue references (future enhancement)","description":"Support referencing issues across different beads repositories. Useful for tracking dependencies between separate projects.\n\nProposed syntax:\n- Local reference: bd-100 (current behavior)\n- Cross-repo by path: ~/src/other-project#bd-456\n- Cross-repo by workspace name: @project2:bd-789\n\nUse cases:\n1. Frontend project depends on backend API issue\n2. Shared library changes blocking multiple projects\n3. System administrator tracking work across machines\n4. Monorepo with separate beads databases per component\n\nImplementation challenges:\n- Storage layer needs to query external databases\n- Dependency resolution across repos\n- What if external repo not available?\n- How to handle in JSONL export/import?\n- Security: should repos be able to read others?\n\nDesign questions to resolve first:\n1. Read-only references vs full cross-repo dependencies?\n2. How to handle repo renames/moves?\n3. Absolute paths vs workspace names vs git remotes?\n4. Should bd-43 auto-discover related repos?\n\nRecommendation: \n- Gather user feedback first\n- Start with read-only references\n- Implement as plugin/extension?\n\nContext: This is mentioned in bd-43 as approach #2. Much more complex than daemon multi-repo approach. Only implement if there's strong user demand.\n\nPriority: Backlog (4) - wait for user feedback before designing","status":"closed","priority":4,"issue_type":"feature","created_at":"2025-10-17T20:43:54.04594-07:00","updated_at":"2025-10-21T00:25:40.518003-07:00","closed_at":"2025-10-20T22:00:31.966891-07:00","source_repo":"."} +{"id":"bd-1030","content_hash":"8ac001f178be9f0c94fa1a34d375372e18f396b72de9b3713c6324759a46258f","title":"Agent 1 Batch 14 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.963245-07:00","updated_at":"2025-11-20T12:27:43.354205-05:00","closed_at":"2025-11-20T12:27:43.354205-05:00","source_repo":"."} +{"id":"bd-1031","content_hash":"d2a6c387b648be68eb088d912e07674bca3bb1c878f4a89ca874b80b4a835633","title":"Agent 1 Batch 15 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.964384-07:00","updated_at":"2025-11-20T12:28:04.217722-05:00","closed_at":"2025-11-20T12:28:04.217722-05:00","source_repo":"."} +{"id":"bd-1032","content_hash":"0eaeb60a4f075bef6d41574c896bd783a401b14a7e66797f246ebc3c42ec3a22","title":"Agent 1 Batch 15 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.965279-07:00","updated_at":"2025-11-20T12:27:43.354046-05:00","closed_at":"2025-11-20T12:27:43.354046-05:00","source_repo":"."} +{"id":"bd-1033","content_hash":"52e7d8243c336605a28ac69a6df23fbc8a6a399247988727bb8cd7979ff11dd2","title":"Agent 1 Batch 16 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.965925-07:00","updated_at":"2025-11-20T12:28:04.217571-05:00","closed_at":"2025-11-20T12:28:04.217571-05:00","source_repo":"."} +{"id":"bd-1034","content_hash":"13df64b2084cc2c2b84d4069463bccd86abeadda950572e107037bab0a7a26c3","title":"Agent 1 Batch 16 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.966573-07:00","updated_at":"2025-11-20T12:27:43.35389-05:00","closed_at":"2025-11-20T12:27:43.35389-05:00","source_repo":"."} +{"id":"bd-1035","content_hash":"a3de39b969c8a2264cf675f78453e65df30101aa760584740d451d72b60acf6d","title":"Agent 1 Batch 17 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.967208-07:00","updated_at":"2025-11-20T12:28:04.217416-05:00","closed_at":"2025-11-20T12:28:04.217416-05:00","source_repo":"."} +{"id":"bd-1036","content_hash":"dc13ae398c1145776ca5b2605ecf321d272d95028d52357915753466fe2d7d46","title":"Agent 1 Batch 17 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.967804-07:00","updated_at":"2025-11-20T12:27:43.353743-05:00","closed_at":"2025-11-20T12:27:43.353743-05:00","source_repo":"."} +{"id":"bd-1037","content_hash":"556495382b607b56b1307c9c8b2ed646140af47ebd23b194bcef06cd1c504ce1","title":"Agent 1 Batch 18 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.968447-07:00","updated_at":"2025-11-20T12:28:04.217215-05:00","closed_at":"2025-11-20T12:28:04.217215-05:00","source_repo":"."} +{"id":"bd-1038","content_hash":"7eb32dcbb5c682212d05b3c27d1e5de77a077669ab3b1a5dacfb320145dd380d","title":"Agent 1 Batch 18 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.969047-07:00","updated_at":"2025-11-20T12:27:43.353588-05:00","closed_at":"2025-11-20T12:27:43.353588-05:00","source_repo":"."} +{"id":"bd-1039","content_hash":"9ad38280ddf41e22893c346c0d14093ed3c81bca8681787747455e936c703ab2","title":"Agent 1 Batch 19 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.969693-07:00","updated_at":"2025-11-20T12:28:04.217061-05:00","closed_at":"2025-11-20T12:28:04.217061-05:00","source_repo":"."} +{"id":"bd-104","content_hash":"c27d3a1fd19139edc8943ab411373d2b91f7c1e092ae05378e203c7270b6070d","title":"Add batch deletion command for issues","description":"Support deleting multiple issues efficiently instead of one at a time.\n\n**Use Cases:**\n- Cleaning up duplicate/spam issues (e.g., bd-83 to bd-93 watchdog spam)\n- Removing test-only issues after feature removal\n- Bulk cleanup of obsolete/spurious bugs\n- Renumbering prep: delete ranges before compaction\n\n**Proposed Syntax Options:**\n\n**Option 1: Multiple IDs as arguments**\n```bash\nbd delete vc-1 vc-2 vc-3 --force\nbd delete vc-{1..20} --force # Shell expansion\n```\n\n**Option 2: Read from file (RECOMMENDED)**\n```bash\nbd delete --from-file deletions.txt --force --dry-run # Preview\nbd delete --from-file deletions.txt --force # Execute\n# File format: one issue ID per line\n```\n\n**Option 3: Query-based deletion**\n```bash\nbd delete --where \"priority=3 AND type=chore\" --force\nbd delete --label test-only --force\nbd delete --prefix bd- --status open --force\n```\n\n**Must-Have Features:**\n\n1. **Dry-run mode**: `--dry-run` to preview what would be deleted\n - Show issue IDs, titles, dependency counts\n - Warn about issues with dependents\n\n2. **Dependency handling**:\n - `--cascade`: Delete dependents recursively\n - `--force`: Delete even if dependents exist (orphans them)\n - Default: Fail if any issue has dependents\n\n3. **Summary output**:\n ```\n Deleted 162 issues\n Removed 347 dependencies\n Removed 89 labels\n Orphaned 5 issues (use --cascade to delete)\n ```\n\n4. **Transaction safety**: All-or-nothing for file/query input\n - Either all deletions succeed or none do\n - Rollback on error\n\n**Nice-to-Have Features:**\n\n1. **Interactive confirmation** for large batches (\u003e10 issues)\n ```\n About to delete 162 issues. Continue? [y/N]\n (Use --force to skip confirmation)\n ```\n\n2. **Progress indicator** for large batches (\u003e50 deletions)\n ```\n Deleting issues... [####------] 42/162 (26%)\n ```\n\n3. **Undo support**:\n ```bash\n bd undelete --last-batch # Restore from snapshots\n bd undelete bd-83 # Restore single issue\n ```\n\n**Implementation Notes:**\n\n- Leverage existing `DeleteIssue()` in storage layer\n- Wrap in transaction for atomicity\n- Consider adding `DeleteIssues(ctx, []string)` for efficiency\n- May need to query dependents before deletion\n- File format should support comments (#) and blank lines\n- JSON output mode should list all deleted IDs\n\n**Example Workflow:**\n```bash\n# Identify issues to delete\nbd list --label test-only --json | jq -r '.[].id' \u003e /tmp/delete.txt\n\n# Preview deletion\nbd delete --from-file /tmp/delete.txt --dry-run\n\n# Execute with cascade\nbd delete --from-file /tmp/delete.txt --cascade --force\n\n# Verify\nbd stats\n```\n\n**Security Considerations:**\n- Require explicit `--force` flag to prevent accidents\n- Warn when deleting issues with dependencies\n- Log deletions to audit trail\n- Consider requiring confirmation for \u003e100 deletions even with --force\n\n**Requested by:** Another agent during cleanup of bd-83 to bd-93 watchdog spam","notes":"Fixed critical issues found in code review:\n1. Dry-run mode now properly uses dryRun parameter instead of deleting data\n2. Text references are pre-collected before deletion so they update correctly\n3. Added orphan deduplication to prevent duplicate IDs\n4. Added rows.Err() checks in all row iteration loops\n5. Updated defer to ignore rollback error per Go best practices","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-17T20:49:30.921943-07:00","updated_at":"2025-10-21T00:25:40.518242-07:00","closed_at":"2025-10-17T21:03:29.165515-07:00","source_repo":"."} +{"id":"bd-1040","content_hash":"67d03c480e720452d977429a5640ea7a2195e0444d4b7690a8eab901206f4559","title":"Agent 1 Batch 19 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.970303-07:00","updated_at":"2025-11-20T12:27:43.353431-05:00","closed_at":"2025-11-20T12:27:43.353431-05:00","source_repo":"."} +{"id":"bd-1041","content_hash":"0a008295d7d3c6c4b46c40e10b6eadbd08ea674d391c9c3714912ba0253313e9","title":"Agent 1 Batch 20 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.970941-07:00","updated_at":"2025-11-20T12:28:04.216907-05:00","closed_at":"2025-11-20T12:28:04.216907-05:00","source_repo":"."} +{"id":"bd-1042","content_hash":"41f9a43621582fefd135000ce9e85a5a5f9211b707b19d903afe28676c1a5dc1","title":"Agent 1 Batch 20 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.97165-07:00","updated_at":"2025-11-20T12:27:43.353275-05:00","closed_at":"2025-11-20T12:27:43.353275-05:00","source_repo":"."} +{"id":"bd-1043","content_hash":"1ee2b12103192432bcd33cc0198ff9509a67625d070110155507a597e7d3f25a","title":"Agent 1 Batch 21 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.972284-07:00","updated_at":"2025-11-20T12:28:04.216755-05:00","closed_at":"2025-11-20T12:28:04.216755-05:00","source_repo":"."} +{"id":"bd-1044","content_hash":"df64d795dd9d069b8eccc4ad683cf18c114381ea40cdd45816b36bc9339ab8e1","title":"Agent 1 Batch 21 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.972854-07:00","updated_at":"2025-11-20T12:27:43.353119-05:00","closed_at":"2025-11-20T12:27:43.353119-05:00","source_repo":"."} +{"id":"bd-1045","content_hash":"62587242caf68a4d002f7e7e6bc750f9043ba7f955514b3bb0c30c7dc5972b64","title":"Agent 0 Batch 0 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.947563-07:00","updated_at":"2025-11-20T12:28:04.220511-05:00","closed_at":"2025-11-20T12:28:04.220511-05:00","source_repo":"."} +{"id":"bd-1046","content_hash":"a7bce8c2abf87751cdee9e396ace2a1e0e569144ebd3197a07dbb312e2171333","title":"Agent 0 Batch 0 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.974431-07:00","updated_at":"2025-11-20T12:27:43.352965-05:00","closed_at":"2025-11-20T12:27:43.352965-05:00","source_repo":"."} +{"id":"bd-1047","content_hash":"7ffd7ca7bcf89c8c1893d7506bea014678af91b2d257367903b886ce5e2699a9","title":"Agent 0 Batch 1 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.975076-07:00","updated_at":"2025-11-20T12:28:04.216392-05:00","closed_at":"2025-11-20T12:28:04.216392-05:00","source_repo":"."} +{"id":"bd-1048","content_hash":"1a889d79a98f8c0919f99094736ee7c856c6d8a2ee062a0add49ce2c06c40174","title":"Daemon crashes silently on RPC query after startup","description":"The daemon fails to handle 'show' RPC commands when:\n1) JSONL is newer than database (needs import)\n2) git pull fails due to uncommitted changes\n\nSymptoms:\n- Daemon appears to run (ps shows process)\n- 'bd list' and other commands work fine \n- 'bd show \u003cid\u003e' returns \"failed to read response: EOF\"\n- No panic or error logged in daemon.log\n\nRoot cause likely: auto-import deadlock or state corruption when import is blocked by git conflicts.\n\nWorkaround: \n- Restart daemon after syncing git state (commit/push changes)\n- OR use --no-daemon flag for all commands\n\nThe panic recovery added in server_lifecycle_conn.go:183 didn't catch any panics, confirming this isn't a panic-based crash.","notes":"Root cause found and fixed: Two bugs - (1) nil pointer check missing in handleShow causing panic, (2) double JSON encoding in show.go ID resolution. Both fixed. bd show now works with daemon.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.975614-07:00","updated_at":"2025-11-12T10:57:44.248948-08:00","closed_at":"2025-11-03T12:08:12.947676-08:00","source_repo":"."} +{"id":"bd-1049","content_hash":"c8eab000f4980e4f90ba20814b490ff1001490b6df81c8d46f8a77e6c25b27a4","title":"Agent 0 Batch 2 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.976188-07:00","updated_at":"2025-11-20T12:28:04.216238-05:00","closed_at":"2025-11-20T12:28:04.216238-05:00","source_repo":"."} +{"id":"bd-105","content_hash":"19462d1627d026acf9150642b857ae0771be5760d2ab90e8b41b042ce39b7e17","title":"bd list shows 0 issues despite database containing 115 issues","description":"When running 'bd list --status all' it shows 'Found 0 issues' even though 'bd stats' shows 115 total issues and 'sqlite3 .beads/vc.db \"SELECT COUNT(*) FROM issues\"' returns 115.\n\nReproduction:\n1. cd ~/src/vc/vc\n2. bd stats # Shows 115 issues\n3. bd list --status all # Shows 0 issues\n4. sqlite3 .beads/vc.db 'SELECT COUNT(*) FROM issues;' # Shows 115\n\nExpected: bd list should show all 115 issues\nActual: Shows 'Found 0 issues:'\n\nThis occurs with both /opt/homebrew/bin/bd (v0.9.9) and ~/src/vc/adar/beads/bd (v0.9.10)","design":"Possible causes:\n- Default filter excluding all issues\n- Database query issue in list command\n- Auto-discovery finding wrong database (but stats works?)\n- Recent deletion operation corrupted some index","acceptance_criteria":"bd list --status all shows all issues that bd stats counts","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-17T21:19:08.225181-07:00","updated_at":"2025-10-21T00:25:40.518477-07:00","closed_at":"2025-10-17T21:55:40.788625-07:00","source_repo":"."} +{"id":"bd-1050","content_hash":"1c6ca381a2f4f492380653264e269b8d9ee0b60290f1d77f289836c6d5894aac","title":"Agent 0 Batch 2 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.976721-07:00","updated_at":"2025-11-20T12:27:43.352816-05:00","closed_at":"2025-11-20T12:27:43.352816-05:00","source_repo":"."} +{"id":"bd-1051","content_hash":"c5ab9c96692915bdb48ce4731ffdc97d97cb3c418bfd6313974a411c23a03a0d","title":"Agent 0 Batch 3 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.977243-07:00","updated_at":"2025-11-20T12:28:04.216031-05:00","closed_at":"2025-11-20T12:28:04.216031-05:00","source_repo":"."} +{"id":"bd-1052","content_hash":"009741fd86f2f159f31dd23c7128b90dc08c96b138cfab101d5adefa254f0474","title":"Agent 0 Batch 3 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.977746-07:00","updated_at":"2025-11-20T12:27:43.352661-05:00","closed_at":"2025-11-20T12:27:43.352661-05:00","source_repo":"."} +{"id":"bd-1053","content_hash":"064586394b862e2d0a4fc436858549d3cd2c9324f74a589c4f52bd7e401e37a4","title":"Agent 0 Batch 4 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.978288-07:00","updated_at":"2025-11-20T12:28:04.215836-05:00","closed_at":"2025-11-20T12:28:04.215836-05:00","source_repo":"."} +{"id":"bd-1054","content_hash":"17c6dda558aa2ac346aa7eb7bbab2838aa980155cea4de617468df2c9c2e00b3","title":"Agent 0 Batch 4 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.978933-07:00","updated_at":"2025-11-20T12:27:43.352506-05:00","closed_at":"2025-11-20T12:27:43.352506-05:00","source_repo":"."} +{"id":"bd-1055","content_hash":"0efadb1d8ed8812bb5eaaeaf09b02514cf4e9fbdff43abd026dd9b0925c1d601","title":"Agent 0 Batch 5 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.97963-07:00","updated_at":"2025-11-20T12:28:04.21568-05:00","closed_at":"2025-11-20T12:28:04.21568-05:00","source_repo":"."} +{"id":"bd-1056","content_hash":"da5b6a3c750e0ec8ecfff4c959c273661449a3dd43847ab8a69fc6623609adaa","title":"Agent 0 Batch 5 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.980196-07:00","updated_at":"2025-11-20T12:27:43.352338-05:00","closed_at":"2025-11-20T12:27:43.352338-05:00","source_repo":"."} +{"id":"bd-1057","content_hash":"55e7467bf2a68dbb6b5c435babc33c0e6c1e1316b5aae0aa8f963871e586aa43","title":"Agent 3 Batch 0 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.947273-07:00","updated_at":"2025-11-20T12:28:04.220866-05:00","closed_at":"2025-11-20T12:28:04.220866-05:00","source_repo":"."} +{"id":"bd-1058","content_hash":"514a476a6ee8b60775a377bbbb93ed61afaae5c7b1ff96fe1c431332f11971e9","title":"Agent 3 Batch 0 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.981378-07:00","updated_at":"2025-11-20T12:27:43.352176-05:00","closed_at":"2025-11-20T12:27:43.352176-05:00","source_repo":"."} +{"id":"bd-1059","content_hash":"3ce32d2d2dfab8411fc5f6a362e41382cece11d9fe83dc4ac985859e3f378e49","title":"Agent 0 Batch 6 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.980807-07:00","updated_at":"2025-11-20T12:28:04.215523-05:00","closed_at":"2025-11-20T12:28:04.215523-05:00","source_repo":"."} +{"id":"bd-106","content_hash":"49041047664a3b94d37f4c4f256cabab8df1ea7b7e3c9410fa6fe53bd760f74b","title":"Confusing version mismatch warnings with contradictory messages","description":"The version mismatch warning shows contradictory messages depending on which binary version is used:\n\nWhen using v0.9.10 binary with v0.9.9 database:\n'Your bd binary (v0.9.10) differs from the database version (v0.9.9)'\n'Your binary appears to be OUTDATED.'\n\nWhen using v0.9.9 binary with v0.9.10 database:\n'Your bd binary (v0.9.9) differs from the database version (v0.9.10)'\n'Your binary appears NEWER than the database.'\n\nThe first message is incorrect - v0.9.10 \u003e v0.9.9, so the binary is NEWER, not outdated.\n\nReproduction:\n1. Use ~/src/vc/adar/beads/bd (v0.9.10) with a v0.9.9 database\n2. Observe warning says binary is OUTDATED when it's actually newer\n\nExpected: Correct version comparison\nActual: Inverted comparison logic","design":"Fix version comparison in warning message generation. Should compare semantic versions correctly.","acceptance_criteria":"Warning correctly identifies which component (binary vs database) is newer/older","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-17T21:19:19.540274-07:00","updated_at":"2025-10-21T00:25:40.518687-07:00","closed_at":"2025-10-17T22:14:27.015397-07:00","source_repo":"."} +{"id":"bd-1060","content_hash":"a77ede76bc79fe52ffb5b345cab79f572e9f6a758b88f1dd7f611368d8a12166","title":"Agent 0 Batch 6 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.982512-07:00","updated_at":"2025-11-20T12:27:43.352015-05:00","closed_at":"2025-11-20T12:27:43.352015-05:00","source_repo":"."} +{"id":"bd-1061","content_hash":"e3033646f3c0982392928c6aec80a1d4adf9143cb40e16a873c1737ffea687df","title":"Agent 3 Batch 1 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.981979-07:00","updated_at":"2025-11-20T12:28:04.215366-05:00","closed_at":"2025-11-20T12:28:04.215366-05:00","source_repo":"."} +{"id":"bd-1062","content_hash":"df2781f5a841e518dd5e29ecd21e468ee1a3f68de5829e1cb89b059a052919d8","title":"Agent 3 Batch 1 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.983712-07:00","updated_at":"2025-11-20T12:27:43.351851-05:00","closed_at":"2025-11-20T12:27:43.351851-05:00","source_repo":"."} +{"id":"bd-1063","content_hash":"38084d13dc0389fa4e1b385bd92035d9b6b6a20b7fc51cc2d8368df48d964949","title":"Agent 3 Batch 2 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.984373-07:00","updated_at":"2025-11-20T12:28:04.21505-05:00","closed_at":"2025-11-20T12:28:04.21505-05:00","source_repo":"."} +{"id":"bd-1064","content_hash":"e6a2d6d2bc26439891416acdfeb53658441cf053ade17b3bbbe8b4a3e08846a3","title":"Agent 3 Batch 2 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.984965-07:00","updated_at":"2025-11-20T12:27:43.351677-05:00","closed_at":"2025-11-20T12:27:43.351677-05:00","source_repo":"."} +{"id":"bd-1065","content_hash":"4e640fcfc86d40e7b05456d2a84ac2a4e2e66b4feba9c5767cf039b98fe74425","title":"Agent 3 Batch 3 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.985593-07:00","updated_at":"2025-11-20T12:28:04.214896-05:00","closed_at":"2025-11-20T12:28:04.214896-05:00","source_repo":"."} +{"id":"bd-1066","content_hash":"c48478d6f788d7bc43344c4e8fe6b0e22c018363a2c22c2091161687bdb89271","title":"Agent 3 Batch 3 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.986144-07:00","updated_at":"2025-11-20T12:27:43.351477-05:00","closed_at":"2025-11-20T12:27:43.351477-05:00","source_repo":"."} +{"id":"bd-1067","content_hash":"43db2648d01feb94081cfa6918e728312d3f4ea3868dcd52c75daa27645c8f08","title":"Agent 3 Batch 4 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.986729-07:00","updated_at":"2025-11-20T12:28:04.214732-05:00","closed_at":"2025-11-20T12:28:04.214732-05:00","source_repo":"."} +{"id":"bd-1068","content_hash":"4ce9ece84ba646d5d2c2c45170502f6a6b1c3dcecfae6c5391ee259e5a49312c","title":"Agent 3 Batch 4 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.987275-07:00","updated_at":"2025-11-20T12:27:43.351211-05:00","closed_at":"2025-11-20T12:27:43.351211-05:00","source_repo":"."} +{"id":"bd-1069","content_hash":"8ffc28fe08af345597a87d4e01367a5b4aeea8dd5be82fd9f74d22bbfabaabf9","title":"Agent 3 Batch 5 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.987833-07:00","updated_at":"2025-11-20T12:28:04.214575-05:00","closed_at":"2025-11-20T12:28:04.214575-05:00","source_repo":"."} +{"id":"bd-107","content_hash":"ae9cdf08bc86c93f964049f1a8b4640b005ccc253afcde1bf3e9a0f01330a854","title":"bd renumber removes issues with different prefix than majority","description":"The 'bd renumber' command appears to remove issues that have a different prefix than the majority of issues.\n\nReproduction:\n1. Database has 115 vc- issues and 2 bd- issues (bd-95, bd-96)\n2. Run: bd renumber --force\n3. Result: Only vc- issues remain, bd-95 and bd-96 are deleted\n\nExpected: All issues should be renumbered, regardless of prefix\nActual: Issues with minority prefix are removed\n\nEvidence:\n- Before renumber: 117 issues total (115 vc-, 2 bd-)\n- After renumber: 115 issues total (115 vc-, 0 bd-)\n- bd-95 was 'Fix compilation errors in mission orchestrator test' (closed)\n- bd-96 was 'Fix bool pointer literal errors' (in_progress)\n\nThis is data loss - active work (bd-96 was in_progress) was silently deleted.","design":"Renumber should handle mixed prefixes:\n1. Group issues by prefix\n2. Renumber each group independently\n3. Or: fail if multiple prefixes detected with helpful error\n4. Or: add --prefix flag to specify which prefix to renumber\n\nNever silently delete issues.","acceptance_criteria":"Renumber preserves all issues regardless of prefix, or fails with clear error message","notes":"Not a bug - mixed prefixes in one database is user error. Filed bd-110 for proper validation instead.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-17T21:43:07.800716-07:00","updated_at":"2025-10-21T00:25:40.5189-07:00","closed_at":"2025-10-17T21:46:26.813512-07:00","source_repo":"."} +{"id":"bd-1070","content_hash":"609f236ece5609670b3a3798fbeb443d4ee3dd186cb7f78e6608ef3472ea3c5b","title":"Agent 3 Batch 5 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.98839-07:00","updated_at":"2025-11-20T12:27:43.351028-05:00","closed_at":"2025-11-20T12:27:43.351028-05:00","source_repo":"."} +{"id":"bd-1071","content_hash":"7809f8d2e5c511609b7a595d3374a556e808610d5269183516cf2b5cace94f7a","title":"Agent 3 Batch 6 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.988942-07:00","updated_at":"2025-11-20T12:28:04.214418-05:00","closed_at":"2025-11-20T12:28:04.214418-05:00","source_repo":"."} +{"id":"bd-1072","content_hash":"afb546bd2598c0630fb4e1ca246c6361bfd6048d3de64cc44783809bb1390482","title":"Agent 3 Batch 6 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.989753-07:00","updated_at":"2025-11-20T12:27:43.350876-05:00","closed_at":"2025-11-20T12:27:43.350876-05:00","source_repo":"."} +{"id":"bd-1073","content_hash":"5b4e130cddae609296f6634c81ecdf743d876fff40ee13ca04d0b211957d1872","title":"Agent 3 Batch 7 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.990357-07:00","updated_at":"2025-11-20T12:28:04.214259-05:00","closed_at":"2025-11-20T12:28:04.214259-05:00","source_repo":"."} +{"id":"bd-1074","content_hash":"606c23643eb74255e1f92712d47b788f47b2356acf12bca97d41cbbd9d77e52b","title":"Agent 3 Batch 7 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.990877-07:00","updated_at":"2025-11-20T12:27:43.350723-05:00","closed_at":"2025-11-20T12:27:43.350723-05:00","source_repo":"."} +{"id":"bd-1075","content_hash":"d5fd86dbd0fc9d20c1fd597647ea2cb1873a60d6e61d274f91df8e0a110bda0f","title":"Agent 3 Batch 8 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.991431-07:00","updated_at":"2025-11-20T12:28:04.214097-05:00","closed_at":"2025-11-20T12:28:04.214097-05:00","source_repo":"."} +{"id":"bd-1076","content_hash":"3e70b3e84928c6dbf86eda667700affa76487a5c09361c98339f6fa14ad1036a","title":"Agent 3 Batch 8 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.991966-07:00","updated_at":"2025-11-20T12:27:43.350572-05:00","closed_at":"2025-11-20T12:27:43.350572-05:00","source_repo":"."} +{"id":"bd-1077","content_hash":"70ea2f9a48b5c13b551d9fda0e0996ad9440738384ce952a2639e1ef44644271","title":"Agent 3 Batch 9 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.992559-07:00","updated_at":"2025-11-20T12:28:04.213928-05:00","closed_at":"2025-11-20T12:28:04.213928-05:00","source_repo":"."} +{"id":"bd-1078","content_hash":"315bd4b14bc7fae4b8e97e15c93e327cd494edb169010408a4fd06336b81d91b","title":"Agent 3 Batch 9 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.993099-07:00","updated_at":"2025-11-20T12:27:43.350408-05:00","closed_at":"2025-11-20T12:27:43.350408-05:00","source_repo":"."} +{"id":"bd-1079","content_hash":"65eff842361a7cb3456ac3176ac125ed976787f1dce32fe1aac7fd9de2dea1dd","title":"Agent 3 Batch 10 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.993679-07:00","updated_at":"2025-11-20T12:28:04.213722-05:00","closed_at":"2025-11-20T12:28:04.213722-05:00","source_repo":"."} +{"id":"bd-108","content_hash":"5d348c7d9bc0a4d0bd844b1eed5d838a1fd19144ce549f30c95f7228a540e747","title":"Validate issue prefix matches database prefix on create","description":"Users can accidentally create issues with the wrong prefix (e.g., creating 'bd-95' in the vc tracker instead of the beads tracker).\n\nThis causes problems:\n- Issues appear in wrong project\n- Renumbering silently removes them (correct behavior, but surprising)\n- Confusion about which tracker owns the issue\n\nEvidence from vc project:\n- bd-95 and bd-96 were created in ~/src/vc/vc/.beads/vc.db (should use vc- prefix)\n- These were silently removed during renumbering (working as intended)\n- But user didn't realize they were in wrong database until too late\n\nRoot cause: User was in vc directory but created issues with bd- prefix, probably because they were beads-related fixes.","design":"Options:\n\n1. **Strict validation (recommended)**:\n - Detect database prefix from existing issues or .beads/*.db filename\n - Reject 'bd create' if prefix doesn't match\n - Error: 'This database uses prefix vc-, but you tried to create bd-X. Use --force to override.'\n\n2. **Auto-correct prefix**:\n - 'bd create' in vc database always uses vc- prefix regardless of what user intended\n - Warning: 'Auto-corrected prefix from bd- to vc-'\n\n3. **Multiple prefix support**:\n - Allow multiple prefixes per database\n - Group by prefix during renumbering\n - Complexity not worth it\n\nPrefer option 1 - fail fast with clear error.","acceptance_criteria":"Creating an issue with wrong prefix fails with helpful error message explaining the mismatch","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-17T21:46:27.204648-07:00","updated_at":"2025-10-21T00:25:40.51914-07:00","closed_at":"2025-10-20T16:02:31.889229-07:00","source_repo":"."} +{"id":"bd-1080","content_hash":"accc987871f549bda8efbebb3fb00d4fa9558c1f479213720c98ab4789c90ba5","title":"Agent 3 Batch 10 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.99419-07:00","updated_at":"2025-11-20T12:27:43.350258-05:00","closed_at":"2025-11-20T12:27:43.350258-05:00","source_repo":"."} +{"id":"bd-1081","content_hash":"a210f1f515c114bc47948e223cef02260f06f4b83e7fb1058a9af5ef0b9ffb86","title":"Agent 1 Batch 22 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.97363-07:00","updated_at":"2025-11-20T12:28:04.216574-05:00","closed_at":"2025-11-20T12:28:04.216574-05:00","source_repo":"."} +{"id":"bd-1082","content_hash":"a49bcc7c41442ed3fda356ac1cdc639aa8eecb3c0dff111a36b45bbff0bbcf98","title":"Agent 1 Batch 22 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.995302-07:00","updated_at":"2025-11-20T12:27:43.350105-05:00","closed_at":"2025-11-20T12:27:43.350105-05:00","source_repo":"."} +{"id":"bd-1083","content_hash":"3392214c4f6ba3d89fcb0bd12e8fba6550a68c31c0ce9c12104d4a88b658a6f0","title":"Agent 3 Batch 11 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.994767-07:00","updated_at":"2025-11-20T12:28:04.21351-05:00","closed_at":"2025-11-20T12:28:04.21351-05:00","source_repo":"."} +{"id":"bd-1084","content_hash":"c008a6de3100c4fb7e5c46251fcc81a349b6d59bea43e47271df60bc414f0f93","title":"Agent 3 Batch 11 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.996359-07:00","updated_at":"2025-11-20T12:27:43.349845-05:00","closed_at":"2025-11-20T12:27:43.349845-05:00","source_repo":"."} +{"id":"bd-1085","content_hash":"7a5b2213c0b25976cf7dfd0785dadef00c430a76d8fb2672a546c9aa26905dd4","title":"Agent 1 Batch 23 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.995869-07:00","updated_at":"2025-11-20T12:28:04.213319-05:00","closed_at":"2025-11-20T12:28:04.213319-05:00","source_repo":"."} +{"id":"bd-1086","content_hash":"d57eab54d4cbe71dda4888d4574bb19e8b26cd121564fc6558f6d77de6f10677","title":"Agent 1 Batch 23 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.997449-07:00","updated_at":"2025-11-20T12:27:43.34969-05:00","closed_at":"2025-11-20T12:27:43.34969-05:00","source_repo":"."} +{"id":"bd-1087","content_hash":"dac90e0f63f5a353a23d99b315aac308bd46e85eee8ab204b958ea94d191796e","title":"Agent 3 Batch 12 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.996933-07:00","updated_at":"2025-11-20T12:28:04.212945-05:00","closed_at":"2025-11-20T12:28:04.212945-05:00","source_repo":"."} +{"id":"bd-1088","content_hash":"be1d9a4aba457be4f91ad707d76fbe0aa64f9275202700876bc4935671159519","title":"Agent 3 Batch 12 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.998552-07:00","updated_at":"2025-11-20T12:27:43.349504-05:00","closed_at":"2025-11-20T12:27:43.349504-05:00","source_repo":"."} +{"id":"bd-1089","content_hash":"73d155a6d6feef453654e728445f596e70030543b9434bd762ba3ce68e4ed942","title":"Agent 1 Batch 24 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.998034-07:00","updated_at":"2025-11-20T12:28:04.2121-05:00","closed_at":"2025-11-20T12:28:04.2121-05:00","source_repo":"."} +{"id":"bd-109","content_hash":"50fa7d70c540e6622920c23921aa53d63d661d852f9436e05c5049410433d08c","title":"bd delete panics with nil pointer when daemon is running","description":"When the daemon is running (daemonClient != nil), the delete command panics with nil pointer dereference because it tries to use the global store variable which is nil.\n\nThe PersistentPreRun in main.go returns early when daemon is connected (line 104), skipping store initialization. But delete.go:92 calls store.GetIssue() without checking if store is nil or if it should use daemonClient instead.\n\nReproduction:\n1. Start daemon: bd daemon start\n2. Try to delete: bd delete bd-130 --force\n3. Panic: runtime error: invalid memory address or nil pointer dereference\n\nRoot cause: Missing daemon fallback pattern that other commands use (see ready.go:135-143)","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-17T22:06:03.968082-07:00","updated_at":"2025-10-21T00:25:40.519338-07:00","closed_at":"2025-10-17T22:06:08.606287-07:00","source_repo":"."} +{"id":"bd-1090","content_hash":"f49df0ac0e7734de92f6c3017ed1eb1d69374f4cddc68f0684d8c51aec42aad5","title":"Agent 1 Batch 24 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:10.999617-07:00","updated_at":"2025-11-20T12:27:43.349287-05:00","closed_at":"2025-11-20T12:27:43.349287-05:00","source_repo":"."} +{"id":"bd-1091","content_hash":"437347a8c1ef594f17a3430037222013b0dd02a9a23ba7a264b2ffcaaa540351","title":"Agent 3 Batch 13 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.999095-07:00","updated_at":"2025-11-20T12:27:59.022904-05:00","closed_at":"2025-11-20T12:27:59.022904-05:00","source_repo":"."} +{"id":"bd-1092","content_hash":"090c46a01870d53889a376a152435072a215e4ab978a1bc9c3195cb28ff3d260","title":"Agent 3 Batch 13 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.000772-07:00","updated_at":"2025-11-20T12:27:43.34911-05:00","closed_at":"2025-11-20T12:27:43.34911-05:00","source_repo":"."} +{"id":"bd-1093","content_hash":"88ef818a7ab1ee11432aebb0e7767f24cab7f350c40f05799329241c88b4d80f","title":"Agent 1 Batch 25 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.000196-07:00","updated_at":"2025-11-20T12:27:59.022725-05:00","closed_at":"2025-11-20T12:27:59.022725-05:00","source_repo":"."} +{"id":"bd-1094","content_hash":"6b83466ce7f7b7b2379942776d709f597d460f8e4d0e5d553d235bd840add746","title":"Agent 1 Batch 25 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.001974-07:00","updated_at":"2025-11-20T12:27:43.348901-05:00","closed_at":"2025-11-20T12:27:43.348901-05:00","source_repo":"."} +{"id":"bd-1095","content_hash":"648d30a66ec6ec93b956e2ab578631d1042f5a42995945c1f1857b69e9cf9dd8","title":"Agent 3 Batch 14 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.001408-07:00","updated_at":"2025-11-20T12:27:59.02254-05:00","closed_at":"2025-11-20T12:27:59.02254-05:00","source_repo":"."} +{"id":"bd-1096","content_hash":"8becd264589d57b61be3a60e0bc5827c417c6063a3ad31d2b52b060ea58a06c0","title":"Agent 3 Batch 14 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.003108-07:00","updated_at":"2025-11-20T12:27:43.348704-05:00","closed_at":"2025-11-20T12:27:43.348704-05:00","source_repo":"."} +{"id":"bd-1097","content_hash":"7724f951cab1771ccf1b77a4e6a7e95e813e23a2eac4e6ff8c5e23cfdc58cae2","title":"Agent 1 Batch 26 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.002558-07:00","updated_at":"2025-11-20T12:27:59.022391-05:00","closed_at":"2025-11-20T12:27:59.022391-05:00","source_repo":"."} +{"id":"bd-1098","content_hash":"a6c2a1aa593b134557f2559550fb7b197cd97f2c2aa29c22efab7900a6884d17","title":"Agent 1 Batch 26 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.004273-07:00","updated_at":"2025-11-20T12:27:43.348369-05:00","closed_at":"2025-11-20T12:27:43.348369-05:00","source_repo":"."} +{"id":"bd-1099","content_hash":"e23426870a9e7c09982a80213116b130f998da02fd9600ded63e745d5387103b","title":"Agent 3 Batch 15 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.00372-07:00","updated_at":"2025-11-20T12:27:59.022231-05:00","closed_at":"2025-11-20T12:27:59.022231-05:00","source_repo":"."} +{"id":"bd-11","content_hash":"6e230f95fed15054f50ad461da44dfa48fd6c532cd5d1bf1f776c3134b0bbedf","title":"Improve error handling in dependency removal during remapping","description":"In updateDependencyReferences(), RemoveDependency errors are caught and ignored with continue (line 392). Comment says 'if dependency doesn't exist' but this catches ALL errors including real failures. Should check error type with errors.Is(err, ErrDependencyNotFound) and only ignore not-found errors, returning other errors properly.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.519542-07:00","closed_at":"2025-10-18T09:41:18.209717-07:00","source_repo":"."} +{"id":"bd-110","content_hash":"5d348c7d9bc0a4d0bd844b1eed5d838a1fd19144ce549f30c95f7228a540e747","title":"Validate issue prefix matches database prefix on create","description":"Users can accidentally create issues with the wrong prefix (e.g., creating 'bd-95' in the vc tracker instead of the beads tracker).\n\nThis causes problems:\n- Issues appear in wrong project\n- Renumbering silently removes them (correct behavior, but surprising)\n- Confusion about which tracker owns the issue\n\nEvidence from vc project:\n- bd-95 and bd-96 were created in ~/src/vc/vc/.beads/vc.db (should use vc- prefix)\n- These were silently removed during renumbering (working as intended)\n- But user didn't realize they were in wrong database until too late\n\nRoot cause: User was in vc directory but created issues with bd- prefix, probably because they were beads-related fixes.","design":"Options:\n\n1. **Strict validation (recommended)**:\n - Detect database prefix from existing issues or .beads/*.db filename\n - Reject 'bd create' if prefix doesn't match\n - Error: 'This database uses prefix vc-, but you tried to create bd-X. Use --force to override.'\n\n2. **Auto-correct prefix**:\n - 'bd create' in vc database always uses vc- prefix regardless of what user intended\n - Warning: 'Auto-corrected prefix from bd- to vc-'\n\n3. **Multiple prefix support**:\n - Allow multiple prefixes per database\n - Group by prefix during renumbering\n - Complexity not worth it\n\nPrefer option 1 - fail fast with clear error.","acceptance_criteria":"Creating an issue with wrong prefix fails with helpful error message explaining the mismatch","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-17T22:19:33.942242-07:00","updated_at":"2025-10-21T00:25:40.519743-07:00","closed_at":"2025-10-17T22:20:06.795955-07:00","source_repo":"."} +{"id":"bd-1100","content_hash":"03e73cb792a3f88fe543162c5ebe958707f6c447691089cf2d7673a5fccc707c","title":"Agent 3 Batch 15 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.005382-07:00","updated_at":"2025-11-20T12:27:43.347703-05:00","closed_at":"2025-11-20T12:27:43.347703-05:00","source_repo":"."} +{"id":"bd-1101","content_hash":"518045850c9a88690e9fd0adb88a0961f2b67a34ded5a629f3f80f676cc6c863","title":"Agent 1 Batch 27 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.004838-07:00","updated_at":"2025-11-20T12:27:59.02208-05:00","closed_at":"2025-11-20T12:27:59.02208-05:00","source_repo":"."} +{"id":"bd-1102","content_hash":"0804e9b7bb22a2540d0fdce1d2c11eb4ff430f667ece2a12199c411d6c887174","title":"Agent 1 Batch 27 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.006478-07:00","updated_at":"2025-11-20T12:27:38.168948-05:00","closed_at":"2025-11-20T12:27:38.168948-05:00","source_repo":"."} +{"id":"bd-1103","content_hash":"56b62439e20e78fbeacfb1d4a08f7bf608273367551713d91c4621bc85250fda","title":"Agent 3 Batch 16 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.005956-07:00","updated_at":"2025-11-20T12:27:59.021926-05:00","closed_at":"2025-11-20T12:27:59.021926-05:00","source_repo":"."} +{"id":"bd-1104","content_hash":"c3e0a5739f2e968efa0b7b5630c47a5460589654883b4359a2e3f575c422427f","title":"Agent 3 Batch 16 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.007655-07:00","updated_at":"2025-11-20T12:27:38.168779-05:00","closed_at":"2025-11-20T12:27:38.168779-05:00","source_repo":"."} +{"id":"bd-1105","content_hash":"f4d16246e650767649bc6425c90a8468b20978404f3d9e9b723fb2bb2bd7347f","title":"Agent 1 Batch 28 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.007077-07:00","updated_at":"2025-11-20T12:27:59.021777-05:00","closed_at":"2025-11-20T12:27:59.021777-05:00","source_repo":"."} +{"id":"bd-1106","content_hash":"e98f9c793ab5562feda85e19a49f53f98c459490ff7e2faf1b7c286898484d36","title":"Agent 1 Batch 28 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.008732-07:00","updated_at":"2025-11-20T12:27:38.168632-05:00","closed_at":"2025-11-20T12:27:38.168632-05:00","source_repo":"."} +{"id":"bd-1107","content_hash":"5726f883699d48bf379e9f280d4e7d5e61441709805efa26c7dfa6ae65dcd479","title":"Agent 3 Batch 17 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.008228-07:00","updated_at":"2025-11-20T12:27:59.021595-05:00","closed_at":"2025-11-20T12:27:59.021595-05:00","source_repo":"."} +{"id":"bd-1108","content_hash":"3f8bb1471752c41e45f6e5b30b6e7dda4b05079f4c4ba8e8bfeb86ffa35fff05","title":"Agent 3 Batch 17 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.009835-07:00","updated_at":"2025-11-20T12:27:38.168484-05:00","closed_at":"2025-11-20T12:27:38.168484-05:00","source_repo":"."} +{"id":"bd-1109","content_hash":"60c83bc9458ab654fc5ed35f6e4253d40a950c684b79390ba6200fc398337cb3","title":"Agent 1 Batch 29 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.009312-07:00","updated_at":"2025-11-20T12:27:59.021447-05:00","closed_at":"2025-11-20T12:27:59.021447-05:00","source_repo":"."} +{"id":"bd-111","content_hash":"32509b62dfbc774ddd2accb20020dc9912afed97a4309316beb6f854b3eeb158","title":"Daemon doesn't clean up stale socket on startup","description":"If daemon crashes, the socket file remains. Next startup fails with 'address already in use' even though no process is listening.\n\nFix: Before starting RPC server, check if socket exists and PID file shows dead process - remove stale socket.\n\nLines 520-532 in daemon.go create socket but don't clean up stale ones.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-10-17T22:58:02.137977-07:00","updated_at":"2025-10-21T00:25:40.519949-07:00","closed_at":"2025-10-17T23:01:31.094618-07:00","source_repo":"."} +{"id":"bd-1110","content_hash":"4a6460d450df90479d852d115b78498a5965547f598a262d88b58fb98041bb66","title":"Agent 1 Batch 29 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.010902-07:00","updated_at":"2025-11-20T12:27:38.168338-05:00","closed_at":"2025-11-20T12:27:38.168338-05:00","source_repo":"."} +{"id":"bd-1111","content_hash":"5ed4242cc2d79c42f6e3de0201c42c78b54049847affa1d61bbddb9ad1c14b50","title":"Agent 3 Batch 18 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.010391-07:00","updated_at":"2025-11-20T12:27:59.021301-05:00","closed_at":"2025-11-20T12:27:59.021301-05:00","source_repo":"."} +{"id":"bd-1112","content_hash":"f17eb00556e6068698d4c52b967255e609f7295723dec66d0310c9ef4ee96473","title":"Agent 3 Batch 18 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.012001-07:00","updated_at":"2025-11-20T12:27:38.168191-05:00","closed_at":"2025-11-20T12:27:38.168191-05:00","source_repo":"."} +{"id":"bd-1113","content_hash":"707b33b6293bfeb11c4972cc591556899d9dd2c499412e209922eaab7b131d66","title":"Agent 1 Batch 30 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.011463-07:00","updated_at":"2025-11-20T12:27:59.021153-05:00","closed_at":"2025-11-20T12:27:59.021153-05:00","source_repo":"."} +{"id":"bd-1114","content_hash":"f49372856de2383c13504b1af9b4446ddcfd53617eba2599e5cbe1138496262b","title":"Agent 1 Batch 30 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.013073-07:00","updated_at":"2025-11-20T12:27:38.168046-05:00","closed_at":"2025-11-20T12:27:38.168046-05:00","source_repo":"."} +{"id":"bd-1115","content_hash":"e59f7faf36a0c1160e5a08ddddaeceaa6057b6695547f2c084527b4c386ae9ff","title":"Agent 3 Batch 19 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.012556-07:00","updated_at":"2025-11-20T12:27:59.021001-05:00","closed_at":"2025-11-20T12:27:59.021001-05:00","source_repo":"."} +{"id":"bd-1116","content_hash":"e145aafe5ffe3fcb597ad78cf518a8f9510197a845e88e101df7d7586eab6c35","title":"Agent 3 Batch 19 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.014186-07:00","updated_at":"2025-11-20T12:27:38.167897-05:00","closed_at":"2025-11-20T12:27:38.167897-05:00","source_repo":"."} +{"id":"bd-1117","content_hash":"2bb5cbc6bddd6ea39e2c4f41b7656f9ef244d1b382b221e6ae391c336ddc0155","title":"Agent 1 Batch 31 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.01365-07:00","updated_at":"2025-11-20T12:27:59.020851-05:00","closed_at":"2025-11-20T12:27:59.020851-05:00","source_repo":"."} +{"id":"bd-1118","content_hash":"1953d90c5a10d47c4cd2b0e4e2f1e235f424737f9843048b785fcc6a0ddb5df2","title":"Agent 1 Batch 31 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.01529-07:00","updated_at":"2025-11-20T12:27:38.167745-05:00","closed_at":"2025-11-20T12:27:38.167745-05:00","source_repo":"."} +{"id":"bd-1119","content_hash":"f9299204e28b926ec951c36bf2e101769e4ba546893c149c59c6e1137b40e6d5","title":"Agent 3 Batch 20 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.014746-07:00","updated_at":"2025-11-20T12:27:59.020703-05:00","closed_at":"2025-11-20T12:27:59.020703-05:00","source_repo":"."} +{"id":"bd-112","content_hash":"858a05dbe19e3e51a1a645a18a98bb57b7e9b8580f626421c40524e5fc447498","title":"Global daemon should warn/reject --auto-commit and --auto-push","description":"When user runs 'bd daemon --global --auto-commit', it's unclear which repo the daemon will commit to (especially after fixing bd-99 where global daemon won't open a DB).\n\nOptions:\n1. Warn and ignore the flags in global mode\n2. Error out with clear message\n\nLine 87-91 already checks autoPush, but should skip check entirely for global mode. Add user-friendly messaging about flag incompatibility.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-10-17T22:58:02.137987-07:00","updated_at":"2025-10-21T00:25:40.52016-07:00","closed_at":"2025-10-17T23:04:30.223432-07:00","source_repo":"."} +{"id":"bd-1120","content_hash":"a73025a0bd54dfb65ecd927f493fc5ecb44cedfb85fb5f3f86ba3fc8b5a66082","title":"Agent 3 Batch 20 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.016401-07:00","updated_at":"2025-11-20T12:27:38.167572-05:00","closed_at":"2025-11-20T12:27:38.167572-05:00","source_repo":"."} +{"id":"bd-1121","content_hash":"3be11367982ca379681e1ace1eb8dce5e1b470878a6d78f62b033ace5297988e","title":"Agent 1 Batch 32 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.015873-07:00","updated_at":"2025-11-20T12:27:59.02052-05:00","closed_at":"2025-11-20T12:27:59.02052-05:00","source_repo":"."} +{"id":"bd-1122","content_hash":"67798eedd97af039e8b6dd8e65377a411d63b512acd9d448675da01e11468924","title":"Agent 1 Batch 32 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.0175-07:00","updated_at":"2025-11-20T12:27:38.167427-05:00","closed_at":"2025-11-20T12:27:38.167427-05:00","source_repo":"."} +{"id":"bd-1123","content_hash":"746edc8c6ab4ccb89bc3ccb80680d25070d5dfe89deeaf8eecac87ad2fd0d496","title":"Agent 3 Batch 21 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.016974-07:00","updated_at":"2025-11-20T12:27:59.020364-05:00","closed_at":"2025-11-20T12:27:59.020364-05:00","source_repo":"."} +{"id":"bd-1124","content_hash":"ed2839ff06ae45afabbf36237fc6ded1bd31244432d003bebbb34a3c5182eee6","title":"Agent 3 Batch 21 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.018592-07:00","updated_at":"2025-11-20T12:27:38.16728-05:00","closed_at":"2025-11-20T12:27:38.16728-05:00","source_repo":"."} +{"id":"bd-1125","content_hash":"69f35941988fa90ededb24b39152d2d302a7390709fd1b2d2842201b41deb703","title":"Agent 1 Batch 33 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.018077-07:00","updated_at":"2025-11-20T12:27:59.020206-05:00","closed_at":"2025-11-20T12:27:59.020206-05:00","source_repo":"."} +{"id":"bd-1126","content_hash":"9d258747f468f76df6f4eac2a98d09d2117b2f461f2d70f5330f0453dcecf06f","title":"Agent 1 Batch 33 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.019683-07:00","updated_at":"2025-11-20T12:27:38.167134-05:00","closed_at":"2025-11-20T12:27:38.167134-05:00","source_repo":"."} +{"id":"bd-1127","content_hash":"b9d9b0742dbeef970130e90d2f37b580108d30cbd31cf868aa56243a634b50b6","title":"Agent 3 Batch 22 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.019139-07:00","updated_at":"2025-11-20T12:27:59.020048-05:00","closed_at":"2025-11-20T12:27:59.020048-05:00","source_repo":"."} +{"id":"bd-1128","content_hash":"511ed4a3fc32c609494f53f8e29f21c3a09ceab6d087e34cc778856b882e89ea","title":"Agent 3 Batch 22 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.020797-07:00","updated_at":"2025-11-20T12:27:38.166955-05:00","closed_at":"2025-11-20T12:27:38.166955-05:00","source_repo":"."} +{"id":"bd-1129","content_hash":"b8f2499e78bb15377a0734006b010a6c7678ded5ec1b10b9a29e2e51b471fad4","title":"Agent 1 Batch 34 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.020257-07:00","updated_at":"2025-11-20T12:27:59.019897-05:00","closed_at":"2025-11-20T12:27:59.019897-05:00","source_repo":"."} +{"id":"bd-113","content_hash":"5d40ede2918fe1175cb5e3a951477d23e7c350e13f52b0e62224658af3fa492f","title":"Socket permissions should be 0600 for security","description":"Unix sockets should use 0600 permissions to prevent other users from connecting.\n\nCurrently:\n- Global .beads dir uses 0700 (good) \n- Local .beads dir uses 0700 (good)\n- But socket itself may inherit default perms\n\nVerify rpc.NewServer creates socket with 0600, or set umask/explicit perms.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-10-17T22:58:02.137989-07:00","updated_at":"2025-10-21T00:25:40.520343-07:00","closed_at":"2025-10-17T23:03:31.545735-07:00","source_repo":"."} +{"id":"bd-1130","content_hash":"4242c95bbdf9b60067e083c4d3c7fdc3d767b0ee89605173fc19389aa065fd0a","title":"Agent 1 Batch 34 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.021922-07:00","updated_at":"2025-11-20T12:27:38.166779-05:00","closed_at":"2025-11-20T12:27:38.166779-05:00","source_repo":"."} +{"id":"bd-1131","content_hash":"e34c9b458f871a99e7dd383678e02c330fcb885848de8101123321caf6940c1d","title":"Agent 3 Batch 23 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.021377-07:00","updated_at":"2025-11-20T12:27:59.019741-05:00","closed_at":"2025-11-20T12:27:59.019741-05:00","source_repo":"."} +{"id":"bd-1132","content_hash":"ffdcd39ec9c9334f4588905486d6176b8c9a9fc94e32cd311c0a8fd20dbbca06","title":"Agent 3 Batch 23 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.023036-07:00","updated_at":"2025-11-20T12:27:38.166571-05:00","closed_at":"2025-11-20T12:27:38.166571-05:00","source_repo":"."} +{"id":"bd-1133","content_hash":"281d0790d9d2790f4aa501623ab0d949afbcac865853fd1dfd25afc14a9f03d0","title":"Agent 1 Batch 35 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.022488-07:00","updated_at":"2025-11-20T12:27:59.019588-05:00","closed_at":"2025-11-20T12:27:59.019588-05:00","source_repo":"."} +{"id":"bd-1134","content_hash":"8249d1f3865cb5114eeb8d095695fcaf76899bd852ae2147dc127780340863b6","title":"Agent 1 Batch 35 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.024169-07:00","updated_at":"2025-11-20T12:27:38.1664-05:00","closed_at":"2025-11-20T12:27:38.1664-05:00","source_repo":"."} +{"id":"bd-1135","content_hash":"5b07072d122673d82524a337ac4e7db22cd9b75a8dcc33277c364656a088bac4","title":"Agent 3 Batch 24 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.023619-07:00","updated_at":"2025-11-20T12:27:59.019436-05:00","closed_at":"2025-11-20T12:27:59.019436-05:00","source_repo":"."} +{"id":"bd-1136","content_hash":"65f9e9fba02225cc797294120b1580bbcd07e8a178c0da7b8b94194d3e4922cf","title":"Agent 3 Batch 24 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.026074-07:00","updated_at":"2025-11-20T12:27:38.16625-05:00","closed_at":"2025-11-20T12:27:38.16625-05:00","source_repo":"."} +{"id":"bd-1137","content_hash":"947c42fef21b32c0caa916209f1d5c063dc45c95ba9be6b1546b9ba86ba811c2","title":"Agent 3 Batch 25 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.026821-07:00","updated_at":"2025-11-20T12:27:59.019131-05:00","closed_at":"2025-11-20T12:27:59.019131-05:00","source_repo":"."} +{"id":"bd-1138","content_hash":"5ec464fe73e6d1e5f45960b8f90206d7dca4e3fea5a0b3165d8c9d0840f6793d","title":"Agent 3 Batch 25 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.027405-07:00","updated_at":"2025-11-20T12:27:38.1661-05:00","closed_at":"2025-11-20T12:27:38.1661-05:00","source_repo":"."} +{"id":"bd-1139","content_hash":"9ae3ad911390bdee216e1c18d4ad151ec5e5a0801492c17e4c44455fd7313662","title":"Agent 3 Batch 26 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.02801-07:00","updated_at":"2025-11-20T12:27:59.018886-05:00","closed_at":"2025-11-20T12:27:59.018886-05:00","source_repo":"."} +{"id":"bd-114","content_hash":"98d5a7dfff4a290e3841753199836baa1d7587f8d9547b8ae6f4835673d27f04","title":"Global daemon still requires database and runs sync loop","description":"The --global flag skips git repo check (line 80) but runDaemonLoop still calls FindDatabasePath (line 500-507) and opens a store (line 512). It also runs the single-repo sync loop (lines 563-620).\n\nOracle correctly identified this violates the spec: 'Don't require being in a git repo when --global is used'.\n\nFix: Global mode should skip DB open and sync loop entirely. It should be a pure RPC router that uses per-request context (bd-92) to route to the correct repo's DB.\n\nImpact: Users can't run 'bd daemon --global' outside a repo, defeating the purpose.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-17T22:58:02.138008-07:00","updated_at":"2025-10-21T00:25:40.52053-07:00","closed_at":"2025-10-17T23:00:08.734632-07:00","source_repo":"."} +{"id":"bd-1140","content_hash":"df83e11107202d188a7b5334df17cd7b312a166915c992d2d7c536147993ff17","title":"Agent 3 Batch 26 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.028551-07:00","updated_at":"2025-11-20T12:27:38.165924-05:00","closed_at":"2025-11-20T12:27:38.165924-05:00","source_repo":"."} +{"id":"bd-1141","content_hash":"d8ad571a040cf3f32f65edf2e0184ab82c22ae9f769ed1bdfa203162ab984f17","title":"Agent 3 Batch 27 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.029101-07:00","updated_at":"2025-11-20T12:27:59.018735-05:00","closed_at":"2025-11-20T12:27:59.018735-05:00","source_repo":"."} +{"id":"bd-1142","content_hash":"30abeddcfa8273c5bd42336e5b43e53ed6644bd2526e69d9ac781c1b07b119d3","title":"Agent 3 Batch 27 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.029658-07:00","updated_at":"2025-11-20T12:27:38.165777-05:00","closed_at":"2025-11-20T12:27:38.165777-05:00","source_repo":"."} +{"id":"bd-1143","content_hash":"e714ace70ae389f8e78bc8daecc59b68543ce7a1a96afc215a17308a72273197","title":"Agent 3 Batch 28 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.030246-07:00","updated_at":"2025-11-20T12:27:59.018588-05:00","closed_at":"2025-11-20T12:27:59.018588-05:00","source_repo":"."} +{"id":"bd-1144","content_hash":"31fa95ad588c962259af293b205ca64ae44c39f9bbabb7a00795ab4cd75c0398","title":"Agent 3 Batch 28 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.030807-07:00","updated_at":"2025-11-20T12:27:38.165624-05:00","closed_at":"2025-11-20T12:27:38.165624-05:00","source_repo":"."} +{"id":"bd-1145","content_hash":"babbf5e4a619a63afabc69e7814db0855a9227b398d015915b31bb78eae1a5a7","title":"Agent 3 Batch 29 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.031347-07:00","updated_at":"2025-11-20T12:27:59.018437-05:00","closed_at":"2025-11-20T12:27:59.018437-05:00","source_repo":"."} +{"id":"bd-1146","content_hash":"c8873c7ccb1ebf15d5ff7c532346d0fe0b711df30da6adb2787629bb1e199d1b","title":"Agent 3 Batch 29 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.03187-07:00","updated_at":"2025-11-20T12:27:38.165441-05:00","closed_at":"2025-11-20T12:27:38.165441-05:00","source_repo":"."} +{"id":"bd-1147","content_hash":"dbe3cfbf570fca5aec5cbbb2641f858fb3df96095a51fb3b84178b00d3326d3e","title":"Agent 3 Batch 30 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.03244-07:00","updated_at":"2025-11-20T12:27:59.018281-05:00","closed_at":"2025-11-20T12:27:59.018281-05:00","source_repo":"."} +{"id":"bd-1148","content_hash":"d5b2dfc00a4871ada1572b40c5737b8bd665d5986068504243fa262de01d346b","title":"Agent 3 Batch 30 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.032958-07:00","updated_at":"2025-11-20T12:27:38.16529-05:00","closed_at":"2025-11-20T12:27:38.16529-05:00","source_repo":"."} +{"id":"bd-1149","content_hash":"810fa5c49f47e238cc7180ebf3e30d13478ea28a9d2a54e93bbb8acad623b7d3","title":"Agent 3 Batch 31 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.033521-07:00","updated_at":"2025-11-20T12:27:59.018128-05:00","closed_at":"2025-11-20T12:27:59.018128-05:00","source_repo":"."} +{"id":"bd-115","content_hash":"d5beebb358c34a5f19af9ed75939208fe9343f57adf81782536e218fa90ad69d","title":"Test A","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-17T23:06:59.59343-07:00","updated_at":"2025-10-21T00:25:40.520737-07:00","closed_at":"2025-10-17T23:06:59.740704-07:00","source_repo":"."} +{"id":"bd-1150","content_hash":"debc373371095924de97c2ea2b0ecfb7f980eac9c6b429bf1d144654f8f41892","title":"Agent 3 Batch 31 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.034064-07:00","updated_at":"2025-11-20T12:27:38.165144-05:00","closed_at":"2025-11-20T12:27:38.165144-05:00","source_repo":"."} +{"id":"bd-1151","content_hash":"918d32ab4db03d6906b908ff04c4eb9949764da6529988080bb534a76dd1f251","title":"Agent 3 Batch 32 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.034628-07:00","updated_at":"2025-11-20T12:27:59.017972-05:00","closed_at":"2025-11-20T12:27:59.017972-05:00","source_repo":"."} +{"id":"bd-1152","content_hash":"04d54e654e210dcbcc9b356fad1fa6e572e9208f567af7722223256a6766cf46","title":"Agent 3 Batch 32 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.035178-07:00","updated_at":"2025-11-20T12:27:38.164965-05:00","closed_at":"2025-11-20T12:27:38.164965-05:00","source_repo":"."} +{"id":"bd-1153","content_hash":"89e108a0ab9537920c834b78f1837cfa338aa843634ace04db919fbc545cfd48","title":"Agent 3 Batch 33 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.035741-07:00","updated_at":"2025-11-20T12:27:59.017816-05:00","closed_at":"2025-11-20T12:27:59.017816-05:00","source_repo":"."} +{"id":"bd-1154","content_hash":"6640bac41492ae70220a985aaceb95b4ae2478b1ad3767e8b5a76ea7c772fa32","title":"Agent 3 Batch 33 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.036297-07:00","updated_at":"2025-11-20T12:27:38.164819-05:00","closed_at":"2025-11-20T12:27:38.164819-05:00","source_repo":"."} +{"id":"bd-1155","content_hash":"64ecd1dd2b578126e1a0d8a150c1eb87f88759c981c7d6e2157f38a4133b0070","title":"Agent 3 Batch 34 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.036875-07:00","updated_at":"2025-11-20T12:27:59.017604-05:00","closed_at":"2025-11-20T12:27:59.017604-05:00","source_repo":"."} +{"id":"bd-1156","content_hash":"bc26433a2ea376817da9f210648c5d5a78c75e7ef35686638337c3a1530ab3f7","title":"Agent 3 Batch 34 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.037409-07:00","updated_at":"2025-11-20T12:27:38.164675-05:00","closed_at":"2025-11-20T12:27:38.164675-05:00","source_repo":"."} +{"id":"bd-1157","content_hash":"719196d210c85b726077cac1dc81756f558720fb6721a7b022167fdb6f86ae74","title":"Agent 3 Batch 35 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.037984-07:00","updated_at":"2025-11-20T12:27:59.017444-05:00","closed_at":"2025-11-20T12:27:59.017444-05:00","source_repo":"."} +{"id":"bd-1158","content_hash":"b9e11b8b4548a9a13990ca1d784fc78880e42db35f939b687d9aab35e8ebe8dc","title":"Agent 3 Batch 35 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.038514-07:00","updated_at":"2025-11-20T12:27:38.164476-05:00","closed_at":"2025-11-20T12:27:38.164476-05:00","source_repo":"."} +{"id":"bd-1159","content_hash":"22de5825456f8f6c183897b61248e58151e7ee34505cacf564436d5110c58d50","title":"Agent 3 Batch 36 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.039091-07:00","updated_at":"2025-11-20T12:27:59.01729-05:00","closed_at":"2025-11-20T12:27:59.01729-05:00","source_repo":"."} +{"id":"bd-116","content_hash":"19fab9a3ee082d4043272774e10d9e21e068d3c300a60a17d1d5f9b0550cf09c","title":"Test B","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-17T23:06:59.626612-07:00","updated_at":"2025-10-21T00:25:40.520915-07:00","closed_at":"2025-10-17T23:06:59.744519-07:00","source_repo":"."} +{"id":"bd-1160","content_hash":"a25367fa7f9fda393404eebd7349826952a82a34e5213e204fc894c813f04996","title":"Agent 3 Batch 36 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.039658-07:00","updated_at":"2025-11-20T12:27:38.164302-05:00","closed_at":"2025-11-20T12:27:38.164302-05:00","source_repo":"."} +{"id":"bd-1161","content_hash":"5c0876c0ab15e4b2104fa896d5d4e58cd0f1a9d483f9318dee9117d9dd3482a3","title":"Agent 3 Batch 37 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.040299-07:00","updated_at":"2025-11-20T12:27:59.017135-05:00","closed_at":"2025-11-20T12:27:59.017135-05:00","source_repo":"."} +{"id":"bd-1162","content_hash":"578a6cad3072b90c4472e7f976fbdf880ca3d7831850da0259fd67152104d5f3","title":"Agent 3 Batch 37 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.040896-07:00","updated_at":"2025-11-20T12:27:38.164124-05:00","closed_at":"2025-11-20T12:27:38.164124-05:00","source_repo":"."} +{"id":"bd-1163","content_hash":"6e4b4e274706f5dba8412ea156218eec474794864383bcd65118e8733d11f21b","title":"Agent 3 Batch 38 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.041543-07:00","updated_at":"2025-11-20T12:27:59.016953-05:00","closed_at":"2025-11-20T12:27:59.016953-05:00","source_repo":"."} +{"id":"bd-1164","content_hash":"9b1fc9e9d35949cc62192bdaa83558794039d646a42fb7c5e46b842b5e099820","title":"Agent 3 Batch 38 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.042095-07:00","updated_at":"2025-11-20T12:27:38.16395-05:00","closed_at":"2025-11-20T12:27:38.16395-05:00","source_repo":"."} +{"id":"bd-1165","content_hash":"2a7b05049d056f95dc0539d35ec2d85356594ab60072ce0cfffa844b23f39cdd","title":"Agent 3 Batch 39 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.042699-07:00","updated_at":"2025-11-20T12:27:59.016798-05:00","closed_at":"2025-11-20T12:27:59.016798-05:00","source_repo":"."} +{"id":"bd-1166","content_hash":"784dc189f0d598730cc8f7a290f2b5ead28ec4cdbf84c4bd62fa4dfb6445bdff","title":"Agent 3 Batch 39 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.043264-07:00","updated_at":"2025-11-20T12:27:38.163781-05:00","closed_at":"2025-11-20T12:27:38.163781-05:00","source_repo":"."} +{"id":"bd-1167","content_hash":"45d1e0b9591ee0347e5905dbde86001dbc7575e4044407b1efef030c8e93f882","title":"Agent 3 Batch 40 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.043828-07:00","updated_at":"2025-11-20T12:27:59.016602-05:00","closed_at":"2025-11-20T12:27:59.016602-05:00","source_repo":"."} +{"id":"bd-1168","content_hash":"2d38c79d66dbd9407150f35c843cc73e19607441d16df2296b63791d45e393aa","title":"Agent 3 Batch 40 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.044364-07:00","updated_at":"2025-11-20T12:27:38.163598-05:00","closed_at":"2025-11-20T12:27:38.163598-05:00","source_repo":"."} +{"id":"bd-1169","content_hash":"f09ae9e32a502c69bf1768e38fde8f3c52ed7baeae398f4ea008ccac441e3cb8","title":"Agent 3 Batch 41 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.044926-07:00","updated_at":"2025-11-20T12:27:59.016446-05:00","closed_at":"2025-11-20T12:27:59.016446-05:00","source_repo":"."} +{"id":"bd-117","content_hash":"cdd70d92da0c9d2c7b3bb9bf3d65fa71edb500462503e211de988edf44873ca4","title":"bd ready doesn't show epics/tasks ready to close when all children complete","description":"The 'bd ready' command doesn't show epics that have all children complete as ready work. Example: vc-30 (epic) blocks 4 children - 3 are closed, 1 is in_progress. The epic itself should be reviewable/closable but doesn't show in ready work. Similarly, vc-61 (epic, in_progress) depends on vc-48 (closed) but doesn't show as ready. Expected: epics with all dependencies satisfied should show as ready to review/close. Actual: 'bd ready' returns 'no ready work' even though multiple epics are completable.","acceptance_criteria":"bd ready shows epics/tasks that have all dependencies satisfied (even if status is in_progress), allowing user to review and close them","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-18T00:04:41.811991-07:00","updated_at":"2025-10-21T00:25:40.521114-07:00","closed_at":"2025-10-18T00:20:36.188211-07:00","source_repo":"."} +{"id":"bd-1170","content_hash":"d213773790aca5d6874504cbcb75d75b894dcb2343a3df398cddf89559dee4b9","title":"Agent 3 Batch 41 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.045464-07:00","updated_at":"2025-11-20T12:27:38.163373-05:00","closed_at":"2025-11-20T12:27:38.163373-05:00","source_repo":"."} +{"id":"bd-1171","content_hash":"4b2069f9042ab8f477ba229b419b5650e361cde9142a451f4243486781d58ede","title":"Agent 3 Batch 42 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.046012-07:00","updated_at":"2025-11-20T12:27:59.016285-05:00","closed_at":"2025-11-20T12:27:59.016285-05:00","source_repo":"."} +{"id":"bd-1172","content_hash":"f63fc0d0f1270c1ac20723ad0ce8cd8a27fd42fb38bfd3caad7dcdbc154fe2ed","title":"Agent 3 Batch 42 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.046583-07:00","updated_at":"2025-11-20T12:27:38.163225-05:00","closed_at":"2025-11-20T12:27:38.163225-05:00","source_repo":"."} +{"id":"bd-1173","content_hash":"37ed8ae36f8bfae2a4c6b301e3e1b55a23bafcf26fecee892791b37457db7e41","title":"Agent 3 Batch 43 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.047155-07:00","updated_at":"2025-11-20T12:27:59.016129-05:00","closed_at":"2025-11-20T12:27:59.016129-05:00","source_repo":"."} +{"id":"bd-1174","content_hash":"a16ac388116c52106011ddf376aa3358bce2bdf833a337e8c293a55f54dbef4e","title":"Agent 3 Batch 43 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.047698-07:00","updated_at":"2025-11-20T12:27:38.162967-05:00","closed_at":"2025-11-20T12:27:38.162967-05:00","source_repo":"."} +{"id":"bd-1175","content_hash":"4b3a68b8eda7f201ae8712dc65cbdf34287f9ad6600149128385df6a60ca3aae","title":"Agent 3 Batch 44 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.048265-07:00","updated_at":"2025-11-20T12:27:59.015915-05:00","closed_at":"2025-11-20T12:27:59.015915-05:00","source_repo":"."} +{"id":"bd-1176","content_hash":"e74fd4bddfe4c35b6aa1048c95e870f15be9aea4c6d024ee80553b79b1e26f85","title":"Agent 3 Batch 44 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.048833-07:00","updated_at":"2025-11-20T12:27:38.162821-05:00","closed_at":"2025-11-20T12:27:38.162821-05:00","source_repo":"."} +{"id":"bd-1177","content_hash":"7868387c4e8cd6cbe352348655b1937371854477f1c0c3e4696ec60a509540bc","title":"Agent 3 Batch 45 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.049401-07:00","updated_at":"2025-11-20T12:27:59.015761-05:00","closed_at":"2025-11-20T12:27:59.015761-05:00","source_repo":"."} +{"id":"bd-1178","content_hash":"aa95a0a01d139736d04ccd42cb94c0609721f1e669e5b125ba9f2838d6933410","title":"Agent 3 Batch 45 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.049984-07:00","updated_at":"2025-11-20T12:27:38.162647-05:00","closed_at":"2025-11-20T12:27:38.162647-05:00","source_repo":"."} +{"id":"bd-1179","content_hash":"eaa2f0c469ee245716e5b689e8dce6b30b05603d0795d96375ad9fd13a8e264d","title":"Agent 3 Batch 46 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.050549-07:00","updated_at":"2025-11-20T12:27:59.015603-05:00","closed_at":"2025-11-20T12:27:59.015603-05:00","source_repo":"."} +{"id":"bd-118","content_hash":"68a929e73cbce98e40d2dca47f46464836e67797694aee8f4228e61725ce23ae","title":"CleanupStaleInstances() never called in production - orphaned claims accumulate","description":"The CleanupStaleInstances() method exists in storage layer but is never called in production code. This means dead executors leave orphaned claims that block work forever. Example: vc-106 claimed by executor that died 2 hours ago, still shows in_progress with execution_state record. Need to: 1) Add periodic cleanup to executor main loop (every 5 min?), 2) Make cleanup also release claimed issues (delete execution_state AND reset status to open), 3) Add comment explaining why released.","design":"Add background goroutine in executor that calls CleanupStaleInstances() every 5 minutes. When marking instance stopped, also query for all issues claimed by that instance and release them (delete execution_state, set status=open, add event comment).","acceptance_criteria":"Dead executors automatically release their claims within 5-10 minutes of going stale, issues return to open status and become available for re-execution","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-18T00:24:57.920072-07:00","updated_at":"2025-10-21T00:25:40.521325-07:00","closed_at":"2025-10-18T02:09:05.05969-07:00","source_repo":"."} +{"id":"bd-1180","content_hash":"ff3d90f6e3758071b7c45b9323ee1c8bc857f70afe5371d4496b5eefcad8e9a6","title":"Agent 3 Batch 46 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.051111-07:00","updated_at":"2025-11-20T12:27:38.162471-05:00","closed_at":"2025-11-20T12:27:38.162471-05:00","source_repo":"."} +{"id":"bd-1181","content_hash":"05baba668eb181d1731d87c26053dd993009ed18a4611e2e927483360203a7b7","title":"Agent 3 Batch 47 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.051672-07:00","updated_at":"2025-11-20T12:27:59.015443-05:00","closed_at":"2025-11-20T12:27:59.015443-05:00","source_repo":"."} +{"id":"bd-1182","content_hash":"b1bd296ae29bf5ada4d4b3b7dfb859f3913458f8978c6d857900a6f65732f947","title":"Agent 3 Batch 47 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.052234-07:00","updated_at":"2025-11-20T12:27:38.162316-05:00","closed_at":"2025-11-20T12:27:38.162316-05:00","source_repo":"."} +{"id":"bd-1183","content_hash":"2079a806239054e58aa7c2d8ae1deb889f52d6279c509d9887d4981e620c6db6","title":"Agent 3 Batch 48 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.052818-07:00","updated_at":"2025-11-20T12:27:59.015268-05:00","closed_at":"2025-11-20T12:27:59.015268-05:00","source_repo":"."} +{"id":"bd-1184","content_hash":"b0470de62580af6ec6329c45aa8793ef9b0c4090a93cd3d0c27a7ddf657b7ea6","title":"Agent 3 Batch 48 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.053383-07:00","updated_at":"2025-11-20T12:27:38.162169-05:00","closed_at":"2025-11-20T12:27:38.162169-05:00","source_repo":"."} +{"id":"bd-1185","content_hash":"3554e7bb574c6dfefe6ae2d078645742fadb2f4f024c59f1e8548b1d618e9b3a","title":"Agent 3 Batch 49 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.053999-07:00","updated_at":"2025-11-20T12:27:59.015069-05:00","closed_at":"2025-11-20T12:27:59.015069-05:00","source_repo":"."} +{"id":"bd-1186","content_hash":"18b93ecbf0a7c26774f6d3e7ecef02b4a3df745d25b115a4f63aa285b06829c5","title":"Agent 3 Batch 49 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.054573-07:00","updated_at":"2025-11-20T12:27:38.161996-05:00","closed_at":"2025-11-20T12:27:38.161996-05:00","source_repo":"."} +{"id":"bd-1187","content_hash":"994d2924de9868e79aea847cde7050d56a358b07a5084581783373354d07b5a6","title":"Agent 1 Batch 36 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.025327-07:00","updated_at":"2025-11-20T12:27:59.019282-05:00","closed_at":"2025-11-20T12:27:59.019282-05:00","source_repo":"."} +{"id":"bd-1188","content_hash":"70de457f2be99fb2a685162c6ca14775e205265f682c8f038f241679aafafae1","title":"Agent 1 Batch 36 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.055845-07:00","updated_at":"2025-11-20T12:27:38.161825-05:00","closed_at":"2025-11-20T12:27:38.161825-05:00","source_repo":"."} +{"id":"bd-1189","content_hash":"0edbe94694a529a1b53360d65bf84c687b703907cc9b45a7c5df6bd2431b6cfa","title":"Agent 1 Batch 37 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.056448-07:00","updated_at":"2025-11-20T12:27:59.014521-05:00","closed_at":"2025-11-20T12:27:59.014521-05:00","source_repo":"."} +{"id":"bd-119","content_hash":"51ce81fb2e15e237d29d775b90b588ba72cafe7d49045cd9468d0e154e9b5315","title":"releaseIssueWithError() deletes execution_state but leaves status as in_progress","description":"When an executor hits an error and releases an issue via releaseIssueWithError(), it deletes the execution_state but leaves the issue status as in_progress. This means the issue drops out of ready work but has no active executor. Expected: releasing should reset status to open so the issue becomes available again. Current code in conversation.go just calls ReleaseIssue() which only deletes execution_state.","design":"Update releaseIssueWithError() to also update issue status back to open. Or create a new ReleaseAndReopen() method that does both atomically in a transaction.","acceptance_criteria":"Issues released due to errors automatically return to open status and show in bd ready","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-18T00:25:06.798843-07:00","updated_at":"2025-10-21T00:25:40.521543-07:00","closed_at":"2025-10-18T02:09:08.595764-07:00","source_repo":"."} +{"id":"bd-1190","content_hash":"9b6585c3df7f1d1cd4503d702febd6780d63e906a1268a8e4ea8035570c755b9","title":"Agent 1 Batch 37 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.057012-07:00","updated_at":"2025-11-20T12:27:38.161651-05:00","closed_at":"2025-11-20T12:27:38.161651-05:00","source_repo":"."} +{"id":"bd-1191","content_hash":"4c4d7eb5d40297a974d7c31525b65d5949fefe10281dee03e12abd03a9a63c10","title":"Agent 1 Batch 38 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.057595-07:00","updated_at":"2025-11-20T12:27:53.808938-05:00","closed_at":"2025-11-20T12:27:53.808938-05:00","source_repo":"."} +{"id":"bd-1192","content_hash":"d57cfba188c208ff698de29ead08d9316530549c909e1dda044e5d40717d1401","title":"Agent 1 Batch 38 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.058164-07:00","updated_at":"2025-11-20T12:27:38.161499-05:00","closed_at":"2025-11-20T12:27:38.161499-05:00","source_repo":"."} +{"id":"bd-1193","content_hash":"53267a5538f706889c19c5bfd02117e8c37f4ac37d326e2d70b6d05534d1d5ba","title":"Agent 1 Batch 39 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.058757-07:00","updated_at":"2025-11-20T12:27:53.808786-05:00","closed_at":"2025-11-20T12:27:53.808786-05:00","source_repo":"."} +{"id":"bd-1194","content_hash":"cde8e07e086b6877732f5ef276a2e9fe00594baac19ac1be129f92dacc41e3a5","title":"Agent 1 Batch 39 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.059339-07:00","updated_at":"2025-11-20T12:27:38.161338-05:00","closed_at":"2025-11-20T12:27:38.161338-05:00","source_repo":"."} +{"id":"bd-1195","content_hash":"1c75b43764e421bd5ba66e43db9bdb5c49dc9c7debac703903d5e0c650a014a3","title":"Agent 1 Batch 40 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.059921-07:00","updated_at":"2025-11-20T12:27:53.808631-05:00","closed_at":"2025-11-20T12:27:53.808631-05:00","source_repo":"."} +{"id":"bd-1196","content_hash":"96df85f4d6bf48acd3c91c146e301beee1218b6b811a1862847acb277d248319","title":"Agent 1 Batch 40 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.060469-07:00","updated_at":"2025-11-20T12:27:38.161182-05:00","closed_at":"2025-11-20T12:27:38.161182-05:00","source_repo":"."} +{"id":"bd-1197","content_hash":"de6a61b4bb052ffbae71825f480187ac31df8204f1d09c0f7f6ae72bc213df52","title":"Agent 1 Batch 41 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.061107-07:00","updated_at":"2025-11-20T12:27:53.808482-05:00","closed_at":"2025-11-20T12:27:53.808482-05:00","source_repo":"."} +{"id":"bd-1198","content_hash":"06851503b01428023a872e2e7b68f92440d373f8a5ef2bad1d8410473fdc833e","title":"Agent 1 Batch 41 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.061653-07:00","updated_at":"2025-11-20T12:27:38.160972-05:00","closed_at":"2025-11-20T12:27:38.160972-05:00","source_repo":"."} +{"id":"bd-1199","content_hash":"84462da6c9dd4ed411638bbcfc8ac21a96c560cd966c83cad07a8ba93e75e1f0","title":"Agent 1 Batch 42 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.062252-07:00","updated_at":"2025-11-20T12:27:53.808329-05:00","closed_at":"2025-11-20T12:27:53.808329-05:00","source_repo":"."} {"id":"bd-11e0","content_hash":"2f0b0a8d0f918cf665e378a1c817c591fc5efc284b65034e73b58b65d58d5674","title":"Database import silently fails when daemon version != CLI version","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-31T21:08:09.096749-07:00","updated_at":"2025-11-01T19:29:35.267817-07:00","closed_at":"2025-11-01T19:29:35.267817-07:00","source_repo":"."} -{"id":"bd-1231","content_hash":"94139e31b3a3e58086ea77a916173a6f0c372a66a21925af0b9385de2f387c2f","title":"CI failing on all 3/4 test jobs despite individual tests passing","description":"CI has been broken for a day+ with mysterious test failures. Issue #173 on GitHub tracks this.\n\n## Current Status\n- **Lint job**: ✅ PASSING\n- **Test (Linux)**: ❌ FAILING (exit code 1)\n- **Test (Windows)**: ❌ FAILING (exit code 1)\n- **Test Nix Flake**: ❌ FAILING (exit code 1)\n\n## Key Observations\nAll three failing jobs show identical pattern:\n- Individual test output shows PASS for every test\n- Final result: `FAIL github.com/steveyegge/beads/cmd/bd`\n- Exit code 1 despite no visible test failures\n- Last visible test output before failure: \"No Reason Issue\" test (TestCloseCommand/close_without_reason)\n\n## Investigation So Far\n1. All tests appear to pass when examined individually\n2. Likely causes:\n - Race detector finding data races during test cleanup (`-race` flag)\n - Panic/error occurring after main tests complete\n - Test harness issue not reporting actual failure\n - Possible regression from PR #203 (dependency_type changes)\n\n## Recent CI Runs\n- Run 19015040655 (latest): 3/4 failing\n- Multiple recent commits tried to fix Windows/lint issues\n- Agent on rrnewton/beads fork attempting fixes (2/4 passing there)\n\n## Next Steps\n1. Run tests locally with `-race -v` to see full output\n2. Check for unreported test failures or panics\n3. Examine test cleanup/teardown code\n4. Review recent changes around close command tests\n5. Consider if race detector is too sensitive or catching real issues","notes":"## Progress Update\n\n### ✅ Fixed (commits 09bd4d3, 21a29bc)\n1. **Daemon auto-import** - Always recompute content_hash in importer to avoid stale hashes\n2. **TestScripts failures** - Added bd binary to PATH for shell subprocess tests\n3. **Test infrastructure** - Added .gitignore to test repos, fixed last_import_time metadata\n\n### ✅ CI Status (Run 19015638968)\n- **Test (Linux)**: ✅ SUCCESS - All tests passing\n- **Test (Windows)**: ❌ FAILURE - Pre-existing Windows test failures\n- **Test Nix Flake**: ❌ FAILURE - Build fails with same test errors\n- **Lint**: ❌ FAILURE - Pre-existing issue in migrate.go:647\n\n### ❌ Remaining Issues (not related to original bd-1231)\n\n**Windows failures:**\n- TestFindDatabasePathEnvVar\n- TestHashIDs_MultiCloneConverge \n- TestHashIDs_IdenticalContentDedup\n- TestDatabaseReinitialization (5 subtests)\n- TestFindBeadsDir_NotFound\n- TestMetricsSnapshot/uptime\n\n**Lint failure:**\n- cmd/bd/migrate.go:647:37: cleanupWALFiles - result 0 (error) is always nil (unparam)\n\n**Nix failure:**\n- Build fails during test phase with same test errors\n\n### Next Steps\n1. Investigate Windows-specific test failures\n2. Fix linting issue in migrate.go\n3. Debug Nix build test failures","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-02T08:42:16.142128-08:00","updated_at":"2025-11-02T12:32:00.15834-08:00","closed_at":"2025-11-02T12:32:00.158346-08:00","external_ref":"https://github.com/steveyegge/beads/issues/173","source_repo":"."} +{"id":"bd-12","content_hash":"6889b57b4dc2e5209432b983498c3777fc8f28bc09dcdec02adeff35ae001002","title":"Use safer placeholder pattern in replaceIDReferences","description":"Currently uses bd-313 which could theoretically collide with user text. Use a truly unique placeholder like null bytes: \\x00REMAP\\x00_0_\\x00 which are unlikely to appear in normal text. Located in collision.go:324. Very low probability issue but worth fixing for completeness.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.521752-07:00","closed_at":"2025-10-18T09:43:18.250156-07:00","source_repo":"."} +{"id":"bd-120","content_hash":"05c11765dabd7e8e9ee7e0d67f7aaa0f2bd0b309423d780e86f79ee39b08f42a","title":"Add 'bd stale' command to show orphaned claims and dead executors","description":"Need visibility into orphaned claims - issues stuck in_progress with execution_state but executor is dead/stopped. Add command to show: 1) All issues with execution_state where executor status=stopped or last_heartbeat \u003e threshold, 2) Executor instance details (when died, how long claimed), 3) Option to auto-release them. Makes manual recovery easier until auto-cleanup (bd-118) is implemented.","design":"Query: SELECT i.*, ei.status, ei.last_heartbeat FROM issues i JOIN issue_execution_state ies ON i.id = ies.issue_id JOIN executor_instances ei ON ies.executor_instance_id = ei.instance_id WHERE ei.status='stopped' OR ei.last_heartbeat \u003c NOW() - threshold. Add --release flag to auto-release all found issues.","acceptance_criteria":"bd stale shows orphaned claims, bd stale --release cleans them up","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-18T00:25:16.530937-07:00","updated_at":"2025-10-21T00:25:40.52193-07:00","closed_at":"2025-10-18T02:09:12.529064-07:00","source_repo":"."} +{"id":"bd-1200","content_hash":"45d631d4e4891bd5e1143a1054a71f2c714e443a9e93080a7d0c8c35f9902604","title":"Agent 1 Batch 42 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.06282-07:00","updated_at":"2025-11-20T12:27:38.160378-05:00","closed_at":"2025-11-20T12:27:38.160378-05:00","source_repo":"."} +{"id":"bd-1201","content_hash":"ab5f98822cf9ad14af7c04fddbfb4eba7aebcabe0c239609f7c52a2181864c9d","title":"Agent 1 Batch 43 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.063722-07:00","updated_at":"2025-11-20T12:27:53.80818-05:00","closed_at":"2025-11-20T12:27:53.80818-05:00","source_repo":"."} +{"id":"bd-1202","content_hash":"1e771ed4b4e4cf9e4865b268b9165071a7e08c297fe73aab333c0a816fa6348f","title":"Agent 1 Batch 43 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.064349-07:00","updated_at":"2025-11-20T12:27:32.968033-05:00","closed_at":"2025-11-20T12:27:32.968033-05:00","source_repo":"."} +{"id":"bd-1203","content_hash":"6f8bafb95aa5b9487d176bb469dbc51b8ff4977cb9e4dc6326c06b08c724b076","title":"Agent 1 Batch 44 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.064979-07:00","updated_at":"2025-11-20T12:27:53.808032-05:00","closed_at":"2025-11-20T12:27:53.808032-05:00","source_repo":"."} +{"id":"bd-1204","content_hash":"39af4a8ddbcfbae3fe3edb2e288e808debd7670ebc7ccf9f916031396adfa5d4","title":"Agent 1 Batch 44 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.065589-07:00","updated_at":"2025-11-20T12:27:32.967813-05:00","closed_at":"2025-11-20T12:27:32.967813-05:00","source_repo":"."} +{"id":"bd-1205","content_hash":"4fa097ebf5f819eec67a63af901d099b7aaba6f041ddcb4dee02dfe48788a2e0","title":"Agent 1 Batch 45 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.066209-07:00","updated_at":"2025-11-20T12:27:53.807881-05:00","closed_at":"2025-11-20T12:27:53.807881-05:00","source_repo":"."} +{"id":"bd-1206","content_hash":"a09258673ba43c7ad031d9872ab53ecced7ca3a44048e03815203977abec6eae","title":"Agent 1 Batch 45 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.066788-07:00","updated_at":"2025-11-20T12:27:32.967601-05:00","closed_at":"2025-11-20T12:27:32.967601-05:00","source_repo":"."} +{"id":"bd-1207","content_hash":"4e0078126583b6ff3d819d4fac4518f9b229b471c646f65f3038261dc2349227","title":"Agent 1 Batch 46 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.067378-07:00","updated_at":"2025-11-20T12:27:53.80773-05:00","closed_at":"2025-11-20T12:27:53.80773-05:00","source_repo":"."} +{"id":"bd-1208","content_hash":"d8530832719f6da149b6b767df12041baf1d3596a8e64c99511b4c65beca5942","title":"Agent 1 Batch 46 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.067942-07:00","updated_at":"2025-11-20T12:27:32.967398-05:00","closed_at":"2025-11-20T12:27:32.967398-05:00","source_repo":"."} +{"id":"bd-1209","content_hash":"7c8977bf83ae22d3533202532c8a6faa39a8d1dc0cba3dacc3e4cd271dc83e50","title":"Agent 1 Batch 47 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.068555-07:00","updated_at":"2025-11-20T12:27:53.807572-05:00","closed_at":"2025-11-20T12:27:53.807572-05:00","source_repo":"."} +{"id":"bd-121","content_hash":"fa57542b7755b6dc7bfa7b1cdc63b3e26fc1232a84e6e1a6e56060d391c23428","title":"Bias ready work towards recent issues before oldest-first","description":"Currently 'bd ready' shows oldest issues first (by created_at). This can bury recently discovered work that might be more relevant. Propose a hybrid approach: show issues from the past 1-2 days first (sorted by priority), then fall back to oldest-first for older issues. This keeps fresh discoveries visible while still surfacing old forgotten work.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-18T09:31:15.036495-07:00","updated_at":"2025-10-21T00:25:40.522137-07:00","closed_at":"2025-10-18T09:35:55.084891-07:00","source_repo":"."} +{"id":"bd-1210","content_hash":"e494e8752c710f1a266c8238b7223fd3e1edfaa6beb819f22f64d32aec39d943","title":"Agent 1 Batch 47 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.069141-07:00","updated_at":"2025-11-20T12:27:32.967183-05:00","closed_at":"2025-11-20T12:27:32.967183-05:00","source_repo":"."} +{"id":"bd-1211","content_hash":"5af35e2579dcd8a7b75ce49edd98dc74886a1a3cb4eec122814400b8773d9320","title":"Agent 1 Batch 48 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.069761-07:00","updated_at":"2025-11-20T12:27:53.807422-05:00","closed_at":"2025-11-20T12:27:53.807422-05:00","source_repo":"."} +{"id":"bd-1212","content_hash":"4de9726220937546cd77ae64d58913a793cc5f7753763a4013f8427b38d887cc","title":"Agent 1 Batch 48 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.070369-07:00","updated_at":"2025-11-20T12:27:32.966928-05:00","closed_at":"2025-11-20T12:27:32.966928-05:00","source_repo":"."} +{"id":"bd-1213","content_hash":"b6fd11892fce28a1518b5cad51568ae65c8c1e6f7a45f0873bec89c44459aae6","title":"Agent 1 Batch 49 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.070981-07:00","updated_at":"2025-11-20T12:27:53.807268-05:00","closed_at":"2025-11-20T12:27:53.807268-05:00","source_repo":"."} +{"id":"bd-1214","content_hash":"095f138bbfcb5f08286b5e2159676ceffa7e315d38b3bad6b0a844b8cdbf5142","title":"Agent 1 Batch 49 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.071572-07:00","updated_at":"2025-11-20T12:27:32.966768-05:00","closed_at":"2025-11-20T12:27:32.966768-05:00","source_repo":"."} +{"id":"bd-1215","content_hash":"c3ff424696d9162fe38f3de8b2107323adc0ede9038f07028c972fe188a2c65b","title":"Agent 0 Batch 7 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.983166-07:00","updated_at":"2025-11-20T12:28:04.215206-05:00","closed_at":"2025-11-20T12:28:04.215206-05:00","source_repo":"."} +{"id":"bd-1216","content_hash":"d3278a4db269bee1096bbc2273caa6065500b7ad6a136619ded256e03aefc02f","title":"Agent 0 Batch 7 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.082056-07:00","updated_at":"2025-11-20T12:27:32.966602-05:00","closed_at":"2025-11-20T12:27:32.966602-05:00","source_repo":"."} +{"id":"bd-1217","content_hash":"2536b428638f0f9a1a565c5a9fed0a3b9beef96f2fef810e8f186784614908ae","title":"Agent 0 Batch 8 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.082801-07:00","updated_at":"2025-11-20T12:27:53.807114-05:00","closed_at":"2025-11-20T12:27:53.807114-05:00","source_repo":"."} +{"id":"bd-1218","content_hash":"bfb66e3bf64b03753e1b48a3b8c7b75ed71ae2266b595a1a981a6dcf3eb29426","title":"Agent 0 Batch 8 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.083463-07:00","updated_at":"2025-11-20T12:27:32.966399-05:00","closed_at":"2025-11-20T12:27:32.966399-05:00","source_repo":"."} +{"id":"bd-1219","content_hash":"e74ca4edeef2299d2a3af61d5de350905e2998abd11588168ec625cb3e746ef9","title":"Agent 0 Batch 9 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.084092-07:00","updated_at":"2025-11-20T12:27:53.806965-05:00","closed_at":"2025-11-20T12:27:53.806965-05:00","source_repo":"."} +{"id":"bd-122","content_hash":"a76795ea7b354d5c623a712ae84b877dda823d0d891d726b261f009d52bfa186","title":"Fix nil pointer dereference in renumber command","description":"The 'bd renumber' command crashes with a nil pointer dereference at renumber.go:52 because store is nil. The command doesn't properly handle daemon/direct mode initialization like other commands do. Error occurs on both --dry-run and --force modes.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-18T09:54:31.59912-07:00","updated_at":"2025-10-21T00:25:40.52235-07:00","closed_at":"2025-10-18T09:56:49.88701-07:00","source_repo":"."} +{"id":"bd-1220","content_hash":"e6fea9dbabd3f4bb95e1955dca59f94f19e0092b4488b3b8902f56f9c51ccd47","title":"Agent 0 Batch 9 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.084715-07:00","updated_at":"2025-11-20T12:27:32.966209-05:00","closed_at":"2025-11-20T12:27:32.966209-05:00","source_repo":"."} +{"id":"bd-1221","content_hash":"56ded42357c0456bafe7d5a03ef9acd132ffd0a3f0791eb719d324785ee5f216","title":"Agent 0 Batch 10 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.085356-07:00","updated_at":"2025-11-20T12:27:53.806819-05:00","closed_at":"2025-11-20T12:27:53.806819-05:00","source_repo":"."} +{"id":"bd-1222","content_hash":"8b4fe20dfe1d931a5ed00a4ea28c9ca38c2ca0b68f39088903c86832f03eaaa5","title":"Agent 0 Batch 10 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.085961-07:00","updated_at":"2025-11-20T12:27:32.966023-05:00","closed_at":"2025-11-20T12:27:32.966023-05:00","source_repo":"."} +{"id":"bd-1223","content_hash":"f940cf7d45f141e5fdad46467a664f271aecebd4c1dd0e4502a667142997f397","title":"Agent 0 Batch 11 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.0866-07:00","updated_at":"2025-11-20T12:27:53.806671-05:00","closed_at":"2025-11-20T12:27:53.806671-05:00","source_repo":"."} +{"id":"bd-1224","content_hash":"5a4bddb735d0097d7e8b8091a017b68206c7462dee35c1a5488a5ff8e47e14a3","title":"Agent 0 Batch 11 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.087193-07:00","updated_at":"2025-11-20T12:27:32.965871-05:00","closed_at":"2025-11-20T12:27:32.965871-05:00","source_repo":"."} +{"id":"bd-1225","content_hash":"835cd70a45073e859c670d9136e172f9f6d564304d8507fb843509a01e606a7f","title":"Agent 0 Batch 12 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.087799-07:00","updated_at":"2025-11-20T12:27:53.806518-05:00","closed_at":"2025-11-20T12:27:53.806518-05:00","source_repo":"."} +{"id":"bd-1226","content_hash":"39fef426d5887ab2d0b5950b0853057fc0454ee8fdc7b1b81515bbfcd0f11b8f","title":"Agent 0 Batch 12 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.088401-07:00","updated_at":"2025-11-20T12:27:32.965705-05:00","closed_at":"2025-11-20T12:27:32.965705-05:00","source_repo":"."} +{"id":"bd-1227","content_hash":"4d0a4afaa979ce3969815ac3610b70fd859f557c4cf6dcce3031bbf940573217","title":"Agent 0 Batch 13 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.089075-07:00","updated_at":"2025-11-20T12:27:53.806363-05:00","closed_at":"2025-11-20T12:27:53.806363-05:00","source_repo":"."} +{"id":"bd-1228","content_hash":"10e56e9756c09c81a1ab06744a111af740808afef20008f5d4f2f25b7c525627","title":"Agent 0 Batch 13 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.089653-07:00","updated_at":"2025-11-20T12:27:32.965432-05:00","closed_at":"2025-11-20T12:27:32.965432-05:00","source_repo":"."} +{"id":"bd-1229","content_hash":"9374aa37050d352e1045167c327cba5f2b1e866cc562743be327e67564aff411","title":"Agent 0 Batch 14 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.090246-07:00","updated_at":"2025-11-20T12:27:53.806211-05:00","closed_at":"2025-11-20T12:27:53.806211-05:00","source_repo":"."} +{"id":"bd-123","content_hash":"2d459f51e4c3ec637a29b0afb6314f7c6600926a029af949fd5c7457569c9a62","title":"Add storage cache eviction policy to daemon","description":"Daemon caches DB connections forever in storageCache map (server.go:29). For users with 50+ repos, this causes memory leaks and file descriptor exhaustion.\n\nNeed LRU cache with:\n- Max size limit (default: 50 repos)\n- TTL-based eviction (default: 30min idle)\n- Periodic cleanup goroutine\n\nLocation: internal/rpc/server.go:29-40","design":"Add StorageCacheEntry struct with lastAccess timestamp.\n\nImplement evictStaleStorage() method that runs every 5 minutes to close connections idle \u003e30min.\n\nAdd max cache size enforcement (LRU eviction when full).\n\nMake limits configurable via env vars:\n- BEADS_DAEMON_MAX_CACHE_SIZE (default: 50)\n- BEADS_DAEMON_CACHE_TTL (default: 30m)","acceptance_criteria":"- Cache evicts entries after 30min idle\n- Cache respects max size limit\n- Cleanup goroutine runs periodically\n- Evicted storage connections are properly closed\n- No resource leaks under sustained load\n- Unit tests for eviction logic","status":"closed","priority":0,"issue_type":"feature","created_at":"2025-10-18T13:05:46.174245-07:00","updated_at":"2025-10-21T00:25:40.522546-07:00","closed_at":"2025-10-18T13:16:56.921023-07:00","source_repo":"."} +{"id":"bd-1230","content_hash":"72dd81a0dfd83474482c9d5a52a30c9968c86808489176c21a0be67a4d9d475c","title":"Agent 0 Batch 14 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.090842-07:00","updated_at":"2025-11-20T12:27:32.965196-05:00","closed_at":"2025-11-20T12:27:32.965196-05:00","source_repo":"."} +{"id":"bd-1231","content_hash":"94139e31b3a3e58086ea77a916173a6f0c372a66a21925af0b9385de2f387c2f","title":"CI failing on all 3/4 test jobs despite individual tests passing","description":"CI has been broken for a day+ with mysterious test failures. Issue #173 on GitHub tracks this.\n\n## Current Status\n- **Lint job**: ✅ PASSING\n- **Test (Linux)**: ❌ FAILING (exit code 1)\n- **Test (Windows)**: ❌ FAILING (exit code 1)\n- **Test Nix Flake**: ❌ FAILING (exit code 1)\n\n## Key Observations\nAll three failing jobs show identical pattern:\n- Individual test output shows PASS for every test\n- Final result: `FAIL github.com/steveyegge/beads/cmd/bd`\n- Exit code 1 despite no visible test failures\n- Last visible test output before failure: \"No Reason Issue\" test (TestCloseCommand/close_without_reason)\n\n## Investigation So Far\n1. All tests appear to pass when examined individually\n2. Likely causes:\n - Race detector finding data races during test cleanup (`-race` flag)\n - Panic/error occurring after main tests complete\n - Test harness issue not reporting actual failure\n - Possible regression from PR #203 (dependency_type changes)\n\n## Recent CI Runs\n- Run 19015040655 (latest): 3/4 failing\n- Multiple recent commits tried to fix Windows/lint issues\n- Agent on rrnewton/beads fork attempting fixes (2/4 passing there)\n\n## Next Steps\n1. Run tests locally with `-race -v` to see full output\n2. Check for unreported test failures or panics\n3. Examine test cleanup/teardown code\n4. Review recent changes around close command tests\n5. Consider if race detector is too sensitive or catching real issues","notes":"## Progress Update\n\n### ✅ Fixed (commits 09bd4d3, 21a29bc)\n1. **Daemon auto-import** - Always recompute content_hash in importer to avoid stale hashes\n2. **TestScripts failures** - Added bd binary to PATH for shell subprocess tests\n3. **Test infrastructure** - Added .gitignore to test repos, fixed last_import_time metadata\n\n### ✅ CI Status (Run 19015638968)\n- **Test (Linux)**: ✅ SUCCESS - All tests passing\n- **Test (Windows)**: ❌ FAILURE - Pre-existing Windows test failures\n- **Test Nix Flake**: ❌ FAILURE - Build fails with same test errors\n- **Lint**: ❌ FAILURE - Pre-existing issue in migrate.go:647\n\n### ❌ Remaining Issues (not related to original bd-1231)\n\n**Windows failures:**\n- TestFindDatabasePathEnvVar\n- TestHashIDs_MultiCloneConverge \n- TestHashIDs_IdenticalContentDedup\n- TestDatabaseReinitialization (5 subtests)\n- TestFindBeadsDir_NotFound\n- TestMetricsSnapshot/uptime\n\n**Lint failure:**\n- cmd/bd/migrate.go:647:37: cleanupWALFiles - result 0 (error) is always nil (unparam)\n\n**Nix failure:**\n- Build fails during test phase with same test errors\n\n### Next Steps\n1. Investigate Windows-specific test failures\n2. Fix linting issue in migrate.go\n3. Debug Nix build test failures","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.091438-07:00","updated_at":"2025-11-12T10:57:44.249476-08:00","closed_at":"2025-11-02T12:32:00.158346-08:00","external_ref":"https://github.com/steveyegge/beads/issues/173","source_repo":"."} +{"id":"bd-1232","content_hash":"7ad6b4bf843ad8f6073d77e4b5aea460e983aee8210c1cdaf677e1ce43627a8b","title":"Agent 0 Batch 15 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.091993-07:00","updated_at":"2025-11-20T12:27:32.96505-05:00","closed_at":"2025-11-20T12:27:32.96505-05:00","source_repo":"."} +{"id":"bd-1233","content_hash":"edb5bb722fcba70a0c0c2164c064c827ee1abd2e8a227ea2471967b662e2c583","title":"Agent 0 Batch 16 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.092573-07:00","updated_at":"2025-11-20T12:27:53.806007-05:00","closed_at":"2025-11-20T12:27:53.806007-05:00","source_repo":"."} +{"id":"bd-1234","content_hash":"7e09c3b91df57087ecf7545c56bff283a64e380a06c8f655dfdf676840a7d1ac","title":"Agent 0 Batch 16 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.093138-07:00","updated_at":"2025-11-20T12:27:32.964897-05:00","closed_at":"2025-11-20T12:27:32.964897-05:00","source_repo":"."} +{"id":"bd-1235","content_hash":"e2e7f1cb04ec5c941dbd7b2d05e5a2e8098af98b73384c36cc45bbc1ff672596","title":"Agent 0 Batch 17 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.093753-07:00","updated_at":"2025-11-20T12:27:53.805834-05:00","closed_at":"2025-11-20T12:27:53.805834-05:00","source_repo":"."} +{"id":"bd-1236","content_hash":"b4e6cd7d42d1f1fbf8bab58e7479fb6f7e7357c8130eab03b8086bdde400a228","title":"Agent 0 Batch 17 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.094313-07:00","updated_at":"2025-11-20T12:27:32.964725-05:00","closed_at":"2025-11-20T12:27:32.964725-05:00","source_repo":"."} +{"id":"bd-1237","content_hash":"9e5b4ec549ae374651a08d270f35fd52eba0e7865027fdbf01bb620b00940ed9","title":"Agent 0 Batch 18 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.094915-07:00","updated_at":"2025-11-20T12:27:53.80568-05:00","closed_at":"2025-11-20T12:27:53.80568-05:00","source_repo":"."} +{"id":"bd-1238","content_hash":"c58310ff76081065272d7e90ed6c871707215c6197e0e5d2d8df4bd5736ed73b","title":"Agent 0 Batch 18 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.095484-07:00","updated_at":"2025-11-20T12:27:32.964577-05:00","closed_at":"2025-11-20T12:27:32.964577-05:00","source_repo":"."} +{"id":"bd-1239","content_hash":"177316f26ff0f711c7dbe32f05a01d8b085cf3304d8ec2992d842627b0d5c61c","title":"Agent 0 Batch 19 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.096075-07:00","updated_at":"2025-11-20T12:27:53.805529-05:00","closed_at":"2025-11-20T12:27:53.805529-05:00","source_repo":"."} +{"id":"bd-124","content_hash":"d79bc43bbd3a471ec8a843ab17a2ef601ae39025e27e4abe067e6e3a8373613e","title":"Add daemon health check endpoint and probes","description":"Auto-start only checks socket existence, not daemon responsiveness. Daemon can be running but unresponsive (deadlock, hung DB). Users work in degraded direct mode without knowing why.\n\nNeed health check RPC operation that:\n- Tests DB connectivity (1s timeout)\n- Returns uptime, status, metrics\n- Used by auto-start before connecting\n- Enables monitoring/alerting\n\nLocation: internal/rpc/server.go, cmd/bd/main.go:100-108","design":"Add OpHealth RPC operation to protocol.\n\nhandleHealth() implementation:\n- Quick DB ping with 1s timeout\n- Return status, uptime, version\n- Include basic metrics (connections, cache size)\n\nUpdate TryConnect() to call Health() after socket connection:\n- If health check fails, close connection and return nil\n- Enables transparent failover to direct mode\n\nAdd 'bd daemon --health' CLI command for monitoring.","acceptance_criteria":"- Health check RPC endpoint works\n- Returns structured health status\n- Client uses health check before operations\n- bd daemon --health command exists\n- Unhealthy daemon triggers auto-restart or fallback\n- Health check completes in \u003c2 seconds","status":"closed","priority":0,"issue_type":"feature","created_at":"2025-10-18T13:05:58.647592-07:00","updated_at":"2025-10-21T00:25:40.522724-07:00","closed_at":"2025-10-18T13:32:15.106003-07:00","source_repo":"."} +{"id":"bd-1240","content_hash":"7ee6f72a3b117bcff0c533450d8f3df7ea6cf45e99bc5099cb61070eebae6610","title":"Agent 0 Batch 19 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.096651-07:00","updated_at":"2025-11-20T12:27:32.964429-05:00","closed_at":"2025-11-20T12:27:32.964429-05:00","source_repo":"."} +{"id":"bd-1241","content_hash":"b1ec58c029365ef3238c65dd80af9061066c3d688095350c6f113e775bbc5794","title":"Agent 0 Batch 20 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.097262-07:00","updated_at":"2025-11-20T12:27:53.805376-05:00","closed_at":"2025-11-20T12:27:53.805376-05:00","source_repo":"."} +{"id":"bd-1242","content_hash":"f50a37d2a8734e4baaeb2283b4d55eb3023a9be84f3b2464fffcd70d5a45729d","title":"Agent 0 Batch 20 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.097847-07:00","updated_at":"2025-11-20T12:27:32.964281-05:00","closed_at":"2025-11-20T12:27:32.964281-05:00","source_repo":"."} +{"id":"bd-1243","content_hash":"cd5e5b31768f6470fa69c99991b38dd9ccf5c545b4d8014d3e83e567e5b31b07","title":"Agent 0 Batch 21 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.098445-07:00","updated_at":"2025-11-20T12:27:53.805227-05:00","closed_at":"2025-11-20T12:27:53.805227-05:00","source_repo":"."} +{"id":"bd-1244","content_hash":"b85db0d53c5031b12ea9489c02995e344c2e27edfc35fb506c017087061a2767","title":"Agent 0 Batch 21 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.099037-07:00","updated_at":"2025-11-20T12:27:32.964133-05:00","closed_at":"2025-11-20T12:27:32.964133-05:00","source_repo":"."} +{"id":"bd-1245","content_hash":"4809bbe18b6d5f5e50cc09c0c27a56593973ffa7bbf1e6117e4918daceb1bc61","title":"Agent 0 Batch 22 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.099613-07:00","updated_at":"2025-11-20T12:27:53.805076-05:00","closed_at":"2025-11-20T12:27:53.805076-05:00","source_repo":"."} +{"id":"bd-1246","content_hash":"f0fe56903b654773131ca76c665fe1d737019d78e0600459fbc17c8f86568360","title":"Agent 0 Batch 22 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.100201-07:00","updated_at":"2025-11-20T12:27:32.96398-05:00","closed_at":"2025-11-20T12:27:32.96398-05:00","source_repo":"."} +{"id":"bd-1247","content_hash":"5193ab7ef9d4857c964fc343c4f5c3ae276243cf2f29c2ef661ca0806889947d","title":"Agent 0 Batch 23 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.100822-07:00","updated_at":"2025-11-20T12:27:53.804897-05:00","closed_at":"2025-11-20T12:27:53.804897-05:00","source_repo":"."} +{"id":"bd-1248","content_hash":"52d585658a602d76d339c45daac356c3ccf2f355e0ca3c74a8fbf41d227dc557","title":"Agent 0 Batch 23 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.101422-07:00","updated_at":"2025-11-20T12:27:32.963801-05:00","closed_at":"2025-11-20T12:27:32.963801-05:00","source_repo":"."} +{"id":"bd-1249","content_hash":"a4e24ff45ff100704ec32b184b6a2c74cebb3aac9e6c09db4c67c06c1fdb3565","title":"Agent 0 Batch 24 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.102008-07:00","updated_at":"2025-11-20T12:27:53.804746-05:00","closed_at":"2025-11-20T12:27:53.804746-05:00","source_repo":"."} +{"id":"bd-125","content_hash":"b16c1d8b7d9b19881a4e325a2f92b1b14d6496471069f2123200b7329bb73fff","title":"Add stale socket and crash recovery for daemon","description":"When daemon crashes (panic, OOM, signal), socket file remains and blocks new daemon start. Users must manually remove .beads/bd.sock.\n\nProblems:\n- Socket file remains after crash\n- PID file remains (isDaemonRunning false positive)\n- No automatic recovery\n- Users get 'daemon already running' error\n\nLocation: cmd/bd/daemon.go, cmd/bd/main.go:221-311","design":"Improve stale detection in tryAutoStartDaemon():\n\n1. If socket exists, try to connect\n2. If connection fails → stale socket, remove it\n3. Also remove PID file and lock files\n4. Retry daemon start\n\nAdd self-healing to daemon startup:\n- On startup, check for stale PID files\n- If PID in file doesn't exist, remove and continue\n- Use exclusive file lock to prevent races\n\nOptional: Add crash recovery watchdog that restarts daemon on exit.","acceptance_criteria":"- Stale sockets are automatically detected and removed\n- Auto-start recovers from daemon crashes\n- No manual intervention needed for crash recovery\n- PID file management is robust\n- Lock files prevent multiple daemon instances\n- Tests for crash recovery scenarios","notes":"Oracle code review identified race conditions. Improvements made:\n- Moved cleanup AFTER lock acquisition (prevents unlinking live sockets)\n- Added PID liveness check before removing socket\n- Added stale lock detection with retry\n- Tightened directory permissions to 0700\n- Improved socket readiness probing with short timeouts\n- Made removeOldSocket() ignore ENOENT errors\n\nChanges eliminate race where socket could be removed during daemon startup window.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-18T13:06:10.116917-07:00","updated_at":"2025-10-21T00:25:40.522925-07:00","closed_at":"2025-10-18T13:56:51.318675-07:00","source_repo":"."} +{"id":"bd-1250","content_hash":"973a6104163b0395a035c9c9ba95eda2fd9f927ed1da8871e3708d95ccbb74c1","title":"Agent 0 Batch 24 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.102584-07:00","updated_at":"2025-11-20T12:27:32.963648-05:00","closed_at":"2025-11-20T12:27:32.963648-05:00","source_repo":"."} +{"id":"bd-1251","content_hash":"ef134252d718481b279be28ac08ec476ada84a1253616a3b79659418c73e885a","title":"Agent 0 Batch 25 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.103186-07:00","updated_at":"2025-11-20T12:27:53.80459-05:00","closed_at":"2025-11-20T12:27:53.80459-05:00","source_repo":"."} +{"id":"bd-1252","content_hash":"1e70aaa1610a796b561b0fbf4a461eaaf97907ec6e37086b6664d0ee10cfe82a","title":"Agent 0 Batch 25 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.10376-07:00","updated_at":"2025-11-20T12:27:32.963501-05:00","closed_at":"2025-11-20T12:27:32.963501-05:00","source_repo":"."} +{"id":"bd-1253","content_hash":"a5cddf1c6da049531ca1613cfee5eff8361341df2fbfbd69aabff2353fdacc8e","title":"Agent 0 Batch 26 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.104359-07:00","updated_at":"2025-11-20T12:27:53.804438-05:00","closed_at":"2025-11-20T12:27:53.804438-05:00","source_repo":"."} +{"id":"bd-1254","content_hash":"af7c27a32ccf3f9176582645a5ed4a39d4251fe1f1914a669fe94a413ffd7d66","title":"Agent 0 Batch 26 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.10496-07:00","updated_at":"2025-11-20T12:27:32.963307-05:00","closed_at":"2025-11-20T12:27:32.963307-05:00","source_repo":"."} +{"id":"bd-1255","content_hash":"d3ad1447d783ac448a72c3251426402374b6188c5a44b68086f2cfebd14e50aa","title":"Agent 0 Batch 27 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.105578-07:00","updated_at":"2025-11-20T12:27:53.804233-05:00","closed_at":"2025-11-20T12:27:53.804233-05:00","source_repo":"."} +{"id":"bd-1256","content_hash":"21f0ffba2fb3268d6a7879736ae88cfb0bbd04d0fa1dcdd6010b56ef52886e3f","title":"Agent 0 Batch 27 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.106174-07:00","updated_at":"2025-11-20T12:27:32.963155-05:00","closed_at":"2025-11-20T12:27:32.963155-05:00","source_repo":"."} +{"id":"bd-1257","content_hash":"f31f3b48fc2d269d6ae492104ec56526736ac3e8e370e84063f081acc3b28a00","title":"Agent 0 Batch 28 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.106765-07:00","updated_at":"2025-11-20T12:27:53.804026-05:00","closed_at":"2025-11-20T12:27:53.804026-05:00","source_repo":"."} +{"id":"bd-1258","content_hash":"5dcbe080d38a27c05a21e0191f2f6cf38e528430c2018b021acb299a8673d3bc","title":"Agent 0 Batch 28 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.107375-07:00","updated_at":"2025-11-20T12:27:32.963003-05:00","closed_at":"2025-11-20T12:27:32.963003-05:00","source_repo":"."} +{"id":"bd-1259","content_hash":"7401baf75097ad3e5c65a9c0c6fa0859e5eccb6f9206fedfa583eaf021f36819","title":"Agent 0 Batch 29 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.107967-07:00","updated_at":"2025-11-20T12:27:53.803851-05:00","closed_at":"2025-11-20T12:27:53.803851-05:00","source_repo":"."} +{"id":"bd-126","content_hash":"73b9406559efb5eb433792fda70beac444139f39d2fe3bf111bb6c8bc3e34c51","title":"Add lifecycle management for beads-mcp processes","description":"MCP server processes accumulate without cleanup. Each tool invocation spawns a new Python process that lingers after Claude disconnects.\n\nObserved: 6+ beads-mcp processes running simultaneously.\n\nProblems:\n- No parent-child relationship tracking\n- No cleanup on MCP client disconnect\n- Processes leak over days of use\n- Could accumulate hundreds of processes\n\nLocation: integrations/beads-mcp/src/beads_mcp/server.py","design":"Add proper cleanup handlers to MCP server:\n\n1. Register atexit handler to close daemon connections\n2. Handle SIGTERM/SIGINT for graceful shutdown\n3. Close daemon client in cleanup()\n4. Remove any temp files\n\nOptional improvements:\n- Track active connections to daemon\n- Implement connection pooling\n- Add process timeout/TTL\n- Log lifecycle events for debugging\n\nExample:\nimport atexit\nimport signal\n\ndef cleanup():\n # Close daemon connections\n # Remove temp files\n pass\n\natexit.register(cleanup)\nsignal.signal(signal.SIGTERM, lambda s, f: cleanup())","acceptance_criteria":"- MCP processes clean up on exit\n- Daemon connections are properly closed\n- No process leaks after repeated use\n- Signal handlers work correctly\n- Cleanup runs on normal and abnormal exit\n- Test with multiple concurrent MCP invocations","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-18T13:06:22.030027-07:00","updated_at":"2025-10-21T00:25:40.523122-07:00","closed_at":"2025-10-18T14:27:41.87646-07:00","source_repo":"."} +{"id":"bd-1260","content_hash":"30b4f302a9587b1023ef2f875351a8d24bd34a999b3ac279064385dc792655f7","title":"Agent 0 Batch 29 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.108556-07:00","updated_at":"2025-11-20T12:27:32.962848-05:00","closed_at":"2025-11-20T12:27:32.962848-05:00","source_repo":"."} +{"id":"bd-1261","content_hash":"5dcd8f1c883e3542367d3508e4818b5d31bb399eab3b8cd757d5a15bd412275e","title":"Agent 0 Batch 30 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.109145-07:00","updated_at":"2025-11-20T12:27:53.803647-05:00","closed_at":"2025-11-20T12:27:53.803647-05:00","source_repo":"."} +{"id":"bd-1262","content_hash":"a06b83e2b8e60ed58758d9f5f9ccd7683bd709c34bdb14b1c3d84b8172970d21","title":"Agent 0 Batch 30 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.109735-07:00","updated_at":"2025-11-20T12:27:32.962697-05:00","closed_at":"2025-11-20T12:27:32.962697-05:00","source_repo":"."} +{"id":"bd-1263","content_hash":"cecbe298c377a86734027269a5fd29b7b2c6f5f5dacc9aebc8416e6930b43a22","title":"Agent 0 Batch 31 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.110351-07:00","updated_at":"2025-11-20T12:27:53.803491-05:00","closed_at":"2025-11-20T12:27:53.803491-05:00","source_repo":"."} +{"id":"bd-1264","content_hash":"6a313495bd74ce5e27973c0d68fd09d7343566b883912d09901247d9ac15cb1d","title":"Agent 0 Batch 31 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.110925-07:00","updated_at":"2025-11-20T12:27:32.962541-05:00","closed_at":"2025-11-20T12:27:32.962541-05:00","source_repo":"."} +{"id":"bd-1265","content_hash":"bc54369c086d4c422822ef47b49d31bc2e12fcdc9be554444adc0d52ba84b5c5","title":"Agent 0 Batch 32 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.111809-07:00","updated_at":"2025-11-20T12:27:53.803312-05:00","closed_at":"2025-11-20T12:27:53.803312-05:00","source_repo":"."} +{"id":"bd-1266","content_hash":"19f86c1df39f2cabe8aa0138798076d6e8d26574caf8c86262ca5344531239f2","title":"Agent 2 Batch 0 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.947517-07:00","updated_at":"2025-11-20T12:28:04.2207-05:00","closed_at":"2025-11-20T12:28:04.2207-05:00","source_repo":"."} +{"id":"bd-1267","content_hash":"0c1d58a61dafea42e1997a8368b1ef3be3de62c649a811c74151deaac585a5db","title":"Agent 2 Batch 0 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.11335-07:00","updated_at":"2025-11-20T12:27:32.962217-05:00","closed_at":"2025-11-20T12:27:32.962217-05:00","source_repo":"."} +{"id":"bd-1268","content_hash":"4be8afa32dcfcabed3647fae97f344f949b6ed85422374aa767a2a3dcd549ea4","title":"Agent 2 Batch 1 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.113984-07:00","updated_at":"2025-11-20T12:27:53.80316-05:00","closed_at":"2025-11-20T12:27:53.80316-05:00","source_repo":"."} +{"id":"bd-1269","content_hash":"3f44dc3303444ab7f604792b0286ef25a786af379493dfb714cb176545c6adad","title":"Agent 2 Batch 1 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.114603-07:00","updated_at":"2025-11-20T12:27:32.962032-05:00","closed_at":"2025-11-20T12:27:32.962032-05:00","source_repo":"."} +{"id":"bd-127","content_hash":"43967f66191f949b2f80e7a7b3afd7647be7bfd89ce1526a9eacc7083fd286ac","title":"Add global daemon auto-start support","description":"Auto-start only works for local daemon. Users with multiple repos must manually run 'bd daemon --global'.\n\nProblems:\n- No detection of whether global daemon is preferable\n- No migration path from local → global\n- Multi-repo users don't discover global daemon\n- Manual setup required\n\nLocation: cmd/bd/main.go:221-311","design":"Add heuristics to shouldUseGlobalDaemon():\n\n1. Count .beads repos under home directory\n2. If \u003e3 repos found, prefer global daemon\n3. Check BEADS_PREFER_GLOBAL_DAEMON env var\n4. Check config file preference\n\nUpdate tryAutoStartDaemon() to:\n- Use shouldUseGlobalDaemon() to pick mode\n- Pass --global flag when appropriate\n- Log decision for debugging\n\nAdd migration helper:\n- Detect running local daemon\n- Suggest switching to global if multi-repo detected\n- bd daemon --migrate-to-global command","acceptance_criteria":"- Auto-start uses global daemon when appropriate\n- Multi-repo detection works correctly\n- Users can configure preference\n- Migration path is smooth\n- Both local and global auto-start work\n- Documentation updated","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-18T13:06:33.633238-07:00","updated_at":"2025-10-21T00:25:40.523318-07:00","closed_at":"2025-10-18T14:41:28.594337-07:00","source_repo":"."} +{"id":"bd-1270","content_hash":"4b717433314fe90cbc3a62de7a5c53144f4b943eb6dc6e5f9d2d1fa4919dc09b","title":"Agent 2 Batch 2 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.115256-07:00","updated_at":"2025-11-20T12:27:53.802978-05:00","closed_at":"2025-11-20T12:27:53.802978-05:00","source_repo":"."} +{"id":"bd-1271","content_hash":"24964937436a1b2cec72080a8886e9f1927f15c53dea56a510335d70a9715636","title":"Agent 2 Batch 2 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.115869-07:00","updated_at":"2025-11-20T12:27:32.961846-05:00","closed_at":"2025-11-20T12:27:32.961846-05:00","source_repo":"."} +{"id":"bd-1272","content_hash":"566640bb2e8511f555688b74e84276e3ca6eb509b17031395226d53f9318f4ca","title":"Agent 2 Batch 3 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.116502-07:00","updated_at":"2025-11-20T12:27:53.80279-05:00","closed_at":"2025-11-20T12:27:53.80279-05:00","source_repo":"."} +{"id":"bd-1273","content_hash":"85e61842ce41b01d2c5809cd21955e0b4f28096bb5d640cf30deb2481539ba66","title":"Agent 2 Batch 3 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.117111-07:00","updated_at":"2025-11-20T12:27:32.961675-05:00","closed_at":"2025-11-20T12:27:32.961675-05:00","source_repo":"."} +{"id":"bd-1274","content_hash":"9c3b051aeebd2e1fd87291c5807de26913d9719bdc6a584ecf508fff94444da8","title":"Agent 2 Batch 4 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.117769-07:00","updated_at":"2025-11-20T12:27:53.802638-05:00","closed_at":"2025-11-20T12:27:53.802638-05:00","source_repo":"."} +{"id":"bd-1275","content_hash":"15ac1bac7c9307b135348972b040ceb2222ce386bf2175bc4c4617b54fa3da55","title":"Agent 2 Batch 4 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.118363-07:00","updated_at":"2025-11-20T12:27:32.961495-05:00","closed_at":"2025-11-20T12:27:32.961495-05:00","source_repo":"."} +{"id":"bd-1276","content_hash":"9bd30897e17e9dd890cc7211715b4f7e71425d019d713f8a50b27ac88473a39e","title":"Agent 2 Batch 5 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.118999-07:00","updated_at":"2025-11-20T12:27:53.802489-05:00","closed_at":"2025-11-20T12:27:53.802489-05:00","source_repo":"."} +{"id":"bd-1277","content_hash":"80a5012b13796314ddc95cd85529f7dd621fd403189babc51f2aa6ee5edaa7cc","title":"Agent 2 Batch 5 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.119583-07:00","updated_at":"2025-11-20T12:27:32.961269-05:00","closed_at":"2025-11-20T12:27:32.961269-05:00","source_repo":"."} +{"id":"bd-1278","content_hash":"8372524501e9ba507a52a65a22229c09c90fc76e3a89a5cafad37f011b2dbe18","title":"Agent 2 Batch 6 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.120184-07:00","updated_at":"2025-11-20T12:27:53.802333-05:00","closed_at":"2025-11-20T12:27:53.802333-05:00","source_repo":"."} +{"id":"bd-1279","content_hash":"569a0a8da0adb0a767d1d865541b49607c8f3ac8af7784cafeb8b0888b74a7f5","title":"Agent 2 Batch 6 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.120769-07:00","updated_at":"2025-11-20T12:27:32.961079-05:00","closed_at":"2025-11-20T12:27:32.961079-05:00","source_repo":"."} +{"id":"bd-128","content_hash":"722f63e6a12e45bb7a80d343e5ba2dd2572f72e7443ec732982132cfa5b1afaa","title":"Improve daemon fallback visibility and user feedback","description":"When daemon is unavailable, bd silently falls back to direct mode. Users don't know:\n- That daemon exists\n- Why auto-start failed\n- That they're in degraded mode\n- How to fix it\n\nThis creates confusion for multi-repo users who get slower performance without explanation.\n\nLocation: cmd/bd/main.go:98-130","design":"Add visibility at multiple levels:\n\n1. Debug logging (existing BD_DEBUG):\n - Already shows daemon connection attempts\n - Add auto-start success/failure\n\n2. Verbose mode (BD_VERBOSE):\n - Show warning when falling back\n - Suggest 'bd daemon --status' to check\n\n3. Status indicator:\n - Add daemon status to all commands when --json\n - Example: {\"daemon_status\": \"healthy\", \"daemon_type\": \"local\", ...}\n\n4. Explicit status command:\n - bd daemon --status shows detailed info\n - Shows whether daemon is running/healthy/unavailable\n\n5. Helpful error messages:\n - When auto-start fails repeatedly\n - When falling back after health check failure\n - With actionable next steps","acceptance_criteria":"- Users can see daemon status easily\n- Fallback warnings are helpful not noisy\n- JSON output includes daemon status\n- Error messages are actionable\n- Documentation explains status indicators\n- bd daemon --status command works","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-18T13:06:46.212558-07:00","updated_at":"2025-10-21T00:25:40.523514-07:00","closed_at":"2025-10-18T18:36:51.769633-07:00","source_repo":"."} +{"id":"bd-1280","content_hash":"cb2e609787c58515be99d34f15ed367f2afc9d6b8be70f1348e02dfecd676755","title":"Agent 2 Batch 7 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.121362-07:00","updated_at":"2025-11-20T12:27:53.802146-05:00","closed_at":"2025-11-20T12:27:53.802146-05:00","source_repo":"."} +{"id":"bd-1281","content_hash":"f9015f1484835540e92317ce08c17dd287b45fd9718ccaab7b03b460db7c9244","title":"Agent 2 Batch 7 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.121959-07:00","updated_at":"2025-11-20T12:27:32.960799-05:00","closed_at":"2025-11-20T12:27:32.960799-05:00","source_repo":"."} +{"id":"bd-1282","content_hash":"daa6952cfcb08498fbea9ebd65d626cf3c2b779a8d3208468999ef7ce37462a6","title":"Agent 2 Batch 8 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.122558-07:00","updated_at":"2025-11-20T12:27:53.801994-05:00","closed_at":"2025-11-20T12:27:53.801994-05:00","source_repo":"."} +{"id":"bd-1283","content_hash":"6b14256a8f61225bbc546e983d78998acf3dd7e3a38eeb094a15bc9f4fa5d9d2","title":"Agent 2 Batch 8 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.123152-07:00","updated_at":"2025-11-20T12:27:32.960639-05:00","closed_at":"2025-11-20T12:27:32.960639-05:00","source_repo":"."} +{"id":"bd-1284","content_hash":"111bdee53150e3d76f78d653525586609ad51b8878609499578239ac2daa9881","title":"Agent 2 Batch 9 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.123741-07:00","updated_at":"2025-11-20T12:27:53.801841-05:00","closed_at":"2025-11-20T12:27:53.801841-05:00","source_repo":"."} +{"id":"bd-1285","content_hash":"f3dee2d11eabac9cc5d617ced5364d376c7ebee5f7f731b2c34be99633f66171","title":"Agent 2 Batch 9 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.124361-07:00","updated_at":"2025-11-20T12:27:32.960437-05:00","closed_at":"2025-11-20T12:27:32.960437-05:00","source_repo":"."} +{"id":"bd-1286","content_hash":"11d723cf217a40e1ecfb65f330da5dff484ae84aa1349a791c41f922299c9e8a","title":"Agent 2 Batch 10 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.124967-07:00","updated_at":"2025-11-20T12:27:53.801687-05:00","closed_at":"2025-11-20T12:27:53.801687-05:00","source_repo":"."} +{"id":"bd-1287","content_hash":"426f6bfdc0fc3c8557b1baf8eaf8b242aee12f4c49d1f29bcf89705c2fad982d","title":"Agent 2 Batch 10 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.125558-07:00","updated_at":"2025-11-20T12:27:32.960233-05:00","closed_at":"2025-11-20T12:27:32.960233-05:00","source_repo":"."} +{"id":"bd-1288","content_hash":"e165a721996e95f8762968f7525b872a928dfab2f68bf9d3b8593f4c868f317e","title":"Agent 2 Batch 11 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.126166-07:00","updated_at":"2025-11-20T12:27:53.801506-05:00","closed_at":"2025-11-20T12:27:53.801506-05:00","source_repo":"."} +{"id":"bd-1289","content_hash":"20177d0ee81cbc1ba5ef6b7522b88dc96c59a832984f120b0120f76848bef19e","title":"Agent 2 Batch 11 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.12675-07:00","updated_at":"2025-11-20T12:27:32.960065-05:00","closed_at":"2025-11-20T12:27:32.960065-05:00","source_repo":"."} +{"id":"bd-129","content_hash":"94093876ee70caad20d7ca37327c56aa17129933ea7db8abfe2366edcdd46bc9","title":"Add version compatibility checks for daemon RPC protocol","description":"Client (bd CLI) and daemon may be different versions after upgrade. This causes:\n- Missing features (newer CLI, older daemon)\n- Protocol mismatches (older CLI, newer daemon)\n- Silent failures or confusing errors\n- No guidance to restart daemon\n\nLocation: internal/rpc/protocol.go, internal/rpc/client.go","design":"Add version field to RPC protocol:\n\n1. Add ClientVersion to Request struct\n2. Populate from Version constant in client\n3. Server checks compatibility in handleRequest()\n\nCompatibility rules:\n- Major version must match\n- Minor version backward compatible\n- Patch version always compatible\n\nOn mismatch:\n- Return clear error message\n- Suggest 'bd daemon --stop \u0026\u0026 bd daemon'\n- Log version info for debugging\n\nAdd to ping/health response:\n- Server version\n- Protocol version\n- Compatibility info\n\nAdd bd version --daemon command to check running daemon version.","acceptance_criteria":"- Version field in RPC protocol\n- Server validates client version\n- Clear error messages on mismatch\n- Health check returns version info\n- bd version --daemon command works\n- Documentation on version policy\n- Tests for version compatibility","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-18T13:06:57.417411-07:00","updated_at":"2025-10-21T00:25:40.523711-07:00","closed_at":"2025-10-18T18:46:03.047035-07:00","source_repo":"."} +{"id":"bd-1290","content_hash":"87bd1ecfc5f1d3418932965c92bae8174e6500460179f5f9c1baf5ade06531c8","title":"Agent 2 Batch 12 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.127364-07:00","updated_at":"2025-11-20T12:27:53.801276-05:00","closed_at":"2025-11-20T12:27:53.801276-05:00","source_repo":"."} +{"id":"bd-1291","content_hash":"afffb17801302a89cea0b26a84814fc390fa84e47d4878dfe6f31e6fbb714b4c","title":"Agent 2 Batch 12 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.127962-07:00","updated_at":"2025-11-20T12:27:32.959891-05:00","closed_at":"2025-11-20T12:27:32.959891-05:00","source_repo":"."} +{"id":"bd-1292","content_hash":"d94fbcb1af0e707da527803bf588c4ddee6871dd5503cc9ad2c1d773ab79b40e","title":"Agent 2 Batch 13 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.128564-07:00","updated_at":"2025-11-20T12:27:53.801063-05:00","closed_at":"2025-11-20T12:27:53.801063-05:00","source_repo":"."} +{"id":"bd-1293","content_hash":"8753117fb463dabf0e0fa3f9e56327435e92005a0e83cb8ad27e6702be7b003c","title":"Agent 2 Batch 13 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.129143-07:00","updated_at":"2025-11-20T12:27:32.959714-05:00","closed_at":"2025-11-20T12:27:32.959714-05:00","source_repo":"."} +{"id":"bd-1294","content_hash":"bfd77851baa319f6ff625712a3b97c9a3335e69412096dce7ce4c51df6c29f4f","title":"Agent 2 Batch 14 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.129739-07:00","updated_at":"2025-11-20T12:27:53.800477-05:00","closed_at":"2025-11-20T12:27:53.800477-05:00","source_repo":"."} +{"id":"bd-1295","content_hash":"3bf988b2264de5a5895190bb95933e08a2b65f5f8a4b13bd54df8e1b0e6d48d8","title":"Agent 2 Batch 14 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.130362-07:00","updated_at":"2025-11-20T12:27:32.959553-05:00","closed_at":"2025-11-20T12:27:32.959553-05:00","source_repo":"."} +{"id":"bd-1296","content_hash":"bcd74701dc49c9e3b421fb06f4adfabfb8ce053602513ddf78dfa2d1b2308989","title":"Agent 2 Batch 15 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.130951-07:00","updated_at":"2025-11-20T12:27:48.590377-05:00","closed_at":"2025-11-20T12:27:48.590377-05:00","source_repo":"."} +{"id":"bd-1297","content_hash":"1e1968ef8a63750a7a198976556ee66db40b9e21ff326740581836f208ec1e67","title":"Agent 2 Batch 15 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.131531-07:00","updated_at":"2025-11-20T12:27:32.959274-05:00","closed_at":"2025-11-20T12:27:32.959274-05:00","source_repo":"."} +{"id":"bd-1298","content_hash":"5e66e78d7703943e6546962947bbd1e11663e36a7bd2c9e4c801709a7c3da6f2","title":"Agent 2 Batch 16 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.132138-07:00","updated_at":"2025-11-20T12:27:48.590217-05:00","closed_at":"2025-11-20T12:27:48.590217-05:00","source_repo":"."} +{"id":"bd-1299","content_hash":"369fc6556b2d789f9aade3461edecc29ade6908a06216758a9c6443e3dd5ece0","title":"Agent 2 Batch 16 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.132799-07:00","updated_at":"2025-11-20T12:27:32.958665-05:00","closed_at":"2025-11-20T12:27:32.958665-05:00","source_repo":"."} {"id":"bd-12c2","content_hash":"77aa473abba394b850dfbaf1b5c4841aae3523238b21a82038ec0e8b39283677","title":"Add comprehensive tests for show.go commands (show, update, edit, close)","description":"Need to add tests for cmd/bd/show.go which contains show, update, edit, and close commands.\n\n**Challenge**: The existing test patterns use rootCmd.SetArgs() and rootCmd.Execute(), but the global `store` variable needs to match what the commands use. Initial attempt created tests that failed with \"no issue found\" because the test's store instance wasn't the same as the command's store.\n\n**Files to test**:\n- show.go (contains showCmd, updateCmd, editCmd, closeCmd)\n\n**Coverage needed**:\n- show command (single issue, multiple issues, JSON output, with dependencies, with labels, with compaction)\n- update command (status, priority, title, assignee, description, multiple fields, multiple issues)\n- edit command (requires $EDITOR, may need mocking)\n- close command (single issue, multiple issues, with reason, JSON output)\n\n**Test approach**:\n1. Study working test patterns in init_test.go, list_test.go, etc.\n2. Ensure BEADS_NO_DAEMON=1 is set\n3. Properly initialize database with bd init\n4. Use the command's global store, not a separate instance\n5. May need to reset global state between tests\n\n**Success criteria**: \n- All test functions pass\n- Coverage for show.go increases significantly\n- Tests follow existing patterns in cmd/bd/*_test.go","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-31T20:08:40.545173-07:00","updated_at":"2025-10-31T20:19:22.411066-07:00","closed_at":"2025-10-31T20:19:22.411066-07:00","source_repo":"."} -{"id":"bd-1445","content_hash":"b3272105f48a2b0f11d2cf669d3e7e5c93a5e6c491cbabddf16872966618de0a","title":"Create shared insert/event/dirty helpers","description":"Create issues.go (insertIssue/insertIssues), events.go (recordCreatedEvent/recordCreatedEvents), dirty.go (markDirty/markDirtyBatch). Refactor single and bulk create paths to use these.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-01T11:41:14.882142-07:00","updated_at":"2025-11-02T15:28:11.99706-08:00","closed_at":"2025-11-02T15:28:11.997063-08:00","source_repo":"."} -{"id":"bd-149","content_hash":"4865a0eaf982fedd744f824f990037f40763be2a133e4c3bb4e28971f8372428","title":"Auth tokens expire too quickly","description":"## Summary\n\n[Brief description of the bug]\n\n## Steps to Reproduce\n\n1. Step 1\n2. Step 2\n3. Step 3\n\n## Expected Behavior\n\n[What should happen]\n\n## Actual Behavior\n\n[What actually happens]\n\n## Environment\n\n- OS: [e.g., macOS 15.7.1]\n- Version: [e.g., bd 0.20.1]\n- Additional context: [any relevant details]\n\n## Additional Context\n\n[Screenshots, logs, or other relevant information]\n","design":"## Root Cause Analysis\n\n[Describe the underlying cause once identified]\n\n## Proposed Fix\n\n[Outline the solution approach]\n\n## Impact Assessment\n\n- Affected features: [list]\n- Breaking changes: [yes/no and details]\n- Migration needed: [yes/no and details]\n","acceptance_criteria":"- [ ] Bug no longer reproduces with original steps\n- [ ] Regression tests added\n- [ ] Related edge cases tested\n- [ ] Documentation updated if behavior changed\n","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-03T19:54:10.671488-08:00","updated_at":"2025-11-05T00:25:06.427601-08:00","closed_at":"2025-11-05T00:25:06.427601-08:00","source_repo":".","labels":["bug"]} +{"id":"bd-13","content_hash":"f9bcb3bdd536e78df8a5ef82a6b6d715abe0a000c99b87214f32ac8034c4c4fc","title":"Implement full cross-type cycle prevention in AddDependency","description":"Expand cycle prevention in AddDependency to check for cycles across ALL dependency types, not just 'blocks'. Currently only 'blocks' type dependencies are checked for cycles, allowing cross-type circular dependencies to form (e.g., A blocks B, B parent-child A). This can cause semantic confusion and is a maintenance hazard for future operations that traverse dependencies.","design":"Implementation approach:\n1. Modify the cycle check in AddDependency (postgres.go:559-599)\n2. Remove the 'type = blocks' filter from the recursive CTE\n3. Check for cycles regardless of dependency type being added\n4. Return a clear error message indicating which types form the cycle\n\nTrade-offs to consider:\n- This is more mathematically correct (no cycles in dependency DAG)\n- May break legitimate use cases where cross-type cycles are intentional\n- Need to evaluate whether ANY cross-type cycles are valid in practice\n- Alternative: make this configurable with a --allow-cycle flag\n\nBefore implementing, should investigate:\n- Are there legitimate reasons for cross-type cycles?\n- What's the performance impact on large graphs (1000+ issues)?\n- Should certain type combinations be allowed to cycle?","acceptance_criteria":"- AddDependency prevents cycles across all dependency types, not just 'blocks'\n- Clear error message when cycle would be created, including dependency types\n- All existing tests pass\n- Performance benchmarked on large dependency graphs (100+ issues)\n- Decision documented on whether to add --allow-cycle flag or exception rules","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.523904-07:00","closed_at":"2025-10-16T20:31:19.174534-07:00","source_repo":"."} +{"id":"bd-130","content_hash":"f573a4851b22e0afdc09c08132e6110525e5221bef9ffcb760cc3e4713456d67","title":"Add resource limits to daemon (connections, cache, memory)","description":"Daemon has no resource limits. Under heavy load or attack, it could:\n- Accept unlimited connections\n- Cache unlimited databases\n- Use unbounded memory\n- Exhaust file descriptors\n\nNeed limits for:\n- Max concurrent RPC connections (default: 100)\n- Max storage cache size (default: 50)\n- Request timeout enforcement (default: 30s)\n- Memory pressure detection\n\nLocation: internal/rpc/server.go","design":"Add resource tracking to Server:\n\ntype Server struct {\n // ... existing\n maxConns int32\n activeConns int32 // atomic\n connSemaphore chan struct{}\n}\n\nUse semaphore pattern for connection limiting:\n- Acquire token before handling connection\n- Release on completion\n- Reject connections when full\n\nAdd configurable limits via env vars:\n- BEADS_DAEMON_MAX_CONNS (default: 100)\n- BEADS_DAEMON_MAX_CACHE_SIZE (default: 50)\n- BEADS_DAEMON_REQUEST_TIMEOUT (default: 30s)\n\nAdd memory pressure detection:\n- Monitor runtime.MemStats\n- Trigger cache eviction at threshold\n- Log warnings at high memory use","acceptance_criteria":"- Connection limit enforced\n- Excess connections rejected gracefully\n- Request timeouts work\n- Memory limits configurable\n- Metrics expose current usage\n- Tests for limit enforcement\n- Documentation on tuning limits","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-18T13:07:09.810963-07:00","updated_at":"2025-10-21T00:25:40.524094-07:00","closed_at":"2025-10-19T13:21:47.891925-07:00","source_repo":"."} +{"id":"bd-1300","content_hash":"b189e608720511d4b8092160d2c6638078b205e9ede2894ab844d7adce32e1b2","title":"Agent 2 Batch 17 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.133392-07:00","updated_at":"2025-11-20T12:27:48.589977-05:00","closed_at":"2025-11-20T12:27:48.589977-05:00","source_repo":"."} +{"id":"bd-1301","content_hash":"35d2f81abde37704a339cdec5173ffc2ddab5ce45690ae0cb7cefd70b616c9ee","title":"Agent 2 Batch 17 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.133994-07:00","updated_at":"2025-11-20T12:27:27.741099-05:00","closed_at":"2025-11-20T12:27:27.741099-05:00","source_repo":"."} +{"id":"bd-1302","content_hash":"ea0ed209dfca245cf2603dc71e9569c74fe807b07919d9de8ba7f048b7918c95","title":"Agent 2 Batch 18 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.134599-07:00","updated_at":"2025-11-20T12:27:48.589752-05:00","closed_at":"2025-11-20T12:27:48.589752-05:00","source_repo":"."} +{"id":"bd-1303","content_hash":"d1bf173f9885dd2c8e7759536329ee19294ed80c05f477dd757061aaee40f57b","title":"Agent 2 Batch 18 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.13523-07:00","updated_at":"2025-11-20T12:27:27.740952-05:00","closed_at":"2025-11-20T12:27:27.740952-05:00","source_repo":"."} +{"id":"bd-1304","content_hash":"4729209856ae466009ceaa8c524c990503cf98959430ca9ad063fab778bbed94","title":"Agent 2 Batch 19 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.135859-07:00","updated_at":"2025-11-20T12:27:48.589575-05:00","closed_at":"2025-11-20T12:27:48.589575-05:00","source_repo":"."} +{"id":"bd-1305","content_hash":"177e6fd3694641178b52e4bccac554f02f57cc2f23a73d20d53e8f5d1e1f2f6d","title":"Agent 2 Batch 19 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.136476-07:00","updated_at":"2025-11-20T12:27:27.740789-05:00","closed_at":"2025-11-20T12:27:27.740789-05:00","source_repo":"."} +{"id":"bd-1306","content_hash":"292175c9515a515f5ca81430d845fecaccac64f9e44712703ec83478c85be8b3","title":"Agent 2 Batch 20 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.137124-07:00","updated_at":"2025-11-20T12:27:48.589425-05:00","closed_at":"2025-11-20T12:27:48.589425-05:00","source_repo":"."} +{"id":"bd-1307","content_hash":"baaf4295e1a36cdac795a2d9e2e66ef9b6ee23fb190ec64d32aae29e8d7e531b","title":"Agent 2 Batch 20 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.137763-07:00","updated_at":"2025-11-20T12:27:27.740641-05:00","closed_at":"2025-11-20T12:27:27.740641-05:00","source_repo":"."} +{"id":"bd-1308","content_hash":"8cd4037d4b79174443bcaa35b11b44ae9ddb1e41ca6aac07a53f5511a2c4082e","title":"Agent 2 Batch 21 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.138442-07:00","updated_at":"2025-11-20T12:27:48.589242-05:00","closed_at":"2025-11-20T12:27:48.589242-05:00","source_repo":"."} +{"id":"bd-1309","content_hash":"8bc023ef71c27f553d0b818cc27aca55e223572a371efd6c2fc90c0003b6cad1","title":"Agent 2 Batch 21 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.13908-07:00","updated_at":"2025-11-20T12:27:27.740473-05:00","closed_at":"2025-11-20T12:27:27.740473-05:00","source_repo":"."} +{"id":"bd-131","content_hash":"1f7ecf4e0f85dab61cadb205d695790e04d81e0b89efa0603ee847b791275e70","title":"Add telemetry and observability to daemon","description":"Daemon has no metrics or observability. Cannot monitor:\n- Request latency (p50, p95, p99)\n- Cache hit/miss rates\n- Active connections\n- Error rates\n- Resource usage over time\n\nNeeded for:\n- Performance debugging\n- Capacity planning\n- Production monitoring\n- SLA tracking\n\nLocation: internal/rpc/server.go","design":"Add metrics collection to daemon:\n\n1. Request metrics:\n - Total requests by operation\n - Latency histogram\n - Error count by type\n\n2. Cache metrics:\n - Hit/miss ratio\n - Eviction count\n - Current size\n\n3. Connection metrics:\n - Active connections\n - Total connections\n - Rejected connections\n\n4. Resource metrics:\n - Memory usage\n - Goroutine count\n - File descriptor count\n\nAdd metrics endpoint:\n- bd daemon --metrics (JSON output)\n- OpMetrics RPC operation\n- Prometheus-compatible format option\n\nAdd to health check response for free monitoring.","acceptance_criteria":"- Metrics collected for key operations\n- bd daemon --metrics command works\n- Metrics include timestamps\n- Latency percentiles calculated\n- Zero performance overhead\n- Documentation on metrics","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-18T13:07:19.835495-07:00","updated_at":"2025-10-21T00:25:40.524284-07:00","closed_at":"2025-10-19T14:58:41.155435-07:00","source_repo":"."} +{"id":"bd-1310","content_hash":"796a708b412bc48a49f23860654d306a4a865b58c37cdf8554e2de9e8738e875","title":"Agent 2 Batch 22 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.139799-07:00","updated_at":"2025-11-20T12:27:48.589084-05:00","closed_at":"2025-11-20T12:27:48.589084-05:00","source_repo":"."} +{"id":"bd-1311","content_hash":"de238953e6206ee3ecda0861b1866d0471c3e05c373a61468e0d9466e3167042","title":"Agent 2 Batch 22 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.140417-07:00","updated_at":"2025-11-20T12:27:27.740273-05:00","closed_at":"2025-11-20T12:27:27.740273-05:00","source_repo":"."} +{"id":"bd-1312","content_hash":"d49e75f7a22366b15c09b298af5cfe4cd78a40bbb123161ac0dadb12e3871809","title":"Agent 2 Batch 23 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.141054-07:00","updated_at":"2025-11-20T12:27:48.588897-05:00","closed_at":"2025-11-20T12:27:48.588897-05:00","source_repo":"."} +{"id":"bd-1313","content_hash":"64ff3afe853c77ce20246a7ad798bbb612ae32dc5c5735ae662ee29d017c699f","title":"Agent 2 Batch 23 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.141664-07:00","updated_at":"2025-11-20T12:27:27.740098-05:00","closed_at":"2025-11-20T12:27:27.740098-05:00","source_repo":"."} +{"id":"bd-1314","content_hash":"ea3657434beccd755e6d573f0ab89f46d2c208e6293ade356795206af43523b6","title":"Agent 2 Batch 24 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.142278-07:00","updated_at":"2025-11-20T12:27:48.588741-05:00","closed_at":"2025-11-20T12:27:48.588741-05:00","source_repo":"."} +{"id":"bd-1315","content_hash":"d38d74899f02136b913d9a285cea81433ac1e1512baef2d7550d5c4e7c4e6ac1","title":"Agent 2 Batch 24 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.142869-07:00","updated_at":"2025-11-20T12:27:27.739925-05:00","closed_at":"2025-11-20T12:27:27.739925-05:00","source_repo":"."} +{"id":"bd-1316","content_hash":"7c4710f771cb6339351ae3678bdc19159eb22ee467d5b06e0b263419c4e0d3d5","title":"Agent 2 Batch 25 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.143502-07:00","updated_at":"2025-11-20T12:27:48.588511-05:00","closed_at":"2025-11-20T12:27:48.588511-05:00","source_repo":"."} +{"id":"bd-1317","content_hash":"d75cf5e8b3f543eebc9e8c3c5d0fd96537817b915f459ae7e2088e46642a717b","title":"Agent 2 Batch 25 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.14412-07:00","updated_at":"2025-11-20T12:27:27.739781-05:00","closed_at":"2025-11-20T12:27:27.739781-05:00","source_repo":"."} +{"id":"bd-1318","content_hash":"bc4e15f0d583d5a1d648801fbc2171d984c707706edd99174707eb517d5ac4ea","title":"Agent 2 Batch 26 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.144758-07:00","updated_at":"2025-11-20T12:27:48.588224-05:00","closed_at":"2025-11-20T12:27:48.588224-05:00","source_repo":"."} +{"id":"bd-1319","content_hash":"b00e1c5d28812a060492cfa9181cb43ed1c69dfafc0879cd8f22e9d5b21297ff","title":"Agent 2 Batch 26 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.145358-07:00","updated_at":"2025-11-20T12:27:27.739609-05:00","closed_at":"2025-11-20T12:27:27.739609-05:00","source_repo":"."} +{"id":"bd-132","content_hash":"4f9a8ba4fe40921add9f558b3ec63ae26451dcf63e785a47483682f7d922f88f","title":"Add log rotation for daemon.log","description":"daemon.log grows forever without rotation. With sync every 5 minutes:\n- ~105k log entries per year\n- No size limit\n- No cleanup\n- Eventually fills disk\n\nNeed automatic log rotation with:\n- Size-based rotation (default: 10MB)\n- Age-based cleanup (default: 7 days)\n- Compression of old logs\n- Configurable retention\n\nLocation: cmd/bd/daemon.go:455","design":"Use lumberjack library for rotation:\n\nimport \"gopkg.in/natefinch/lumberjack.v2\"\n\nlogF := \u0026lumberjack.Logger{\n Filename: logPath,\n MaxSize: 10, // MB\n MaxBackups: 3,\n MaxAge: 7, // days\n Compress: true,\n}\n\nMake configurable via env vars:\n- BEADS_DAEMON_LOG_MAX_SIZE (default: 10MB)\n- BEADS_DAEMON_LOG_MAX_BACKUPS (default: 3)\n- BEADS_DAEMON_LOG_MAX_AGE (default: 7 days)\n\nAdd to daemon status output:\n- Current log size\n- Number of archived logs\n- Oldest log timestamp","acceptance_criteria":"- Log rotation works automatically\n- Old logs are compressed\n- Retention policy enforced\n- Configuration via env vars works\n- Log size stays bounded\n- No log data loss during rotation\n- Documentation updated","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-18T13:07:30.94896-07:00","updated_at":"2025-10-21T00:25:40.524469-07:00","closed_at":"2025-10-18T16:27:51.349037-07:00","source_repo":"."} +{"id":"bd-1320","content_hash":"1f1656bd047c0ef6532b61fe8b611d4207c291efdc31487db2bc3fe7bbc89375","title":"Agent 2 Batch 27 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.145972-07:00","updated_at":"2025-11-20T12:27:48.588077-05:00","closed_at":"2025-11-20T12:27:48.588077-05:00","source_repo":"."} +{"id":"bd-1321","content_hash":"35aa437f721b1af193a8fcc5196018af6a8f2ef082eb7f43391274c67c79010e","title":"Agent 2 Batch 27 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.146626-07:00","updated_at":"2025-11-20T12:27:27.739459-05:00","closed_at":"2025-11-20T12:27:27.739459-05:00","source_repo":"."} +{"id":"bd-1322","content_hash":"74e5270053e4d7a44b9fa1c1e5e46c13535290b887556cfbb3daa8e777b7388f","title":"Agent 2 Batch 28 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.147278-07:00","updated_at":"2025-11-20T12:27:48.587927-05:00","closed_at":"2025-11-20T12:27:48.587927-05:00","source_repo":"."} +{"id":"bd-1323","content_hash":"43c7bf7289984c94cdc4ef4c5c04d3bae3955ef01a16253d1741810af3e6df58","title":"Agent 2 Batch 28 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.147893-07:00","updated_at":"2025-11-20T12:27:27.73928-05:00","closed_at":"2025-11-20T12:27:27.73928-05:00","source_repo":"."} +{"id":"bd-1324","content_hash":"1863640a07d3e38902f114ad308fa6b66051502745c0878676d3ec45a5d3c42a","title":"Agent 2 Batch 29 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.148537-07:00","updated_at":"2025-11-20T12:27:48.58778-05:00","closed_at":"2025-11-20T12:27:48.58778-05:00","source_repo":"."} +{"id":"bd-1325","content_hash":"a7d18a48c08dfbcd5bd458bcc3808e14f433358c01624daa9b72496fabc091fc","title":"Agent 2 Batch 29 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.149184-07:00","updated_at":"2025-11-20T12:27:27.739133-05:00","closed_at":"2025-11-20T12:27:27.739133-05:00","source_repo":"."} +{"id":"bd-1326","content_hash":"79a4d6788ad4ea987556573d5ede956def7b2f18a0cff20855ccad3c62dbe6d1","title":"Agent 2 Batch 30 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.149813-07:00","updated_at":"2025-11-20T12:27:48.587608-05:00","closed_at":"2025-11-20T12:27:48.587608-05:00","source_repo":"."} +{"id":"bd-1327","content_hash":"e485b84f60dc38e4cbdc761e62db76e35b1aefda84c3db12cd3a7624c8c51c1f","title":"Agent 2 Batch 30 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.15071-07:00","updated_at":"2025-11-20T12:27:27.738955-05:00","closed_at":"2025-11-20T12:27:27.738955-05:00","source_repo":"."} +{"id":"bd-1328","content_hash":"335d3e89ca2a5d3439dea1594946fd1354bac64efcd3c5a25e5ec6b99af1d466","title":"Agent 2 Batch 31 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.151354-07:00","updated_at":"2025-11-20T12:27:48.587429-05:00","closed_at":"2025-11-20T12:27:48.587429-05:00","source_repo":"."} +{"id":"bd-1329","content_hash":"ea9fec61ab8fb36319378093d64334401bc40d177302852864b51a6dfe6f9db8","title":"Agent 2 Batch 31 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.151954-07:00","updated_at":"2025-11-20T12:27:27.738808-05:00","closed_at":"2025-11-20T12:27:27.738808-05:00","source_repo":"."} +{"id":"bd-133","content_hash":"42847e8f0fe8c24e8ebd29c31f264a105b4f0e2aeb11ddbff04886f7aeac531f","title":"Daemon production readiness","description":"Make beads daemon production-ready for long-running use, multi-repo deployments, and resilient operation.\n\nCurrent state: Good foundation, works well for development\nTarget state: Production-ready for individual developers and small teams\n\nGap areas:\n1. Resource management (cache eviction, limits)\n2. Health monitoring and crash recovery\n3. Process lifecycle management\n4. User experience (visibility, feedback)\n5. Operational concerns (logging, metrics)\n\nSuccess criteria:\n- Can run for weeks without restart\n- Handles 50+ repositories efficiently\n- Recovers from crashes automatically\n- Users understand daemon status\n- Observable and debuggable","acceptance_criteria":"All child issues completed:\n- P0 issues: Storage cache, health checks, crash recovery, MCP cleanup\n- P1 issues: Global auto-start, visibility, version checks\n- P2 issues: Resource limits, telemetry, log rotation\n\nValidation:\n- Run daemon for 7+ days without issues\n- Test with 50+ repositories\n- Verify crash recovery\n- Confirm resource usage is bounded\n- Check metrics and logs are useful","status":"closed","priority":0,"issue_type":"epic","created_at":"2025-10-18T13:07:43.543715-07:00","updated_at":"2025-10-21T00:25:40.524655-07:00","closed_at":"2025-10-19T20:15:20.172178-07:00","source_repo":"."} +{"id":"bd-1330","content_hash":"3d23fd67ee160b6218be9fc66aa7a6b2d5e260135f7268c494249ef7993a0435","title":"Agent 2 Batch 32 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.152568-07:00","updated_at":"2025-11-20T12:27:48.587273-05:00","closed_at":"2025-11-20T12:27:48.587273-05:00","source_repo":"."} +{"id":"bd-1331","content_hash":"2bc9616d72e966c6560259245631c65a85c6f6e6b2ac29afed08954c8685241a","title":"Agent 2 Batch 32 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.153154-07:00","updated_at":"2025-11-20T12:27:27.738626-05:00","closed_at":"2025-11-20T12:27:27.738626-05:00","source_repo":"."} +{"id":"bd-1332","content_hash":"9bf319e584656c957f8832b00c3db3c0a2fdc7525ecf09a702d455b48e51ea30","title":"Agent 2 Batch 33 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.153783-07:00","updated_at":"2025-11-20T12:27:48.587092-05:00","closed_at":"2025-11-20T12:27:48.587092-05:00","source_repo":"."} +{"id":"bd-1333","content_hash":"b34318e7b7e2fe11b5ca3eeac8d5df02dda868c909e963f517681ffb893cf8d7","title":"Agent 2 Batch 33 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.154366-07:00","updated_at":"2025-11-20T12:27:27.738478-05:00","closed_at":"2025-11-20T12:27:27.738478-05:00","source_repo":"."} +{"id":"bd-1334","content_hash":"7f0f6c3981f939aae7ac2ebf13b1b05105627448cfdde99620f2391fbc233cde","title":"Agent 2 Batch 34 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.155028-07:00","updated_at":"2025-11-20T12:27:48.586943-05:00","closed_at":"2025-11-20T12:27:48.586943-05:00","source_repo":"."} +{"id":"bd-1335","content_hash":"f3abf99fc598f8e9059a78b80f265bd7c9ef8a7b303b0b7e6381c8527b401b17","title":"Agent 2 Batch 34 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.155651-07:00","updated_at":"2025-11-20T12:27:27.738324-05:00","closed_at":"2025-11-20T12:27:27.738324-05:00","source_repo":"."} +{"id":"bd-1336","content_hash":"00f0d2067f16a5af6b9d5095eadba9702021e56f0a2004369a279f4094bbbc46","title":"Agent 2 Batch 35 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.156299-07:00","updated_at":"2025-11-20T12:27:48.586793-05:00","closed_at":"2025-11-20T12:27:48.586793-05:00","source_repo":"."} +{"id":"bd-1337","content_hash":"19ef16c3a0806733f652e5b44dbdcac2cf0dcb777aa7b99f8c0e380b79bab242","title":"Agent 2 Batch 35 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.156927-07:00","updated_at":"2025-11-20T12:27:27.738179-05:00","closed_at":"2025-11-20T12:27:27.738179-05:00","source_repo":"."} +{"id":"bd-1338","content_hash":"1c9338c4c5cfe53d729a6368570073e486937a6ded434193a2428e6910ee6afd","title":"Agent 2 Batch 36 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.157569-07:00","updated_at":"2025-11-20T12:27:48.586617-05:00","closed_at":"2025-11-20T12:27:48.586617-05:00","source_repo":"."} +{"id":"bd-1339","content_hash":"643b36480aab41ed26cf565bcc734f0396745f536fdf16b8dce4cdf630627e70","title":"Agent 2 Batch 36 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.158158-07:00","updated_at":"2025-11-20T12:27:27.73803-05:00","closed_at":"2025-11-20T12:27:27.73803-05:00","source_repo":"."} +{"id":"bd-134","content_hash":"2b086d287572f7458ccb039451ff58fe367e02a897706abb7cb8b5d5586182cd","title":"Refactor import logic to eliminate duplication between manual and auto-import","description":"The import logic is duplicated in two places:\n1. cmd/bd/import.go (manual 'bd import' command)\n2. cmd/bd/main.go:autoImportIfNewer() (auto-import after git pull)\n\nBoth have nearly identical code for:\n- Reading and parsing JSONL\n- Type-asserting store to *sqlite.SQLiteStorage (where we just fixed a bug twice)\n- Opening direct SQLite connection when using daemon mode\n- Detecting collisions with sqlite.DetectCollisions()\n- Scoring and remapping collisions\n- Importing issues, dependencies, and labels\n\n**Problems:**\n- Bugs must be fixed in two places (we just did this for daemon mode)\n- Features must be implemented twice\n- Tests must cover both code paths\n- Harder to maintain and keep in sync\n- Higher risk of divergence over time\n\n**Proposed solution:**\nExtract a shared function that handles the core import logic:\n\n```go\n// importIssues handles the core import logic used by both manual and auto-import\nfunc importIssues(ctx context.Context, dbPath string, store storage.Storage, \n issues []*types.Issue, opts ImportOptions) (*ImportResult, error) {\n // Handle SQLite store detection/creation for daemon mode\n // Detect collisions\n // Score and remap if needed\n // Import issues, dependencies, labels\n // Return result\n}\n```\n\nBoth import.go and autoImportIfNewer() would call this shared function with their specific options.\n\n**Benefits:**\n- Single source of truth for import logic\n- Bugs fixed once\n- Easier to test\n- Easier to extend with new import features\n- Less code overall","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-10-18T17:07:06.007026-07:00","updated_at":"2025-10-21T00:25:40.524849-07:00","closed_at":"2025-10-18T17:11:20.280214-07:00","source_repo":"."} +{"id":"bd-1340","content_hash":"bc044d940a12fad6759a1b7421fcf55d7ed5c430badb51998fb8d935604cf0a1","title":"Agent 2 Batch 37 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.158803-07:00","updated_at":"2025-11-20T12:27:48.586468-05:00","closed_at":"2025-11-20T12:27:48.586468-05:00","source_repo":"."} +{"id":"bd-1341","content_hash":"c77940b0ef7743dffd155e4e59bf61456503bdce53964e18d372589015632f0b","title":"Agent 2 Batch 37 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.159441-07:00","updated_at":"2025-11-20T12:27:27.737883-05:00","closed_at":"2025-11-20T12:27:27.737883-05:00","source_repo":"."} +{"id":"bd-1342","content_hash":"e6565bea44649775a39a79bb7850c640d94e076d6cfd3a80459116c1a6c63193","title":"Agent 2 Batch 38 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.160069-07:00","updated_at":"2025-11-20T12:27:48.586318-05:00","closed_at":"2025-11-20T12:27:48.586318-05:00","source_repo":"."} +{"id":"bd-1343","content_hash":"2c3ae8300e88c6a7b248a33c4e0e4f2caee346a36a38f690b756264a2fbd7a86","title":"Agent 2 Batch 38 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.160714-07:00","updated_at":"2025-11-20T12:27:27.737732-05:00","closed_at":"2025-11-20T12:27:27.737732-05:00","source_repo":"."} +{"id":"bd-1344","content_hash":"0151bee26e5b9588a32af834b93eddae7081a6cd9cb59ce3dfc7bbf7e8d1ae21","title":"Agent 2 Batch 39 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.161374-07:00","updated_at":"2025-11-20T12:27:48.586167-05:00","closed_at":"2025-11-20T12:27:48.586167-05:00","source_repo":"."} +{"id":"bd-1345","content_hash":"5298145f0daccb24df95f1924902df917a6c47365cf2415b2b438eda74c0cf92","title":"Agent 2 Batch 39 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.161955-07:00","updated_at":"2025-11-20T12:27:27.737585-05:00","closed_at":"2025-11-20T12:27:27.737585-05:00","source_repo":"."} +{"id":"bd-1346","content_hash":"df57eb9d0da058789d8b7469c6a1a67cf5c2f3d5bbddf7a476aed7d257346955","title":"Agent 2 Batch 40 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.162581-07:00","updated_at":"2025-11-20T12:27:48.586015-05:00","closed_at":"2025-11-20T12:27:48.586015-05:00","source_repo":"."} +{"id":"bd-1347","content_hash":"d92558dbb60b36fb3878ca91a8597fb20669d718ccc2d2d87e1885b63ef549d9","title":"Agent 2 Batch 40 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.163176-07:00","updated_at":"2025-11-20T12:27:27.737433-05:00","closed_at":"2025-11-20T12:27:27.737433-05:00","source_repo":"."} +{"id":"bd-1348","content_hash":"2a11e8848fb3f46e5ac4a9f3e59c9d2cfe7ce6d896c97e7802761d36c08c1ab6","title":"Agent 2 Batch 41 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.163794-07:00","updated_at":"2025-11-20T12:27:48.585861-05:00","closed_at":"2025-11-20T12:27:48.585861-05:00","source_repo":"."} +{"id":"bd-1349","content_hash":"3a168a8583352f4dd5b8698eb7a919aacaedaeefda605e4ecf32388a0d4bed99","title":"Agent 2 Batch 41 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.164537-07:00","updated_at":"2025-11-20T12:27:27.737281-05:00","closed_at":"2025-11-20T12:27:27.737281-05:00","source_repo":"."} +{"id":"bd-135","content_hash":"53b974a1f8dde3e9220ee6e54dee62d0897ad61eb0a76dc2641889b6a07bc939","title":"Complete auto-import refactoring to use shared importIssuesCore function","description":"The manual import command (bd import) was successfully refactored to use the shared importIssuesCore() function in import_shared.go, reducing code from 494 lines to 170 lines.\n\nHowever, autoImportIfNewer() in cmd/bd/main.go still has ~298 lines of duplicated import logic that should use the same shared function.\n\n**Current state:**\n- ✅ Manual import uses importIssuesCore() (commit 790233f)\n- ❌ Auto-import still has duplicated logic (lines 618-915 in main.go)\n\n**Duplication includes:**\n- SQLite store detection/creation for daemon mode (fixed in 790233f)\n- Collision detection with sqlite.DetectCollisions()\n- Scoring and remapping collisions\n- Importing issues (update existing, create new)\n- Importing dependencies\n- Importing labels\n\n**Benefits of completing this:**\n- Remove ~200 more lines of duplicated code\n- Ensure manual and auto-import have identical behavior\n- Future bug fixes only need to be made once\n- Easier to test and maintain\n\n**Implementation:**\nReplace lines 714-908 in autoImportIfNewer() with:\n```go\nopts := ImportOptions{\n ResolveCollisions: true, // Auto-import always resolves\n DryRun: false,\n SkipUpdate: false,\n Strict: false,\n}\nresult, err := importIssuesCore(ctx, dbPath, store, allIssues, opts)\n// Handle result and show remapping notification\n```\n\nThen update hash storage logic at the end.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-10-18T17:38:34.443872-07:00","updated_at":"2025-10-21T00:25:40.526466-07:00","closed_at":"2025-10-18T18:07:05.553928-07:00","source_repo":"."} +{"id":"bd-1350","content_hash":"b6c37bb83367336c2f4e0874737211440af0fa3f29bcc85713ed40822becba09","title":"Agent 2 Batch 42 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.16529-07:00","updated_at":"2025-11-20T12:27:48.585661-05:00","closed_at":"2025-11-20T12:27:48.585661-05:00","source_repo":"."} +{"id":"bd-1351","content_hash":"0f9a8511a3e9920cb67f0e44796da001285ba10b2de66f266000058856e4da3b","title":"Agent 2 Batch 42 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.165932-07:00","updated_at":"2025-11-20T12:27:27.737135-05:00","closed_at":"2025-11-20T12:27:27.737135-05:00","source_repo":"."} +{"id":"bd-1352","content_hash":"c241b7d28a86de8ca33cbb61e2fcf22239f5d266e38b214c6dbe3c7ef9ffec6a","title":"Agent 2 Batch 43 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.166561-07:00","updated_at":"2025-11-20T12:27:48.585495-05:00","closed_at":"2025-11-20T12:27:48.585495-05:00","source_repo":"."} +{"id":"bd-1353","content_hash":"b5d6e0275709327cbed25092cff0bea2458f8ce1516bc207003f417ce214a149","title":"Agent 2 Batch 43 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.167184-07:00","updated_at":"2025-11-20T12:27:27.736989-05:00","closed_at":"2025-11-20T12:27:27.736989-05:00","source_repo":"."} +{"id":"bd-1354","content_hash":"095181bd920f3afaf31628a1cb1b7322993caaceb1036149cca4aad5500924ee","title":"Agent 2 Batch 44 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.167821-07:00","updated_at":"2025-11-20T12:27:48.585292-05:00","closed_at":"2025-11-20T12:27:48.585292-05:00","source_repo":"."} +{"id":"bd-1355","content_hash":"2e594c9cc55d1ac908657f7018d57b207ed171d7a96f18bcc17742c2354007e4","title":"Agent 2 Batch 44 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.168391-07:00","updated_at":"2025-11-20T12:27:27.736841-05:00","closed_at":"2025-11-20T12:27:27.736841-05:00","source_repo":"."} +{"id":"bd-1356","content_hash":"9bad5f855af76f659cd57dcfa7f3cc86f85431fde7c58e7718608d58a710d93e","title":"Agent 2 Batch 45 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.168988-07:00","updated_at":"2025-11-20T12:27:48.584816-05:00","closed_at":"2025-11-20T12:27:48.584816-05:00","source_repo":"."} +{"id":"bd-1357","content_hash":"291af6b18507bbb644de2704e269199b6b0c558f7fe14d1f7232ea92904db4e0","title":"Agent 2 Batch 45 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.169636-07:00","updated_at":"2025-11-20T12:27:27.736684-05:00","closed_at":"2025-11-20T12:27:27.736684-05:00","source_repo":"."} +{"id":"bd-1358","content_hash":"c8ab95ee18d751ced9fea8ab727879efcc2d0f22b249a1a3d828c63019835b2b","title":"Agent 2 Batch 46 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.170265-07:00","updated_at":"2025-11-20T12:27:48.584647-05:00","closed_at":"2025-11-20T12:27:48.584647-05:00","source_repo":"."} +{"id":"bd-1359","content_hash":"10de3d6ecc3fced3187e351b9715b038cee98c155327f99f81b4d8380afd7b40","title":"Agent 2 Batch 46 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.17087-07:00","updated_at":"2025-11-20T12:27:27.736533-05:00","closed_at":"2025-11-20T12:27:27.736533-05:00","source_repo":"."} +{"id":"bd-136","content_hash":"ce1c681ba226fa304ea2a07a90d3abd0c2e6dbcf95c72c7ec8ea2170015fb668","title":"Add .gitignore to prevent noisy untracked beads files","description":"When using beads, git status shows several untracked files in .beads/ directory: .beads/.gitignore, .beads/db.sqlite, daemon.pid and daemon.lock files. These should be added to the project's .gitignore to prevent noise.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-10-18T18:27:16.424878-07:00","updated_at":"2025-10-21T00:25:40.526712-07:00","closed_at":"2025-10-19T09:05:48.4899-07:00","source_repo":"."} +{"id":"bd-1360","content_hash":"3176126c83780b34193212802a02eb97e2ca929ab926ef3c11af062b134fbb9e","title":"Agent 2 Batch 47 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.1715-07:00","updated_at":"2025-11-20T12:27:48.584463-05:00","closed_at":"2025-11-20T12:27:48.584463-05:00","source_repo":"."} +{"id":"bd-1361","content_hash":"c87b34b7dc9c64d589c9b9bf42840eacffad553139f1af177f55cca73ab87182","title":"Agent 2 Batch 47 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.172158-07:00","updated_at":"2025-11-20T12:27:27.736386-05:00","closed_at":"2025-11-20T12:27:27.736386-05:00","source_repo":"."} +{"id":"bd-1362","content_hash":"f038d03969376ad3704d65176f4ccc33b9f3fcb9288f00a71f31ac0cd503b7fc","title":"Agent 2 Batch 48 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.172811-07:00","updated_at":"2025-11-20T12:27:48.584225-05:00","closed_at":"2025-11-20T12:27:48.584225-05:00","source_repo":"."} +{"id":"bd-1363","content_hash":"eebf46b883b9e0814ca9e4bd183e3532f74ba1d86dd1e92e5480350a569ddacf","title":"Agent 2 Batch 48 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.173454-07:00","updated_at":"2025-11-20T12:27:27.736174-05:00","closed_at":"2025-11-20T12:27:27.736174-05:00","source_repo":"."} +{"id":"bd-1364","content_hash":"e12fdbaf43ccc494fb7660f25752313273a33b4e06349be04de98b2bd7592d7b","title":"Agent 2 Batch 49 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.17412-07:00","updated_at":"2025-11-20T12:27:48.584072-05:00","closed_at":"2025-11-20T12:27:48.584072-05:00","source_repo":"."} +{"id":"bd-1365","content_hash":"835fcb9d7a57b89404bd39459db4b518b850571a9682322ad4d7ce893b54656f","title":"Agent 2 Batch 49 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.174766-07:00","updated_at":"2025-11-20T12:27:27.735991-05:00","closed_at":"2025-11-20T12:27:27.735991-05:00","source_repo":"."} +{"id":"bd-1366","content_hash":"51fe6cd8b4841fcc88a12811b74295caf26c92be7d164caf2b9dfac73e6991b8","title":"Agent 0 Batch 32 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.112529-07:00","updated_at":"2025-11-20T12:27:32.962373-05:00","closed_at":"2025-11-20T12:27:32.962373-05:00","source_repo":"."} +{"id":"bd-1367","content_hash":"cceeb95824bd7958a71456a761f892e3d8b585d5032931d6cfd560446b7030d0","title":"Agent 0 Batch 33 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.176258-07:00","updated_at":"2025-11-20T12:27:48.583915-05:00","closed_at":"2025-11-20T12:27:48.583915-05:00","source_repo":"."} +{"id":"bd-1368","content_hash":"6702706e58c1850efbe74895c3208695980e63ddcce8a0ab3f95610c04f85e2e","title":"Agent 0 Batch 33 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.17699-07:00","updated_at":"2025-11-20T12:27:27.735836-05:00","closed_at":"2025-11-20T12:27:27.735836-05:00","source_repo":"."} +{"id":"bd-1369","content_hash":"8234308f6b7cd1590ac10997f54d9f6a6fa156c7cb5fd2f74de24ba955fb7cbf","title":"Agent 0 Batch 34 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.177699-07:00","updated_at":"2025-11-20T12:27:48.583762-05:00","closed_at":"2025-11-20T12:27:48.583762-05:00","source_repo":"."} +{"id":"bd-137","content_hash":"91dc018caa8c598a0d71c3d7b0c7219cd90ed94f27d53591ab60657d1597551f","title":"Implement --max-depth flag for bd dep tree","description":"PR #87 adds the flag but doesn't wire it through. Need to:\n1. Add flag definition in cmd/bd/dep.go\n2. Pass maxDepth to store.GetDependencyTree()\n3. Fix truncation warning to show actual depth used\n4. Add tests for truncation behavior (TestGetDependencyTree_TruncationDepth, TestGetDependencyTree_DefaultDepth)\n5. Update CLI docs/help\n\nDefault should remain 50. Keep using direct storage mode (no RPC needed for now).\n\nRelated: PR #87, bd-5","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-19T08:31:15.473267-07:00","updated_at":"2025-10-21T00:25:40.526901-07:00","closed_at":"2025-10-19T08:55:21.266386-07:00","source_repo":"."} +{"id":"bd-1370","content_hash":"80171157d625af8b25cdbed5aafc4100059578e486040e51b0d3f59af21b1d85","title":"Agent 0 Batch 34 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.178434-07:00","updated_at":"2025-11-20T12:27:27.735687-05:00","closed_at":"2025-11-20T12:27:27.735687-05:00","source_repo":"."} +{"id":"bd-1371","content_hash":"baa3c227785c02f096be571565113cff27588ff7fa1bb34b28954925f1907d27","title":"Agent 0 Batch 35 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.179117-07:00","updated_at":"2025-11-20T12:27:48.583603-05:00","closed_at":"2025-11-20T12:27:48.583603-05:00","source_repo":"."} +{"id":"bd-1372","content_hash":"c1137e24e5c0e79fbe2ae10cc3ede5549a495deb53fb0bc821d38187bc65eef8","title":"Agent 0 Batch 35 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.179816-07:00","updated_at":"2025-11-20T12:27:27.735537-05:00","closed_at":"2025-11-20T12:27:27.735537-05:00","source_repo":"."} +{"id":"bd-1373","content_hash":"e58d2b2fc3a1427932809f39b0573377e5fdc1bebe1ec154275c6a2eadcf931e","title":"Agent 0 Batch 36 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.180552-07:00","updated_at":"2025-11-20T12:27:48.583434-05:00","closed_at":"2025-11-20T12:27:48.583434-05:00","source_repo":"."} +{"id":"bd-1374","content_hash":"ead4f9ce9b12fdb4fd2f168cc5ab6424979f292eeded111591f273e1113b8ce1","title":"Agent 0 Batch 36 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.181238-07:00","updated_at":"2025-11-20T12:27:27.735388-05:00","closed_at":"2025-11-20T12:27:27.735388-05:00","source_repo":"."} +{"id":"bd-1375","content_hash":"c51ea0141605e7a042ce9e52050f761973e7263d12ea3acd4774f755a3cd7a61","title":"Agent 0 Batch 37 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.181973-07:00","updated_at":"2025-11-20T12:27:48.583273-05:00","closed_at":"2025-11-20T12:27:48.583273-05:00","source_repo":"."} +{"id":"bd-1376","content_hash":"3330addb5705f3a9d90ae7f706cd2acedc1d2becc2fae472e2bbff11e259eb6e","title":"Agent 0 Batch 37 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.182661-07:00","updated_at":"2025-11-20T12:27:27.735233-05:00","closed_at":"2025-11-20T12:27:27.735233-05:00","source_repo":"."} +{"id":"bd-1377","content_hash":"ce58735293902cab1c8c1c3eb65ca9822da650e43ecb686ec1b299052f5d09a3","title":"Agent 0 Batch 38 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.183406-07:00","updated_at":"2025-11-20T12:27:48.583121-05:00","closed_at":"2025-11-20T12:27:48.583121-05:00","source_repo":"."} +{"id":"bd-1378","content_hash":"0b9e8180f9259ab6e1c63dca2ccc158ed3591617babc661c85d59c5308e5c8ef","title":"Agent 0 Batch 38 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.184082-07:00","updated_at":"2025-11-20T12:27:27.735086-05:00","closed_at":"2025-11-20T12:27:27.735086-05:00","source_repo":"."} +{"id":"bd-1379","content_hash":"7e55cc9d523957a931122711707202916e947052c12f32167a1082f09f5520be","title":"Agent 0 Batch 39 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.184919-07:00","updated_at":"2025-11-20T12:27:48.582968-05:00","closed_at":"2025-11-20T12:27:48.582968-05:00","source_repo":"."} +{"id":"bd-138","content_hash":"f42884a884126c139c0426f4b715d52ce2ca6a881aa3a5d21121115432c93cc6","title":"Fix race condition in TestSocketCleanup","description":"Race condition detected in internal/rpc/rpc_test.go:195 in TestSocketCleanup. This is causing CI test failures.\n\nThe race appears to be between goroutines accessing shared state during server startup/shutdown in the socket cleanup test.\n\nLocation: internal/rpc/rpc_test.go:195\nTest output shows DATA RACE between goroutines 83 and 85.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-19T09:11:34.766584-07:00","updated_at":"2025-10-21T00:25:40.527074-07:00","closed_at":"2025-10-19T09:14:37.781034-07:00","source_repo":"."} +{"id":"bd-1380","content_hash":"da643b7bcd75f067c3ac917879320faf72c783ad6d00dd336e7dbd4a020015e0","title":"Agent 0 Batch 39 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.185613-07:00","updated_at":"2025-11-20T12:27:27.734937-05:00","closed_at":"2025-11-20T12:27:27.734937-05:00","source_repo":"."} +{"id":"bd-1381","content_hash":"49ccd97eec466a4352645e237be90a5c2a01fcab5b872eb61e9b9ea1f965c270","title":"Agent 0 Batch 40 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.186383-07:00","updated_at":"2025-11-20T12:27:48.582819-05:00","closed_at":"2025-11-20T12:27:48.582819-05:00","source_repo":"."} +{"id":"bd-1382","content_hash":"f6ef15f00ee3e6c07fda35cf7c08bac8595c8324efc98f591161f1ee0439ada2","title":"Agent 0 Batch 40 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.187073-07:00","updated_at":"2025-11-20T12:27:27.734788-05:00","closed_at":"2025-11-20T12:27:27.734788-05:00","source_repo":"."} +{"id":"bd-1383","content_hash":"ed19fb0ab188b4969f7c8f97faf589536198e2797a77344aaa90535454023c19","title":"Agent 0 Batch 41 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.18785-07:00","updated_at":"2025-11-20T12:27:48.582655-05:00","closed_at":"2025-11-20T12:27:48.582655-05:00","source_repo":"."} +{"id":"bd-1384","content_hash":"d785aceb8ae4469f7f9fcbd477d24fedef3d73b9bdc8a3b9992bbc4348c7639e","title":"Agent 0 Batch 41 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.18857-07:00","updated_at":"2025-11-20T12:27:27.734606-05:00","closed_at":"2025-11-20T12:27:27.734606-05:00","source_repo":"."} +{"id":"bd-1385","content_hash":"5211bd4447a077005c14231d7099105d9771bb3aa99f1e45ebe507c4c5168721","title":"Agent 0 Batch 42 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.189429-07:00","updated_at":"2025-11-20T12:27:48.582495-05:00","closed_at":"2025-11-20T12:27:48.582495-05:00","source_repo":"."} +{"id":"bd-1386","content_hash":"cac9f2815fb7f3b4b2bb2f68ded868798ab38bf9408f4c56c7d0eb8dd0d7df5e","title":"Agent 0 Batch 42 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.190206-07:00","updated_at":"2025-11-20T12:27:27.734455-05:00","closed_at":"2025-11-20T12:27:27.734455-05:00","source_repo":"."} +{"id":"bd-1387","content_hash":"fc2b4c843b9eb6512771276bee84259fea786da493c613bb8b50eba44bd7679f","title":"Agent 0 Batch 43 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.19094-07:00","updated_at":"2025-11-20T12:27:48.582336-05:00","closed_at":"2025-11-20T12:27:48.582336-05:00","source_repo":"."} +{"id":"bd-1388","content_hash":"616e2776cf9269d93b37b885dcca850c0c423a3718555f6c59700ace30c0fc09","title":"Agent 0 Batch 43 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.191679-07:00","updated_at":"2025-11-20T12:27:27.734308-05:00","closed_at":"2025-11-20T12:27:27.734308-05:00","source_repo":"."} +{"id":"bd-1389","content_hash":"1bcf674c1cf93257a374192798006bfcdab365ae9bce227a86289082c371f0e9","title":"Agent 0 Batch 44 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.192403-07:00","updated_at":"2025-11-20T12:27:48.582149-05:00","closed_at":"2025-11-20T12:27:48.582149-05:00","source_repo":"."} +{"id":"bd-139","content_hash":"e909837360f6223f8c6e9130ca3c2c42de8affab61421c3f3932612d5a29c578","title":"Fix SQL timestamp scanning error on macOS (GH-88)","description":"User reported 'Scan error on column index 11, name created_at: unsupported Scan, storing driver.Value type string into type *time.Time' on macOS 13.5. \n\nRoot cause: modernc.org/sqlite driver doesn't recognize mattn-style DSN parameters like _journal_mode=WAL and _foreign_keys=ON. When these are present, it ignores _time_format=sqlite on some platforms, causing DATETIME columns to be returned as strings instead of time.Time.\n\nFix: Use modernc's native _pragma syntax for all options:\n- Changed _journal_mode=WAL to _pragma=journal_mode(WAL)\n- Changed _foreign_keys=ON to _pragma=foreign_keys(ON)\n\nThis ensures _time_format=sqlite is properly recognized and DATETIME columns are automatically parsed to time.Time.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-19T14:35:47.467251-07:00","updated_at":"2025-10-21T00:25:40.527242-07:00","closed_at":"2025-10-19T14:35:52.806252-07:00","source_repo":"."} +{"id":"bd-1390","content_hash":"b8729ff1d73a6d9576fa6305d9f231c9d5bac7d7d651aff92f7f5d99e4fce761","title":"Agent 0 Batch 44 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.193157-07:00","updated_at":"2025-11-20T12:27:27.734154-05:00","closed_at":"2025-11-20T12:27:27.734154-05:00","source_repo":"."} +{"id":"bd-1391","content_hash":"f8172a2feead2724dd5e64646b79e7d56ec4ffc6318b6f5e72c8adbbb4afc507","title":"Agent 0 Batch 45 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.193965-07:00","updated_at":"2025-11-20T12:27:48.581985-05:00","closed_at":"2025-11-20T12:27:48.581985-05:00","source_repo":"."} +{"id":"bd-1392","content_hash":"75e64146aca0e9732ed595b7cecc8defe0eee7e75ff9490831b7dba824a95fb2","title":"Agent 0 Batch 45 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.195197-07:00","updated_at":"2025-11-20T12:27:27.734001-05:00","closed_at":"2025-11-20T12:27:27.734001-05:00","source_repo":"."} +{"id":"bd-1393","content_hash":"7d75dbf687064368f1abaac336ef4c632a8289e6ee0ace1ea70222c411c30cb9","title":"Agent 0 Batch 46 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.196258-07:00","updated_at":"2025-11-20T12:27:48.581769-05:00","closed_at":"2025-11-20T12:27:48.581769-05:00","source_repo":"."} +{"id":"bd-1394","content_hash":"10e63fa0c8a79a255d861475486609ed2ac898522af9f2a4943331f50c878d77","title":"Agent 0 Batch 46 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.196996-07:00","updated_at":"2025-11-20T12:27:27.733847-05:00","closed_at":"2025-11-20T12:27:27.733847-05:00","source_repo":"."} +{"id":"bd-1395","content_hash":"5c645811ac88aa5aa5ea86370329183610645b944ecdecf5e115a9f70ed23c6e","title":"Agent 0 Batch 47 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.199678-07:00","updated_at":"2025-11-20T12:27:48.581173-05:00","closed_at":"2025-11-20T12:27:48.581173-05:00","source_repo":"."} +{"id":"bd-1396","content_hash":"45749f42a5480a8bbe2095d41eb8f2bea151925e5af6f3f0fe673c7ed99d0147","title":"Agent 0 Batch 47 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.200415-07:00","updated_at":"2025-11-20T12:27:27.733689-05:00","closed_at":"2025-11-20T12:27:27.733689-05:00","source_repo":"."} +{"id":"bd-1397","content_hash":"b1a94ad95b80942cb2f03cfe51b1e779ad847d0a9fce78d446fe36d14aa99dff","title":"Agent 0 Batch 48 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.201306-07:00","updated_at":"2025-11-20T12:27:43.356888-05:00","closed_at":"2025-11-20T12:27:43.356888-05:00","source_repo":"."} +{"id":"bd-1398","content_hash":"939f369806e0ae2b3bbe7976c0a4bb690fd79c19b27f06d7d360acaad74e3169","title":"Agent 0 Batch 48 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.202305-07:00","updated_at":"2025-11-20T12:27:27.733513-05:00","closed_at":"2025-11-20T12:27:27.733513-05:00","source_repo":"."} +{"id":"bd-1399","content_hash":"8fc7528c7602b2ae9b68bf7282c6aa8a64537de7ef6fcf08e990f3d05089c98f","title":"Agent 0 Batch 49 Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.203114-07:00","updated_at":"2025-11-20T12:27:43.356711-05:00","closed_at":"2025-11-20T12:27:43.356711-05:00","source_repo":"."} +{"id":"bd-14","content_hash":"da1a8aa3d1ff27e1b18e6f0bc1ee02c5f2181fbeee6b9189d2b37b0dfa015a20","title":"Refactor duplicate flush logic in PersistentPostRun","description":"PersistentPostRun contains a complete copy of the flush logic instead of calling flushToJSONL(). This violates DRY principle and makes maintenance harder. Refactor to use flushToJSONL() with a force parameter to bypass isDirty check, or extract shared logic into a helper function. Located in cmd/bd/main.go:104-138.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.527418-07:00","closed_at":"2025-10-18T09:44:24.167574-07:00","source_repo":"."} +{"id":"bd-140","content_hash":"347ffca398786126f926cbd7b38df64ea623eb3ebba50e01b41e512157c1d155","title":"Add 'bd comments' command to view and manage issue comments","description":"Add support for commenting on issues with a new 'bd comments' command.\n\nCommands:\n- bd comments \u003cissue-id\u003e # List all comments on an issue\n- bd comments add \u003cissue-id\u003e \"text\" # Add a comment\n- bd comments add \u003cissue-id\u003e -f file.txt # Add comment from file\n- bd comments \u003cissue-id\u003e --json # JSON output for agents\n\nUse cases:\n- Track discussion/decisions on issues\n- Add context without cluttering description\n- Record why work was paused/resumed\n- Multi-person collaboration notes\n- Agent can leave progress updates\n\nImplementation:\n- Add comments table to schema (id, issue_id, author, text, timestamp)\n- Store in JSONL as nested array in issue objects\n- Show chronologically with timestamps\n- Include in 'bd show' output (collapsed by default?)\n\nQuestions:\n- Should comments be editable/deletable?\n- Include author field (env var or git config)?\n- Threading/replies to comments?","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-19T15:58:07.483312-07:00","updated_at":"2025-10-21T00:25:40.527584-07:00","closed_at":"2025-10-19T18:24:50.979019-07:00","source_repo":"."} +{"id":"bd-1400","content_hash":"03924728183760fb24d5c97eeee353a85fb5fb9712485b4a82c10d819e9b5a25","title":"Agent 0 Batch 49 Issue 2","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-21T00:29:11.204068-07:00","updated_at":"2025-11-20T12:27:27.732874-05:00","closed_at":"2025-11-20T12:27:27.732874-05:00","source_repo":"."} +{"id":"bd-1401","content_hash":"63396654b753ab4a0c7975184fbd2a9e5616a865db7e397d704f55d05c3fca48","title":"Base Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.362958-07:00","updated_at":"2025-10-21T00:29:11.362958-07:00","source_repo":"."} +{"id":"bd-1402","content_hash":"ef556abff8584432e3d5528ff26c40021bb348402a8a5df109d157543ef29d82","title":"Updated by agent 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.363911-07:00","updated_at":"2025-10-21T00:29:11.656635-07:00","source_repo":"."} +{"id":"bd-1403","content_hash":"2afed1552620cc847ec864e87c816bfe33c35ae4fe576158e1d0c83b9472e167","title":"Base Issue 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.364866-07:00","updated_at":"2025-10-21T00:29:11.364866-07:00","source_repo":"."} +{"id":"bd-1404","content_hash":"d6d6dad395710b081568eb2cff50f02c39b60514049d3fcfc4c6be493ab4e01b","title":"Base Issue 3","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.366195-07:00","updated_at":"2025-10-21T00:29:11.366195-07:00","source_repo":"."} +{"id":"bd-1405","content_hash":"febf992616814bbb34c420364634899876f5244ca9452491d7995f33cb5e3159","title":"Base Issue 4","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.367411-07:00","updated_at":"2025-10-21T00:29:11.367411-07:00","source_repo":"."} +{"id":"bd-1406","content_hash":"2d0bd84981882b8a5375612d4d358e9fc9b5f26a88b1c8c89e0a034f337de35d","title":"Base Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.368595-07:00","updated_at":"2025-10-21T00:29:11.368595-07:00","source_repo":"."} +{"id":"bd-1407","content_hash":"4955c45825d1dc14377ec0932d6cedafaf8ae9d3b176ad8a04740325290d4798","title":"Updated by agent 4","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.369735-07:00","updated_at":"2025-10-21T00:29:11.663228-07:00","source_repo":"."} +{"id":"bd-1408","content_hash":"297496fe92dc479b8eeb9e09ae456d452283c73769d800e64c12683cce023989","title":"Base Issue 7","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.370949-07:00","updated_at":"2025-10-21T00:29:11.370949-07:00","source_repo":"."} +{"id":"bd-1409","content_hash":"346bc561da46ee75a324ec5517194e11a8903141389edf8decf9bdb940a7f285","title":"Base Issue 8","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.372153-07:00","updated_at":"2025-10-21T00:29:11.372153-07:00","source_repo":"."} +{"id":"bd-141","content_hash":"87224d35866aa4c8fad66355b2979a8a3d1bb13dbb862a01fab7fc362f9c9383","title":"Add daemon RPC support for comments and label subcommands","description":"The 'bd comments' and 'bd label' subcommands don't work in direct mode because they don't inherit PersistentPreRun from root command. Need to add daemon RPC handlers similar to how show/update/create work.\n\nAffected commands:\n- bd comments \u003cid\u003e\n- bd comments add \u003cid\u003e \"text\"\n- bd label list \u003cid\u003e\n- bd label add \u003cid\u003e \u003clabel\u003e\n- bd label remove \u003cid\u003e \u003clabel\u003e\n\nSolution: Add RPC handlers in daemon.go for these operations and update the CLI commands to use daemon RPC when available (check daemonClient != nil pattern used in other commands).","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-10-19T16:08:42.16553-07:00","updated_at":"2025-10-21T00:25:40.527753-07:00","closed_at":"2025-10-19T21:14:12.233179-07:00","source_repo":"."} +{"id":"bd-1410","content_hash":"b46e07a8531032e55aaaae87260bcd4a754f253a4c1fc47f9a7b0002e4a0ef64","title":"Base Issue 9","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.373009-07:00","updated_at":"2025-10-21T00:29:11.373009-07:00","source_repo":"."} +{"id":"bd-1411","content_hash":"41be5a932d09cf2d4cb92f031f58b51a677a84ae2a3ee68222a9cebaf1840830","title":"Agent 5 New Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.375685-07:00","updated_at":"2025-10-21T00:29:11.375685-07:00","source_repo":"."} +{"id":"bd-1412","content_hash":"7675c13b1e00aac5cb2fe8ef5458827d869a8c02d9aeb1ef8cc0b33f3c785e87","title":"Agent 2 New Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.377361-07:00","updated_at":"2025-10-21T00:29:11.377361-07:00","source_repo":"."} +{"id":"bd-1413","content_hash":"59611094e08d987fe90e8725720de87dad0562835cf7b7a465d87366f6bb47f3","title":"Agent 3 New Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.378781-07:00","updated_at":"2025-10-21T00:29:11.378781-07:00","source_repo":"."} +{"id":"bd-1414","content_hash":"fe579ec975407c4fe2957361fefe0d63cc882ecdcdc0b6fc264e3b33ebc6217b","title":"Agent 0 New Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.37938-07:00","updated_at":"2025-10-21T00:29:11.37938-07:00","source_repo":"."} +{"id":"bd-1415","content_hash":"545296bc943611a8396fbdc1ad99deb927ecf5032d0241ad809ec2dc7c416102","title":"Agent 1 New Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.379121-07:00","updated_at":"2025-10-21T00:29:11.379121-07:00","source_repo":"."} +{"id":"bd-1416","content_hash":"5187bef02831f9c623b22b322341a79fafc636217c508f46655ba49197d301f6","title":"Agent 4 New Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.379934-07:00","updated_at":"2025-10-21T00:29:11.379934-07:00","source_repo":"."} +{"id":"bd-1417","content_hash":"63805d6ca7863dff6119ebd483ca57b594b03b221c5599c048ca02738347ae56","title":"Agent 3 New Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.384855-07:00","updated_at":"2025-10-21T00:29:11.384855-07:00","source_repo":"."} +{"id":"bd-1418","content_hash":"5cbdd4353b658faa05675ac931e6c845ac52a7b932b00b057d9157ce7afcecac","title":"Agent 2 New Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.383868-07:00","updated_at":"2025-10-21T00:29:11.383868-07:00","source_repo":"."} +{"id":"bd-1419","content_hash":"28df9bf62a29046411fb7162b3881bfdc611e0df0deb18a1f8110ba98f97d77c","title":"Agent 4 New Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.387888-07:00","updated_at":"2025-10-21T00:29:11.387888-07:00","source_repo":"."} +{"id":"bd-142","content_hash":"6d390f841f96aba456ab10934758bc5e7954be6f7ffd785863613475f9c7af41","title":"MCP server workspace routing broken - using wrong server for workspace","description":"When working in ~/src/beads, AI agent is calling mcp__beads-wyvern__* functions which are configured for ~/wyvern workspace. This causes MCP commands to fail or operate on wrong database.\n\nExpected: Should use correct MCP server based on current workspace\nActual: Using beads-wyvern MCP server when in beads repo\n\nNeed to investigate:\n- How MCP server routing/selection works\n- Why wrong server is being selected\n- How to fix workspace detection","notes":"Root cause: Using multiple MCP servers (beads-adar, beads-wyvern, beads-vc, beads) instead of single MCP server with global daemon. AI randomly selects wrong server for workspace.\n\nFixed:\n1. Started global daemon: bd daemon --global\n2. Simplified config to single MCP server in ~/.config/amp/settings.json\n3. Updated AGENTS.md to emphasize single MCP server as RECOMMENDED approach\n4. Marked legacy multiple-server approach with warning about workspace routing issues\n\nUser needs to restart Amp for config changes to take effect.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-19T18:32:04.513755-07:00","updated_at":"2025-10-21T00:25:40.527933-07:00","closed_at":"2025-10-19T18:35:00.167234-07:00","source_repo":"."} +{"id":"bd-1420","content_hash":"ec0083583feef2e15ae2c86368b99110635e0e625dca53d0cc7bcd76d6ba6baf","title":"Agent 0 New Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.3902-07:00","updated_at":"2025-10-21T00:29:11.3902-07:00","source_repo":"."} +{"id":"bd-1421","content_hash":"e19b51f7dc774a49a93ca91904d54fb7435d85a1757c27bfe94c30ac116c7855","title":"Agent 5 New Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.383388-07:00","updated_at":"2025-10-21T00:29:11.383388-07:00","source_repo":"."} +{"id":"bd-1422","content_hash":"78d86d60afda25502632cb6d44e449c81773f7334e3236940c36f6e6cf38ca09","title":"Agent 4 New Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.394219-07:00","updated_at":"2025-10-21T00:29:11.394219-07:00","source_repo":"."} +{"id":"bd-1423","content_hash":"07639bfd7162d99baad192b2ae6db8dad14aeece2adeef7655b3db251b4db4c2","title":"Agent 0 New Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.395342-07:00","updated_at":"2025-10-21T00:29:11.395342-07:00","source_repo":"."} +{"id":"bd-1424","content_hash":"d23cfe086f783a5b504d6117108aedce08d61aac5172018c44e310c290372bfd","title":"Agent 5 New Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.397098-07:00","updated_at":"2025-10-21T00:29:11.397098-07:00","source_repo":"."} +{"id":"bd-1425","content_hash":"09c584d524dbbe73a1c36ef7a6df6c22a2f4626f4e0d96d6ede25787a05b5376","title":"Agent 4 New Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.398193-07:00","updated_at":"2025-10-21T00:29:11.398193-07:00","source_repo":"."} +{"id":"bd-1426","content_hash":"4df9db41fed79eca5cb4178a744fd6414d254f7ee8b3801ea0f205093e8e4a63","title":"Agent 0 New Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.399256-07:00","updated_at":"2025-10-21T00:29:11.399256-07:00","source_repo":"."} +{"id":"bd-1427","content_hash":"3ab505c5609fed62014a401ca7a090e0ab7741bcf5c963e705d33954a32fea93","title":"Agent 1 New Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.391893-07:00","updated_at":"2025-10-21T00:29:11.391893-07:00","source_repo":"."} +{"id":"bd-1428","content_hash":"59219f4ccb52f74915dbf9bd034060a6dcc31461d774ce9a1b39d709e16aa517","title":"Agent 1 New Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.403507-07:00","updated_at":"2025-10-21T00:29:11.403507-07:00","source_repo":"."} +{"id":"bd-1429","content_hash":"027b4d942ded7961c1c45078ffb1b586732c2a0e6a913c530b9cb85126014ee1","title":"Agent 4 New Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.407799-07:00","updated_at":"2025-10-21T00:29:11.407799-07:00","source_repo":"."} +{"id":"bd-143","content_hash":"6bbde1956b775860052d1553717555e86cae260589ffe0c4850e81c2f0c7a43a","title":"Renumber command fails with foreign key constraint error","description":"When running 'bd renumber --force' after deleting issues, the command fails with: 'failed to rename bd-19 to temp ID: failed to update issue ID: constraint failed: FOREIGN KEY constraint failed (787)'. This suggests the renumber implementation doesn't properly handle foreign key constraints during the ID swap process. May need to disable foreign keys temporarily or use a different renumbering strategy.","notes":"Deeper investigation: All child tables (dependencies, labels, events, dirty_issues, issue_snapshots, compaction_snapshots, comments) have FK constraints to issues(id) ON DELETE CASCADE. When renumbering tries to UPDATE issues SET id = temp-uuid WHERE id = bd-49, the FK checks fire immediately despite PRAGMA foreign_keys = OFF being called. Issue might be that Go sql.DB connection pooling means the PRAGMA isn't applied to the actual connection doing the UPDATE. Testing with explicit connection (s.db.Conn()) to ensure PRAGMA sticks.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-19T19:33:20.324768-07:00","updated_at":"2025-10-21T00:25:40.528106-07:00","closed_at":"2025-10-19T19:35:57.175627-07:00","source_repo":"."} +{"id":"bd-1430","content_hash":"66bcb256558647fcb6e31c6fbb59f9a27d2a50f499877537eb6e62a90dd5cf7d","title":"Agent 1 New Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.409298-07:00","updated_at":"2025-10-21T00:29:11.409298-07:00","source_repo":"."} +{"id":"bd-1431","content_hash":"8a9b0870dfd69bf358b1cc6cca63b17948babd67b077f8dd023f7b459034e52b","title":"Agent 2 New Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.412217-07:00","updated_at":"2025-10-21T00:29:11.412217-07:00","source_repo":"."} +{"id":"bd-1432","content_hash":"9230eb80b0e12311a3a962263479b1c021d65f5c83153bedc7a70162a07b4f46","title":"Agent 0 New Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.41278-07:00","updated_at":"2025-10-21T00:29:11.41278-07:00","source_repo":"."} +{"id":"bd-1433","content_hash":"4df1b6dd7fcb5d8f5f00a8b734778bd603c9ee06b28f0412c5483b4a69e2d6bf","title":"Agent 4 New Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.415122-07:00","updated_at":"2025-10-21T00:29:11.415122-07:00","source_repo":"."} +{"id":"bd-1434","content_hash":"596a097f5b2cf9efe00f7d1778c04c33e448e35bc23073fc9c3272da3f8eecf6","title":"Agent 1 New Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.416559-07:00","updated_at":"2025-10-21T00:29:11.416559-07:00","source_repo":"."} +{"id":"bd-1435","content_hash":"33fae73ed883ac3aa86e352165ba74a2205dc15c687d429a07120fc426249807","title":"Agent 1 New Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.420936-07:00","updated_at":"2025-10-21T00:29:11.420936-07:00","source_repo":"."} +{"id":"bd-1436","content_hash":"e410e2af0b35d72d7f9b68e8bf7487b99d91320c33d1ed068c4cc51999011764","title":"Agent 0 New Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.418609-07:00","updated_at":"2025-10-21T00:29:11.418609-07:00","source_repo":"."} +{"id":"bd-1437","content_hash":"52f6c21b56ac14269f2a78476922268dcbca04d68d2f0d047fe1f468c25f6148","title":"Agent 0 New Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.427501-07:00","updated_at":"2025-10-21T00:29:11.427501-07:00","source_repo":"."} +{"id":"bd-1438","content_hash":"b6d940e2cc7543b4965d41f58099830e08802ed5be3e1679f41b257a47a3b4ef","title":"Agent 4 New Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.430441-07:00","updated_at":"2025-10-21T00:29:11.430441-07:00","source_repo":"."} +{"id":"bd-1439","content_hash":"aa9a08c4e4555229e617f179736ff37c5e250049edd00c4c5f3b6e15184b0856","title":"Agent 0 New Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.432396-07:00","updated_at":"2025-10-21T00:29:11.432396-07:00","source_repo":"."} +{"id":"bd-144","content_hash":"cb1ed853a9fc2efcf1dbcb60f24e40de044a6971d12f70c5b857682f166465f1","title":"Single-user issue","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T19:51:36.918878-07:00","updated_at":"2025-10-21T00:25:40.528284-07:00","closed_at":"2025-10-19T22:46:09.245662-07:00","source_repo":"."} +{"id":"bd-1440","content_hash":"ca47778134c3cd1ea7b2b7db68bf4adc4cfb576bcfa3422e80903df5f39c5b22","title":"Agent 4 New Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.434187-07:00","updated_at":"2025-10-21T00:29:11.434187-07:00","source_repo":"."} +{"id":"bd-1441","content_hash":"52c75dd0ce028ce4ffcd9cf816afa55e793e5a7f3d7bee698e86879a3ae2484a","title":"Agent 0 New Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.436597-07:00","updated_at":"2025-10-21T00:29:11.436597-07:00","source_repo":"."} +{"id":"bd-1442","content_hash":"deeaa223b51488d64abc8dd9301308ce3c327528b164fe03aee68dfcd887dd90","title":"Agent 4 New Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.438998-07:00","updated_at":"2025-10-21T00:29:11.438998-07:00","source_repo":"."} +{"id":"bd-1443","content_hash":"9bcbfe13a3edf9e1be5c661552c630f324f83e9193e51fd75cb99a5f5bfa3d3c","title":"Agent 0 New Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.441126-07:00","updated_at":"2025-10-21T00:29:11.441126-07:00","source_repo":"."} +{"id":"bd-1444","content_hash":"af0c8b467a2c71bac21f3a23a80f00308dca7a028b05a22e2d3d035527309579","title":"Agent 3 New Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.38959-07:00","updated_at":"2025-10-21T00:29:11.38959-07:00","source_repo":"."} +{"id":"bd-1445","content_hash":"b3272105f48a2b0f11d2cf669d3e7e5c93a5e6c491cbabddf16872966618de0a","title":"Create shared insert/event/dirty helpers","description":"Create issues.go (insertIssue/insertIssues), events.go (recordCreatedEvent/recordCreatedEvents), dirty.go (markDirty/markDirtyBatch). Refactor single and bulk create paths to use these.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:11.424448-07:00","updated_at":"2025-11-12T10:57:44.250267-08:00","closed_at":"2025-11-02T15:28:11.997063-08:00","source_repo":"."} +{"id":"bd-1446","content_hash":"3ba7c0cc460d3bdac6244fb1f43f6fcdca61abe184b17ef1f523c4d17799a1f0","title":"Agent 1 New Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.448781-07:00","updated_at":"2025-10-21T00:29:11.448781-07:00","source_repo":"."} +{"id":"bd-1447","content_hash":"8d8dbf8f8c1f5da5b79bcaad853c033f00fe0d933c1a44ffb648625295e98912","title":"Agent 1 New Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.452118-07:00","updated_at":"2025-10-21T00:29:11.452118-07:00","source_repo":"."} +{"id":"bd-1448","content_hash":"cfe8f508f1cb78c8dff2505b9ca8773ae9a2e9cf3369aee2a510b5d06b373cd9","title":"Agent 3 New Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.457614-07:00","updated_at":"2025-10-21T00:29:11.457614-07:00","source_repo":"."} +{"id":"bd-1449","content_hash":"8a20651735ca7e48ae822871329b8d96ce386b70c39b510f111042b96acef73b","title":"Agent 1 New Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.45521-07:00","updated_at":"2025-10-21T00:29:11.45521-07:00","source_repo":"."} +{"id":"bd-145","content_hash":"efb0c51be0d226f4cc17b4dcf86ed8a1ef72f6fb269ff82abc6be76e59787517","title":"Direct mode test","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T19:52:19.768858-07:00","updated_at":"2025-10-21T00:25:40.528444-07:00","closed_at":"2025-10-19T22:46:09.246627-07:00","source_repo":"."} +{"id":"bd-1450","content_hash":"38d8dc7621fa89cfbdc29f16c428e75991441c27a03ee3ce4a9da23db3100d01","title":"Agent 2 New Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.437686-07:00","updated_at":"2025-10-21T00:29:11.437686-07:00","source_repo":"."} +{"id":"bd-1451","content_hash":"d7c6105576e6e9edf61435c1903397929dfae4092c0b1ecdc2ce66a0eb8d7767","title":"Agent 2 New Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.463314-07:00","updated_at":"2025-10-21T00:29:11.463314-07:00","source_repo":"."} +{"id":"bd-1452","content_hash":"024ca2e30186e584f8da41f7194f4ceb19bb8add044457008783156b25ff6600","title":"Agent 3 New Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.465869-07:00","updated_at":"2025-10-21T00:29:11.465869-07:00","source_repo":"."} +{"id":"bd-1453","content_hash":"cfca6699c90745eff1c4749a2601d7485d1b5eee2032334a0f802fd3a52c4a86","title":"Agent 2 New Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.46937-07:00","updated_at":"2025-10-21T00:29:11.46937-07:00","source_repo":"."} +{"id":"bd-1454","content_hash":"65367d98ab92e56c3b5a88add22101729526ccdfbf6c29efdb63b9de66e41df7","title":"Agent 3 New Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.485497-07:00","updated_at":"2025-10-21T00:29:11.485497-07:00","source_repo":"."} +{"id":"bd-1455","content_hash":"4661c14f7debbfc739b3ea415fedb5c0bf7133d820050134b714b7eba6fe8287","title":"Agent 2 New Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.49051-07:00","updated_at":"2025-10-21T00:29:11.49051-07:00","source_repo":"."} +{"id":"bd-1456","content_hash":"2b3f5dbc80df661a537bd7a1585f0b0ddea4f7bdc9f3ed82943fc474ed90a57a","title":"Agent 3 New Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.594169-07:00","updated_at":"2025-10-21T00:29:11.594169-07:00","source_repo":"."} +{"id":"bd-1457","content_hash":"41770a8013e120d654827fc83e3113ec6e0abc6a41f1428587d853b3db8687d6","title":"Agent 2 New Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.599586-07:00","updated_at":"2025-10-21T00:29:11.599586-07:00","source_repo":"."} +{"id":"bd-1458","content_hash":"99f0fecbb9c941b66cc7214b4425da48e07f877bfdfa5d442b9ae9d7952a6695","title":"Agent 2 New Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.603856-07:00","updated_at":"2025-10-21T00:29:11.603856-07:00","source_repo":"."} +{"id":"bd-1459","content_hash":"cfaed20ccc9582d1ade1e12b21ac853544c41fb25c26cbff4fc8a4d20b82cf09","title":"Agent 3 New Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.607955-07:00","updated_at":"2025-10-21T00:29:11.607955-07:00","source_repo":"."} +{"id":"bd-146","content_hash":"42f178fe6a988e2fe053b1a7e5c7df74b3c97b695a6287d862cffe74f41c0ba9","title":"Direct mode test2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T19:52:25.87028-07:00","updated_at":"2025-10-21T00:25:40.528608-07:00","closed_at":"2025-10-19T22:46:09.246863-07:00","source_repo":"."} +{"id":"bd-1460","content_hash":"2e536c5ab16ada24ba599171765adb2f79e3bf3a309e7b238448f5951b4fe344","title":"Agent 3 New Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.611567-07:00","updated_at":"2025-10-21T00:29:11.611567-07:00","source_repo":"."} +{"id":"bd-1461","content_hash":"9a1244dc22cf0d01be3100175bdbaa1472505df3e50ebb55ba1afd708d70f8e2","title":"Agent 2 New Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.614478-07:00","updated_at":"2025-10-21T00:29:11.614478-07:00","source_repo":"."} +{"id":"bd-1462","content_hash":"fea6a19546654a0ee3e262ca0d0894e02657a4839f117852dc668ffdcb9e9659","title":"Agent 3 New Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.615256-07:00","updated_at":"2025-10-21T00:29:11.615256-07:00","source_repo":"."} +{"id":"bd-1463","content_hash":"66da293c2b15a8ddfefeef7af18a0c4642d49a974432102b37fda1c4d24e9c0b","title":"Agent 5 New Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.415001-07:00","updated_at":"2025-10-21T00:29:11.415001-07:00","source_repo":"."} +{"id":"bd-1464","content_hash":"86dad985182a51ea787847b89dc9ca981503006a74ed9df2b02f773741b2a327","title":"Agent 5 New Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.640853-07:00","updated_at":"2025-10-21T00:29:11.640853-07:00","source_repo":"."} +{"id":"bd-1465","content_hash":"d0299ad0caa20faa45889b6882b0a21096d12926eced69dcd73e46c1f1a8d923","title":"Agent 5 New Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.644881-07:00","updated_at":"2025-10-21T00:29:11.644881-07:00","source_repo":"."} +{"id":"bd-1466","content_hash":"39d779f36f2a7314963b80af920d98605be5679171c4a77c3f93d3467870a280","title":"Agent 5 New Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.648463-07:00","updated_at":"2025-10-21T00:29:11.648463-07:00","source_repo":"."} +{"id":"bd-1467","content_hash":"2bcc43a046b945c39462dd116fc42957f92a947b658cd5d18a9f1d150bf8c578","title":"Agent 5 New Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.652288-07:00","updated_at":"2025-10-21T00:29:11.652288-07:00","source_repo":"."} +{"id":"bd-1468","content_hash":"49e46808a22cf70e2a5d81298e676b5e9cc840632a0d3eb897ccd1f0da4fcddf","title":"Agent 5 New Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.655801-07:00","updated_at":"2025-10-21T00:29:11.655801-07:00","source_repo":"."} +{"id":"bd-1469","content_hash":"4da0f5580863797aa60c18be1288fe456462343fc656e6421186df5a9b5787a8","title":"Agent 5 New Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.658905-07:00","updated_at":"2025-10-21T00:29:11.658905-07:00","source_repo":"."} +{"id":"bd-147","content_hash":"b9feab1caf25d324350fe7081ae345e2fa473e24501c27fc05907fd3bbb908dc","title":"Direct mode real test","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T19:52:31.996122-07:00","updated_at":"2025-10-21T00:25:40.528769-07:00","closed_at":"2025-10-19T22:46:09.247155-07:00","source_repo":"."} +{"id":"bd-1470","content_hash":"b7f22be45035bba9d835f9f01229ddbaa35f46f77bfd26866c1f40a7a8c8c381","title":"Agent 4 New Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.444303-07:00","updated_at":"2025-10-21T00:29:11.444303-07:00","source_repo":"."} +{"id":"bd-1471","content_hash":"63f16f8df5e514d88451b0c46327d6cbed776d696b573d1c4e24bbe8d0cb1ada","title":"Timeout Test","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.784174-07:00","updated_at":"2025-10-21T00:29:11.784174-07:00","source_repo":"."} +{"id":"bd-1472","content_hash":"0e7a3a4208e2976f988af14bd25389c0a3674dbf5c3dd84b3139754d55319c15","title":"Agent 0 Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.903936-07:00","updated_at":"2025-10-21T00:29:11.903936-07:00","source_repo":"."} +{"id":"bd-1473","content_hash":"977058be6009eb835141e0fe5cb5fc5a68065dda2d25ff69073337ed31e2d01e","title":"Agent 0 Issue 1","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.907017-07:00","updated_at":"2025-10-21T00:29:11.907017-07:00","source_repo":"."} +{"id":"bd-1474","content_hash":"0dd60c3b4c571308f3107d89ae59b945fb2b02dd8f6cd328cf9089355848f0ea","title":"Agent 5 Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.908744-07:00","updated_at":"2025-10-21T00:29:11.908744-07:00","source_repo":"."} +{"id":"bd-1475","content_hash":"7b9890f15002a465c718f8ac9ffa8a7979d8611b6027e42ce2b98ac2ee331aa2","title":"Agent 8 Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.910014-07:00","updated_at":"2025-10-21T00:29:11.910014-07:00","source_repo":"."} +{"id":"bd-1476","content_hash":"b0f9b080bd6b07feaa30d6d182afa1511de888a6e5c096a63a2793540a383abf","title":"Agent 2 Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.912096-07:00","updated_at":"2025-10-21T00:29:11.912096-07:00","source_repo":"."} +{"id":"bd-1477","content_hash":"22b23604f74b198fe7aff865fb2dd150aaa799e9c40c58dc5527bb5e98fefa5f","title":"Agent 2 Issue 1","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.913453-07:00","updated_at":"2025-10-21T00:29:11.913453-07:00","source_repo":"."} +{"id":"bd-1478","content_hash":"71082746a4f6f4d6befa935f1e8a338e6b3a99304df8c3b5b822964edaf6d7a0","title":"Agent 5 Issue 1","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.910583-07:00","updated_at":"2025-10-21T00:29:11.910583-07:00","source_repo":"."} +{"id":"bd-1479","content_hash":"542ba7b1be3cec4c49171d6abf97308e3fee11047beb8a8e9a56c46a3967a366","title":"Agent 5 Issue 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.915452-07:00","updated_at":"2025-10-21T00:29:11.915452-07:00","source_repo":"."} +{"id":"bd-148","content_hash":"cb9bef4befef4939c22f22b64726f7f12d7a0a12491c31a3a2f32330daa7449a","title":"Direct mode test clean","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T19:52:56.4305-07:00","updated_at":"2025-10-21T00:25:40.528934-07:00","closed_at":"2025-10-19T22:46:09.247418-07:00","source_repo":"."} +{"id":"bd-1480","content_hash":"1c6c1a4c1d17836b279091e9f4182589aff871798c40b8583b3127e78a48e478","title":"Agent 5 Issue 3","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.916603-07:00","updated_at":"2025-10-21T00:29:11.916603-07:00","source_repo":"."} +{"id":"bd-1481","content_hash":"20841b6a16c222ad8caf28471ce2c71f16bb0692bbda93690e4955b9083c566a","title":"Agent 5 Issue 4","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.917784-07:00","updated_at":"2025-10-21T00:29:11.917784-07:00","source_repo":"."} +{"id":"bd-1482","content_hash":"ee47750606be7a397935acb2ae8183a5396f93a44c977e222a6b4d36e6fcedca","title":"Agent 5 Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.918707-07:00","updated_at":"2025-10-21T00:29:11.918707-07:00","source_repo":"."} +{"id":"bd-1483","content_hash":"33b5e9b526c520d1f08adc19e80bfc9e9442e5379356b025bf63de1bc3ec6e44","title":"Agent 5 Issue 6","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.919528-07:00","updated_at":"2025-10-21T00:29:11.919528-07:00","source_repo":"."} +{"id":"bd-1484","content_hash":"96cb874b66a41851da4b650a4cf86fc045fe39a2fc1546ce6bf67748144a2731","title":"Agent 5 Issue 7","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.920484-07:00","updated_at":"2025-10-21T00:29:11.920484-07:00","source_repo":"."} +{"id":"bd-1485","content_hash":"59713b802a12a25fd64c18393690609a790e303832ea438660c0f51393519319","title":"Agent 5 Issue 8","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.921471-07:00","updated_at":"2025-10-21T00:29:11.921471-07:00","source_repo":"."} +{"id":"bd-1486","content_hash":"d8cf97d24ed212b97251ae2d1a504f6508c284ecbea4f6dd1e1bbf7cc1ceec23","title":"Agent 5 Issue 9","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.922309-07:00","updated_at":"2025-10-21T00:29:11.922309-07:00","source_repo":"."} +{"id":"bd-1487","content_hash":"d6160fa90f517c0456462bd096e12f524cbbfe9551c752079cd326486bf729d8","title":"Agent 5 Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.923111-07:00","updated_at":"2025-10-21T00:29:11.923111-07:00","source_repo":"."} +{"id":"bd-1488","content_hash":"ed7a95bd5c39401980588b116210b5b17083b363e48fe334968b1a47b10bd532","title":"Agent 5 Issue 11","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.924251-07:00","updated_at":"2025-10-21T00:29:11.924251-07:00","source_repo":"."} +{"id":"bd-1489","content_hash":"ac30cf73f6b7b5454c4421b1f8991f3ddee6b054d3c49f3c1db8958851d71872","title":"Agent 5 Issue 12","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.925107-07:00","updated_at":"2025-10-21T00:29:11.925107-07:00","source_repo":"."} +{"id":"bd-149","content_hash":"4865a0eaf982fedd744f824f990037f40763be2a133e4c3bb4e28971f8372428","title":"Auth tokens expire too quickly","description":"## Summary\n\n[Brief description of the bug]\n\n## Steps to Reproduce\n\n1. Step 1\n2. Step 2\n3. Step 3\n\n## Expected Behavior\n\n[What should happen]\n\n## Actual Behavior\n\n[What actually happens]\n\n## Environment\n\n- OS: [e.g., macOS 15.7.1]\n- Version: [e.g., bd 0.20.1]\n- Additional context: [any relevant details]\n\n## Additional Context\n\n[Screenshots, logs, or other relevant information]\n","design":"## Root Cause Analysis\n\n[Describe the underlying cause once identified]\n\n## Proposed Fix\n\n[Outline the solution approach]\n\n## Impact Assessment\n\n- Affected features: [list]\n- Breaking changes: [yes/no and details]\n- Migration needed: [yes/no and details]\n","acceptance_criteria":"- [ ] Bug no longer reproduces with original steps\n- [ ] Regression tests added\n- [ ] Related edge cases tested\n- [ ] Documentation updated if behavior changed\n","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-19T20:01:18.977976-07:00","updated_at":"2025-11-12T10:57:44.251014-08:00","closed_at":"2025-11-05T00:25:06.427601-08:00","source_repo":".","labels":["bug"]} +{"id":"bd-1490","content_hash":"bd598a743d3b21f0ea982ce684d29f06a179198cc5137338d0369c40e0f65cce","title":"Agent 5 Issue 13","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.925962-07:00","updated_at":"2025-10-21T00:29:11.925962-07:00","source_repo":"."} +{"id":"bd-1491","content_hash":"72c40c8062cc1ff22685c9e136d97be8c216ab0febe6af2938a9fd4313f32072","title":"Agent 5 Issue 14","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.927195-07:00","updated_at":"2025-10-21T00:29:11.927195-07:00","source_repo":"."} +{"id":"bd-1492","content_hash":"27e7a5746b214933c8d1aa7261da6efed49375d38a7fc677fc727e55f2979113","title":"Agent 5 Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.92835-07:00","updated_at":"2025-10-21T00:29:11.92835-07:00","source_repo":"."} +{"id":"bd-1493","content_hash":"657a08f7535c7d7f9e7e3775797054483f7d93b8370b41e0d51b5dbc3e634c89","title":"Agent 5 Issue 16","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.929282-07:00","updated_at":"2025-10-21T00:29:11.929282-07:00","source_repo":"."} +{"id":"bd-1494","content_hash":"de3b8994e55a2b427b7d0f8570593c3b6ba6d71c3faf382400f6e78dd52f5d2e","title":"Agent 5 Issue 17","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.930171-07:00","updated_at":"2025-10-21T00:29:11.930171-07:00","source_repo":"."} +{"id":"bd-1495","content_hash":"217adec9b67469e02d2f45c02e109820b9b6dd4158dc5b9860027a10f669a73c","title":"Agent 5 Issue 18","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.930952-07:00","updated_at":"2025-10-21T00:29:11.930952-07:00","source_repo":"."} +{"id":"bd-1496","content_hash":"10a56c76c0d77f06c6cc412cf1a3cf62f85ab2632eabf7e88803c398c5a980b3","title":"Agent 5 Issue 19","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.932207-07:00","updated_at":"2025-10-21T00:29:11.932207-07:00","source_repo":"."} +{"id":"bd-1497","content_hash":"6c17c3f94c6c23fa9644e9b286c98de5acbac86abbe37f3f72d96337b955a6fb","title":"Agent 5 Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.933479-07:00","updated_at":"2025-10-21T00:29:11.933479-07:00","source_repo":"."} +{"id":"bd-1498","content_hash":"4ce30b07a239c677f92d2e786b68a754e96dd7bd31176e7c88c9a5dcf38c89ef","title":"Agent 5 Issue 21","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.934226-07:00","updated_at":"2025-10-21T00:29:11.934226-07:00","source_repo":"."} +{"id":"bd-1499","content_hash":"7597f35f59d736aed9b85e3447eac57da6570994a62b364f3894cf2dbad2788f","title":"Agent 5 Issue 22","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.935134-07:00","updated_at":"2025-10-21T00:29:11.935134-07:00","source_repo":"."} +{"id":"bd-15","content_hash":"af6facfb8fda14dc8a4cbeaa74c3b0eccaaabd7646fc26fff5b634c4e48f34e5","title":"Optimize auto-flush to use incremental updates","description":"Every flush exports ALL issues and ALL dependencies, even if only one issue changed. For large projects (1000+ issues), this could be expensive. Current approach guarantees consistency, which is fine for MVP, but future optimization could track which issues changed and use incremental updates. Located in cmd/bd/main.go:255-276.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.529265-07:00","closed_at":"2025-10-14T02:51:52.200141-07:00","source_repo":"."} +{"id":"bd-150","content_hash":"d41ed2ace5364430a5ab6f06b363f7f83f698d4ebf3a857589b8370bc1a11d03","title":"Daemon stop has race condition with SIGKILL","description":"When stopping daemon, sometimes see 'Warning: daemon did not stop after 5 seconds, sending SIGKILL' followed by 'Error killing process: os: process already finished'. Indicates timing issue where process exits between check and kill.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-10-19T20:01:18.979589-07:00","updated_at":"2025-10-21T00:25:40.529429-07:00","closed_at":"2025-10-19T21:49:35.916052-07:00","source_repo":"."} +{"id":"bd-1500","content_hash":"83d9e128f9d8b6a50f9b76550b273203be5b50e66a2e2a676b01905703fb0062","title":"Agent 1 Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.911355-07:00","updated_at":"2025-10-21T00:29:11.911355-07:00","source_repo":"."} +{"id":"bd-1501","content_hash":"4984e7d5cc509f8c2958d0f4ea8447d18c718b0ff55d278bd52043ab86f069a6","title":"Agent 1 Issue 1","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.936873-07:00","updated_at":"2025-10-21T00:29:11.936873-07:00","source_repo":"."} +{"id":"bd-1502","content_hash":"de86eca2d1e0a3c242d519a305ca8cc59a45a943c672e91a915ca2e790158ba4","title":"Agent 1 Issue 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.93761-07:00","updated_at":"2025-10-21T00:29:11.93761-07:00","source_repo":"."} +{"id":"bd-1503","content_hash":"e2d1aa31a588140a342ed0632935e2f58e566b0360fc69fccd4150577f39eb75","title":"Agent 1 Issue 3","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.938552-07:00","updated_at":"2025-10-21T00:29:11.938552-07:00","source_repo":"."} +{"id":"bd-1504","content_hash":"d080d847f481e314c6a1c42d5404701e8a4ee21b761082032caebe2e5ac0972b","title":"Agent 1 Issue 4","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.939346-07:00","updated_at":"2025-10-21T00:29:11.939346-07:00","source_repo":"."} +{"id":"bd-1505","content_hash":"a24d0542a30094645fd31f08594ca441ecbc51ea679dec5a25f96ac146ee16de","title":"Agent 1 Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.940175-07:00","updated_at":"2025-10-21T00:29:11.940175-07:00","source_repo":"."} +{"id":"bd-1506","content_hash":"27fea31714b87bbffe9f93f20304e4320adb116bd93e780f6de3227d936c1d84","title":"Agent 1 Issue 6","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.941321-07:00","updated_at":"2025-10-21T00:29:11.941321-07:00","source_repo":"."} +{"id":"bd-1507","content_hash":"760e6a8f147407b6f22232cb15ed2b13ba17f91f51821a577c6187db943ca479","title":"Agent 1 Issue 7","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.942169-07:00","updated_at":"2025-10-21T00:29:11.942169-07:00","source_repo":"."} +{"id":"bd-1508","content_hash":"da3d314dfdc2e84fe9cc2caa34a3951e4da0c43849ab734ac48197a05c4b6888","title":"Agent 1 Issue 8","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.943249-07:00","updated_at":"2025-10-21T00:29:11.943249-07:00","source_repo":"."} +{"id":"bd-1509","content_hash":"9e744a2e7bc0e1a7deaf9048cdef1904607b0ceb0b7396c70af3a74f061fdf97","title":"Agent 1 Issue 9","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.944047-07:00","updated_at":"2025-10-21T00:29:11.944047-07:00","source_repo":"."} +{"id":"bd-151","content_hash":"20db4e5373ac2df72fccff4bd44d4d3cdc5d1661b4624dba5e35d7d21eeafd7e","title":"Implement storage cache eviction and memory limits","description":"Implement LRU cache eviction and memory pressure detection for daemon storage cache to prevent unbounded memory growth.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-19T20:13:59.761129-07:00","updated_at":"2025-10-21T00:25:40.529631-07:00","closed_at":"2025-10-19T20:14:24.888631-07:00","source_repo":"."} +{"id":"bd-1510","content_hash":"a0bae51ee3ed6b9b1ba33a361d590d1567cee32ad7525de5c81a0694fe99035f","title":"Agent 1 Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.9448-07:00","updated_at":"2025-10-21T00:29:11.9448-07:00","source_repo":"."} +{"id":"bd-1511","content_hash":"9e95b8731901f586175eac3b2964e5c9943e380ee034318133f292bf08e29d27","title":"Agent 1 Issue 11","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.94562-07:00","updated_at":"2025-10-21T00:29:11.94562-07:00","source_repo":"."} +{"id":"bd-1512","content_hash":"2b6edacdac9ba336b9a21ddf8a616c3c406e0b4b37d1666f97c0426764a39b21","title":"Agent 1 Issue 12","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.946616-07:00","updated_at":"2025-10-21T00:29:11.946616-07:00","source_repo":"."} +{"id":"bd-1513","content_hash":"cb63493c88bc3c9dc5ee6b6df29ad4282c101bbf29345d1a0be6eee8f8f0d640","title":"Agent 1 Issue 13","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.947588-07:00","updated_at":"2025-10-21T00:29:11.947588-07:00","source_repo":"."} +{"id":"bd-1514","content_hash":"f39e1ac84c9f38ad80653e420289461ea770da32d059578aa2646626517cd00e","title":"Agent 1 Issue 14","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.948429-07:00","updated_at":"2025-10-21T00:29:11.948429-07:00","source_repo":"."} +{"id":"bd-1515","content_hash":"882100b6611f129efc1f475dfa77b1c7811d8471c1f1cd511cf5e079bc137f09","title":"Agent 1 Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.949371-07:00","updated_at":"2025-10-21T00:29:11.949371-07:00","source_repo":"."} +{"id":"bd-1516","content_hash":"4b8b2f646f44317118de31c5c41582e75afb7dd1f71c51b96b12e6bfe9b839b3","title":"Agent 1 Issue 16","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.950338-07:00","updated_at":"2025-10-21T00:29:11.950338-07:00","source_repo":"."} +{"id":"bd-1517","content_hash":"2ed48743dab2d829af6d3c67aa1e3b017009480d03f3e9b4ed8ed349ab745524","title":"Agent 1 Issue 17","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.951131-07:00","updated_at":"2025-10-21T00:29:11.951131-07:00","source_repo":"."} +{"id":"bd-1518","content_hash":"4e122df07289d2358de2ec185a06abc38914161f7c82f38fc9d62d037cfec642","title":"Agent 1 Issue 18","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.952109-07:00","updated_at":"2025-10-21T00:29:11.952109-07:00","source_repo":"."} +{"id":"bd-1519","content_hash":"c8019da28cf61868e5293d215f75edb60d9b2135165103bc84664b6f531562ca","title":"Agent 1 Issue 19","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.952921-07:00","updated_at":"2025-10-21T00:29:11.952921-07:00","source_repo":"."} +{"id":"bd-152","content_hash":"3299710c2188dd809c2e24ce523fba11188eadb36da7cb1e976027eea10969e9","title":"Clean up MCP integration for daemon reliability","description":"Ensure MCP server properly handles daemon lifecycle, connection failures, and recovery scenarios.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-19T20:13:59.764086-07:00","updated_at":"2025-10-21T00:25:40.529802-07:00","closed_at":"2025-10-19T20:15:11.006871-07:00","source_repo":"."} +{"id":"bd-1520","content_hash":"3d874c016f04524487e468483260d5d6c51c681724a16965197feb40b883011d","title":"Agent 1 Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.953743-07:00","updated_at":"2025-10-21T00:29:11.953743-07:00","source_repo":"."} +{"id":"bd-1521","content_hash":"687bf8f0c51b46f73f2862d5e5c937412f5649c198e038bd4022491beddc3311","title":"Agent 1 Issue 21","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.954586-07:00","updated_at":"2025-10-21T00:29:11.954586-07:00","source_repo":"."} +{"id":"bd-1522","content_hash":"a927bf6b27140ab46e658460a3660e34169de8f3ed51aa38dad8cf95fb686440","title":"Agent 1 Issue 22","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.955426-07:00","updated_at":"2025-10-21T00:29:11.955426-07:00","source_repo":"."} +{"id":"bd-1523","content_hash":"b5b134bd6ec84db00400097b9e744148d4e63a99d3b41ac88da653ce4527eb15","title":"Agent 1 Issue 23","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.956272-07:00","updated_at":"2025-10-21T00:29:11.956272-07:00","source_repo":"."} +{"id":"bd-1524","content_hash":"5992fb8f4b3bf1a8ab0b6781859692f1228327a184437757e2b4d4e67eeb569e","title":"Agent 1 Issue 24","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.957326-07:00","updated_at":"2025-10-21T00:29:11.957326-07:00","source_repo":"."} +{"id":"bd-1525","content_hash":"3c3ddd8a5663e5c095c658eb2599e8e79d38198dd0a2df8e3bbfdd1e1be4d5b1","title":"Agent 1 Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.95818-07:00","updated_at":"2025-10-21T00:29:11.95818-07:00","source_repo":"."} +{"id":"bd-1526","content_hash":"8f5c20c65c08f84de700abaa06ff2136f1d487410998214622400edf4785e820","title":"Agent 1 Issue 26","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.959018-07:00","updated_at":"2025-10-21T00:29:11.959018-07:00","source_repo":"."} +{"id":"bd-1527","content_hash":"f758c7816e2f5672cf67a903b8fd534ee384355521183dc103bc431d8497bff4","title":"Agent 1 Issue 27","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.959872-07:00","updated_at":"2025-10-21T00:29:11.959872-07:00","source_repo":"."} +{"id":"bd-1528","content_hash":"c90b22db81c01c709815b1e941e6fff66f2392c1dcad9a7792b4b31f0bb7d09a","title":"Agent 1 Issue 28","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.960723-07:00","updated_at":"2025-10-21T00:29:11.960723-07:00","source_repo":"."} +{"id":"bd-1529","content_hash":"410a54443fb3a7aba5a16d83cab62d75333828b1ebaeba04c6ffc655967357a4","title":"Agent 1 Issue 29","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.961761-07:00","updated_at":"2025-10-21T00:29:11.961761-07:00","source_repo":"."} +{"id":"bd-153","content_hash":"d58cd571f10a038865b9a009ea34b41ed3bd45a836288bdf9bfc5f51dd5b04c2","title":"Add daemon health checks and monitoring","description":"Add health check endpoint that validates daemon state, storage connections, and resource usage.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-19T20:13:59.764154-07:00","updated_at":"2025-10-21T00:25:40.529968-07:00","closed_at":"2025-10-19T20:14:38.291678-07:00","source_repo":"."} +{"id":"bd-1530","content_hash":"16588cd1c0b997dd90513816c90eaf29fd03ef671a5662f7c20f63619663868f","title":"Agent 1 Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.962603-07:00","updated_at":"2025-10-21T00:29:11.962603-07:00","source_repo":"."} +{"id":"bd-1531","content_hash":"e48fefaa7ff06191715bea0fa31879dcbbb1021fa403e8874f951867e9c93051","title":"Agent 1 Issue 31","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.963783-07:00","updated_at":"2025-10-21T00:29:11.963783-07:00","source_repo":"."} +{"id":"bd-1532","content_hash":"b78fcd489f329825c485d721b6a00eb1865add5c6888ee5a16f211fd1c641c84","title":"Agent 1 Issue 32","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.964698-07:00","updated_at":"2025-10-21T00:29:11.964698-07:00","source_repo":"."} +{"id":"bd-1533","content_hash":"d0128472cdb96592e42aaebe282df33e8b25522bbbe01d6cb4e87a57b98b5c6d","title":"Agent 1 Issue 33","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.965544-07:00","updated_at":"2025-10-21T00:29:11.965544-07:00","source_repo":"."} +{"id":"bd-1534","content_hash":"13f84125ffd7e55a999ea1a83171abef51ea8edd0425ab8b98b210a7afc198bd","title":"Agent 1 Issue 34","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.966395-07:00","updated_at":"2025-10-21T00:29:11.966395-07:00","source_repo":"."} +{"id":"bd-1535","content_hash":"770cfaa83d4aa388220d369f9b1ea7c2c3cbeb8c51e34e448362e41f1d588eff","title":"Agent 1 Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.967148-07:00","updated_at":"2025-10-21T00:29:11.967148-07:00","source_repo":"."} +{"id":"bd-1536","content_hash":"f8dc5b854b1445b9e5757a11722dfc6ec8b9e219e3b08bde147d8c6e11f929de","title":"Agent 1 Issue 36","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.968095-07:00","updated_at":"2025-10-21T00:29:11.968095-07:00","source_repo":"."} +{"id":"bd-1537","content_hash":"ec96e960028fce47498f8ba6fe309449ffe8db7b3ac22f9332fa09f2c2e85375","title":"Agent 1 Issue 37","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.96888-07:00","updated_at":"2025-10-21T00:29:11.96888-07:00","source_repo":"."} +{"id":"bd-1538","content_hash":"47dd44c3876b4a81d47e950a3aa4d58e08ca097050be544dea047943d24ac738","title":"Agent 1 Issue 38","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.969629-07:00","updated_at":"2025-10-21T00:29:11.969629-07:00","source_repo":"."} +{"id":"bd-1539","content_hash":"162ece8a4a67adbf8f874b4afc8f175f29a682a39a84dcbe25d80fe0b42bf8a7","title":"Agent 1 Issue 39","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.97078-07:00","updated_at":"2025-10-21T00:29:11.97078-07:00","source_repo":"."} +{"id":"bd-154","content_hash":"5f0639eb0ff24e14852b42f5e10a4f9063c9e3e0a6b1e27523c1b5789d575e41","title":"Implement daemon crash recovery and restart","description":"Detect stale daemon processes, clean up orphaned resources, and auto-restart daemon after crashes.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-19T20:13:59.766856-07:00","updated_at":"2025-10-21T00:25:40.5302-07:00","closed_at":"2025-10-19T20:15:02.211576-07:00","source_repo":"."} +{"id":"bd-1540","content_hash":"15c3c6d484b54733e949611c6296283fbbc81570c4cca873b8761a5099218689","title":"Agent 1 Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.97163-07:00","updated_at":"2025-10-21T00:29:11.97163-07:00","source_repo":"."} +{"id":"bd-1541","content_hash":"e3efb1313c369a3de000c6e84bcced39924ad225e7e32aca4416ff25acad17cd","title":"Agent 1 Issue 41","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.972449-07:00","updated_at":"2025-10-21T00:29:11.972449-07:00","source_repo":"."} +{"id":"bd-1542","content_hash":"b26a98dd5351f12de05da8f3818f796d9c6a58c4529dea6b643a49130667cb7d","title":"Agent 1 Issue 42","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.973503-07:00","updated_at":"2025-10-21T00:29:11.973503-07:00","source_repo":"."} +{"id":"bd-1543","content_hash":"7a02d74a1340a17a8ea16a3c59feafc99a87cd3d371e0b40cddce9118cb58847","title":"Agent 1 Issue 43","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.974296-07:00","updated_at":"2025-10-21T00:29:11.974296-07:00","source_repo":"."} +{"id":"bd-1544","content_hash":"cc79d5f187b9eca70c6e7631dc67a44d23d03664124714fa660cbaf4c8320cfa","title":"Agent 1 Issue 44","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.975229-07:00","updated_at":"2025-10-21T00:29:11.975229-07:00","source_repo":"."} +{"id":"bd-1545","content_hash":"6514e1977a34b28899c2f0e3602a7bf857c50345c1348fa90739f5486059f0d1","title":"Agent 1 Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.976101-07:00","updated_at":"2025-10-21T00:29:11.976101-07:00","source_repo":"."} +{"id":"bd-1546","content_hash":"4fd4069529efbd53bf4f50360a0d7d63332194f32dffd95e56c2c010435be4e8","title":"Agent 1 Issue 46","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.976894-07:00","updated_at":"2025-10-21T00:29:11.976894-07:00","source_repo":"."} +{"id":"bd-1547","content_hash":"acbd9ea4befcb331c409e58ad4ddb45df6ada9ee85ff39318b83db190e8f2681","title":"Agent 1 Issue 47","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.977819-07:00","updated_at":"2025-10-21T00:29:11.977819-07:00","source_repo":"."} +{"id":"bd-1548","content_hash":"e7b16bd2b176734df19b7d41658d9c22993b98f94881047bed03912b4665fba6","title":"Agent 1 Issue 48","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.978661-07:00","updated_at":"2025-10-21T00:29:11.978661-07:00","source_repo":"."} +{"id":"bd-1549","content_hash":"b162ea66a01db65f6f78768e63b594d0cfaefa7fafc9635612e143e218279423","title":"Agent 1 Issue 49","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.979502-07:00","updated_at":"2025-10-21T00:29:11.979502-07:00","source_repo":"."} +{"id":"bd-155","content_hash":"bf5084590ad045238b9d16af4faaf7ba0538af7049f4be76ca0840fa77f21af1","title":"Implement resource limits and connection pooling","description":"Add configurable limits for connections, file descriptors, and memory usage.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T20:13:59.768745-07:00","updated_at":"2025-10-21T00:25:40.530638-07:00","closed_at":"2025-10-19T22:41:38.335156-07:00","source_repo":"."} +{"id":"bd-1550","content_hash":"05a2b72dd75260db241b05a0673ad120a31accd05e316efa0ee56748d9666d07","title":"Agent 1 Issue 50","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.980483-07:00","updated_at":"2025-10-21T00:29:11.980483-07:00","source_repo":"."} +{"id":"bd-1551","content_hash":"2356bd1477057f9e6d0caac11e4dfef6fc6a86d86cc60145f72118a976dcbce5","title":"Agent 1 Issue 51","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.981366-07:00","updated_at":"2025-10-21T00:29:11.981366-07:00","source_repo":"."} +{"id":"bd-1552","content_hash":"c3175b6eca7305be0210e3b7b5c9581928bd53c013975afbb3a94aea6cd18515","title":"Agent 1 Issue 52","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.982263-07:00","updated_at":"2025-10-21T00:29:11.982263-07:00","source_repo":"."} +{"id":"bd-1553","content_hash":"95fc76214729240607082a0e1fa595095481ab1d19914c8619160f9b5c724ac8","title":"Agent 1 Issue 53","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.983238-07:00","updated_at":"2025-10-21T00:29:11.983238-07:00","source_repo":"."} +{"id":"bd-1554","content_hash":"7def1a39a2d6b203487aef2b2cfe11eeeeed8f738e0705d09a5461448eb9c805","title":"Agent 1 Issue 54","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.984107-07:00","updated_at":"2025-10-21T00:29:11.984107-07:00","source_repo":"."} +{"id":"bd-1555","content_hash":"e0c3ff3097040625cb67e69ededc07fd753c12782706be4a7f283df1971d6754","title":"Agent 1 Issue 55","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.984987-07:00","updated_at":"2025-10-21T00:29:11.984987-07:00","source_repo":"."} +{"id":"bd-1556","content_hash":"e0c1a143ff72eee3a768a4389cafb7442fa7f827040fff4b677464ba8031436b","title":"Agent 1 Issue 56","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.985838-07:00","updated_at":"2025-10-21T00:29:11.985838-07:00","source_repo":"."} +{"id":"bd-1557","content_hash":"8c7e371805c1e729b8bfc34187be14dcb36858de2ed9dadbfc22fc21b82288c0","title":"Agent 1 Issue 57","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.986849-07:00","updated_at":"2025-10-21T00:29:11.986849-07:00","source_repo":"."} +{"id":"bd-1558","content_hash":"6d16f7635e1cad722af309ccc8ccac4e6cad61f5d40d47777cf9914aefa73ab3","title":"Agent 1 Issue 58","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.98766-07:00","updated_at":"2025-10-21T00:29:11.98766-07:00","source_repo":"."} +{"id":"bd-1559","content_hash":"063fd99d7a75f5eb855e1eff6d1d71b0d573587c300b581246a6cd0c9bef60e9","title":"Agent 1 Issue 59","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.988466-07:00","updated_at":"2025-10-21T00:29:11.988466-07:00","source_repo":"."} +{"id":"bd-156","content_hash":"e1ce19d788044ad7395300a78e4addba368e3b84f459324e3ca215760c635794","title":"Add daemon telemetry and metrics","description":"Track and report daemon metrics: request count, latency, cache hits/misses, error rates.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T20:13:59.77094-07:00","updated_at":"2025-10-21T00:25:40.530865-07:00","closed_at":"2025-10-19T23:15:11.871638-07:00","source_repo":"."} +{"id":"bd-1560","content_hash":"d76564acc8b4d8ea5846c9d88a2c421d05c3845acb89665bc47fff33b1d1654a","title":"Agent 1 Issue 60","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.989252-07:00","updated_at":"2025-10-21T00:29:11.989252-07:00","source_repo":"."} +{"id":"bd-1561","content_hash":"d21a9c558fb5251366d1521a9c68b0a2743c8e228b733d57adc791dcfeb7bb16","title":"Agent 1 Issue 61","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.990018-07:00","updated_at":"2025-10-21T00:29:11.990018-07:00","source_repo":"."} +{"id":"bd-1562","content_hash":"4000d0285720b67d5e9091455195e5a8b9cd546e82e91353968a257a2faad568","title":"Agent 1 Issue 62","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.991032-07:00","updated_at":"2025-10-21T00:29:11.991032-07:00","source_repo":"."} +{"id":"bd-1563","content_hash":"314c0910321c1f69dd3ab8aeb9757381df2da9828d624ec1f95ea7982b9173ff","title":"Agent 1 Issue 63","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.991763-07:00","updated_at":"2025-10-21T00:29:11.991763-07:00","source_repo":"."} +{"id":"bd-1564","content_hash":"1d9733b8827660d569f11f77f11811986fe015211898125813372dcbf8d4ca5a","title":"Agent 1 Issue 64","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.992468-07:00","updated_at":"2025-10-21T00:29:11.992468-07:00","source_repo":"."} +{"id":"bd-1565","content_hash":"5981db8b70ece0d3b5bc930a5baa9e74d76d87f215aee65eb3e6c42dbdc09ab9","title":"Agent 1 Issue 65","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.993119-07:00","updated_at":"2025-10-21T00:29:11.993119-07:00","source_repo":"."} +{"id":"bd-1566","content_hash":"abea89caec8f79fa6da26e23fe89f0a7c61269dfcedf1d2c9f61053c1e90a1c5","title":"Agent 1 Issue 66","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.99378-07:00","updated_at":"2025-10-21T00:29:11.99378-07:00","source_repo":"."} +{"id":"bd-1567","content_hash":"804f6ca850798b811a57dbd8bb815b15bf6c002b6a634eb967f50ca58702b950","title":"Agent 1 Issue 67","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.99444-07:00","updated_at":"2025-10-21T00:29:11.99444-07:00","source_repo":"."} +{"id":"bd-1568","content_hash":"ec2d4a242b32c8a8f0083280f1c5df62ccaa430369109e4c324e6902d2620ac5","title":"Agent 1 Issue 68","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.995125-07:00","updated_at":"2025-10-21T00:29:11.995125-07:00","source_repo":"."} +{"id":"bd-1569","content_hash":"d66245f1f342c9688e2fd4d8d9fd124f383fb1f2b891a20d24b8c6427db5c090","title":"Agent 1 Issue 69","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.995816-07:00","updated_at":"2025-10-21T00:29:11.995816-07:00","source_repo":"."} +{"id":"bd-157","content_hash":"43ed76103cf6d347181993d79e2c4a6304b7af7cf4dcc54024282fd3a194f7c9","title":"Improve daemon visibility and status reporting","description":"Add clear daemon status output, uptime reporting, and user-friendly error messages.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-19T20:13:59.772435-07:00","updated_at":"2025-10-21T00:25:40.531058-07:00","closed_at":"2025-10-19T21:44:50.340047-07:00","source_repo":"."} +{"id":"bd-1570","content_hash":"25517df235f0f442a915b97924e0c5323eb36be2ef17f0c5228d543d985ad9ae","title":"Agent 1 Issue 70","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.996488-07:00","updated_at":"2025-10-21T00:29:11.996488-07:00","source_repo":"."} +{"id":"bd-1571","content_hash":"0013350acc53113c431e4d356c41e304bd33f383da0faf99d8d7568988b7d696","title":"Agent 1 Issue 71","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.997181-07:00","updated_at":"2025-10-21T00:29:11.997181-07:00","source_repo":"."} +{"id":"bd-1572","content_hash":"156363df299ed474975ea90934028ab2d135188bb6a5d5e228df573456f945be","title":"Agent 1 Issue 72","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.997891-07:00","updated_at":"2025-10-21T00:29:11.997891-07:00","source_repo":"."} +{"id":"bd-1573","content_hash":"7f6fdd1ea3ff99a2f54e6a4a4777c2b04e5e0c65c31924d22f07ae712047a62b","title":"Agent 1 Issue 73","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.998606-07:00","updated_at":"2025-10-21T00:29:11.998606-07:00","source_repo":"."} +{"id":"bd-1574","content_hash":"42d3e19aacb034ee872567810600c83b16da310e25b3f7912f40725ffbd60954","title":"Agent 1 Issue 74","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.999334-07:00","updated_at":"2025-10-21T00:29:11.999334-07:00","source_repo":"."} +{"id":"bd-1575","content_hash":"ee02cea0a9501f0d7009b5f13d76d0abf9bc645181fdb54844a5f7df92458c0c","title":"Agent 1 Issue 75","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.000074-07:00","updated_at":"2025-10-21T00:29:12.000074-07:00","source_repo":"."} +{"id":"bd-1576","content_hash":"c8f308a6a524ade84ed6aa32d49c4177309be40dba62546a6f796ee92607a217","title":"Agent 1 Issue 76","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.000772-07:00","updated_at":"2025-10-21T00:29:12.000772-07:00","source_repo":"."} +{"id":"bd-1577","content_hash":"8c485d6e1f2548adbae04eb7ba23c3db5568b61ad18a94874ff5fd2ef2a65c5d","title":"Agent 1 Issue 77","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.001514-07:00","updated_at":"2025-10-21T00:29:12.001514-07:00","source_repo":"."} +{"id":"bd-1578","content_hash":"a9dd819b99ad7721a8b28be13e4aa834c137a5b8f8a41f1e2eaf194d50b384bb","title":"Agent 1 Issue 78","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.002223-07:00","updated_at":"2025-10-21T00:29:12.002223-07:00","source_repo":"."} +{"id":"bd-1579","content_hash":"211b79aca18a93200bffd02c70a5babecae0e85806229ee4c9abfee3732aaae6","title":"Agent 1 Issue 79","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.002959-07:00","updated_at":"2025-10-21T00:29:12.002959-07:00","source_repo":"."} +{"id":"bd-158","content_hash":"75874823211cb816a9b35fe3453ebb32061fdb3190ea470655a8596a59d4eac4","title":"Add daemon/client version compatibility checks","description":"Verify daemon and client versions are compatible before allowing connections.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-19T20:13:59.774304-07:00","updated_at":"2025-10-21T00:25:40.531232-07:00","closed_at":"2025-10-19T22:29:49.795817-07:00","source_repo":"."} +{"id":"bd-1580","content_hash":"248dd03b4c2ed08740f48ac210b90067fcf67d43d7f3f8b9996338c19de5a644","title":"Agent 1 Issue 80","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.003675-07:00","updated_at":"2025-10-21T00:29:12.003675-07:00","source_repo":"."} +{"id":"bd-1581","content_hash":"aae748fc0657c6bfe7ee59b1642a18fb0c118bab22dd3fff70f92f2debffee19","title":"Agent 1 Issue 81","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.004389-07:00","updated_at":"2025-10-21T00:29:12.004389-07:00","source_repo":"."} +{"id":"bd-1582","content_hash":"5c1355f28bf70ee7d2beb05e3e5c35dda8c6d5d96530494d999bd31dae05b3fa","title":"Agent 1 Issue 82","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.005121-07:00","updated_at":"2025-10-21T00:29:12.005121-07:00","source_repo":"."} +{"id":"bd-1583","content_hash":"62cf7eb493afa29c46cec5252d65518988b279abb1d6c1aed89b3148c16bd66f","title":"Agent 1 Issue 83","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.005832-07:00","updated_at":"2025-10-21T00:29:12.005832-07:00","source_repo":"."} +{"id":"bd-1584","content_hash":"0a03a462613ae3f5946fa1f4c0627c2eebc7133024de4d3637e4439e6eb1eb98","title":"Agent 1 Issue 84","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.006563-07:00","updated_at":"2025-10-21T00:29:12.006563-07:00","source_repo":"."} +{"id":"bd-1585","content_hash":"5c9d2f4882b0477d04688e128564518d94ec9275961c78520a56ea7b95f79663","title":"Agent 1 Issue 85","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.007301-07:00","updated_at":"2025-10-21T00:29:12.007301-07:00","source_repo":"."} +{"id":"bd-1586","content_hash":"b1d5b933cafb5d45931ff0c6cab6c6b936cb8539c0eccdaec0cf1d5cb705aeb2","title":"Agent 1 Issue 86","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.007979-07:00","updated_at":"2025-10-21T00:29:12.007979-07:00","source_repo":"."} +{"id":"bd-1587","content_hash":"d8f10b233096f9e7017441c2df9d0a8d79c8b2003ce4d3790f9ba3b1f8ce48ea","title":"Agent 1 Issue 87","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.008683-07:00","updated_at":"2025-10-21T00:29:12.008683-07:00","source_repo":"."} +{"id":"bd-1588","content_hash":"6efde2f8ca35f2d208803de654042d68db955804f226a1e27057eca694639e2d","title":"Agent 1 Issue 88","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.009383-07:00","updated_at":"2025-10-21T00:29:12.009383-07:00","source_repo":"."} +{"id":"bd-1589","content_hash":"41c7d9e07468c3d370a9690de3e84b1da79058dfaffcc4fb43f66aad89040fd9","title":"Agent 1 Issue 89","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.010077-07:00","updated_at":"2025-10-21T00:29:12.010077-07:00","source_repo":"."} +{"id":"bd-159","content_hash":"ad0b6cae5d91390215e31faa869fbebdd95ae3debbe91f01a9a845eefaca0b5d","title":"Enhance label functionality and documentation","description":"Improve beads label system to support cross-cutting concerns and contextual metadata beyond structured fields (status, priority, type).\n\nCurrent state: Basic label storage exists (labels table, Add/GetLabels methods)\nTarget state: Full label lifecycle management with CLI, filtering, automation, and documentation\n\nCore principles:\n- Labels for cross-cutting concerns (technical metadata, scope, effort, quality gates)\n- Structured fields for workflow state (status, priority, type remain primary)\n- Multi-dimensional tagging without schema changes\n\nSee removed LABELS.md for detailed use cases and design rationale.","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-10-19T20:45:24.163728-07:00","updated_at":"2025-10-21T00:25:40.531401-07:00","closed_at":"2025-10-19T23:07:06.666164-07:00","source_repo":"."} +{"id":"bd-1590","content_hash":"b3e417f3ff7bf3d5b27ce084950cce3f7393f3aecf214629da827a6f0aaef1ed","title":"Agent 1 Issue 90","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.010802-07:00","updated_at":"2025-10-21T00:29:12.010802-07:00","source_repo":"."} +{"id":"bd-1591","content_hash":"4bfdd77dcc3cd3e234e822a5a3219d3d35ac8ce7b62fee168e6539a06c18ab09","title":"Agent 1 Issue 91","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.011542-07:00","updated_at":"2025-10-21T00:29:12.011542-07:00","source_repo":"."} +{"id":"bd-1592","content_hash":"dec9514b1ab84b6183b7ff9c074e0c45bf415487b40959e869b95469bbc3d4d9","title":"Agent 1 Issue 92","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.012338-07:00","updated_at":"2025-10-21T00:29:12.012338-07:00","source_repo":"."} +{"id":"bd-1593","content_hash":"67dbab424a6c4b039aa617247e84456b2c29e495dc748ae9615ff4d269ecafda","title":"Agent 1 Issue 93","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.013242-07:00","updated_at":"2025-10-21T00:29:12.013242-07:00","source_repo":"."} +{"id":"bd-1594","content_hash":"6334038a3a64b076653ee372670b045aafa9e2550e32ad3ff7ad492499bfec22","title":"Agent 1 Issue 94","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.013976-07:00","updated_at":"2025-10-21T00:29:12.013976-07:00","source_repo":"."} +{"id":"bd-1595","content_hash":"271b598a6ea16f92691f1069a05e1e4175a424339ccc471ce9bfcac1e0cd2553","title":"Agent 1 Issue 95","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.014674-07:00","updated_at":"2025-10-21T00:29:12.014674-07:00","source_repo":"."} +{"id":"bd-1596","content_hash":"9004dcbaa6a9cb95abd6a50bb5df69c5574934bd391db61701836ac5b8587c9f","title":"Agent 1 Issue 96","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.015407-07:00","updated_at":"2025-10-21T00:29:12.015407-07:00","source_repo":"."} +{"id":"bd-1597","content_hash":"7d8316d87036b415f4d190f27a0ed0f28ef65eacf841ad8257779f272358946a","title":"Agent 1 Issue 97","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.016116-07:00","updated_at":"2025-10-21T00:29:12.016116-07:00","source_repo":"."} +{"id":"bd-1598","content_hash":"8b529e6509c201f6c06ed6f1ca423a8e3f566561a475e769eae393068d9fe032","title":"Agent 1 Issue 98","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.016809-07:00","updated_at":"2025-10-21T00:29:12.016809-07:00","source_repo":"."} +{"id":"bd-1599","content_hash":"f4d32a602556132accbe8cf37a7dd4cf6880c060a54e204687453f7ff12e7257","title":"Agent 1 Issue 99","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.017578-07:00","updated_at":"2025-10-21T00:29:12.017578-07:00","source_repo":"."} +{"id":"bd-16","content_hash":"68e28c50efa21a45adf4bbfed68b7374cdcae7eae9c15d2e20654cfcaa657f42","title":"Make auto-flush debounce duration configurable","description":"flushDebounce is hardcoded to 5 seconds. Make it configurable via environment variable BEADS_FLUSH_DEBOUNCE (e.g., '500ms', '10s'). Current 5-second value is reasonable for interactive use, but CI/automated scenarios might want faster flush. Add getDebounceDuration() helper function. Located in cmd/bd/main.go:31.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.531582-07:00","closed_at":"2025-10-18T09:47:43.22126-07:00","source_repo":"."} +{"id":"bd-160","content_hash":"54001e2a1da8800dfd64e107503986219dd38ad55b5e7f43c789ec7358497d7c","title":"Implement label CLI commands (add, remove, list)","description":"Add CLI commands for label management:\n- bd label add \u003cissue\u003e \u003clabel...\u003e\n- bd label remove \u003cissue\u003e \u003clabel...\u003e\n- bd label list \u003cissue\u003e\n- bd labels (list all labels in use)\n\nBackend already has AddLabel/GetLabels/RemoveLabel methods in storage layer.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T20:45:36.861324-07:00","updated_at":"2025-10-21T00:25:40.531768-07:00","closed_at":"2025-10-19T20:53:02.799889-07:00","source_repo":".","labels":["feature","working"]} +{"id":"bd-1600","content_hash":"69bb2bfb91577c693c4497df5de5fef13215fe3fdf09ffb6544cc1c89e0dbe37","title":"Agent 5 Issue 23","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.936265-07:00","updated_at":"2025-10-21T00:29:11.936265-07:00","source_repo":"."} +{"id":"bd-1601","content_hash":"01f8a0980480d5d45b1d845bf92ebe91b23737b4aef86fbeb5e9a098a4932c6e","title":"Agent 5 Issue 24","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.01913-07:00","updated_at":"2025-10-21T00:29:12.01913-07:00","source_repo":"."} +{"id":"bd-1602","content_hash":"6e3c3bef1303a1311390f5db53d4c66f70089451c37bbd36dd5dd0d47db838e4","title":"Agent 5 Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.019881-07:00","updated_at":"2025-10-21T00:29:12.019881-07:00","source_repo":"."} +{"id":"bd-1603","content_hash":"0b184e3c7a7980221f9e290ffdef2b2421515df11c91a8603bab91d58d915dd8","title":"Agent 5 Issue 26","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.020565-07:00","updated_at":"2025-10-21T00:29:12.020565-07:00","source_repo":"."} +{"id":"bd-1604","content_hash":"ee2b75c24015ce1cd1076d482d046097cb74198f443fbc9f75206521f42f8a31","title":"Agent 5 Issue 27","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.021289-07:00","updated_at":"2025-10-21T00:29:12.021289-07:00","source_repo":"."} +{"id":"bd-1605","content_hash":"449d3f0dfb42322048db9712fe500525349593c61f575903df07cbfe8b3f683b","title":"Agent 5 Issue 28","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.022052-07:00","updated_at":"2025-10-21T00:29:12.022052-07:00","source_repo":"."} +{"id":"bd-1606","content_hash":"395dd26ec411b407b700712c2242707896f34b028dbc8bac19e68a7fc0b32c42","title":"Agent 5 Issue 29","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.022736-07:00","updated_at":"2025-10-21T00:29:12.022736-07:00","source_repo":"."} +{"id":"bd-1607","content_hash":"6cf5bfd8dcbd7874c92e22b1b6d3c93299953ed900e2cc113a9323ce009f9464","title":"Agent 5 Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.023429-07:00","updated_at":"2025-10-21T00:29:12.023429-07:00","source_repo":"."} +{"id":"bd-1608","content_hash":"83744fd5ab498ca6477209a62efbab5c1956f94a6127e496adb8251667a716f2","title":"Agent 5 Issue 31","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.024138-07:00","updated_at":"2025-10-21T00:29:12.024138-07:00","source_repo":"."} +{"id":"bd-1609","content_hash":"c8fc1c6ff794c6e75fa5d39ded6abe65f5e6a746431aea2bba2d0235531d695f","title":"Agent 5 Issue 32","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.024835-07:00","updated_at":"2025-10-21T00:29:12.024835-07:00","source_repo":"."} +{"id":"bd-161","content_hash":"29c13529d34c2df290e20bc84ae579f391ac5b747c882b0e2db40ffa08a2a635","title":"Add label filtering to bd list command","description":"Support label-based filtering in bd list:\n- --label \u003clabel1,label2\u003e (AND semantics)\n- --label-any \u003clabel1,label2\u003e (OR semantics)\n- --group-by label (group results by label)\n\nEnables queries like: bd list --priority 1 --label backend,needs-review","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T20:45:36.863417-07:00","updated_at":"2025-10-21T00:25:40.531972-07:00","closed_at":"2025-10-19T22:54:43.232225-07:00","source_repo":"."} +{"id":"bd-1610","content_hash":"02c6c85b6f1d56c634680b34945e702a294271e08a4d62f53815c33efe57b950","title":"Agent 5 Issue 33","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.02557-07:00","updated_at":"2025-10-21T00:29:12.02557-07:00","source_repo":"."} +{"id":"bd-1611","content_hash":"65fb42c3ca0d4f25c91bad46b7fecd5fa379f156d7057f26ab7a5e0e00ebc684","title":"Agent 5 Issue 34","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.026271-07:00","updated_at":"2025-10-21T00:29:12.026271-07:00","source_repo":"."} +{"id":"bd-1612","content_hash":"8eb13c1694d496eee7d9c783688977ab9ca6f62f9067707424abce2e41e0d1a1","title":"Agent 5 Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.026974-07:00","updated_at":"2025-10-21T00:29:12.026974-07:00","source_repo":"."} +{"id":"bd-1613","content_hash":"d797b4ca649fde9384403493299a19cd99a526997d9c0edad1796ff142674ed0","title":"Agent 5 Issue 36","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.02768-07:00","updated_at":"2025-10-21T00:29:12.02768-07:00","source_repo":"."} +{"id":"bd-1614","content_hash":"8332beff4646df4379e850401a262315435208c01ce9c18ff2b02c2465565b03","title":"Agent 5 Issue 37","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.028394-07:00","updated_at":"2025-10-21T00:29:12.028394-07:00","source_repo":"."} +{"id":"bd-1615","content_hash":"59a00d6f57d0b305387003cff212978d6e63e33e852392aadd2a91d52ede444d","title":"Agent 5 Issue 38","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.029096-07:00","updated_at":"2025-10-21T00:29:12.029096-07:00","source_repo":"."} +{"id":"bd-1616","content_hash":"25a491813491e4ba1bcfbe58df7429fa95f24672278b8133d7a08a381ee9655e","title":"Agent 5 Issue 39","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.029806-07:00","updated_at":"2025-10-21T00:29:12.029806-07:00","source_repo":"."} +{"id":"bd-1617","content_hash":"3e1e80555984f15f315dacd26efc57df87616ee3d984c618e9cc416c7aad71c4","title":"Agent 5 Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.030507-07:00","updated_at":"2025-10-21T00:29:12.030507-07:00","source_repo":"."} +{"id":"bd-1618","content_hash":"a64da3181419574cc0e722830aaaa0fce5b3c4ac2b5d048ddfe64816ba4f6aa8","title":"Agent 5 Issue 41","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.031212-07:00","updated_at":"2025-10-21T00:29:12.031212-07:00","source_repo":"."} +{"id":"bd-1619","content_hash":"a0580341c64403fd72a0692ff932ed2e7ebd98c2502d8bd40bf7d9bcb67a104f","title":"Agent 5 Issue 42","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.031932-07:00","updated_at":"2025-10-21T00:29:12.031932-07:00","source_repo":"."} +{"id":"bd-162","content_hash":"ee727abc7629101d55bef044d269e36535e372bcb4aa85a131f0382612714d65","title":"Add label display to bd show and bd list output","description":"Include labels in issue display:\n- bd show \u003cissue\u003e should show labels\n- bd list should show labels (compact format)\n- JSON output should include labels array\n\nCurrently labels exist in DB but aren't shown in CLI output.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T20:45:36.865936-07:00","updated_at":"2025-10-21T00:25:40.532146-07:00","closed_at":"2025-10-19T22:44:31.418121-07:00","source_repo":"."} +{"id":"bd-1620","content_hash":"ebee300c49df571c3594970e25bab41399d4c59e02b1db32514d1652db5c9ce3","title":"Agent 6 Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.91174-07:00","updated_at":"2025-10-21T00:29:11.91174-07:00","source_repo":"."} +{"id":"bd-1621","content_hash":"f50dd565089ae63eca718fc94211772bb0821bc7a59908ff60076c1141b6efbc","title":"Agent 6 Issue 1","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.033474-07:00","updated_at":"2025-10-21T00:29:12.033474-07:00","source_repo":"."} +{"id":"bd-1622","content_hash":"f0ba77d75c7af781d46f9d2191493d367f95cf06c1a8ebde4cf092943de20866","title":"Agent 6 Issue 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.034181-07:00","updated_at":"2025-10-21T00:29:12.034181-07:00","source_repo":"."} +{"id":"bd-1623","content_hash":"a725e49bc8d16227e61fcddbd0e13b0964248dbd94d28f64854b0684627277d4","title":"Agent 6 Issue 3","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.03489-07:00","updated_at":"2025-10-21T00:29:12.03489-07:00","source_repo":"."} +{"id":"bd-1624","content_hash":"0739655cbcd7b3213ced8648994fcf8a96e885e860a6170a65ad4a18d3c2f9f8","title":"Agent 6 Issue 4","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.035616-07:00","updated_at":"2025-10-21T00:29:12.035616-07:00","source_repo":"."} +{"id":"bd-1625","content_hash":"d04f08643ad30c111412288b8e7c1858d123d5805979ea61827262c81f96d496","title":"Agent 6 Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.036279-07:00","updated_at":"2025-10-21T00:29:12.036279-07:00","source_repo":"."} +{"id":"bd-1626","content_hash":"2baacdf32001fe101f6e045d3a102d1aa812bdb6b4df9cf32c3869b5a3a840fe","title":"Agent 6 Issue 6","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.036961-07:00","updated_at":"2025-10-21T00:29:12.036961-07:00","source_repo":"."} +{"id":"bd-1627","content_hash":"2f692a02ec9e4f5856b4edff3617043b5d0d81c0461f4562c890e76789899287","title":"Agent 6 Issue 7","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.037655-07:00","updated_at":"2025-10-21T00:29:12.037655-07:00","source_repo":"."} +{"id":"bd-1628","content_hash":"65ce1686c3a11e2e98808e81a643a7f594bedf8dc0d018d28307b2554dac4747","title":"Agent 6 Issue 8","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.038595-07:00","updated_at":"2025-10-21T00:29:12.038595-07:00","source_repo":"."} +{"id":"bd-1629","content_hash":"0919f81db2a581bcad499169e1d79dfda24a90ab2851cc29c99a1fd854caa96e","title":"Agent 6 Issue 9","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.039378-07:00","updated_at":"2025-10-21T00:29:12.039378-07:00","source_repo":"."} +{"id":"bd-163","content_hash":"f966116dd9012473a044150584f28520414819aea5c18896957e45bfcdeb3fea","title":"Document label best practices and use cases","description":"Create documentation covering:\n- When to use labels vs structured fields\n- Common label sets (coding agents, open source, product dev, SRE)\n- Naming conventions (kebab-case, specificity, present tense)\n- Anti-patterns (too many labels, overlapping, personal labels)\n- Label lifecycle management\n\nContent from LABELS.md analysis document.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-19T20:45:36.867864-07:00","updated_at":"2025-10-21T00:25:40.532312-07:00","closed_at":"2025-10-19T23:11:46.125417-07:00","source_repo":"."} +{"id":"bd-1630","content_hash":"1adda620b172aa5c0f97ca44e89d9fd0483efaa4425e4f6aa37a81b1aa42bffa","title":"Agent 6 Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.040132-07:00","updated_at":"2025-10-21T00:29:12.040132-07:00","source_repo":"."} +{"id":"bd-1631","content_hash":"1e301fe467f44c5fcce986b34673a468661dc4010182ca63237e9413e353676b","title":"Agent 6 Issue 11","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.040875-07:00","updated_at":"2025-10-21T00:29:12.040875-07:00","source_repo":"."} +{"id":"bd-1632","content_hash":"b0e809d17845440868a1afb5e98e7957d2326629a43fb63c41865a4c7b70d4f8","title":"Agent 6 Issue 12","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.041616-07:00","updated_at":"2025-10-21T00:29:12.041616-07:00","source_repo":"."} +{"id":"bd-1633","content_hash":"bec86b81ec39aba5de964e08a2a34679f038d050257d7ffdb11073f3266bd81d","title":"Agent 6 Issue 13","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.042358-07:00","updated_at":"2025-10-21T00:29:12.042358-07:00","source_repo":"."} +{"id":"bd-1634","content_hash":"669aa4c42e50f8b383076f0606e3190143ae6d92326ca3de566a562b6ccc3d32","title":"Agent 6 Issue 14","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.043079-07:00","updated_at":"2025-10-21T00:29:12.043079-07:00","source_repo":"."} +{"id":"bd-1635","content_hash":"86b29881519ee1c0c254ae4f442a80e7c27b829bd7b62f8ef2a4499471644f12","title":"Agent 6 Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.043744-07:00","updated_at":"2025-10-21T00:29:12.043744-07:00","source_repo":"."} +{"id":"bd-1636","content_hash":"d38bb1d2abe5bd700db3acf239404d14c8112ae5668a799f61113facd29bd08b","title":"Agent 6 Issue 16","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.044463-07:00","updated_at":"2025-10-21T00:29:12.044463-07:00","source_repo":"."} +{"id":"bd-1637","content_hash":"525099c3d9b3a8ca138d640d07911eca45895db5056f029ec52419ed7027101f","title":"Agent 6 Issue 17","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.045181-07:00","updated_at":"2025-10-21T00:29:12.045181-07:00","source_repo":"."} +{"id":"bd-1638","content_hash":"c661ecdf4e589f0ee32d8caead6581736e4adb01a86357467c8f98649c87548b","title":"Agent 6 Issue 18","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.045884-07:00","updated_at":"2025-10-21T00:29:12.045884-07:00","source_repo":"."} +{"id":"bd-1639","content_hash":"467f7b12af116f89bb116c8cf23b0f4ad015ada2755f62d11c5f9ff95517531c","title":"Agent 6 Issue 19","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.046638-07:00","updated_at":"2025-10-21T00:29:12.046638-07:00","source_repo":"."} +{"id":"bd-164","content_hash":"54001e2a1da8800dfd64e107503986219dd38ad55b5e7f43c789ec7358497d7c","title":"Implement label CLI commands (add, remove, list)","description":"Add CLI commands for label management:\n- bd label add \u003cissue\u003e \u003clabel...\u003e\n- bd label remove \u003cissue\u003e \u003clabel...\u003e\n- bd label list \u003cissue\u003e\n- bd labels (list all labels in use)\n\nBackend already has AddLabel/GetLabels/RemoveLabel methods in storage layer.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T20:49:44.344807-07:00","updated_at":"2025-10-21T00:25:40.532485-07:00","closed_at":"2025-10-19T21:14:12.231668-07:00","source_repo":"."} +{"id":"bd-1640","content_hash":"59f8d2567ee7ab2edd9d90e6fe61ef1853b6bae8f2f5b911dd5874fefc5cfd23","title":"Agent 6 Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.047356-07:00","updated_at":"2025-10-21T00:29:12.047356-07:00","source_repo":"."} +{"id":"bd-1641","content_hash":"0db328f41646c82669aba1a0e67ae0d699c77d6677347acf9b1121cc03a922bc","title":"Agent 6 Issue 21","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.048133-07:00","updated_at":"2025-10-21T00:29:12.048133-07:00","source_repo":"."} +{"id":"bd-1642","content_hash":"e8cfbc1f09cb24bc80b85f773aab34fca1387b0d0886d610c6354d1c48ebb7ff","title":"Agent 6 Issue 22","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.048887-07:00","updated_at":"2025-10-21T00:29:12.048887-07:00","source_repo":"."} +{"id":"bd-1643","content_hash":"1bd69c67b4259b23b142681e74b37e42c53226e88e7bade83039dc8f253f0f53","title":"Agent 6 Issue 23","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.049618-07:00","updated_at":"2025-10-21T00:29:12.049618-07:00","source_repo":"."} +{"id":"bd-1644","content_hash":"540cae93f7c0343fca78a2c36d0210533d3f1c5c6eaf76e7d640fc9ed1c84619","title":"Agent 6 Issue 24","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.050376-07:00","updated_at":"2025-10-21T00:29:12.050376-07:00","source_repo":"."} +{"id":"bd-1645","content_hash":"b1b0bcf5edb5bc3b6a50aaefa37a647e38a964c14728e3aa54f18f56d84a7926","title":"Agent 6 Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.051103-07:00","updated_at":"2025-10-21T00:29:12.051103-07:00","source_repo":"."} +{"id":"bd-1646","content_hash":"567ff1d51ee1fd97f9e2fed956eb5cfb391a79015ad76fe8cb52a03636a45d8e","title":"Agent 6 Issue 26","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.051834-07:00","updated_at":"2025-10-21T00:29:12.051834-07:00","source_repo":"."} +{"id":"bd-1647","content_hash":"bdac6b147438ddbefe132310d0708121249c06d881ac5b3b8b193709bd977943","title":"Agent 6 Issue 27","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.052586-07:00","updated_at":"2025-10-21T00:29:12.052586-07:00","source_repo":"."} +{"id":"bd-1648","content_hash":"4c4e96ce1a829fdcbcc99472cc96641b7f2799ed694b9eb6a8d4c0874b3900f0","title":"Agent 6 Issue 28","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.053375-07:00","updated_at":"2025-10-21T00:29:12.053375-07:00","source_repo":"."} +{"id":"bd-1649","content_hash":"02bcfa15494c0e03f054153a3a47f5612326a79d5cb482ff12847a5b3502aa7f","title":"Agent 6 Issue 29","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.054103-07:00","updated_at":"2025-10-21T00:29:12.054103-07:00","source_repo":"."} {"id":"bd-164b","content_hash":"5cddac4d59502d1a6b3999f2dd85e1719389c8f9ea15f3515a62d52049d03645","title":"Add template support for issue creation","description":"Support creating issues from predefined templates to streamline common workflows like epics, bug reports, or feature proposals.\n\nExample usage:\n bd create --from-template epic \"Phase 3 Features\"\n bd create --from-template bug \"Login failure\"\n bd template list\n bd template create epic\n\nTemplates should include:\n- Pre-filled description structure\n- Suggested priority and type\n- Common labels\n- Design/acceptance criteria sections\n\nImplementation notes:\n- Store templates in .beads/templates/ directory\n- Support YAML or JSON format\n- Ship with built-in templates (epic, bug, feature)\n- Allow custom project-specific templates","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-03T18:10:18.985902-08:00","updated_at":"2025-11-03T19:56:41.287303-08:00","closed_at":"2025-11-03T19:56:41.287303-08:00","source_repo":"."} +{"id":"bd-165","content_hash":"4569d6abc9720b6b955d1ab207bc10ee7551942002afd9749efebe802a464074","title":"MCP server tools should accept workspace_root parameter","description":"","design":"After set_context is called, Amp appears to inject workspace_root as a parameter to subsequent tool calls. The beads-mcp server should accept this parameter (likely ignore it or map it to working_dir) to avoid errors.","notes":"Oracle review found two additional issues: 1) Missing workspace_root on where_am_i tool, 2) set_context should always set env vars even when DB not found (so init works right after). Both fixed.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-19T21:17:06.93365-07:00","updated_at":"2025-10-21T00:25:40.532656-07:00","closed_at":"2025-10-19T21:29:38.326609-07:00","source_repo":"."} +{"id":"bd-1650","content_hash":"e890cbf21aae9684a7774ace02753c16b407309c7536c19757dd6d7f0075c9b5","title":"Agent 6 Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.054846-07:00","updated_at":"2025-10-21T00:29:12.054846-07:00","source_repo":"."} +{"id":"bd-1651","content_hash":"82d26edea60cd31309c45061701998c51a1d36a508f04ba1ee20784a6dcc2781","title":"Agent 6 Issue 31","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.055556-07:00","updated_at":"2025-10-21T00:29:12.055556-07:00","source_repo":"."} +{"id":"bd-1652","content_hash":"5f1d3879f17d4ee9aa2e7ed8a5d32ce4a6a47b5ef76a3fc4842c33f0d1012753","title":"Agent 6 Issue 32","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.056232-07:00","updated_at":"2025-10-21T00:29:12.056232-07:00","source_repo":"."} +{"id":"bd-1653","content_hash":"918d8e4285205ec12e8791c8cd9fec199ab9b0ba19de4338c6e902ca7d5ac22b","title":"Agent 6 Issue 33","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.056915-07:00","updated_at":"2025-10-21T00:29:12.056915-07:00","source_repo":"."} +{"id":"bd-1654","content_hash":"1f113a01ae4c30d0cb6cc652bcc5d0bc86e87c734c477f81cae58e478d227fa4","title":"Agent 6 Issue 34","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.057624-07:00","updated_at":"2025-10-21T00:29:12.057624-07:00","source_repo":"."} +{"id":"bd-1655","content_hash":"be3c4d1dc57c91f3b93b4dcdf195d83d3dff26fb41d0692352842096a84c35bf","title":"Agent 6 Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.058362-07:00","updated_at":"2025-10-21T00:29:12.058362-07:00","source_repo":"."} +{"id":"bd-1656","content_hash":"b3f653754e0b16251de202d6847e6bae687118fd78422b4b1788a162c8c98a3e","title":"Agent 6 Issue 36","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.059148-07:00","updated_at":"2025-10-21T00:29:12.059148-07:00","source_repo":"."} +{"id":"bd-1657","content_hash":"f300c082d81af1abe45097970b48a3b9f2e9f32bf5edb887fd90d2d45093bd17","title":"Agent 6 Issue 37","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.059969-07:00","updated_at":"2025-10-21T00:29:12.059969-07:00","source_repo":"."} +{"id":"bd-1658","content_hash":"951b06750ed0773a7273092b17c4e9b21cb91f0c7621b46bde3c2f4ed69e5390","title":"Agent 6 Issue 38","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.060722-07:00","updated_at":"2025-10-21T00:29:12.060722-07:00","source_repo":"."} +{"id":"bd-1659","content_hash":"72c2fe47efa5715960ce26d327c2cb7bd69313926c56f22bac5d659b17f1925b","title":"Agent 6 Issue 39","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.061498-07:00","updated_at":"2025-10-21T00:29:12.061498-07:00","source_repo":"."} +{"id":"bd-166","content_hash":"8ed6e0ce26e88d236dc279d866065b06411d7d667febd28aeaf953a9e688bc62","title":"Update commands/ directory with new commands (comments, labels, etc)","description":"The commands/ directory contains documentation for bd commands, but several new commands have been added that aren't documented there yet: 'comments', 'labels', and possibly others. Need to audit what's missing and add documentation.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T21:54:04.65288-07:00","updated_at":"2025-10-21T00:25:40.532819-07:00","closed_at":"2025-10-19T21:57:28.943347-07:00","source_repo":"."} +{"id":"bd-1660","content_hash":"b47b9248c1b546a38047526af07beec8ce9d343b73105672bc1fa973ad72adc4","title":"Agent 6 Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.062229-07:00","updated_at":"2025-10-21T00:29:12.062229-07:00","source_repo":"."} +{"id":"bd-1661","content_hash":"766b5b22eaa65a99d9701d814e8a9120dbb30fe4a6455fbd58b4145faa0e0f40","title":"Agent 6 Issue 41","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.063009-07:00","updated_at":"2025-10-21T00:29:12.063009-07:00","source_repo":"."} +{"id":"bd-1662","content_hash":"91105d98d7f40014eeeb88b6775c9182fb73a5e59d3d0f973d8f248301b09c25","title":"Agent 6 Issue 42","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.063801-07:00","updated_at":"2025-10-21T00:29:12.063801-07:00","source_repo":"."} +{"id":"bd-1663","content_hash":"a3dd74446f59ea0c43a99fbad344b4b660a33122f43c26268865aef0be2588e8","title":"Agent 6 Issue 43","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.064573-07:00","updated_at":"2025-10-21T00:29:12.064573-07:00","source_repo":"."} +{"id":"bd-1664","content_hash":"3c403e69293199b6a097f87a7314d9d1e15a2dca020465f00cb8467871003129","title":"Agent 6 Issue 44","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.065312-07:00","updated_at":"2025-10-21T00:29:12.065312-07:00","source_repo":"."} +{"id":"bd-1665","content_hash":"e64ab47dca9c6b5fe09f7192faee51449c94500b5bf055e9b39f444a4ea0b798","title":"Agent 6 Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.066163-07:00","updated_at":"2025-10-21T00:29:12.066163-07:00","source_repo":"."} +{"id":"bd-1666","content_hash":"183fb566600ac50d3950934532cbb5cc17851808dfee6d085634acd2a02b2d25","title":"Agent 6 Issue 46","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.066907-07:00","updated_at":"2025-10-21T00:29:12.066907-07:00","source_repo":"."} +{"id":"bd-1667","content_hash":"95559272660ef0999c7bca4edd111343e6f999f6a0d0f8555fcf9202a474566d","title":"Agent 6 Issue 47","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.067621-07:00","updated_at":"2025-10-21T00:29:12.067621-07:00","source_repo":"."} +{"id":"bd-1668","content_hash":"bff813ff8a3bae5d1893184662ade0b5bc45586401b2165b07133e11ffbae9f1","title":"Agent 6 Issue 48","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.068329-07:00","updated_at":"2025-10-21T00:29:12.068329-07:00","source_repo":"."} +{"id":"bd-1669","content_hash":"94aa91555ac0518e91342ea69513601f5f549ac17997f42882c088160a44332f","title":"Agent 6 Issue 49","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.069076-07:00","updated_at":"2025-10-21T00:29:12.069076-07:00","source_repo":"."} +{"id":"bd-167","content_hash":"0c7e95d98d5fcf079ad0f80a698b969c4cc85ab380d93758e0094dfddd85afe0","title":"Test issue with labels","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T22:42:23.516678-07:00","updated_at":"2025-10-21T00:25:40.532986-07:00","closed_at":"2025-10-19T22:46:09.247654-07:00","source_repo":"."} +{"id":"bd-1670","content_hash":"f755a115dfdcbfb387515868b931f317dfe0d7dcc02b9ccf65974d0931964884","title":"Agent 6 Issue 50","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.069771-07:00","updated_at":"2025-10-21T00:29:12.069771-07:00","source_repo":"."} +{"id":"bd-1671","content_hash":"16564d9c26004c325c22ebcb433a15e6d21d1b9b57753afc1ec70ca426d154c8","title":"Agent 6 Issue 51","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.070482-07:00","updated_at":"2025-10-21T00:29:12.070482-07:00","source_repo":"."} +{"id":"bd-1672","content_hash":"a4dff0c126c51b9f6d9548097b713fdd776215005971752dfaba4818507fe5ab","title":"Agent 6 Issue 52","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.071281-07:00","updated_at":"2025-10-21T00:29:12.071281-07:00","source_repo":"."} +{"id":"bd-1673","content_hash":"a96b6dbd03b7f85a431d98c0cb5420391fee1b7f75841eb1beef62250663a400","title":"Agent 6 Issue 53","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.072088-07:00","updated_at":"2025-10-21T00:29:12.072088-07:00","source_repo":"."} +{"id":"bd-1674","content_hash":"0c327348ebf5904cdd9873e93aec8222e4f623290a153d608bc677651cd10bf1","title":"Agent 6 Issue 54","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.072869-07:00","updated_at":"2025-10-21T00:29:12.072869-07:00","source_repo":"."} +{"id":"bd-1675","content_hash":"48ee4cc3be920df774dd90d6b313e1517bf392e59b5e5767f5bd98799c17b18a","title":"Agent 6 Issue 55","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.073634-07:00","updated_at":"2025-10-21T00:29:12.073634-07:00","source_repo":"."} +{"id":"bd-1676","content_hash":"02a6115159595f3b6e8748ca9a94c3e1e3da30d26ede3aefb7ef0866206b66c2","title":"Agent 6 Issue 56","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.074389-07:00","updated_at":"2025-10-21T00:29:12.074389-07:00","source_repo":"."} +{"id":"bd-1677","content_hash":"14beb4580ef20d455be8e5a19894248c1607eb1aadb37ae3e5db44a2c6804495","title":"Agent 6 Issue 57","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.075166-07:00","updated_at":"2025-10-21T00:29:12.075166-07:00","source_repo":"."} +{"id":"bd-1678","content_hash":"9ee4e7de25b895100d6f06ceb973ea77b9ddd9bee3dc47b5b12cc5ed75d4a026","title":"Agent 6 Issue 58","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.075937-07:00","updated_at":"2025-10-21T00:29:12.075937-07:00","source_repo":"."} +{"id":"bd-1679","content_hash":"bb0a0d933084b0fbda05a852401196a0b883ff120454882c43601f04c877d46c","title":"Agent 6 Issue 59","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.076724-07:00","updated_at":"2025-10-21T00:29:12.076724-07:00","source_repo":"."} +{"id":"bd-168","content_hash":"2d66b4fffd309f4dde406adebc89e53145cb338143b6077335735b12b107d14b","title":"Test with labels","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-19T22:43:56.761279-07:00","updated_at":"2025-10-21T00:25:40.533153-07:00","closed_at":"2025-10-19T22:46:09.24785-07:00","source_repo":".","labels":["frontend"]} +{"id":"bd-1680","content_hash":"918df92e1e1e57f8fc20f3f440d4bec3aef67a0925df3ca17736f984ca93b2a8","title":"Agent 6 Issue 60","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.077403-07:00","updated_at":"2025-10-21T00:29:12.077403-07:00","source_repo":"."} +{"id":"bd-1681","content_hash":"95578238a61f74c408ffffccd749abc78e92b6575bc074910fa2d3b2dde6821f","title":"Agent 6 Issue 61","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.078097-07:00","updated_at":"2025-10-21T00:29:12.078097-07:00","source_repo":"."} +{"id":"bd-1682","content_hash":"db6c3ffc675af34fb0e459a4c23aa5a3dcae302a3ad2fd0e025734d2ec3c9f2a","title":"Agent 6 Issue 62","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.078859-07:00","updated_at":"2025-10-21T00:29:12.078859-07:00","source_repo":"."} +{"id":"bd-1683","content_hash":"ac9aabc04af7da292c8763d8b3a037cbdf71d57f2e7da41d34ebbbf55e96c5eb","title":"Agent 6 Issue 63","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.07959-07:00","updated_at":"2025-10-21T00:29:12.07959-07:00","source_repo":"."} +{"id":"bd-1684","content_hash":"f0151629e6de75b218973d6ebef03f7a632587e6961692197bad04e99f570ed1","title":"Agent 6 Issue 64","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.080302-07:00","updated_at":"2025-10-21T00:29:12.080302-07:00","source_repo":"."} +{"id":"bd-1685","content_hash":"1033f036e059928f712feba6d62772b21e45dccdf149b51c7a05203e560b2ba5","title":"Agent 6 Issue 65","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.080992-07:00","updated_at":"2025-10-21T00:29:12.080992-07:00","source_repo":"."} +{"id":"bd-1686","content_hash":"3e073e3f1f9ac296e19477b358045f21e6da6a6ed18a682ca277c7f9df8c5cdd","title":"Agent 6 Issue 66","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.081731-07:00","updated_at":"2025-10-21T00:29:12.081731-07:00","source_repo":"."} +{"id":"bd-1687","content_hash":"ae3c3a2a9f1062c0cdfdbcba9c931e563da2468a64b0eea965a340b6fe52bdcf","title":"Agent 6 Issue 67","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.082445-07:00","updated_at":"2025-10-21T00:29:12.082445-07:00","source_repo":"."} +{"id":"bd-1688","content_hash":"1bd4e3bf77bacf019f54001c06bdf38fdbd222cb8e4da64588efed117390ca13","title":"Agent 6 Issue 68","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.083165-07:00","updated_at":"2025-10-21T00:29:12.083165-07:00","source_repo":"."} +{"id":"bd-1689","content_hash":"a762b2084768fa4e3f3a56b834c99a3662ed3e9dc3f4a28a8432cb66a1fedb1c","title":"Agent 6 Issue 69","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.083931-07:00","updated_at":"2025-10-21T00:29:12.083931-07:00","source_repo":"."} +{"id":"bd-1690","content_hash":"66fc938eed3c6ea6943391575568bd32d140af73390a9095b7bd07d7593b8cb1","title":"Agent 6 Issue 70","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.084635-07:00","updated_at":"2025-10-21T00:29:12.084635-07:00","source_repo":"."} +{"id":"bd-1691","content_hash":"bbe350bad1817d59e6a8ab049b1e99c2be8b3e2700819d702a4982fde89fe5da","title":"Agent 6 Issue 71","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.085349-07:00","updated_at":"2025-10-21T00:29:12.085349-07:00","source_repo":"."} +{"id":"bd-1692","content_hash":"5a69225aaa905d4dd4947813b195259dc4f1f1e36d85dc57d04a5dad9d63e68f","title":"Agent 6 Issue 72","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.086362-07:00","updated_at":"2025-10-21T00:29:12.086362-07:00","source_repo":"."} +{"id":"bd-1693","content_hash":"4889ee27cb041a09db519bb7366e0649e2ecb27f0d9c7d143393c624c47f9a25","title":"Agent 6 Issue 73","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.087092-07:00","updated_at":"2025-10-21T00:29:12.087092-07:00","source_repo":"."} +{"id":"bd-1694","content_hash":"e4f1f489bce2e06620bba632f87d36f6a118a2ab5b7e19e4cbd7086d841ef683","title":"Agent 6 Issue 74","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.0878-07:00","updated_at":"2025-10-21T00:29:12.0878-07:00","source_repo":"."} +{"id":"bd-1695","content_hash":"5c22df2843c83a3a811b9896e913fd751b1cb7875814ce859fb8f3925c6f28dd","title":"Agent 6 Issue 75","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.088533-07:00","updated_at":"2025-10-21T00:29:12.088533-07:00","source_repo":"."} +{"id":"bd-1696","content_hash":"b78759ef60e698e46db944d850dabecdd267cddc08a268c3e37c15f70a0ff312","title":"Agent 6 Issue 76","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.089263-07:00","updated_at":"2025-10-21T00:29:12.089263-07:00","source_repo":"."} +{"id":"bd-1697","content_hash":"75804f399f5066b26d850499d7f3ba1ddc874efe218b1322d109fe9999ca182a","title":"Agent 6 Issue 77","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.089977-07:00","updated_at":"2025-10-21T00:29:12.089977-07:00","source_repo":"."} +{"id":"bd-1698","content_hash":"e3ac65760e4a590d7b92a86cb0bb07bc2ecad9e5efbe51c539ba17bc8eaf6069","title":"Agent 6 Issue 78","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.090693-07:00","updated_at":"2025-10-21T00:29:12.090693-07:00","source_repo":"."} +{"id":"bd-1699","content_hash":"4c8b9a118932b590f24bea70ce8d2200aa9210ca80a17ae2bf74bba1d277984a","title":"Agent 6 Issue 79","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.0914-07:00","updated_at":"2025-10-21T00:29:12.0914-07:00","source_repo":"."} +{"id":"bd-17","content_hash":"53fd5aa7171889c408ae5adb46820a364a641a21d4909e27fea573de53241185","title":"Improve session management","description":"Current session management is basic. Need to improve with better expiration handling.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.533321-07:00","closed_at":"2025-10-16T10:07:34.005199-07:00","source_repo":"."} +{"id":"bd-1700","content_hash":"80e3c086933251b495319cd486fbb263508b97e6caf1d0c5bca1e3f036e805b6","title":"Agent 6 Issue 80","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.092139-07:00","updated_at":"2025-10-21T00:29:12.092139-07:00","source_repo":"."} +{"id":"bd-1701","content_hash":"41abec2447f291107435b33d9044164dbc2ed3ad95343793baa818fd5ce87035","title":"Agent 6 Issue 81","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.092877-07:00","updated_at":"2025-10-21T00:29:12.092877-07:00","source_repo":"."} +{"id":"bd-1702","content_hash":"8b7b84e52a2b3bbfc42eb9b1084cd1356d6b0d621007c66b6a1414e2dc028e3d","title":"Agent 6 Issue 82","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.093613-07:00","updated_at":"2025-10-21T00:29:12.093613-07:00","source_repo":"."} +{"id":"bd-1703","content_hash":"ea6f265811102ae98080a12f55f5b8e4c156b2ec0871b7fa9fe65204b82250cc","title":"Agent 6 Issue 83","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.094353-07:00","updated_at":"2025-10-21T00:29:12.094353-07:00","source_repo":"."} +{"id":"bd-1704","content_hash":"36eecec1ce44168f8c82c830bfd9c721076478340d90ed22458f8531c925ca8d","title":"Agent 6 Issue 84","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.095082-07:00","updated_at":"2025-10-21T00:29:12.095082-07:00","source_repo":"."} +{"id":"bd-1705","content_hash":"6e57e74717967dc5650e7e3e1f7c759069eec44ec5d28c84ffca1ac4e10fa03d","title":"Agent 6 Issue 85","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.095829-07:00","updated_at":"2025-10-21T00:29:12.095829-07:00","source_repo":"."} +{"id":"bd-1706","content_hash":"ebfcb5c4b6bb1b2ce38dd213aa334404175ff6d5c0ecd1eaaa6b12ea3e707e79","title":"Agent 6 Issue 86","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.096573-07:00","updated_at":"2025-10-21T00:29:12.096573-07:00","source_repo":"."} +{"id":"bd-1707","content_hash":"dcc6f86594b813922a16b30ff8827dc3d4847b056f3cfeff13637f65bbd3583a","title":"Agent 6 Issue 87","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.097346-07:00","updated_at":"2025-10-21T00:29:12.097346-07:00","source_repo":"."} +{"id":"bd-1708","content_hash":"8158e3236428212abf380c8e22336598d0fcd9122e40fd51d838319a035966de","title":"Agent 6 Issue 88","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.098078-07:00","updated_at":"2025-10-21T00:29:12.098078-07:00","source_repo":"."} +{"id":"bd-1709","content_hash":"b3efb1857436f9147404876ce7c439278e731ba3dc366c2fc9dd562e14ffbb33","title":"Agent 8 Issue 1","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.912203-07:00","updated_at":"2025-10-21T00:29:11.912203-07:00","source_repo":"."} +{"id":"bd-1710","content_hash":"d85e051d694138551d3dd8e6344464274abe466b26103cc571fa2e9cdf8c5acd","title":"Agent 8 Issue 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.099893-07:00","updated_at":"2025-10-21T00:29:12.099893-07:00","source_repo":"."} +{"id":"bd-1711","content_hash":"7d572f5c7c51aa3c5620fc8e753c61e28047706bf336b4b9c38082141493b1e7","title":"Agent 8 Issue 3","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.100644-07:00","updated_at":"2025-10-21T00:29:12.100644-07:00","source_repo":"."} +{"id":"bd-1712","content_hash":"a7f9a52f9f2ed18cba879fa9c50b21f06749a12645a7b454537d36d99712528c","title":"Agent 8 Issue 4","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.101376-07:00","updated_at":"2025-10-21T00:29:12.101376-07:00","source_repo":"."} +{"id":"bd-1713","content_hash":"aa3d797281ec0c2e63255a6f0ac38854da0240b245d0fa3fb839eda5ea05f0a3","title":"Agent 8 Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.102056-07:00","updated_at":"2025-10-21T00:29:12.102056-07:00","source_repo":"."} +{"id":"bd-1714","content_hash":"d072549262c75876166368d0702d965a6283fc110f1d4e6f807da56a98107b5e","title":"Agent 8 Issue 6","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.102733-07:00","updated_at":"2025-10-21T00:29:12.102733-07:00","source_repo":"."} +{"id":"bd-1715","content_hash":"cf5adb54fe99ac5e0c2d2b6e1d8646f7e6c2424eb5ce9ec181e7c420b949652e","title":"Agent 8 Issue 7","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.103442-07:00","updated_at":"2025-10-21T00:29:12.103442-07:00","source_repo":"."} +{"id":"bd-1716","content_hash":"45f182dc613d69448a6430e2ae3976f741ec3da7e2a507ea1509150e8d606887","title":"Agent 8 Issue 8","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.104156-07:00","updated_at":"2025-10-21T00:29:12.104156-07:00","source_repo":"."} +{"id":"bd-1717","content_hash":"668202b582033ac5bdd4fdde16cafc3b7081eb946d6b335a97b84a449123881e","title":"Agent 8 Issue 9","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.104856-07:00","updated_at":"2025-10-21T00:29:12.104856-07:00","source_repo":"."} +{"id":"bd-1718","content_hash":"3637c180910b49ec9c14fd414efe577c04837612ed6d9d593788fdc005de555d","title":"Agent 8 Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.105635-07:00","updated_at":"2025-10-21T00:29:12.105635-07:00","source_repo":"."} +{"id":"bd-1719","content_hash":"1b0b07c4d235f8f9c8c2e5d6bdbc5b6e45a1c05a76e9a0db66191b4df956ae72","title":"Agent 8 Issue 11","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.106383-07:00","updated_at":"2025-10-21T00:29:12.106383-07:00","source_repo":"."} +{"id":"bd-172","content_hash":"7957019fccc199efa881025c4953560b888e3f50e09d847c75d8d46c36e32bae","title":"Fix MCP server None/null crashes in list/ready/stats","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-19T23:22:56.591289-07:00","updated_at":"2025-10-21T00:25:40.533489-07:00","closed_at":"2025-10-19T23:23:25.755169-07:00","source_repo":"."} +{"id":"bd-1720","content_hash":"1daf38261c4337a60e0d721af884416a26104abac53c3d86064d308dd34c2c5a","title":"Agent 8 Issue 12","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.107167-07:00","updated_at":"2025-10-21T00:29:12.107167-07:00","source_repo":"."} +{"id":"bd-1721","content_hash":"a7d1fd83055a4c46e5822169340732e1903d600379a7688edfce0a551c350d04","title":"Agent 8 Issue 13","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.107924-07:00","updated_at":"2025-10-21T00:29:12.107924-07:00","source_repo":"."} +{"id":"bd-1722","content_hash":"bf3d5c06a1d18e86a63882b5b9442ae31b1f60920717ebbb5198a7c26658a7ab","title":"Agent 8 Issue 14","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.108661-07:00","updated_at":"2025-10-21T00:29:12.108661-07:00","source_repo":"."} +{"id":"bd-1723","content_hash":"b9881793b36d4c4f3cf78892426ac791bf9b366296c5271a46f965c2e06d200a","title":"Agent 8 Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.109406-07:00","updated_at":"2025-10-21T00:29:12.109406-07:00","source_repo":"."} +{"id":"bd-1724","content_hash":"9746670672b708754ef47e4a1c6bfcaba84b5f0bc1424efa076e7a15aacd931b","title":"Agent 8 Issue 16","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.110147-07:00","updated_at":"2025-10-21T00:29:12.110147-07:00","source_repo":"."} +{"id":"bd-1725","content_hash":"6263557e56a4b29d39f4e3163a0ac4c252982189136737e8eb9906fb8cb84ef7","title":"Agent 8 Issue 17","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.110858-07:00","updated_at":"2025-10-21T00:29:12.110858-07:00","source_repo":"."} +{"id":"bd-1726","content_hash":"356040643289821dcfe2f78e56d4fed5d1e77064b97f4e241e695badc54c72fe","title":"Agent 8 Issue 18","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.111698-07:00","updated_at":"2025-10-21T00:29:12.111698-07:00","source_repo":"."} +{"id":"bd-1727","content_hash":"896ece56791fe853f6073e56860087e4f5b721ece273cb4a328a4d9955d91a63","title":"Agent 8 Issue 19","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.112436-07:00","updated_at":"2025-10-21T00:29:12.112436-07:00","source_repo":"."} +{"id":"bd-1728","content_hash":"7e93167307cad08a92c68b9d5f1a231750684b20bd9453819bde9dd8c7e1b2ec","title":"Agent 6 Issue 89","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.098951-07:00","updated_at":"2025-10-21T00:29:12.098951-07:00","source_repo":"."} +{"id":"bd-1729","content_hash":"53f45b323f7b587ec17a660d621b49f8c384bbcda10b22fdf940e3ef10e755af","title":"Agent 6 Issue 90","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.113964-07:00","updated_at":"2025-10-21T00:29:12.113964-07:00","source_repo":"."} +{"id":"bd-173","content_hash":"72bb47d7897d4c8d2fcf92fdcde72bbc7e0834799c6dd71be3fa356c5a25b9eb","title":"Add 'bd onboard' command to configure AGENTS.md for AI agents","description":"Create a 'bd onboard' command that automatically sets up AGENTS.md (and adds a note to CLAUDE.md if present) with instructions for AI agents to use beads instead of markdown TODOs.\n\nProblem: Users report that AI agents get confused between beads issue tracking and markdown-based planning, leading to duplicate tracking systems and confusion about which to use.\n\nSolution: Add 'bd onboard' command that:\n1. Appends (or creates) AGENTS.md with beads workflow instructions\n2. Includes command examples, issue types, priorities, and workflow\n3. Adds note to CLAUDE.md if it exists, directing agents to use beads\n4. Makes it clear agents should abandon markdown TODOs in favor of bd\n5. Idempotent - safe to run multiple times\n\nThe onboarding content should emphasize:\n- Use bd for ALL task tracking, not markdown TODOs\n- How to check ready work, create/update/close issues\n- When to use discovered-from dependencies\n- Priority and issue type conventions\n- Auto-sync behavior\n\nThis will reduce onboarding friction and prevent agents from creating parallel tracking systems.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-20T14:34:52.483607-07:00","updated_at":"2025-10-21T00:25:40.533645-07:00","closed_at":"2025-10-20T14:57:39.014109-07:00","source_repo":"."} +{"id":"bd-1730","content_hash":"4016ae8c5616158676d88ab1088ee321dcbdb320daba2de298917d5972e30094","title":"Agent 6 Issue 91","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.114706-07:00","updated_at":"2025-10-21T00:29:12.114706-07:00","source_repo":"."} +{"id":"bd-1731","content_hash":"6fa6a6474d5a401cc0330b8b6b3e6b7e68278853d08f361b61c11397a171fa4c","title":"Agent 6 Issue 92","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.115473-07:00","updated_at":"2025-10-21T00:29:12.115473-07:00","source_repo":"."} +{"id":"bd-1732","content_hash":"723d6deafcad37a38487a64c176b20a02994b5b0b9f59663b0d5dae486c2d1dc","title":"Agent 5 Issue 43","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.032724-07:00","updated_at":"2025-10-21T00:29:12.032724-07:00","source_repo":"."} +{"id":"bd-1733","content_hash":"69558e94b3a821416ad281950aa08a8a4e16f936fd77f6c3b678606658f9c74e","title":"Agent 5 Issue 44","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.117-07:00","updated_at":"2025-10-21T00:29:12.117-07:00","source_repo":"."} +{"id":"bd-1734","content_hash":"f9e9155d4ccd585d9430601e20c84aa52145992c69cc12202abf5236a43d5fdb","title":"Agent 5 Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.117764-07:00","updated_at":"2025-10-21T00:29:12.117764-07:00","source_repo":"."} +{"id":"bd-1735","content_hash":"0d74ff0930c97b088b741f9ac8eca57baff091fd01be056ebe9a3b4ceefd0a77","title":"Agent 5 Issue 46","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.11852-07:00","updated_at":"2025-10-21T00:29:12.11852-07:00","source_repo":"."} +{"id":"bd-1736","content_hash":"9123b6dba54834bc5b44b8dfcd9e1ba02fc88483052e89ab30accd188a076600","title":"Agent 5 Issue 47","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.119254-07:00","updated_at":"2025-10-21T00:29:12.119254-07:00","source_repo":"."} +{"id":"bd-1737","content_hash":"d00268cd7780f80100bcd36ff44ea4f1d37900904361b41054329daae516b354","title":"Agent 5 Issue 48","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.119951-07:00","updated_at":"2025-10-21T00:29:12.119951-07:00","source_repo":"."} +{"id":"bd-1738","content_hash":"bcd54594fa1836c6f6ad5cebaceb5662ab21c5a58de6ed052d154d286e0371c7","title":"Agent 5 Issue 49","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.120677-07:00","updated_at":"2025-10-21T00:29:12.120677-07:00","source_repo":"."} +{"id":"bd-1739","content_hash":"29d3aa047d70bd6d3d465595922e43b996cedcfda4f1479f633f5a69ee4f06f0","title":"Agent 5 Issue 50","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.121395-07:00","updated_at":"2025-10-21T00:29:12.121395-07:00","source_repo":"."} +{"id":"bd-174","content_hash":"573d0b19f409c124f8d33ef06ca5fc426152384cf6d8d349ea9dde3b88986c97","title":"Test auto-export timing","description":"","status":"closed","priority":4,"issue_type":"task","created_at":"2025-10-20T16:00:58.756761-07:00","updated_at":"2025-10-21T00:25:40.533814-07:00","closed_at":"2025-10-20T22:00:31.964329-07:00","source_repo":"."} +{"id":"bd-1740","content_hash":"1ee2d84cbae512537752ae7165c76bf251ad32f44f73274f9a80ccedf6127ecf","title":"Agent 5 Issue 51","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.122125-07:00","updated_at":"2025-10-21T00:29:12.122125-07:00","source_repo":"."} +{"id":"bd-1741","content_hash":"05857a6bf950040d27bad6909ab8855f6a2bad57df93523560269a4205167fde","title":"Agent 5 Issue 52","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.122876-07:00","updated_at":"2025-10-21T00:29:12.122876-07:00","source_repo":"."} +{"id":"bd-1742","content_hash":"e9681af77e8bc82a63d93b685d6be8c58272cb7223bb5b08ba924e3c79416831","title":"Agent 5 Issue 53","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.123642-07:00","updated_at":"2025-10-21T00:29:12.123642-07:00","source_repo":"."} +{"id":"bd-1743","content_hash":"dd8504f913ee8f2ea02b7135d56ea0654f7d2d8a2585968ead1964501cae78f4","title":"Agent 5 Issue 54","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.124387-07:00","updated_at":"2025-10-21T00:29:12.124387-07:00","source_repo":"."} +{"id":"bd-1744","content_hash":"010156719f68d3632c5cd5593a578c038c47e3da0b35722299666c236880b83e","title":"Agent 5 Issue 55","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.125139-07:00","updated_at":"2025-10-21T00:29:12.125139-07:00","source_repo":"."} +{"id":"bd-1745","content_hash":"770b1c07c78637d1369eeef045358b72a20f7c78e6b7f4191fc672118f84f7d8","title":"Agent 5 Issue 56","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.125874-07:00","updated_at":"2025-10-21T00:29:12.125874-07:00","source_repo":"."} +{"id":"bd-1746","content_hash":"b912f7b935bbeacd650e113859cc31c5ec56551b38ddec2f4af2765c725bec7f","title":"Agent 5 Issue 57","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.12662-07:00","updated_at":"2025-10-21T00:29:12.12662-07:00","source_repo":"."} +{"id":"bd-1747","content_hash":"5b576d7123830b1efd12e39b246f3979e9c3d70e911c62ed1d8126c301523edc","title":"Agent 5 Issue 58","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.127366-07:00","updated_at":"2025-10-21T00:29:12.127366-07:00","source_repo":"."} +{"id":"bd-1748","content_hash":"3d0db99a2b2204cb84ed2e14050624a97247b5bdb4f2f15541bf33e557eecdac","title":"Agent 5 Issue 59","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.128126-07:00","updated_at":"2025-10-21T00:29:12.128126-07:00","source_repo":"."} +{"id":"bd-1749","content_hash":"171fcb98f9e375cc068f1dbbff6262f353cd724a83d8d33b094dd720b55440b7","title":"Agent 5 Issue 60","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.128887-07:00","updated_at":"2025-10-21T00:29:12.128887-07:00","source_repo":"."} +{"id":"bd-175","content_hash":"48c1c2bd3c45523850b1d003ee96652eef8edd0eda71f1c2fcdef7e92e6eaa89","title":"Test real auto-export","description":"","status":"closed","priority":4,"issue_type":"task","created_at":"2025-10-20T16:01:16.192532-07:00","updated_at":"2025-10-21T00:25:40.533995-07:00","closed_at":"2025-10-20T22:00:31.967571-07:00","source_repo":"."} +{"id":"bd-1750","content_hash":"daa769c0aba41294603695d0263daa29490bd7f98a94f5ee1ddc588b3d31a566","title":"Agent 5 Issue 61","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.129638-07:00","updated_at":"2025-10-21T00:29:12.129638-07:00","source_repo":"."} +{"id":"bd-1751","content_hash":"2cced14669de768dae39873c1194c20c775e5f4d49ea4846879a6e7fd9933175","title":"Agent 5 Issue 62","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.130402-07:00","updated_at":"2025-10-21T00:29:12.130402-07:00","source_repo":"."} +{"id":"bd-1752","content_hash":"51ef55be9de0fe11e112ee1ce94993a3a66de1667fb288d4b782323f9357e63f","title":"Agent 5 Issue 63","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.131146-07:00","updated_at":"2025-10-21T00:29:12.131146-07:00","source_repo":"."} +{"id":"bd-1753","content_hash":"795d59cf4f3d10756ceecd2369a208c276b73e7a26dc66181aca918a85ef6147","title":"Agent 5 Issue 64","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.131848-07:00","updated_at":"2025-10-21T00:29:12.131848-07:00","source_repo":"."} +{"id":"bd-1754","content_hash":"7adf69dc99ab3ab9894a18eab3b9d43f658a0e732e1f70046cdc8449b825295f","title":"Agent 5 Issue 65","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.132606-07:00","updated_at":"2025-10-21T00:29:12.132606-07:00","source_repo":"."} +{"id":"bd-1755","content_hash":"e6a4145dd665b952df9c999be344de2be1bf0cbee60c92326a684b88ac3b8019","title":"Agent 5 Issue 66","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.133302-07:00","updated_at":"2025-10-21T00:29:12.133302-07:00","source_repo":"."} +{"id":"bd-1756","content_hash":"a0d028fc7f9495ca03c8c4ac6107c6f3d8c170a64cf36e59e6cea1aa55235ed3","title":"Agent 5 Issue 67","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.134005-07:00","updated_at":"2025-10-21T00:29:12.134005-07:00","source_repo":"."} +{"id":"bd-1757","content_hash":"4706a996424dd7bce74308947d64f584bdb923050b41131a0e4e17f03a1956b5","title":"Agent 5 Issue 68","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.134706-07:00","updated_at":"2025-10-21T00:29:12.134706-07:00","source_repo":"."} +{"id":"bd-1758","content_hash":"a672bb7dad736d1f8dcc585c525c6c39fe41dfb194df6e2b620bc2974534e515","title":"Agent 5 Issue 69","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.135397-07:00","updated_at":"2025-10-21T00:29:12.135397-07:00","source_repo":"."} +{"id":"bd-1759","content_hash":"5eac420748d00d8d50236e7d8368ec8112716ee07ebe7d92a27495212ee6a2dd","title":"Agent 5 Issue 70","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.136122-07:00","updated_at":"2025-10-21T00:29:12.136122-07:00","source_repo":"."} +{"id":"bd-176","content_hash":"b11104fe2ad2c557a4b6abf25feb44b7b7ff941e458782e704b9aa49d1965632","title":"Fix cross-platform signal handling in daemon.go","description":"Replace hard-coded Unix signals with platform-aware helpers: signal.Notify with daemonSignals, use isReloadSignal(), use sendStopSignal() instead of process.Signal(syscall.SIGTERM)","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-20T21:09:05.317357-07:00","updated_at":"2025-10-21T00:25:40.534151-07:00","closed_at":"2025-10-20T21:24:56.70424-07:00","source_repo":"."} +{"id":"bd-1760","content_hash":"06d96257878652994edffc51aa0f8f82450bfe72b04797500a581daee06df136","title":"Agent 5 Issue 71","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.137094-07:00","updated_at":"2025-10-21T00:29:12.137094-07:00","source_repo":"."} +{"id":"bd-1761","content_hash":"8e22e0fb96eb97361983ab581f6cf86a2e032570fd2abe710fca8d9a0661e853","title":"Agent 5 Issue 72","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.137874-07:00","updated_at":"2025-10-21T00:29:12.137874-07:00","source_repo":"."} +{"id":"bd-1762","content_hash":"9df99d42d3597dbcaa25e2f8eb88b3fdb337b6412f98e179f46e92f0a7c05e00","title":"Agent 5 Issue 73","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.138629-07:00","updated_at":"2025-10-21T00:29:12.138629-07:00","source_repo":"."} +{"id":"bd-1763","content_hash":"53ec333c03a5a67366830898aa7eee815828da8dac825e7db10cb0872af9e7f8","title":"Agent 5 Issue 74","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.139365-07:00","updated_at":"2025-10-21T00:29:12.139365-07:00","source_repo":"."} +{"id":"bd-1764","content_hash":"ea932714fd722c6ad993f2b7bd646141114008a37a7660f2cb85900542e0ed91","title":"Agent 5 Issue 75","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.140113-07:00","updated_at":"2025-10-21T00:29:12.140113-07:00","source_repo":"."} +{"id":"bd-1765","content_hash":"05aea82419852640131835ba88a77dc21ba086b5068ea2b165c7c74834ea3af8","title":"Agent 5 Issue 76","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.140863-07:00","updated_at":"2025-10-21T00:29:12.140863-07:00","source_repo":"."} +{"id":"bd-1766","content_hash":"8e3e326226ba29e6dd44e3584c0121f8746621d713c85bfaa7d32cf4095bdedb","title":"Agent 5 Issue 77","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.141596-07:00","updated_at":"2025-10-21T00:29:12.141596-07:00","source_repo":"."} +{"id":"bd-1767","content_hash":"d798e71ae5d496f0a23875b6ecf0d562188601cabfe44425f6682b705a466af8","title":"Agent 5 Issue 78","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.142378-07:00","updated_at":"2025-10-21T00:29:12.142378-07:00","source_repo":"."} +{"id":"bd-1768","content_hash":"5c42ecc10205cf4cc64e8cb9e7e384ce29b212a483a0c2a3a48c549b26a9df68","title":"Agent 5 Issue 79","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.143182-07:00","updated_at":"2025-10-21T00:29:12.143182-07:00","source_repo":"."} +{"id":"bd-1769","content_hash":"d522ab84363bbe38c5f49dcd910a3a47388a1221b114437f64697a1d4e9ff94d","title":"Agent 5 Issue 80","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.143982-07:00","updated_at":"2025-10-21T00:29:12.143982-07:00","source_repo":"."} +{"id":"bd-177","content_hash":"d5923d5cfaf832ed63844aa8ea97028a7dc46d8d929a5ddfce32ffc4e9d4f7be","title":"Fix cross-platform process management in daemon.go","description":"Replace direct syscall.SysProcAttr assignments with configureDaemonProcess() helper in migrateToGlobalDaemon() and other start/stop flows","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-20T21:09:09.213639-07:00","updated_at":"2025-10-21T00:25:40.534315-07:00","closed_at":"2025-10-20T21:27:10.908884-07:00","source_repo":"."} +{"id":"bd-1770","content_hash":"d51d4553d4964d2957d048dc1b9015cb2a563fa8bbd47601fe6c9bc48e51fa4c","title":"Agent 5 Issue 81","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.144754-07:00","updated_at":"2025-10-21T00:29:12.144754-07:00","source_repo":"."} +{"id":"bd-1771","content_hash":"f82f061d00c98f47a311a3a4ed3897e3606e3928f7a537494ec9b4ef17822671","title":"Agent 5 Issue 82","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.145512-07:00","updated_at":"2025-10-21T00:29:12.145512-07:00","source_repo":"."} +{"id":"bd-1772","content_hash":"024dbd19a0b8add7fbed0e54aec47cdc530a69dfa8b7379304ebdae7a679dca7","title":"Agent 5 Issue 83","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.146233-07:00","updated_at":"2025-10-21T00:29:12.146233-07:00","source_repo":"."} +{"id":"bd-1773","content_hash":"7b2e71e9ad2af9381242d3b66897ed73396b338f152a963ee44712349093ef7e","title":"Agent 5 Issue 84","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.147001-07:00","updated_at":"2025-10-21T00:29:12.147001-07:00","source_repo":"."} +{"id":"bd-1774","content_hash":"1a1a5f8dbc617858167fdb6a276112b830c2b6515592e5d9329e46e373c5212b","title":"Agent 5 Issue 85","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.147795-07:00","updated_at":"2025-10-21T00:29:12.147795-07:00","source_repo":"."} +{"id":"bd-1775","content_hash":"6712a8d2f8655aedd48d8623c4ea503f4272217b0fbc397b0d6747c9c04c11a0","title":"Agent 5 Issue 86","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.148632-07:00","updated_at":"2025-10-21T00:29:12.148632-07:00","source_repo":"."} +{"id":"bd-1776","content_hash":"86a5811a11f40773e2ffd3ad524497bf1ef322ca36ac803abe5f2af993585934","title":"Agent 5 Issue 87","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.149408-07:00","updated_at":"2025-10-21T00:29:12.149408-07:00","source_repo":"."} +{"id":"bd-1777","content_hash":"54f44491b831829823e2b3023c48eedfdd5d2ff16e311366eca14be73ed0be6e","title":"Agent 5 Issue 88","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.150176-07:00","updated_at":"2025-10-21T00:29:12.150176-07:00","source_repo":"."} +{"id":"bd-1778","content_hash":"3580d962c30f51a12dc2f6367f123ae6b93b2378e3ff54e2c422f99d0c2d2a40","title":"Agent 5 Issue 89","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.150985-07:00","updated_at":"2025-10-21T00:29:12.150985-07:00","source_repo":"."} +{"id":"bd-1779","content_hash":"cb0cecdaef60602ce813b4b5ebb4dc83ed885a4392f669c02dba4d013de224dc","title":"Agent 5 Issue 90","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.151753-07:00","updated_at":"2025-10-21T00:29:12.151753-07:00","source_repo":"."} +{"id":"bd-178","content_hash":"9995d9ae359df76a1a985ab3610274d270595d6ac5bc9a7e73910273b6cd86ba","title":"Add Windows CI build to GitHub Actions","description":"Add windows-latest job that builds bd.exe and runs unit tests to catch cross-platform issues","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-20T21:09:12.978711-07:00","updated_at":"2025-10-21T00:25:40.534472-07:00","closed_at":"2025-10-20T21:27:40.120681-07:00","source_repo":"."} +{"id":"bd-1780","content_hash":"dd9889a1edff23538e122f21c51a3eb2df30f2e86e574e902b92bbf0c3a4cb3e","title":"Agent 5 Issue 91","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.152518-07:00","updated_at":"2025-10-21T00:29:12.152518-07:00","source_repo":"."} +{"id":"bd-1781","content_hash":"9d357b990e89cc0843338115c978e880d261f97591ab030be733c458ae35f3b3","title":"Agent 5 Issue 92","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.153292-07:00","updated_at":"2025-10-21T00:29:12.153292-07:00","source_repo":"."} +{"id":"bd-1782","content_hash":"fb001ef2657e6f15d12db449ae0de47417c66c14cce8d0479a48321c5c7c0d68","title":"Agent 5 Issue 93","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.154041-07:00","updated_at":"2025-10-21T00:29:12.154041-07:00","source_repo":"."} +{"id":"bd-1783","content_hash":"11cbaf731eb63c4d5c4fb1dcf17865ec1cf1c152f098547a4ab0000c4fe0b62f","title":"Agent 5 Issue 94","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.154807-07:00","updated_at":"2025-10-21T00:29:12.154807-07:00","source_repo":"."} +{"id":"bd-1784","content_hash":"87fd69e610fe3702d31546e4f56e5a7acaf24e55bed547917f672f634014e717","title":"Agent 5 Issue 95","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.155578-07:00","updated_at":"2025-10-21T00:29:12.155578-07:00","source_repo":"."} +{"id":"bd-1785","content_hash":"a4993cbeb8d434bbc0d591deb02282f223c821b704e185d06a0077638e697569","title":"Agent 5 Issue 96","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.156371-07:00","updated_at":"2025-10-21T00:29:12.156371-07:00","source_repo":"."} +{"id":"bd-1786","content_hash":"e551e27ab279314f98eda7033b43bb71c9764b3c4d38a298b7efd3ac00fbb22b","title":"Agent 5 Issue 97","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.157209-07:00","updated_at":"2025-10-21T00:29:12.157209-07:00","source_repo":"."} +{"id":"bd-1787","content_hash":"1ccceacb57e82bd3fd6a0b75089911358c31c98d17797303d1740d6001945f42","title":"Agent 5 Issue 98","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.157947-07:00","updated_at":"2025-10-21T00:29:12.157947-07:00","source_repo":"."} +{"id":"bd-1788","content_hash":"dd95f7721d4aeb604453d97a7b4febb0a49d87fb07f5dfc577419f994689e76b","title":"Agent 5 Issue 99","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.158718-07:00","updated_at":"2025-10-21T00:29:12.158718-07:00","source_repo":"."} +{"id":"bd-1789","content_hash":"55adba635a0b16efcff3ebaeece2d3f8fd0baead5fee3ff5571894b71ba872e8","title":"Agent 2 Issue 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.914628-07:00","updated_at":"2025-10-21T00:29:11.914628-07:00","source_repo":"."} +{"id":"bd-179","content_hash":"4bcc8d6b0368f451fd3af9a43f2372a607580fad8102b847c3552d9ed44966f6","title":"bd uses wrong default prefix when database filename indicates different prefix","description":"When creating issues without explicit --id flag, bd defaults to 'bd-' prefix even when the database filename and existing issues use a different prefix (e.g., 'wy-').","design":"## Bug Report\n\n**Environment:**\n- bd version: 0.9.11 (based on metadata)\n- Database: .beads/wy-.db\n- Directory: /Users/stevey/ai/flutter/wyvern\n\n**Observed Behavior:**\nWhen running `bd create task \"title\"` without --id flag, new issues get assigned `bd-*` IDs even though:\n- Database filename is `.beads/wy-.db` (implies wy- prefix)\n- All existing issues use `wy-*` prefix (wy-1 through wy-77)\n- No prefix metadata stored in database\n\n**Evidence:**\n```sql\nsqlite3 .beads/wy-.db \"SELECT * FROM issue_counters;\"\nwy|72\nbd|29\n```\n\nThe bd counter was incremented when I accidentally created bd-23 through bd-29 (now deleted).\n\n**Expected Behavior:**\nbd should derive the default prefix from:\n1. Database filename (`wy-.db` → `wy-` prefix), OR\n2. Most recently used prefix in the database, OR \n3. Prefix stored in metadata table\n\nAccording to `bd init --help`:\n\u003e -p, --prefix string Issue prefix (default: current directory name)\n\nBut database filename convention appears to be `\u003cprefix\u003e.db`, so wy-.db should mean wy- is the intended prefix.\n\n**Workaround:**\nUse explicit `--id` flag: `bd create task \"title\" --id wy-73`\n\n**Reproduction:**\n```bash\n# In a directory with .beads/wy-.db containing wy-* issues\nbd create task \"test\"\n# Creates bd-* issue instead of wy-* issue\n```\n\n**Suggested Fix:**\n1. Store the intended prefix in metadata table during `bd init`\n2. When creating issues, check metadata for preferred prefix\n3. Fallback to extracting prefix from database filename\n4. Last resort: use directory name\n\n**Related Code:**\nLikely in issue counter/ID generation logic where new IDs are assigned.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-20T22:10:24.611471-07:00","updated_at":"2025-10-21T00:25:40.534633-07:00","closed_at":"2025-10-20T22:16:25.606694-07:00","source_repo":"."} +{"id":"bd-1790","content_hash":"550e47879637b3064ada77450bfd033335b21729355b0a54b412b78e9983d2f0","title":"Agent 2 Issue 3","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.160474-07:00","updated_at":"2025-10-21T00:29:12.160474-07:00","source_repo":"."} +{"id":"bd-1791","content_hash":"12ecdfdf8f306b953d32f4de5a20c7e738d2b8ec6173fa53d6c20b462e7b9888","title":"Agent 2 Issue 4","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.161272-07:00","updated_at":"2025-10-21T00:29:12.161272-07:00","source_repo":"."} +{"id":"bd-1792","content_hash":"199a50a2b1811be9639a027c004c51e425539d6de811ebbb6a3a1b206c10f86a","title":"Agent 6 Issue 93","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.116232-07:00","updated_at":"2025-10-21T00:29:12.116232-07:00","source_repo":"."} +{"id":"bd-1793","content_hash":"efe7552324e172e7949bad95e0727590af16f314dea35980ef7a150a799a64b9","title":"Agent 6 Issue 94","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.162838-07:00","updated_at":"2025-10-21T00:29:12.162838-07:00","source_repo":"."} +{"id":"bd-1794","content_hash":"3ae7c652612839fb5ff8170b58523d3b14b937d73adb9956c2e51e5d4bf741b3","title":"Agent 6 Issue 95","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.163672-07:00","updated_at":"2025-10-21T00:29:12.163672-07:00","source_repo":"."} +{"id":"bd-1795","content_hash":"2c35df51c4e6749411a074a3d17bfa732f97302fdb64009268747a435d137aa6","title":"Agent 6 Issue 96","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.164433-07:00","updated_at":"2025-10-21T00:29:12.164433-07:00","source_repo":"."} +{"id":"bd-1796","content_hash":"3e96d20bdc8a80b92c8abb19da265a1804da134662d5cadbe3c14998b40e53bf","title":"Agent 6 Issue 97","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.1652-07:00","updated_at":"2025-10-21T00:29:12.1652-07:00","source_repo":"."} +{"id":"bd-1797","content_hash":"3da122ce88fd12128acd0186625a4582915ddfc378a90a37e88ae6b5668b11e8","title":"Agent 6 Issue 98","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.165998-07:00","updated_at":"2025-10-21T00:29:12.165998-07:00","source_repo":"."} +{"id":"bd-1798","content_hash":"6c6af47f3701608bbbbd2db883b7e45e8ce09cfa33d617f4e6e4a2093ed98cf5","title":"Agent 6 Issue 99","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.16675-07:00","updated_at":"2025-10-21T00:29:12.16675-07:00","source_repo":"."} +{"id":"bd-1799","content_hash":"df7fb78a6df8e90c9678491517234f5fed302f9bd89dcaf248304bb61a3ce9d3","title":"Agent 8 Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.113218-07:00","updated_at":"2025-10-21T00:29:12.113218-07:00","source_repo":"."} {"id":"bd-17d5","content_hash":"a0e9affb9666bb33ffb26aa9aab151a80b94b37578667aa439bbcccd842243ef","title":"bd sync false positive: conflict detection triggers on JSON-encoded angle brackets in issue content","description":"The bd sync --import-only command incorrectly detects conflict markers when issue descriptions contain the text '\u003c\u003c\u003c\u003c\u003c\u003c\u003c' or '\u003e\u003e\u003e\u003e\u003e\u003e\u003e' as legitimate content (e.g., documentation about git conflict markers).\n\n**Reproduction:**\n1. Create issue with design field containing: 'Read file, extract \u003c\u003c\u003c\u003c\u003c\u003c\u003c / ======= / \u003e\u003e\u003e\u003e\u003e\u003e\u003e markers'\n2. Export to JSONL (gets JSON-encoded as \\u003c\\u003c\\u003c...)\n3. Commit and push\n4. Pull from remote\n5. bd sync --import-only fails with: 'Git conflict markers detected in JSONL file'\n\n**Root cause:**\nThe conflict detection appears to decode JSON before checking for conflict markers, causing false positives when issue content legitimately contains these strings.\n\n**Expected behavior:**\nConflict detection should only trigger on actual git conflict markers (literal '\u003c\u003c\u003c\u003c\u003c\u003c\u003c' bytes in the raw file), not on JSON-encoded content within issue fields.\n\n**Test case:**\nVC project at ~/src/dave/vc has vc-85 'JSONL Conflict Parser' which documents conflict parsing and triggers this bug.\n\n**Suggested fixes:**\n1. Only scan for literal '\u003c\u003c\u003c\u003c\u003c\u003c\u003c' bytes (not decoded JSON content)\n2. Parse JSONL first and only flag unparseable lines\n3. Check git merge state (git status) to confirm actual conflict\n4. Add --skip-conflict-check flag for override","acceptance_criteria":"- bd sync works with vc-85 issue in VC project\n- Conflict detection only triggers on actual git conflict markers\n- False positives eliminated for legitimate issue content\n- Regression test added with conflict marker text in issue description","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-08T13:02:54.730745-08:00","updated_at":"2025-11-08T13:07:37.108225-08:00","closed_at":"2025-11-08T13:07:37.108225-08:00","source_repo":"."} {"id":"bd-17fa2d21","content_hash":"b909e616bec8d75eaf6ab0c2deb90ad047740d44892194afeaa5deb07f15f43a","title":"Batch test 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T15:29:01.877052-07:00","updated_at":"2025-10-31T12:00:43.183657-07:00","closed_at":"2025-10-31T12:00:43.183657-07:00","source_repo":"."} +{"id":"bd-18","content_hash":"3b8322e12eb46102956e5e89639a079750bd1f5cd57ecf309ada619be9e7b5e6","title":"Fix: bd init --prefix test -q flag not recognized","description":"The init command doesn't recognize the -q flag. When running 'bd init --prefix test -q', it fails silently or behaves unexpectedly. The flag should either be implemented for quiet mode or removed from documentation if not supported.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.534804-07:00","closed_at":"2025-10-17T00:09:18.921816-07:00","source_repo":"."} +{"id":"bd-180","content_hash":"364c0a50581de5b8a8b602c21cd78d4573f6ec50c628730f9bade655e4577e1e","title":"bd import should create database if it doesn't exist","description":"When running 'bd import file.jsonl' and the database doesn't exist, the command reports '0 created, 0 updated' but doesn't actually create the database file. This makes it confusing to reset/recreate a database from JSONL.\n\nExpected behavior: If .beads/vc.db doesn't exist, 'bd import .beads/issues.jsonl' should:\n1. Create the database file\n2. Initialize the schema\n3. Import all issues from the JSONL\n\nCurrent workaround: Restore an old database first, then import updates it.\n\nUse case: During VC dogfooding, we wanted to recreate the database with updated schema after schema.go changes. The workflow should be:\n1. mv .beads/vc.db .beads/vc.db.backup\n2. bd import .beads/issues.jsonl # Should create fresh DB\n3. Ready to go\n\nInstead, step 2 silently does nothing.","acceptance_criteria":"bd import creates database if missing, imports all issues successfully, returns count of created issues","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-10-20T23:06:14.27608-07:00","updated_at":"2025-10-21T00:25:40.534988-07:00","closed_at":"2025-10-20T23:12:16.245609-07:00","source_repo":"."} +{"id":"bd-1800","content_hash":"49360f26101312b26779a7ae917e2e1ed22582b91cc491866f5e3b69cf5e2215","title":"Agent 8 Issue 21","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.168454-07:00","updated_at":"2025-10-21T00:29:12.168454-07:00","source_repo":"."} +{"id":"bd-1801","content_hash":"1f31a5598eeb4d13e8ba5906c1519aa9e6e429c1a13b9dedca64591ab3ae9577","title":"Agent 8 Issue 22","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.169262-07:00","updated_at":"2025-10-21T00:29:12.169262-07:00","source_repo":"."} +{"id":"bd-1802","content_hash":"6d7ed0695d95bf45b24a0bbd082bfbefd8edead4181ca18e887f59d0e560968f","title":"Agent 2 Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.162041-07:00","updated_at":"2025-10-21T00:29:12.162041-07:00","source_repo":"."} +{"id":"bd-1803","content_hash":"92fd2d3db69cee7b090bfad2efed7bb6abe7362c5e003b7c46a8dbe05cd7b3f2","title":"Agent 2 Issue 6","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.170761-07:00","updated_at":"2025-10-21T00:29:12.170761-07:00","source_repo":"."} +{"id":"bd-1804","content_hash":"0e5aa324f4d98ebeaa1f7a687f5a69dcc51cab24f6224f105d056ae09d463cd0","title":"Agent 2 Issue 7","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.171537-07:00","updated_at":"2025-10-21T00:29:12.171537-07:00","source_repo":"."} +{"id":"bd-1805","content_hash":"ace3ac8ef3419e1892e3c3ff210e8da1c9bc07e8cba954831d456901b00abb8b","title":"Agent 2 Issue 8","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.172291-07:00","updated_at":"2025-10-21T00:29:12.172291-07:00","source_repo":"."} +{"id":"bd-1806","content_hash":"89e45ba5f03294fe16987983bc68a92c499e83e8935a7fda45afdffc3dcee0f7","title":"Agent 2 Issue 9","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.173043-07:00","updated_at":"2025-10-21T00:29:12.173043-07:00","source_repo":"."} +{"id":"bd-1807","content_hash":"6579808cf330bb8b7a00245ed8f0781096a35b744227f292abd733605d7d3565","title":"Agent 2 Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.173842-07:00","updated_at":"2025-10-21T00:29:12.173842-07:00","source_repo":"."} +{"id":"bd-1808","content_hash":"8b3ce827e5f4b5a2eef712d14428e55687b182df360c96be95154d9b28fc713a","title":"Agent 2 Issue 11","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.174632-07:00","updated_at":"2025-10-21T00:29:12.174632-07:00","source_repo":"."} +{"id":"bd-1809","content_hash":"db3598fb1ac5a864f54248154b374d2c94ea1a1af45f35c25912bea3c22419aa","title":"Agent 2 Issue 12","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.175423-07:00","updated_at":"2025-10-21T00:29:12.175423-07:00","source_repo":"."} +{"id":"bd-181","content_hash":"c17d9fcb4a93b29064c4ec01145e19b0637210bcc8cb255ca1394dc9655cdcc6","title":"MCP update tool bypasses user approval when closing tasks","description":"GH #90: update with status='closed' should trigger same approval workflow as close tool. Currently undermines user control since close requires approval but update doesn't check parameter changes.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-20T23:40:17.69494-07:00","updated_at":"2025-10-21T00:25:40.535156-07:00","closed_at":"2025-10-20T23:40:42.293483-07:00","source_repo":"."} +{"id":"bd-1810","content_hash":"b77fc8419a219678cd7a2fddc0059b9f35fc8d023af549daa9eebc905e2e72c4","title":"Agent 2 Issue 13","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.176194-07:00","updated_at":"2025-10-21T00:29:12.176194-07:00","source_repo":"."} +{"id":"bd-1811","content_hash":"e8ac18cb5ced892e988301d189c5c15add57307d4c28df43abe892fd26c1a5ee","title":"Agent 2 Issue 14","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.176969-07:00","updated_at":"2025-10-21T00:29:12.176969-07:00","source_repo":"."} +{"id":"bd-1812","content_hash":"1ad63c60483e58ddbf57ae41b170fa7a8f7a9ec91ec878049b2f57b12140b0e9","title":"Agent 2 Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.177746-07:00","updated_at":"2025-10-21T00:29:12.177746-07:00","source_repo":"."} +{"id":"bd-1813","content_hash":"79d90f2d2d9e053b31a453ce507efe80891bf8ba42b3ce0024bf47652586069b","title":"Agent 2 Issue 16","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.178502-07:00","updated_at":"2025-10-21T00:29:12.178502-07:00","source_repo":"."} +{"id":"bd-1814","content_hash":"11a07dcd5f2ce90b9eeedeec95ef42fa63ec7ea12ec23fd521510821ac0cc74a","title":"Agent 2 Issue 17","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.179249-07:00","updated_at":"2025-10-21T00:29:12.179249-07:00","source_repo":"."} +{"id":"bd-1815","content_hash":"7ef30aa20c2e4ec790055036457a0de619390c01d37601e70dc60a33a37b6750","title":"Agent 2 Issue 18","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.180031-07:00","updated_at":"2025-10-21T00:29:12.180031-07:00","source_repo":"."} +{"id":"bd-1816","content_hash":"2be292cc16c0be07e3a415e4c6a42c60f652313e1614edadca3b511f715e762c","title":"Agent 2 Issue 19","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.180818-07:00","updated_at":"2025-10-21T00:29:12.180818-07:00","source_repo":"."} +{"id":"bd-1817","content_hash":"d39c902c2f7df0635dcceda1e0af5fd63977f6bd3d26c500298f169ad7c772b2","title":"Agent 2 Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.181793-07:00","updated_at":"2025-10-21T00:29:12.181793-07:00","source_repo":"."} +{"id":"bd-1818","content_hash":"75a5b95a3b71e98eae2662e3013dfee85ab07d403d39e7992fb72c07cc359014","title":"Agent 2 Issue 21","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.182591-07:00","updated_at":"2025-10-21T00:29:12.182591-07:00","source_repo":"."} +{"id":"bd-1819","content_hash":"31c02e6a0205927253034d4dcb1ab1bb879cf80eee27e96fd0c892862e22fbcb","title":"Agent 2 Issue 22","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.183391-07:00","updated_at":"2025-10-21T00:29:12.183391-07:00","source_repo":"."} +{"id":"bd-182","content_hash":"2fb304064183fafdea816ec8af7bc7dffee29c299a108388a1d9d8000301a657","title":"Consider implementing pre-commit hooks for Storage interface changes","description":"The documentation (INTERFACE_CHANGES.md) suggests adding pre-commit hooks that automatically check for Storage interface changes and verify all mocks are updated. This would prevent similar issues in the future where interface changes break mock implementations.\n\nDiscovered during execution of vc-228 (dogfooding run #14/15).","design":"Implement a pre-commit hook that:\n1. Detects changes to internal/storage/storage.go\n2. Runs scripts/find-storage-mocks.sh to find all mock implementations\n3. Attempts to compile all test files with mocks\n4. Blocks commit if compilation fails\n\nTools: husky, pre-commit framework, or simple .git/hooks/pre-commit script","acceptance_criteria":"- Pre-commit hook installed and documented\n- Hook detects Storage interface changes\n- Hook validates all mocks compile\n- Hook can be bypassed with --no-verify if needed\n- Documentation updated with installation instructions","status":"open","priority":2,"issue_type":"feature","created_at":"2025-10-21T00:09:00.799402-07:00","updated_at":"2025-10-21T00:25:40.535314-07:00","source_repo":"."} +{"id":"bd-1820","content_hash":"38c8ed923e5a4cb71ed38a549a776c6ae19f752324e0c44a6120459d31e490b3","title":"Agent 2 Issue 23","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.184127-07:00","updated_at":"2025-10-21T00:29:12.184127-07:00","source_repo":"."} +{"id":"bd-1821","content_hash":"e210123421d517e51cc9567833e94e7a55354f6208690e412ccb171a4732eb54","title":"Agent 7 Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.912149-07:00","updated_at":"2025-10-21T00:29:11.912149-07:00","source_repo":"."} +{"id":"bd-1822","content_hash":"8320be7b3ceabfcef76a69f1908b48ed6a4cbe9726cca8086b3120fb32ffed04","title":"Agent 7 Issue 1","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.185711-07:00","updated_at":"2025-10-21T00:29:12.185711-07:00","source_repo":"."} +{"id":"bd-1823","content_hash":"ffbd186f706b37cd40b58df6a80504c638d5e5ae8acbdabb05ec591856409e3b","title":"Agent 7 Issue 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.186479-07:00","updated_at":"2025-10-21T00:29:12.186479-07:00","source_repo":"."} +{"id":"bd-1824","content_hash":"733ecf591d80d978d1a72d11e43dcbb444ee386d4b0649b85cb1324a7ebacd01","title":"Agent 7 Issue 3","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.187235-07:00","updated_at":"2025-10-21T00:29:12.187235-07:00","source_repo":"."} +{"id":"bd-1825","content_hash":"2b596f2849c91b25dd312463ca517a37412a83cf70aaaa4c4f155b3aa3da5ba0","title":"Agent 7 Issue 4","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.188293-07:00","updated_at":"2025-10-21T00:29:12.188293-07:00","source_repo":"."} +{"id":"bd-1826","content_hash":"c81b92cc82b46dcaeb658a238d1f1648ebed211799d3cbe88acddac6e9ea4149","title":"Agent 7 Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.189091-07:00","updated_at":"2025-10-21T00:29:12.189091-07:00","source_repo":"."} +{"id":"bd-1827","content_hash":"3811dbcc9fc7b2e9388cd5fed6acd65757785de39a97f7053c22e85f8d465d06","title":"Agent 7 Issue 6","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.189858-07:00","updated_at":"2025-10-21T00:29:12.189858-07:00","source_repo":"."} +{"id":"bd-1828","content_hash":"4376cb8b8184bf068afda26cac573deffacfa3d2b44972744347cc4da2df205b","title":"Agent 7 Issue 7","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.190619-07:00","updated_at":"2025-10-21T00:29:12.190619-07:00","source_repo":"."} +{"id":"bd-1829","content_hash":"22efcc5e1432bf2065d6831840ab53a133dd41fc5c3c61b33886f3464c36d7db","title":"Agent 7 Issue 8","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.191398-07:00","updated_at":"2025-10-21T00:29:12.191398-07:00","source_repo":"."} +{"id":"bd-183","content_hash":"d0272166c03a44c7b7e5e66b46dcf15d2c070c20d5106aaf2176ca7ce272d0cf","title":"Implement bd quickstart command","description":"Add bd quickstart command to show context-aware repo information: recent issues, database location, configured prefix, example queries. Helps AI agents understand current project state. Companion to bd onboard.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-10-21T00:13:20.238853-07:00","updated_at":"2025-10-21T00:25:40.535482-07:00","source_repo":"."} +{"id":"bd-1830","content_hash":"c99e156f9fd1a35126f91e2dcd0e0c0769798ed10cd61e341bc12be96668de37","title":"Agent 7 Issue 9","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.192201-07:00","updated_at":"2025-10-21T00:29:12.192201-07:00","source_repo":"."} +{"id":"bd-1831","content_hash":"277fe87e52d80457d20b112241fa479b6606d22a99d41c277bdeaa496c886e0e","title":"Agent 7 Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.192989-07:00","updated_at":"2025-10-21T00:29:12.192989-07:00","source_repo":"."} +{"id":"bd-1832","content_hash":"43a3b49d041a22dc6ed9edced025bac7e8deb9982ca87e4c24428c429f72b5dd","title":"Agent 7 Issue 11","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.193796-07:00","updated_at":"2025-10-21T00:29:12.193796-07:00","source_repo":"."} +{"id":"bd-1833","content_hash":"92ad86f3ff2638d2b6a34ea2ca091fb6904f336635cfb0021334eddfe7db2e4a","title":"Agent 7 Issue 12","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.194618-07:00","updated_at":"2025-10-21T00:29:12.194618-07:00","source_repo":"."} +{"id":"bd-1834","content_hash":"6c074a4901a540c2d4327db164c1f746e56d371abdb64376c51ca8934f40c955","title":"Agent 7 Issue 13","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.195423-07:00","updated_at":"2025-10-21T00:29:12.195423-07:00","source_repo":"."} +{"id":"bd-1835","content_hash":"266a3765269feee572cc3181f6e6344dc536279648d1b7c9550d6d7f25f40b2e","title":"Agent 7 Issue 14","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.196229-07:00","updated_at":"2025-10-21T00:29:12.196229-07:00","source_repo":"."} +{"id":"bd-1836","content_hash":"844a2c9d2ed047ec200e02a403a749dd1e3462622ef2d66aa14eb8ddc6f0b817","title":"Agent 7 Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.197062-07:00","updated_at":"2025-10-21T00:29:12.197062-07:00","source_repo":"."} +{"id":"bd-1837","content_hash":"2055a86ce6c6a8a33403b6156d2815b948fdd4067b8be7b5f27c514d51b190c1","title":"Agent 7 Issue 16","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.19784-07:00","updated_at":"2025-10-21T00:29:12.19784-07:00","source_repo":"."} +{"id":"bd-1838","content_hash":"677c76666a8a38921130569503f8af93237a9e73c96a71ea01f6f3f586b7eb62","title":"Agent 7 Issue 17","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.198677-07:00","updated_at":"2025-10-21T00:29:12.198677-07:00","source_repo":"."} +{"id":"bd-1839","content_hash":"a11afea05200a8fe66bd3de82a1ce12d7977a7dc0115b4823544c9290432636b","title":"Agent 7 Issue 18","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.199463-07:00","updated_at":"2025-10-21T00:29:12.199463-07:00","source_repo":"."} +{"id":"bd-184","content_hash":"66711edde146fb51c4afc96e542b1419beb1b1186cc1669b6f6395b9becde1c3","title":"Compact command fails with daemon - requires --no-daemon workaround","description":"The 'bd compact' command fails with 'Error: compact requires SQLite storage' when used with the daemon (default mode), but works correctly with the '--no-daemon' flag.\n\nThe daemon RPC interface doesn't properly expose the compact command, even though the daemon itself uses SQLite storage.\n\nReproduction:\n1. Ensure daemon is running (bd daemon status)\n2. Run: bd compact --stats\n Result: Error: compact requires SQLite storage\n3. Run: bd compact --stats --no-daemon\n Result: Works correctly, shows statistics\n\nExpected behavior:\nThe compact command should work through the daemon RPC interface just like other commands (list, create, update, delete, renumber, etc.)\n\nImpact:\nUsers cannot use compact operations in the normal workflow. They must use --no-daemon which bypasses the daemon entirely.\n\nSuggested fix:\nAdd compact operation support to the daemon RPC interface, similar to how renumber and other operations are exposed.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-21T00:15:34.599594-07:00","updated_at":"2025-10-21T00:27:41.975726-07:00","closed_at":"2025-10-21T00:27:41.975726-07:00","source_repo":"."} +{"id":"bd-1840","content_hash":"9c9950b541549047ea029239edba55b1b3df55c812f7bc21c2847956577cad4d","title":"Agent 7 Issue 19","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.200191-07:00","updated_at":"2025-10-21T00:29:12.200191-07:00","source_repo":"."} +{"id":"bd-1841","content_hash":"1b1414c728abb06450cb0a0c9ce48cdad3848d447a5bc60fe19577f36183ccaf","title":"Agent 7 Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.201033-07:00","updated_at":"2025-10-21T00:29:12.201033-07:00","source_repo":"."} +{"id":"bd-1842","content_hash":"3e325777ced839ac6a49d65a289716a0b311703e01464ffc43513fbd08782a7f","title":"Agent 7 Issue 21","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.201877-07:00","updated_at":"2025-10-21T00:29:12.201877-07:00","source_repo":"."} +{"id":"bd-1843","content_hash":"6d6f7f0d8320980deea6b341a1a2fe1e54da984d7c623cf7ab6ba4caee863237","title":"Agent 7 Issue 22","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.2027-07:00","updated_at":"2025-10-21T00:29:12.2027-07:00","source_repo":"."} +{"id":"bd-1844","content_hash":"8df5ce6bbb7fd7e5ea25a41dc95df3514707d8b6dfd44321d02671bdf5a15ceb","title":"Agent 7 Issue 23","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.203507-07:00","updated_at":"2025-10-21T00:29:12.203507-07:00","source_repo":"."} +{"id":"bd-1845","content_hash":"72e8c872243a18e2ecdd155c1ebe1bf693d2bd629cf4b4bda26f27803f7ce79f","title":"Agent 7 Issue 24","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.204339-07:00","updated_at":"2025-10-21T00:29:12.204339-07:00","source_repo":"."} +{"id":"bd-1846","content_hash":"ae0b488eccd2080dc487d8ff1c1595a6b576c7af8718283df1b658fd54f3026d","title":"Agent 7 Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.205127-07:00","updated_at":"2025-10-21T00:29:12.205127-07:00","source_repo":"."} +{"id":"bd-1847","content_hash":"62133c6f43f1a21b0c1f93b4fb59e426a0c825a5a55600b3a55a396b00f6c018","title":"Agent 7 Issue 26","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.205884-07:00","updated_at":"2025-10-21T00:29:12.205884-07:00","source_repo":"."} +{"id":"bd-1848","content_hash":"07c6cbeee5e595375ed1da16eeeb3ce4fbc41cb0ecb7050180ea15787aa552bf","title":"Agent 7 Issue 27","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.206664-07:00","updated_at":"2025-10-21T00:29:12.206664-07:00","source_repo":"."} +{"id":"bd-1849","content_hash":"3b49576367dcb7c51e3dd4b2c2093a84c312df39df1e23d4f57979cb13b9b1d1","title":"Agent 7 Issue 28","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.207465-07:00","updated_at":"2025-10-21T00:29:12.207465-07:00","source_repo":"."} +{"id":"bd-185","content_hash":"78d6bac2b04c532c8f27ee5b0329455fa90696ae9ae1f670fc56ea3d5281bbb0","title":"Add customizable time threshold for compact command","description":"Currently compact uses fixed 30-day and 90-day tiers. Add support for custom time thresholds like '--older-than 60h' or '--older-than 2.5d' to allow more flexible compaction policies.\n\nExamples:\n bd compact --all --older-than 60h\n bd compact --all --older-than 2.5d\n bd compact --all --tier 1 --age 48h\n\nThis would allow users to set their own compaction schedules based on their workflow needs.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-10-21T00:16:24.126005-07:00","updated_at":"2025-10-21T00:25:40.5358-07:00","source_repo":"."} +{"id":"bd-1850","content_hash":"1e2dc6f8a3f03906100309522224fdef4492f09d1c65e3a1d54af6f0b540a795","title":"Agent 7 Issue 29","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.208281-07:00","updated_at":"2025-10-21T00:29:12.208281-07:00","source_repo":"."} +{"id":"bd-1851","content_hash":"65917c4296ed87e29d5975203764c0faaf9d73e6c49684bbcf9531fcb75392fd","title":"Agent 7 Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.209113-07:00","updated_at":"2025-10-21T00:29:12.209113-07:00","source_repo":"."} +{"id":"bd-1852","content_hash":"cdc21440930e642e8d5052d4379bf1ba246c86271ac12a38de36e83503b0d750","title":"Agent 7 Issue 31","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.209855-07:00","updated_at":"2025-10-21T00:29:12.209855-07:00","source_repo":"."} +{"id":"bd-1853","content_hash":"06fe2f8de5115fe3c162cec6362437ed2999e0613d552b1ba3defbf48c8af369","title":"Agent 7 Issue 32","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.210656-07:00","updated_at":"2025-10-21T00:29:12.210656-07:00","source_repo":"."} +{"id":"bd-1854","content_hash":"8c785593056d70583e133aba5191cc3b23b42ffc5b2e72b56bd80cb087051728","title":"Agent 7 Issue 33","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.211455-07:00","updated_at":"2025-10-21T00:29:12.211455-07:00","source_repo":"."} +{"id":"bd-1855","content_hash":"474ccd914de8ad61c8dfdf8aff934113d3c627ae9ff9f69bdecfb4ab29c0f8f8","title":"Agent 7 Issue 34","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.212221-07:00","updated_at":"2025-10-21T00:29:12.212221-07:00","source_repo":"."} +{"id":"bd-1856","content_hash":"b40f6e7db8cfe1510bbf6ae06d6b368917e24aa7d44c9277f27e6e6561935a61","title":"Agent 7 Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.212989-07:00","updated_at":"2025-10-21T00:29:12.212989-07:00","source_repo":"."} +{"id":"bd-1857","content_hash":"56ea0722d55d15cc6aa87e6fb72de63b9923b1aa55a86f4c94252a42e82ee8be","title":"Agent 7 Issue 36","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.213808-07:00","updated_at":"2025-10-21T00:29:12.213808-07:00","source_repo":"."} +{"id":"bd-1858","content_hash":"b93bbe2e56b94a0ab7e506d202ff40a6b2b3072b7915b1dda10e266cf761b3f0","title":"Agent 7 Issue 37","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.214572-07:00","updated_at":"2025-10-21T00:29:12.214572-07:00","source_repo":"."} +{"id":"bd-1859","content_hash":"6da56fccc457397d1a98b385028e8f01910c9cf571112e2fc1ec9a1e6029f16a","title":"Agent 7 Issue 38","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.215345-07:00","updated_at":"2025-10-21T00:29:12.215345-07:00","source_repo":"."} +{"id":"bd-186","content_hash":"f07203cfb7c6ffe648e58f7ea17ea7f4f65168833873ca5cca0ca2642269633e","title":"Add rule-based compaction (e.g., compact children of closed epics)","description":"Support semantic compaction rules beyond just time-based, such as:\n- Compact all children of closed epics\n- Compact by priority level (e.g., all P3/P4 closed issues)\n- Compact by label (e.g., all issues labeled 'archive')\n- Compact by type (e.g., all closed chores)\n\nThis would allow smarter database size management based on semantic meaning rather than just age.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-10-21T00:16:24.480556-07:00","updated_at":"2025-10-21T00:25:40.535951-07:00","source_repo":"."} +{"id":"bd-1860","content_hash":"008ad51a90a263e3ac211ae60fa541f57db05d1fa1e309e36b89b4f7fd3235a6","title":"Agent 7 Issue 39","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.216091-07:00","updated_at":"2025-10-21T00:29:12.216091-07:00","source_repo":"."} +{"id":"bd-1861","content_hash":"3f6fc04e5cf4248826be46c5dbda6bb48b2625f88a2613628341df099a9b0dcb","title":"Agent 7 Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.216841-07:00","updated_at":"2025-10-21T00:29:12.216841-07:00","source_repo":"."} +{"id":"bd-1862","content_hash":"ca47faa50acb2ad733ba42e3deecd911debb8d39de4ee39277e696abc749a81a","title":"Agent 7 Issue 41","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.217593-07:00","updated_at":"2025-10-21T00:29:12.217593-07:00","source_repo":"."} +{"id":"bd-1863","content_hash":"784113d9ed73c96f272919f6c613d8e114a1afaa0bd387cd86f261e9bf50c6ec","title":"Agent 7 Issue 42","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.218373-07:00","updated_at":"2025-10-21T00:29:12.218373-07:00","source_repo":"."} {"id":"bd-1863608e","content_hash":"beec1c2a11e22fcdfb13b4436918e820038c76f6d873d59be616b415148e741e","title":"Add TestNWayCollision for 5+ clones","description":"## Overview\nAdd comprehensive tests for N-way (5+) collision resolution to verify the solution scales beyond 3 clones.\n\n## Purpose\nWhile TestThreeCloneCollision validates the basic N-way case, we need to verify:\n1. Solution scales to arbitrary N\n2. Performance is acceptable with more clones\n3. Convergence time is bounded\n4. No edge cases in larger collision groups\n\n## Implementation Tasks\n\n### 1. Create TestFiveCloneCollision\nFile: beads_twoclone_test.go (or new beads_nway_test.go)\n\n```go\nfunc TestFiveCloneCollision(t *testing.T) {\n // Test with 5 clones creating same ID with different content\n // Verify all 5 clones converge after sync rounds\n \n t.Run(\"SequentialSync\", func(t *testing.T) {\n testNCloneCollision(t, 5, \"A\", \"B\", \"C\", \"D\", \"E\")\n })\n \n t.Run(\"ReverseSync\", func(t *testing.T) {\n testNCloneCollision(t, 5, \"E\", \"D\", \"C\", \"B\", \"A\")\n })\n \n t.Run(\"RandomSync\", func(t *testing.T) {\n testNCloneCollision(t, 5, \"C\", \"A\", \"E\", \"B\", \"D\")\n })\n}\n```\n\n### 2. Implement generalized testNCloneCollision\nGeneralize the 3-clone test to handle arbitrary N:\n\n```go\nfunc testNCloneCollision(t *testing.T, numClones int, syncOrder ...string) {\n t.Helper()\n \n if len(syncOrder) != numClones {\n t.Fatalf(\"syncOrder length (%d) must match numClones (%d)\", \n len(syncOrder), numClones)\n }\n \n tmpDir := t.TempDir()\n \n // Setup remote and N clones\n remoteDir := setupBareRepo(t, tmpDir)\n cloneDirs := make(map[string]string)\n \n for i := 0; i \u003c numClones; i++ {\n name := string(rune('A' + i))\n cloneDirs[name] = setupClone(t, tmpDir, remoteDir, name)\n }\n \n // Each clone creates issue with same ID but different content\n for name, dir := range cloneDirs {\n createIssue(t, dir, fmt.Sprintf(\"Issue from clone %s\", name))\n }\n \n // Sync in specified order\n for _, name := range syncOrder {\n syncClone(t, cloneDirs[name], name)\n }\n \n // Final pull for convergence\n for name, dir := range cloneDirs {\n finalPull(t, dir, name)\n }\n \n // Verify all clones have all N issues\n expectedTitles := make(map[string]bool)\n for i := 0; i \u003c numClones; i++ {\n name := string(rune('A' + i))\n expectedTitles[fmt.Sprintf(\"Issue from clone %s\", name)] = true\n }\n \n for name, dir := range cloneDirs {\n titles := getTitles(t, dir)\n if !compareTitleSets(titles, expectedTitles) {\n t.Errorf(\"Clone %s missing issues: expected %v, got %v\", \n name, expectedTitles, titles)\n }\n }\n \n t.Log(\"✓ All\", numClones, \"clones converged successfully\")\n}\n```\n\n### 3. Add performance benchmarks\nTest convergence time and memory usage:\n\n```go\nfunc BenchmarkNWayCollision(b *testing.B) {\n for _, n := range []int{3, 5, 10, 20} {\n b.Run(fmt.Sprintf(\"N=%d\", n), func(b *testing.B) {\n for i := 0; i \u003c b.N; i++ {\n // Run N-way collision and measure time\n testNCloneCollisionBench(b, n)\n }\n })\n }\n}\n```\n\n### 4. Add convergence time tests\nVerify bounded convergence:\n\n```go\nfunc TestConvergenceTime(t *testing.T) {\n // Test that convergence happens within expected rounds\n // For N clones, should converge in at most N-1 sync rounds\n \n for n := 3; n \u003c= 10; n++ {\n t.Run(fmt.Sprintf(\"N=%d\", n), func(t *testing.T) {\n rounds := measureConvergenceRounds(t, n)\n maxExpected := n - 1\n if rounds \u003e maxExpected {\n t.Errorf(\"Convergence took %d rounds, expected ≤ %d\", \n rounds, maxExpected)\n }\n })\n }\n}\n```\n\n### 5. Add edge case tests\nTest boundary conditions:\n- All N clones have identical content (dedup works)\n- N-1 clones have same content, 1 differs\n- All N clones have unique content\n- Mix of collisions and non-collisions\n\n## Acceptance Criteria\n- TestFiveCloneCollision passes with all sync orders\n- All 5 clones converge to identical content\n- Performance is acceptable (\u003c 5 seconds for 5 clones)\n- Convergence time is bounded (≤ N-1 rounds)\n- Edge cases handled correctly\n- Benchmarks show scalability to 10+ clones\n\n## Files to Create/Modify\n- beads_twoclone_test.go or beads_nway_test.go\n- Add helper functions for N-clone setup\n\n## Testing Strategy\n\n### Test Matrix\n| N Clones | Sync Orders | Expected Result |\n|----------|-------------|-----------------|\n| 3 | A→B→C | Pass |\n| 3 | C→B→A | Pass |\n| 5 | A→B→C→D→E | Pass |\n| 5 | E→D→C→B→A | Pass |\n| 5 | Random | Pass |\n| 10 | Sequential | Pass |\n\n### Performance Targets\n- 3 clones: \u003c 2 seconds\n- 5 clones: \u003c 5 seconds\n- 10 clones: \u003c 15 seconds\n\n## Dependencies\n- Requires bd-cbed9619.5, bd-cbed9619.4, bd-0dcea000, bd-4d7fca8a to be completed\n- TestThreeCloneCollision must pass first\n\n## Success Metrics\n- All tests pass for N ∈ {3, 5, 10}\n- Convergence time scales linearly (O(N))\n- Memory usage reasonable (\u003c 100MB for 10 clones)\n- No data corruption or loss in any scenario","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T20:02:47.954306-07:00","updated_at":"2025-10-30T17:12:58.182217-07:00","closed_at":"2025-10-28T20:47:28.317007-07:00","source_repo":"."} +{"id":"bd-1864","content_hash":"580601b759b56a4e1b7968c9c4740c3ac469a5e34fcdfcb7de168226d7bc7388","title":"Agent 7 Issue 43","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.219178-07:00","updated_at":"2025-10-21T00:29:12.219178-07:00","source_repo":"."} +{"id":"bd-1865","content_hash":"4cb8605a80d6ecfa35f437d0d8523aebe8057474ae16f54c5c13e6e634699359","title":"Agent 7 Issue 44","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.219934-07:00","updated_at":"2025-10-21T00:29:12.219934-07:00","source_repo":"."} +{"id":"bd-1866","content_hash":"6faf1cd422f03c7eed2bf7d6bfc045ab665cb887d080b1064cccc8eac518a4cb","title":"Agent 7 Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.220677-07:00","updated_at":"2025-10-21T00:29:12.220677-07:00","source_repo":"."} +{"id":"bd-1867","content_hash":"7fd0d33f6fb8d843c9a1c6f581b21406a7a6b35b8cb0b6077982ff5d60ef5c68","title":"Agent 7 Issue 46","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.221456-07:00","updated_at":"2025-10-21T00:29:12.221456-07:00","source_repo":"."} +{"id":"bd-1868","content_hash":"39a87c559a68c82c24ee305d40197728450a73fd421567de55741e0288b1de9b","title":"Agent 7 Issue 47","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.222264-07:00","updated_at":"2025-10-21T00:29:12.222264-07:00","source_repo":"."} +{"id":"bd-1869","content_hash":"ee5cad4bce955d3ce970eb7a30f334514f1f5ce0c484c7b7ca352c0d8db2124d","title":"Agent 7 Issue 48","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.223027-07:00","updated_at":"2025-10-21T00:29:12.223027-07:00","source_repo":"."} +{"id":"bd-187","content_hash":"c5935fe248164fd75580b6ff97966d2349412a8267bf2d5acccaaaa33046f144","title":"Add compact --dry-run that shows size savings estimates","description":"When running 'bd compact --dry-run', show estimated database size reduction in KB/MB and percentage, similar to what 'du -h' would show.\n\nExample output:\n Tier 1 candidates: 15 issues\n Current size: 2.4 MB\n After compaction: ~1.7 MB (70% reduction, 0.7 MB saved)\n \nThis helps users understand impact before compacting.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-10-21T00:16:24.8188-07:00","updated_at":"2025-10-21T00:25:40.536109-07:00","source_repo":"."} +{"id":"bd-1870","content_hash":"c7d2ce4203aca00c93a114fd6ed0c308831e4012fe982d588d21e7c48536848a","title":"Agent 7 Issue 49","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.22381-07:00","updated_at":"2025-10-21T00:29:12.22381-07:00","source_repo":"."} +{"id":"bd-1871","content_hash":"70484ae9c0a41437614ea3e44b44eba6261cb37dbf944e6de1c1fc80b0dbb539","title":"Agent 7 Issue 50","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.224592-07:00","updated_at":"2025-10-21T00:29:12.224592-07:00","source_repo":"."} +{"id":"bd-1872","content_hash":"c78c9c21fa772a3c6f5de7d5820950a1be7d0c27f2b3b44b34e5cf4969238947","title":"Agent 7 Issue 51","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.225321-07:00","updated_at":"2025-10-21T00:29:12.225321-07:00","source_repo":"."} +{"id":"bd-1873","content_hash":"ee09bbe358430c1e209025f850353cbb75e36fb261def8231c52cc8ff53f96cc","title":"Agent 7 Issue 52","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.226131-07:00","updated_at":"2025-10-21T00:29:12.226131-07:00","source_repo":"."} +{"id":"bd-1874","content_hash":"095758b3ec51706e0d2ef8fd9b4053c66269d4138451b93352fa25d2f105b568","title":"Agent 7 Issue 53","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.226901-07:00","updated_at":"2025-10-21T00:29:12.226901-07:00","source_repo":"."} +{"id":"bd-1875","content_hash":"84523e4bf7b2caba32dbac54880adb91685ceb0fee0e3ba7acb6b7795e85c726","title":"Agent 7 Issue 54","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.227694-07:00","updated_at":"2025-10-21T00:29:12.227694-07:00","source_repo":"."} +{"id":"bd-1876","content_hash":"bbe0d97a5e70b301d54ea376b83edd75482f493b97683b2905a80bb96cb8029a","title":"Agent 7 Issue 55","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.228538-07:00","updated_at":"2025-10-21T00:29:12.228538-07:00","source_repo":"."} +{"id":"bd-1877","content_hash":"0864fc5d79b2d0aaecb78999a8a0b5fd99c883dec756fe1219dc1b98fd5d199d","title":"Agent 7 Issue 56","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.229331-07:00","updated_at":"2025-10-21T00:29:12.229331-07:00","source_repo":"."} +{"id":"bd-1878","content_hash":"f16daa5d65af34f59e6636b8be219dbcb6cdb1667aff855920b8a3188dcb0f01","title":"Agent 7 Issue 57","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.230134-07:00","updated_at":"2025-10-21T00:29:12.230134-07:00","source_repo":"."} +{"id":"bd-1879","content_hash":"b7de3b76a42bab47f3fbdfd86f8bf53a30a231157d72427cb51727e1d90485ae","title":"Agent 7 Issue 58","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.230925-07:00","updated_at":"2025-10-21T00:29:12.230925-07:00","source_repo":"."} +{"id":"bd-188","content_hash":"b652612dcf51dbd9fa147e134d45ea8c301c5f0fffabcc441950cb17f2735351","title":"Comment test","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:08.111915-07:00","updated_at":"2025-10-21T00:29:08.111915-07:00","source_repo":".","comments":[{"id":1,"issue_id":"bd-188","author":"tester","text":"first comment","created_at":"2025-10-21T07:29:08Z"}]} +{"id":"bd-1880","content_hash":"d3254500ae6e7ec783d06a14ee36bfb994d31b61643bcd7e34fecd9f7038d14a","title":"Agent 7 Issue 59","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.231726-07:00","updated_at":"2025-10-21T00:29:12.231726-07:00","source_repo":"."} +{"id":"bd-1881","content_hash":"9ed8a4d8d580f7f2e60e890b1a32cd902d879d153f9077541226c649388d5f54","title":"Agent 7 Issue 60","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.232519-07:00","updated_at":"2025-10-21T00:29:12.232519-07:00","source_repo":"."} +{"id":"bd-1882","content_hash":"18718390c51b7a9ea44bb7bc565d0f8dfdce438910e87b1103618bb6d74d13c5","title":"Agent 7 Issue 61","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.233292-07:00","updated_at":"2025-10-21T00:29:12.233292-07:00","source_repo":"."} +{"id":"bd-1883","content_hash":"ab776ef08784df42f0aa13cc1612827bb32d8eb1cc4b1b15474bcabd42be4f1d","title":"Agent 7 Issue 62","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.234071-07:00","updated_at":"2025-10-21T00:29:12.234071-07:00","source_repo":"."} +{"id":"bd-1884","content_hash":"d140de12741a5cd3f1e2a94ec6d43543440fc23d4c114052f82b2284d171c26a","title":"Agent 7 Issue 63","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.234813-07:00","updated_at":"2025-10-21T00:29:12.234813-07:00","source_repo":"."} +{"id":"bd-1885","content_hash":"ac40b6da2579464bfd2bf10f6edcf682b4fbd1d075d225aea074759715d76b59","title":"Agent 7 Issue 64","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.235548-07:00","updated_at":"2025-10-21T00:29:12.235548-07:00","source_repo":"."} +{"id":"bd-1886","content_hash":"d6560efbb26a9bfeb5ae48891cc5684eb5a99475bfa5fc15d3a1051fc23c6b43","title":"Agent 7 Issue 65","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.236298-07:00","updated_at":"2025-10-21T00:29:12.236298-07:00","source_repo":"."} +{"id":"bd-1887","content_hash":"05b73137897287f0e68923a8766b5ff056c429925e4a8c5ecfae83415a3104ed","title":"Agent 7 Issue 66","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.237132-07:00","updated_at":"2025-10-21T00:29:12.237132-07:00","source_repo":"."} +{"id":"bd-1888","content_hash":"2785d197bf03b8bbca986089973404b71a613a7d3e176723dc3cdd65abddf855","title":"Agent 7 Issue 67","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.238156-07:00","updated_at":"2025-10-21T00:29:12.238156-07:00","source_repo":"."} +{"id":"bd-1889","content_hash":"b8a5c2d3ce6cd14edd94f2952844b6f23d1b3996a75ca7ae3e8aad80f6d603b4","title":"Agent 7 Issue 68","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.239028-07:00","updated_at":"2025-10-21T00:29:12.239028-07:00","source_repo":"."} +{"id":"bd-189","content_hash":"3f57d2e82b62be721807c049c861e1ac0e13847bd67ef4bdcae737964abc55e4","title":"Test Issue","description":"Test description","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:09.328272-07:00","updated_at":"2025-10-21T00:29:09.328272-07:00","source_repo":"."} +{"id":"bd-1890","content_hash":"75f9b107a1292e1d09eb89348cce1b62724d9314d2fb38b543c5f1e3658ed825","title":"Agent 7 Issue 69","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.239784-07:00","updated_at":"2025-10-21T00:29:12.239784-07:00","source_repo":"."} +{"id":"bd-1891","content_hash":"9976d7b0de511891dd9f5142d261f7c3dad0f872a8361a9561d68dc7862920cb","title":"Agent 7 Issue 70","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.240551-07:00","updated_at":"2025-10-21T00:29:12.240551-07:00","source_repo":"."} +{"id":"bd-1892","content_hash":"5a9836ffbef0f9f26d3e26dd72af230f5a1adff2a45fb1c691c112165f3101ec","title":"Agent 7 Issue 71","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.241344-07:00","updated_at":"2025-10-21T00:29:12.241344-07:00","source_repo":"."} +{"id":"bd-1893","content_hash":"f3a32fbc8cd4be56595c92b60beab87bb44202cc125142ee01075609bcfefd77","title":"Agent 7 Issue 72","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.24211-07:00","updated_at":"2025-10-21T00:29:12.24211-07:00","source_repo":"."} +{"id":"bd-1894","content_hash":"d7e2dbccf1c84a8d6b1b60993fb189c00f13ee3bb01ebd68b450becf15d17b17","title":"Agent 7 Issue 73","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.24292-07:00","updated_at":"2025-10-21T00:29:12.24292-07:00","source_repo":"."} +{"id":"bd-1895","content_hash":"e718f757857bca7c35da6ebfc5827d95733b1d05e9a72418c17b75419ff373dc","title":"Agent 7 Issue 74","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.243738-07:00","updated_at":"2025-10-21T00:29:12.243738-07:00","source_repo":"."} +{"id":"bd-1896","content_hash":"15c361e8a1870f9360659990d58f355e0c71dbb579bb9e0bd23b70259ee17c4b","title":"Agent 7 Issue 75","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.244584-07:00","updated_at":"2025-10-21T00:29:12.244584-07:00","source_repo":"."} +{"id":"bd-1897","content_hash":"3c739446705ab7df99ae048f5556680982d361584fad631149122b5641440ba7","title":"Agent 7 Issue 76","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.245441-07:00","updated_at":"2025-10-21T00:29:12.245441-07:00","source_repo":"."} +{"id":"bd-1898","content_hash":"9eb49457e8bcdc4eecde7e74d75b8dbccb8c3e46ea80f9b9c68664a394285860","title":"Agent 7 Issue 77","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.246236-07:00","updated_at":"2025-10-21T00:29:12.246236-07:00","source_repo":"."} +{"id":"bd-1899","content_hash":"dc4f4221ea55e981497b548da55039d19093912845989ea1322e8aadf1a49e76","title":"Agent 7 Issue 78","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.247009-07:00","updated_at":"2025-10-21T00:29:12.247009-07:00","source_repo":"."} +{"id":"bd-19","content_hash":"206337ca40cbdff9e748e5b63557fd671ad76fbadd69373e4b1834045eb980ad","title":"Implement storage driver interface for pluggable backends","description":"Create abstraction layer for storage to support multiple backends (SQLite, Postgres, Turso, in-memory testing, etc.).\n\n**Current state:** All storage logic hardcoded to SQLite in internal/storage/sqlite/sqlite.go\n\n**Proposed design:**\n\n```go\n// internal/storage/storage.go\ntype Store interface {\n // Issue CRUD\n CreateIssue(issue *Issue) error\n GetIssue(id string) (*Issue, error)\n UpdateIssue(id string, updates *Issue) error\n DeleteIssue(id string) error\n ListIssues(filter *Filter) ([]*Issue, error)\n \n // Dependencies\n AddDependency(from, to string, depType DependencyType) error\n RemoveDependency(from, to string, depType DependencyType) error\n GetDependencies(id string) ([]*Dependency, error)\n \n // Counters, stats\n GetNextID(prefix string) (string, error)\n GetStats() (*Stats, error)\n \n Close() error\n}\n```\n\n**Benefits:**\n- Better testing (mock/in-memory stores)\n- Future flexibility (Postgres, cloud APIs, etc.)\n- Clean architecture (business logic decoupled from storage)\n- Enable Turso or other backends without refactoring everything\n\n**Implementation steps:**\n1. Define Store interface in internal/storage/storage.go\n2. Refactor SQLiteStore to implement interface\n3. Update all commands to use interface, not concrete type\n4. Add MemoryStore for testing\n5. Add driver selection via config (storage.driver = sqlite|turso|postgres)\n6. Update tests to use interface\n\n**Note:** This is valuable even without adopting Turso. Good architecture practice.\n\n**Context:** From GH issue #2 RFC evaluation. Driver interface is low-cost, high-value regardless of whether we add alternative backends.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.536265-07:00","closed_at":"2025-10-17T23:46:22.447301-07:00","source_repo":"."} +{"id":"bd-190","content_hash":"bfab57beaa26d88365a8f8ce925f531be52b0b92101ca198a4919b079bee86f4","title":"Updated Title","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:09.441108-07:00","updated_at":"2025-10-21T00:29:09.441787-07:00","source_repo":"."} +{"id":"bd-1900","content_hash":"dac9999d04de2cbbc9404c8a061dc41913a096f824608d9e649154ab3422a708","title":"Agent 7 Issue 79","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.24785-07:00","updated_at":"2025-10-21T00:29:12.24785-07:00","source_repo":"."} +{"id":"bd-1901","content_hash":"9c95dc51d62bcd22c62f5b601ffd45118f6ec32574c8e8bbe3d1b2ce31b07c63","title":"Agent 7 Issue 80","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.248729-07:00","updated_at":"2025-10-21T00:29:12.248729-07:00","source_repo":"."} +{"id":"bd-1902","content_hash":"ee0b8c4cea10691b06d6952f09bb3b445a48bc166b900cd20457c9f17c71902b","title":"Agent 7 Issue 81","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.249564-07:00","updated_at":"2025-10-21T00:29:12.249564-07:00","source_repo":"."} +{"id":"bd-1903","content_hash":"9f95544f2442305101aed98a700a943197bc51e07f18d0b878eb4e20ca35fec8","title":"Agent 7 Issue 82","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.250373-07:00","updated_at":"2025-10-21T00:29:12.250373-07:00","source_repo":"."} +{"id":"bd-1904","content_hash":"6dccb18610f4b05858cdad60df6388c47a206e40281913bd3c7e490b6f3258d0","title":"Agent 7 Issue 83","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.251189-07:00","updated_at":"2025-10-21T00:29:12.251189-07:00","source_repo":"."} +{"id":"bd-1905","content_hash":"acfa05fc3182c8ae1658a632144de9947044089983543943eb62ecc4092499dd","title":"Agent 7 Issue 84","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.251978-07:00","updated_at":"2025-10-21T00:29:12.251978-07:00","source_repo":"."} +{"id":"bd-1906","content_hash":"d3fbeb75a4bf41965943706f0d62bb630e32a625c5b0eb3fab8827db2d091866","title":"Agent 7 Issue 85","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.252797-07:00","updated_at":"2025-10-21T00:29:12.252797-07:00","source_repo":"."} +{"id":"bd-1907","content_hash":"c21b80112dbd84f8217a43303b1a41f2cfb26d0545a740582ba96cac2b003835","title":"Agent 7 Issue 86","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.253595-07:00","updated_at":"2025-10-21T00:29:12.253595-07:00","source_repo":"."} +{"id":"bd-1908","content_hash":"6c5c29ed79c559e2498338b6245ae079aa8771537a315ed33ac2876ff1848cd8","title":"Agent 7 Issue 87","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.254417-07:00","updated_at":"2025-10-21T00:29:12.254417-07:00","source_repo":"."} +{"id":"bd-1909","content_hash":"aab404d65e2e1af3433b8bc3c6200522d9988e27db13c30d9d895a7ea9cc18a7","title":"Agent 7 Issue 88","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.255279-07:00","updated_at":"2025-10-21T00:29:12.255279-07:00","source_repo":"."} +{"id":"bd-191","content_hash":"60a34b3eab4923a94a9be42785649c87e70b8be2eb25c9dabeb6088aca62f3a7","title":"Test Issue","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:09.555665-07:00","updated_at":"2025-10-21T00:29:09.555665-07:00","source_repo":"."} +{"id":"bd-1910","content_hash":"85265866dd3b13027191495405e9a5419d92eefe57ee64fe3440013b991f4d07","title":"Agent 7 Issue 89","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.256081-07:00","updated_at":"2025-10-21T00:29:12.256081-07:00","source_repo":"."} +{"id":"bd-1911","content_hash":"757c2a0d250a81a2d9b1ef48a7bb7d4d6cb8e30bf6c01c0e378ac123253e51e3","title":"Agent 7 Issue 90","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.256857-07:00","updated_at":"2025-10-21T00:29:12.256857-07:00","source_repo":"."} +{"id":"bd-1912","content_hash":"98b976092f39ed0b452f5aa1ec5eef11d783c583f7aaebcdef680e429ae4ed16","title":"Agent 7 Issue 91","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.257694-07:00","updated_at":"2025-10-21T00:29:12.257694-07:00","source_repo":"."} +{"id":"bd-1913","content_hash":"6c168d134c41d477fa88875f46b1231095ca438dc4b4980531e5923b350a1a41","title":"Agent 7 Issue 92","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.258449-07:00","updated_at":"2025-10-21T00:29:12.258449-07:00","source_repo":"."} +{"id":"bd-1914","content_hash":"59e0b3a4124bb250cf36158737fb73f07d054650f6a2e668a965ee3e5db37cbf","title":"Agent 7 Issue 93","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.259279-07:00","updated_at":"2025-10-21T00:29:12.259279-07:00","source_repo":"."} +{"id":"bd-1915","content_hash":"fa291779b10c3a3a4540501ad1bf899c5e8965af3accfc166131480d30253bda","title":"Agent 7 Issue 94","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.260073-07:00","updated_at":"2025-10-21T00:29:12.260073-07:00","source_repo":"."} +{"id":"bd-1916","content_hash":"6690b783a0a1c1c7f12d8e3f7bc812858f6192273ecf9d05e8fcb188c9fe569d","title":"Agent 7 Issue 95","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.260893-07:00","updated_at":"2025-10-21T00:29:12.260893-07:00","source_repo":"."} +{"id":"bd-1917","content_hash":"af08b2c3ab1750bf2a0b83de3adec622911a909788c5e7343461a5f8ac3f716f","title":"Agent 7 Issue 96","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.261643-07:00","updated_at":"2025-10-21T00:29:12.261643-07:00","source_repo":"."} +{"id":"bd-1918","content_hash":"ce4f38de742e73cec19b94ab47a4e40d3c735197e194a22eee2b7d7975a65862","title":"Agent 7 Issue 97","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.262436-07:00","updated_at":"2025-10-21T00:29:12.262436-07:00","source_repo":"."} +{"id":"bd-1919","content_hash":"08fbc1b9616762094228a7a82431eae7daba073f9cbdfc52f78ef7b11f5c520f","title":"Agent 7 Issue 98","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.263197-07:00","updated_at":"2025-10-21T00:29:12.263197-07:00","source_repo":"."} +{"id":"bd-192","content_hash":"60a34b3eab4923a94a9be42785649c87e70b8be2eb25c9dabeb6088aca62f3a7","title":"Test Issue","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:09.556043-07:00","updated_at":"2025-10-21T00:29:09.556043-07:00","source_repo":"."} +{"id":"bd-1920","content_hash":"b272a04a0884d384b64eaf32a9585ef038cadef88c183a603e4b031e572d6a6e","title":"Agent 7 Issue 99","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.264043-07:00","updated_at":"2025-10-21T00:29:12.264043-07:00","source_repo":"."} +{"id":"bd-1921","content_hash":"a19c0dafc0cf8b915b302850c57a653e33017aa4c57c2e6dfa3a2a10a4db3f69","title":"Agent 9 Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.911782-07:00","updated_at":"2025-10-21T00:29:11.911782-07:00","source_repo":"."} +{"id":"bd-1922","content_hash":"0da21d2f89b0f084143904ece4f6fe7b2446cf06fe1aa6b961916336b88bc2c4","title":"Agent 9 Issue 1","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.26579-07:00","updated_at":"2025-10-21T00:29:12.26579-07:00","source_repo":"."} +{"id":"bd-1923","content_hash":"c661a87cf83438f567c08f6c49c6c0757b4fb1daa42a8bc0af427e953ceb8f3f","title":"Agent 9 Issue 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.266682-07:00","updated_at":"2025-10-21T00:29:12.266682-07:00","source_repo":"."} +{"id":"bd-1924","content_hash":"e198cfc6e7c33e4e9ba0bc4145149d2e31b07d172b261d3ef20bdd6d4fc1e916","title":"Agent 9 Issue 3","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.267494-07:00","updated_at":"2025-10-21T00:29:12.267494-07:00","source_repo":"."} +{"id":"bd-1925","content_hash":"882c534cad1a12933e61d5d2532dbd3333779d7ae1922b19f8af04c6c6296793","title":"Agent 9 Issue 4","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.268337-07:00","updated_at":"2025-10-21T00:29:12.268337-07:00","source_repo":"."} +{"id":"bd-1926","content_hash":"fff9a6cff1e024d43d662e5edfb685a38a27ac434ad57d4faca376842b9337d9","title":"Agent 9 Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.26913-07:00","updated_at":"2025-10-21T00:29:12.26913-07:00","source_repo":"."} +{"id":"bd-1927","content_hash":"ee3289e4a528ceed77238f4484789b72ee7da9fceb7faed9c145bce4f55c0804","title":"Agent 9 Issue 6","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.269956-07:00","updated_at":"2025-10-21T00:29:12.269956-07:00","source_repo":"."} +{"id":"bd-1928","content_hash":"2f81ff9e997935a85ea12a1a3ecafdbce2d62deebbd4fe669af8603653065b1b","title":"Agent 9 Issue 7","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.2707-07:00","updated_at":"2025-10-21T00:29:12.2707-07:00","source_repo":"."} +{"id":"bd-1929","content_hash":"fadc785313ad3f505e3b7df292b93f47bd18b1f6c40319bcd3915ae89d69e77e","title":"Agent 9 Issue 8","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.271463-07:00","updated_at":"2025-10-21T00:29:12.271463-07:00","source_repo":"."} +{"id":"bd-193","content_hash":"60a34b3eab4923a94a9be42785649c87e70b8be2eb25c9dabeb6088aca62f3a7","title":"Test Issue","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:09.556355-07:00","updated_at":"2025-10-21T00:29:09.556355-07:00","source_repo":"."} +{"id":"bd-1930","content_hash":"8c996b8313a47149d530b6726046ed244ec76e84cd5b130fe4523ba79f5e10c6","title":"Agent 9 Issue 9","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.272251-07:00","updated_at":"2025-10-21T00:29:12.272251-07:00","source_repo":"."} +{"id":"bd-1931","content_hash":"6ecb132dca01a9b34d5f7e4fa91d114fc8c95541b690f5a320b179097e995eb1","title":"Agent 9 Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.273027-07:00","updated_at":"2025-10-21T00:29:12.273027-07:00","source_repo":"."} +{"id":"bd-1932","content_hash":"d881af31958c610466c063e7a0605771cde5adf1b93e8dea54503a508ffbb9b2","title":"Agent 2 Issue 24","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.184924-07:00","updated_at":"2025-10-21T00:29:12.184924-07:00","source_repo":"."} +{"id":"bd-1933","content_hash":"e06d01050e7c5e15389d1a24f1ad06eab16e4adfdd3b61055287a54b13f430c9","title":"Agent 2 Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.274949-07:00","updated_at":"2025-10-21T00:29:12.274949-07:00","source_repo":"."} +{"id":"bd-1934","content_hash":"637ae0e43e8bcb78a6653490353250b7779e65b2bde9395ecc5109789eea10f6","title":"Agent 2 Issue 26","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.27575-07:00","updated_at":"2025-10-21T00:29:12.27575-07:00","source_repo":"."} +{"id":"bd-1935","content_hash":"1fdfd4b8d841e7ca1de047c598a797e49ada08f823c131e4d00c495da45a8e7c","title":"Agent 2 Issue 27","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.276599-07:00","updated_at":"2025-10-21T00:29:12.276599-07:00","source_repo":"."} +{"id":"bd-1936","content_hash":"18ac02de5668a59dd03f8cc3820a8be05bdc094ad04dd3425d31de2ca9d6c755","title":"Agent 2 Issue 28","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.277468-07:00","updated_at":"2025-10-21T00:29:12.277468-07:00","source_repo":"."} +{"id":"bd-1937","content_hash":"500aab0b6d9c90dd62fb0e23df998d85ba5eec831476ac95e6b8f7b7ddf4ed4a","title":"Agent 2 Issue 29","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.278216-07:00","updated_at":"2025-10-21T00:29:12.278216-07:00","source_repo":"."} +{"id":"bd-1938","content_hash":"19ed81587a8a031645382b5c3a7e2efe99b4fb13f9a697ea57261a42634abba7","title":"Agent 2 Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.279061-07:00","updated_at":"2025-10-21T00:29:12.279061-07:00","source_repo":"."} +{"id":"bd-1939","content_hash":"0db4220f29184bbcae3665140853f550bda254f287a3a726612cb664866d4744","title":"Agent 2 Issue 31","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.279852-07:00","updated_at":"2025-10-21T00:29:12.279852-07:00","source_repo":"."} +{"id":"bd-194","content_hash":"4703548aa4c29cd37acf11d5c6d70e12a9c5d85a4213e4f773aa75880118c09b","title":"Concurrent Issue","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:09.697396-07:00","updated_at":"2025-10-21T00:29:09.697396-07:00","source_repo":"."} +{"id":"bd-1940","content_hash":"325c4d9dbbc440429b42697496177706bc1c49c4cdb7c172bd1c81ca45b29b2b","title":"Agent 2 Issue 32","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.280716-07:00","updated_at":"2025-10-21T00:29:12.280716-07:00","source_repo":"."} +{"id":"bd-1941","content_hash":"f3761e4fcbebed647f718c84067295721eb65495cd0254036d77ce86386f4b8a","title":"Agent 2 Issue 33","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.281517-07:00","updated_at":"2025-10-21T00:29:12.281517-07:00","source_repo":"."} +{"id":"bd-1942","content_hash":"8e7c152ad250c3438def1fbcfcd1da8a80ee3439d3c2399aae7bdce78aa999cf","title":"Agent 2 Issue 34","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.282326-07:00","updated_at":"2025-10-21T00:29:12.282326-07:00","source_repo":"."} +{"id":"bd-1943","content_hash":"2768ebf5e0ba09e5701b57443857d1d21a1ca9a06151ea6ce56e84526f71b519","title":"Agent 2 Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.283119-07:00","updated_at":"2025-10-21T00:29:12.283119-07:00","source_repo":"."} +{"id":"bd-1944","content_hash":"fd02060b2602e53954bcade5130c058e9fdf5bfeabdefe12377aec649142b98c","title":"Agent 2 Issue 36","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.283868-07:00","updated_at":"2025-10-21T00:29:12.283868-07:00","source_repo":"."} +{"id":"bd-1945","content_hash":"28764628096aa2eb144f51a28aafcae02beadb063b77724e324e6c996dacec24","title":"Agent 2 Issue 37","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.284666-07:00","updated_at":"2025-10-21T00:29:12.284666-07:00","source_repo":"."} +{"id":"bd-1946","content_hash":"dc972a1c988996651579d3b96cb61367ae6db2ab4bbb3e4b358303d0ea1dcefd","title":"Agent 2 Issue 38","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.285434-07:00","updated_at":"2025-10-21T00:29:12.285434-07:00","source_repo":"."} +{"id":"bd-1947","content_hash":"f4e9b37fd0c93a76e407a0e9297fccc32091aafae033c82fff90e34cbb938ca7","title":"Agent 2 Issue 39","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.286221-07:00","updated_at":"2025-10-21T00:29:12.286221-07:00","source_repo":"."} +{"id":"bd-1948","content_hash":"4965e1546d975c942183b64c8d38dee792361d6756b5ccb0faeaa09f920efb8f","title":"Agent 2 Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.286994-07:00","updated_at":"2025-10-21T00:29:12.286994-07:00","source_repo":"."} +{"id":"bd-1949","content_hash":"bcf2b714c39ec23bef3c57661a86dbbdad7af3bd565a1e8ac94b54e9293f8f02","title":"Agent 2 Issue 41","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.287781-07:00","updated_at":"2025-10-21T00:29:12.287781-07:00","source_repo":"."} +{"id":"bd-195","content_hash":"4703548aa4c29cd37acf11d5c6d70e12a9c5d85a4213e4f773aa75880118c09b","title":"Concurrent Issue","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:09.698652-07:00","updated_at":"2025-10-21T00:29:09.698652-07:00","source_repo":"."} +{"id":"bd-1950","content_hash":"58973ab7056d8b3405d0694583d4fcd6dcd5f97b4ad4edd91bcdf6e2703b73fe","title":"Agent 2 Issue 42","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.288579-07:00","updated_at":"2025-10-21T00:29:12.288579-07:00","source_repo":"."} +{"id":"bd-1951","content_hash":"6f1d4f421ab284902a787a96f90a39b21d792c29ec1a8337016e552393dec670","title":"Agent 2 Issue 43","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.289662-07:00","updated_at":"2025-10-21T00:29:12.289662-07:00","source_repo":"."} +{"id":"bd-1952","content_hash":"b53a3c56905601bbfed2acadf3f4110887e6ebcbbab7d72636074e94e0f8df48","title":"Agent 2 Issue 44","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.290496-07:00","updated_at":"2025-10-21T00:29:12.290496-07:00","source_repo":"."} +{"id":"bd-1953","content_hash":"774537f76763a17513280f150e22baeb87a2026a6ce1c50948ed6b5c18e6c0c2","title":"Agent 2 Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.29132-07:00","updated_at":"2025-10-21T00:29:12.29132-07:00","source_repo":"."} +{"id":"bd-1954","content_hash":"07445605be23dbbe88162f96d2ac1ff4a2a69c3874e0d44705473350e22d1772","title":"Agent 2 Issue 46","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.292094-07:00","updated_at":"2025-10-21T00:29:12.292094-07:00","source_repo":"."} +{"id":"bd-1955","content_hash":"3917fcb9ba0b60c81f6b09391b0cb4a4bbee739aff2e8c20f8f25dea637c5e48","title":"Agent 2 Issue 47","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.292925-07:00","updated_at":"2025-10-21T00:29:12.292925-07:00","source_repo":"."} +{"id":"bd-1956","content_hash":"12faa94be0db3f301e39b2f0deaafcfdb08201d075f6cf7f681b4eb45029c912","title":"Agent 2 Issue 48","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.293722-07:00","updated_at":"2025-10-21T00:29:12.293722-07:00","source_repo":"."} +{"id":"bd-1957","content_hash":"a35f192573e56e1560b856f1083c61f06d3c0bfd8ea0cc202df0bb53086cfcbd","title":"Agent 2 Issue 49","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.29451-07:00","updated_at":"2025-10-21T00:29:12.29451-07:00","source_repo":"."} +{"id":"bd-1958","content_hash":"dab059630f4b4e2911b7d36f713f88dc0fc78f38857252003748cbc08da826a3","title":"Agent 2 Issue 50","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.295333-07:00","updated_at":"2025-10-21T00:29:12.295333-07:00","source_repo":"."} +{"id":"bd-1959","content_hash":"7375caee34825f8d68c2c81d2b36f3cf5ee56dffa0f247100f1aa85e852c8277","title":"Agent 2 Issue 51","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.296142-07:00","updated_at":"2025-10-21T00:29:12.296142-07:00","source_repo":"."} +{"id":"bd-196","content_hash":"4703548aa4c29cd37acf11d5c6d70e12a9c5d85a4213e4f773aa75880118c09b","title":"Concurrent Issue","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:09.698845-07:00","updated_at":"2025-10-21T00:29:09.698845-07:00","source_repo":"."} +{"id":"bd-1960","content_hash":"eebaee1a86f97fd33f27f52e3b8130cdaae5701b21ac1201e0f6176dad3be68a","title":"Agent 2 Issue 52","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.296982-07:00","updated_at":"2025-10-21T00:29:12.296982-07:00","source_repo":"."} +{"id":"bd-1961","content_hash":"271715b5c153fee8fb7d236bc656617f08ff16065825f2216d6894224de32ca8","title":"Agent 2 Issue 53","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.29781-07:00","updated_at":"2025-10-21T00:29:12.29781-07:00","source_repo":"."} +{"id":"bd-1962","content_hash":"e18e07464458123d2ff5aa66aa0cb2076e99974f85ffb8d69f41026da40a4366","title":"Agent 2 Issue 54","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.298648-07:00","updated_at":"2025-10-21T00:29:12.298648-07:00","source_repo":"."} +{"id":"bd-1963","content_hash":"d8ea0a084b6114e4ce17c94c6a69902a8b696daf913a644e3aee96594c7f3d87","title":"Agent 2 Issue 55","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.299481-07:00","updated_at":"2025-10-21T00:29:12.299481-07:00","source_repo":"."} +{"id":"bd-1964","content_hash":"74e843885f67f138634d86a64abab1e9d5fd10b4e000b5f4924e7dfb73a7e20f","title":"Agent 2 Issue 56","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.30028-07:00","updated_at":"2025-10-21T00:29:12.30028-07:00","source_repo":"."} +{"id":"bd-1965","content_hash":"087d5919a03a301ca8e357ffa435828bb791d15f2ec8d0de9b39b2d78dfed83e","title":"Agent 2 Issue 57","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.301051-07:00","updated_at":"2025-10-21T00:29:12.301051-07:00","source_repo":"."} +{"id":"bd-1966","content_hash":"fa6dd2b613b67abab3dca0cba921d5bc8972dcd4755e9c98f720aa1ff6253e3c","title":"Agent 2 Issue 58","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.301881-07:00","updated_at":"2025-10-21T00:29:12.301881-07:00","source_repo":"."} +{"id":"bd-1967","content_hash":"dafa395d9aadf5afe9450fe2f42c88f4487fb677c78cd995647d731aaf3772b0","title":"Agent 2 Issue 59","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.302669-07:00","updated_at":"2025-10-21T00:29:12.302669-07:00","source_repo":"."} +{"id":"bd-1968","content_hash":"e7054d8c0fa3a2240c0f7edfc665bc1b7fc43138e0e1d5d3140a8a8e762e62b9","title":"Agent 2 Issue 60","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.303435-07:00","updated_at":"2025-10-21T00:29:12.303435-07:00","source_repo":"."} +{"id":"bd-1969","content_hash":"0f5b1a8f8fcea136d62bb273f7026f0bc1d7b2b2882b35067dc884a91ee6c238","title":"Agent 2 Issue 61","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.304237-07:00","updated_at":"2025-10-21T00:29:12.304237-07:00","source_repo":"."} +{"id":"bd-197","content_hash":"4703548aa4c29cd37acf11d5c6d70e12a9c5d85a4213e4f773aa75880118c09b","title":"Concurrent Issue","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:09.69887-07:00","updated_at":"2025-10-21T00:29:09.69887-07:00","source_repo":"."} +{"id":"bd-1970","content_hash":"c4e9a21e18e32528af1009399289403679b010c3d4681643219cfae1ecca032c","title":"Agent 2 Issue 62","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.305018-07:00","updated_at":"2025-10-21T00:29:12.305018-07:00","source_repo":"."} +{"id":"bd-1971","content_hash":"f401307427d5dff1b7a4eee2045110af8ebc2f0c4cc62c4ab0cd687d734f988d","title":"Agent 2 Issue 63","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.305872-07:00","updated_at":"2025-10-21T00:29:12.305872-07:00","source_repo":"."} +{"id":"bd-1972","content_hash":"d45503178a0a82299e128f0d6bf063e46de8a2a50ade000ec565a1aa41eb08c1","title":"Agent 2 Issue 64","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.306674-07:00","updated_at":"2025-10-21T00:29:12.306674-07:00","source_repo":"."} +{"id":"bd-1973","content_hash":"76fda91f27cc7140d592e5fdf283d3d03fcbc02de7f6060d53f608122dd55955","title":"Agent 2 Issue 65","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.307481-07:00","updated_at":"2025-10-21T00:29:12.307481-07:00","source_repo":"."} +{"id":"bd-1974","content_hash":"8b11006bad53b1c39e82b230ffeb5bd13436c38037973640db4292ed8e506cda","title":"Agent 2 Issue 66","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.308314-07:00","updated_at":"2025-10-21T00:29:12.308314-07:00","source_repo":"."} +{"id":"bd-1975","content_hash":"c3c3c9a630de68fa23819968b736f338afc29cfe0d86338639844fa60a00010a","title":"Agent 2 Issue 67","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.309152-07:00","updated_at":"2025-10-21T00:29:12.309152-07:00","source_repo":"."} +{"id":"bd-1976","content_hash":"e22be34c48bd49530f0c2b49c7c182185d7b2ad4a67eb7d6dbba2799954f450a","title":"Agent 2 Issue 68","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.310002-07:00","updated_at":"2025-10-21T00:29:12.310002-07:00","source_repo":"."} +{"id":"bd-1977","content_hash":"4c0ffacbc6d5d4659ef85605462012fe543268a1261c2235af79ba6d0cfc4cf5","title":"Agent 2 Issue 69","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.310835-07:00","updated_at":"2025-10-21T00:29:12.310835-07:00","source_repo":"."} +{"id":"bd-1978","content_hash":"32beee8b78cd38e7f963636a57b869c3a430ff19de7095b60868ee9f6b104e7c","title":"Agent 2 Issue 70","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.311642-07:00","updated_at":"2025-10-21T00:29:12.311642-07:00","source_repo":"."} +{"id":"bd-1979","content_hash":"faa70772d24453c8d49e9b5ca254421b6338fbb1860e05e0b77a7a68cf6cdd80","title":"Agent 2 Issue 71","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.31245-07:00","updated_at":"2025-10-21T00:29:12.31245-07:00","source_repo":"."} {"id":"bd-197b","content_hash":"0077ab3305b0c5a4b8cc600b1a2f4f30b64a289e4674c3b90110ac537c3f8224","title":"Set up WASM build pipeline","description":"Configure Go→WASM compilation pipeline. Child of epic bd-44d0.\n\n## Tasks\n- [ ] Create build-wasm.sh script (GOOS=js GOARCH=wasm)\n- [ ] Test basic WASM module loading in Node.js\n- [ ] Set up wasm_exec.js wrapper\n- [ ] Add WASM build to CI/CD\n- [ ] Document build process\n\n## Validation\n- bd.wasm compiles successfully\n- Can load in Node.js without errors\n- Bundle size \u003c10MB","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-02T18:33:19.407373-08:00","updated_at":"2025-11-05T00:55:48.755936-08:00","closed_at":"2025-11-05T00:55:48.755941-08:00","source_repo":".","dependencies":[{"issue_id":"bd-197b","depends_on_id":"bd-44d0","type":"blocks","created_at":"2025-11-02T18:33:19.407904-08:00","created_by":"daemon"}]} +{"id":"bd-198","content_hash":"4703548aa4c29cd37acf11d5c6d70e12a9c5d85a4213e4f773aa75880118c09b","title":"Concurrent Issue","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:09.699351-07:00","updated_at":"2025-10-21T00:29:09.699351-07:00","source_repo":"."} +{"id":"bd-1980","content_hash":"d22ff1ba6004f61d6b978c37eb0a4023d964a52a3ac72c0e4c2e559ae22bc56e","title":"Agent 2 Issue 72","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.313286-07:00","updated_at":"2025-10-21T00:29:12.313286-07:00","source_repo":"."} +{"id":"bd-1981","content_hash":"aca7103b5d8687ffbbace04d81af01d0ba9f04e9a1e76ac0741f821e0b52a593","title":"Agent 2 Issue 73","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.314107-07:00","updated_at":"2025-10-21T00:29:12.314107-07:00","source_repo":"."} +{"id":"bd-1982","content_hash":"6b6c78f63018c0c1e1865979236a6a0f338af85043c525a5071a1d3ba7981c3c","title":"Agent 2 Issue 74","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.314905-07:00","updated_at":"2025-10-21T00:29:12.314905-07:00","source_repo":"."} +{"id":"bd-1983","content_hash":"0d698565d39965bea00de479fc9424aacd4b7d375ac0a9fc903a16e026b6bcad","title":"Agent 2 Issue 75","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.315728-07:00","updated_at":"2025-10-21T00:29:12.315728-07:00","source_repo":"."} +{"id":"bd-1984","content_hash":"2379b4459c2de8e24697a8ba8a27aac626cfc5cdf220fb66129ec5d38d557b8d","title":"Agent 2 Issue 76","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.316553-07:00","updated_at":"2025-10-21T00:29:12.316553-07:00","source_repo":"."} +{"id":"bd-1985","content_hash":"8c318edbb997447120ea4a44f3f4ab05333899e1d9d9a0842948fe3ffedc502a","title":"Agent 2 Issue 77","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.317335-07:00","updated_at":"2025-10-21T00:29:12.317335-07:00","source_repo":"."} +{"id":"bd-1986","content_hash":"8847c892a7a58ef0b98006a449dda86fa278f6f6eeb1d66f31a8466039135748","title":"Agent 2 Issue 78","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.31817-07:00","updated_at":"2025-10-21T00:29:12.31817-07:00","source_repo":"."} +{"id":"bd-1987","content_hash":"e072d9fcea33a82b21eb710947ccd5b4abea9b464cd4b614d82220b088e61dea","title":"Agent 2 Issue 79","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.318952-07:00","updated_at":"2025-10-21T00:29:12.318952-07:00","source_repo":"."} +{"id":"bd-1988","content_hash":"64dcf8a79294c8a393719a49c4dde978999140b57e1ae67208398a4c5e7c5eac","title":"Agent 2 Issue 80","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.319756-07:00","updated_at":"2025-10-21T00:29:12.319756-07:00","source_repo":"."} +{"id":"bd-1989","content_hash":"a1f0f494cf37786c480bf1fd5f8da966adceee72455b2fe89b4c0f1fd8f39514","title":"Agent 2 Issue 81","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.320554-07:00","updated_at":"2025-10-21T00:29:12.320554-07:00","source_repo":"."} +{"id":"bd-199","content_hash":"c6a2df03b65c5c6ba86cbe63db74629b37e982eb00a117fc527ebe1f4844ce8a","title":"Agent 1 Issue 0","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.463552-07:00","updated_at":"2025-10-21T00:29:10.463552-07:00","source_repo":"."} +{"id":"bd-1990","content_hash":"55799d146b57df5bafa1f9763178ede08b171d46ef0e3dd128a9b15e7f948146","title":"Agent 2 Issue 82","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.321369-07:00","updated_at":"2025-10-21T00:29:12.321369-07:00","source_repo":"."} +{"id":"bd-1991","content_hash":"c678a98905c2f28216060259ba87e0bdacc2846d93043e0809b05dc66fd688cc","title":"Agent 2 Issue 83","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.322206-07:00","updated_at":"2025-10-21T00:29:12.322206-07:00","source_repo":"."} +{"id":"bd-1992","content_hash":"03ca2493aa0c10ec890efedb6f5edaeb1d5360345afd1c7fde1837d3502e477d","title":"Agent 2 Issue 84","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.323014-07:00","updated_at":"2025-10-21T00:29:12.323014-07:00","source_repo":"."} +{"id":"bd-1993","content_hash":"6c59a4d8e72a909040c8162ad1de45576142bb11e9a28d178972d15de87d15d8","title":"Agent 2 Issue 85","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.32384-07:00","updated_at":"2025-10-21T00:29:12.32384-07:00","source_repo":"."} +{"id":"bd-1994","content_hash":"44200fcb4e7f000d4d0d70444ae98e5f60c742b73282eaa6b173e782961839e0","title":"Agent 2 Issue 86","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.324659-07:00","updated_at":"2025-10-21T00:29:12.324659-07:00","source_repo":"."} +{"id":"bd-1995","content_hash":"823bf4d92d2b9fa71f998affb322b35fff06a71b42e486b938f4ee1f637ec367","title":"Agent 2 Issue 87","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.325453-07:00","updated_at":"2025-10-21T00:29:12.325453-07:00","source_repo":"."} +{"id":"bd-1996","content_hash":"4f870ec857a70965e88ae0d1a98e103176ae190d2d43d0ec6066a90f0cd0accb","title":"Agent 2 Issue 88","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.326274-07:00","updated_at":"2025-10-21T00:29:12.326274-07:00","source_repo":"."} +{"id":"bd-1997","content_hash":"43baedc60979d88878937806e99140f755ebc4463ffb3e3af3c9765f6a4f7cb3","title":"Agent 2 Issue 89","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.327078-07:00","updated_at":"2025-10-21T00:29:12.327078-07:00","source_repo":"."} +{"id":"bd-1998","content_hash":"1434cd07f1d9fe254dd04aed4a1f9f00c15054acfa95c348154d14fdf786bcbf","title":"Agent 2 Issue 90","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.327914-07:00","updated_at":"2025-10-21T00:29:12.327914-07:00","source_repo":"."} +{"id":"bd-1999","content_hash":"465169d72fd9bd2bcb61c86d0bfdab061ba3697b51dd873d654bae82712efe86","title":"Agent 2 Issue 91","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.328752-07:00","updated_at":"2025-10-21T00:29:12.328752-07:00","source_repo":"."} {"id":"bd-19er","content_hash":"1c5d51dd38f04db00b26c19f47fc7624ff878d554dea59816467ca97eb234970","title":"Create backup and restore procedures","description":"Disaster recovery procedures for Agent Mail data.\n\nAcceptance Criteria:\n- Automated daily snapshots (GCP persistent disk)\n- SQLite backup script\n- Git repository backup\n- Restore procedure documentation\n- Test restore from backup\n\nFile: deployment/agent-mail/backup.sh","status":"open","priority":3,"issue_type":"task","created_at":"2025-11-07T22:43:43.417403-08:00","updated_at":"2025-11-07T22:43:43.417403-08:00","source_repo":".","dependencies":[{"issue_id":"bd-19er","depends_on_id":"bd-z3s3","type":"blocks","created_at":"2025-11-07T23:04:28.122501-08:00","created_by":"daemon"}]} {"id":"bd-1a6j","content_hash":"16f978c58b9988457aeb1eaff37fb17f12e91325549b38be10362a08923e9a2d","title":"Test issue 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-07T19:07:12.24632-08:00","updated_at":"2025-11-07T19:07:12.24632-08:00","source_repo":"."} {"id":"bd-1b0a","content_hash":"57d0a0ca69b2c95554ed7afa95c366187f0a9b53beebe2391b7aa49a3436f470","title":"Add transaction helper to replace manual COMMIT/ROLLBACK","description":"Create tx.go with withTx helper that handles transaction lifecycle. Replace manual transaction blocks in create/insert/update paths.","notes":"Refactoring complete:\n- Created withTx() helper in util.go\n- Added ExecInTransaction() as deprecated wrapper for backward compatibility\n- Refactored all manual transaction blocks to use withTx():\n - events.go: AddComment\n - dirty.go: MarkIssuesDirty, ClearDirtyIssuesByID\n - labels.go: executeLabelOperation\n - dependencies.go: AddDependency, RemoveDependency\n - compact.go: ApplyCompaction\n- All tests pass successfully","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-01T11:41:14.823323-07:00","updated_at":"2025-11-02T12:41:45.827688-08:00","closed_at":"2025-11-02T12:41:45.827688-08:00","source_repo":"."} @@ -46,23 +1149,607 @@ {"id":"bd-1f4086c5","content_hash":"5dcfbb24a97a6277ca177bf136cf37741dbf54f798ca7e82eca631ea1b0129a1","title":"Event-driven daemon architecture","description":"Replace 5-second polling sync loop with event-driven architecture that reacts instantly to changes. Eliminates stale data issues while reducing CPU ~60%. Key components: FileWatcher (fsnotify), Debouncer (500ms), RPC mutation events, optional git hooks. Target latency: \u003c500ms (vs 5000ms). See event_driven_daemon.md for full design.","notes":"Production-ready after 3 critical fixes (commit 349b892):\n- Skip redundant imports (mtime check prevents self-trigger loops)\n- Add server.Stop() in serverErrChan case (clean shutdown)\n- Fallback ticker (60s) when watcher unavailable (ensures remote sync)\n\nReady to make default after integration test (bd-1f4086c5.1) passes.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-10-29T23:05:13.969484-07:00","updated_at":"2025-10-31T20:21:25.464736-07:00","closed_at":"2025-10-31T20:21:25.464736-07:00","source_repo":"."} {"id":"bd-1f4086c5.1","content_hash":"ba5173c61613a29786641ba06a93427de87bed65ce39dbc3c3ddd2b6900f827e","title":"Integration test: mutation to export latency","description":"Measure time from bd create to JSONL update. Verify \u003c500ms latency. Test with multiple rapid mutations to verify batching.","notes":"Test added to daemon_test.go as TestMutationToExportLatency().\n\nCurrently skipped with note that it should be enabled once bd-146 (event-driven daemon) is fully implemented and enabled by default.\n\nThe test structure is complete:\n1. Sets up test environment with fast debounce (500ms)\n2. SingleMutationLatency: measures latency from mutation to JSONL update\n3. RapidMutationBatching: verifies multiple mutations batch into single export\n\nOnce event-driven mode is default, remove the t.Skip() line and the test will validate \u003c500ms latency.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T20:49:49.103759-07:00","updated_at":"2025-10-30T17:12:58.195867-07:00","closed_at":"2025-10-29T14:19:19.808139-07:00","source_repo":".","dependencies":[{"issue_id":"bd-1f4086c5.1","depends_on_id":"bd-1f4086c5","type":"parent-child","created_at":"2025-10-29T20:49:49.107244-07:00","created_by":"import-remap"}]} {"id":"bd-1f64","content_hash":"80f404d7c0f06c7f4bc6d52ac02c1a002a95ac7cb60c6485b2ceed5e013dad75","title":"Add comprehensive tests for config.yaml issue-prefix migration","description":"The GH #209 config.yaml migration lacks test coverage:\n\nMissing tests:\n- config.SetIssuePrefix() edge cases (empty file, comments, malformed YAML)\n- config.GetIssuePrefix() with various config states\n- MigrateConfigToYAML() automatic migration logic\n- bd init writing to config.yaml instead of DB\n- bd migrate DB→config.yaml migration path\n\nTest scenarios needed:\n1. SetIssuePrefix with empty config.yaml\n2. SetIssuePrefix with existing config.yaml (preserves other settings)\n3. SetIssuePrefix with commented issue-prefix line\n4. SetIssuePrefix atomic write (temp file cleanup)\n5. GetIssuePrefix fallback behavior\n6. MigrateConfigToYAML when config.yaml missing prefix but DB has it\n7. MigrateConfigToYAML when both missing (detect from issues)\n8. MigrateConfigToYAML when config.yaml already has prefix (no-op)\n9. Integration test: fresh bd init writes to config.yaml only\n10. Integration test: upgrade from v0.21 DB migrates to config.yaml\n\nPriority 1 because this is a user-facing migration affecting all users upgrading to v0.22.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-03T22:33:43.08753-08:00","updated_at":"2025-11-03T22:46:16.306565-08:00","closed_at":"2025-11-03T22:46:16.306565-08:00","source_repo":"."} -{"id":"bd-1fkr","content_hash":"30f1913595c9b092064d1d416834c0632f2db6a18c895c3ab9970eb3cb0772e3","title":"bd-hv01: Storage backend extensibility broken by type assertion","description":"Problem: deletion_tracking.go:69-82 uses type assertion for DeleteIssue which breaks if someone adds a new storage backend.\n\nFix: Check capability before starting merge or add DeleteIssue to Storage interface.\n\nFiles: cmd/bd/deletion_tracking.go:69-82, internal/storage/storage.go","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-06T18:16:20.770662-08:00","updated_at":"2025-11-06T18:55:08.666253-08:00","closed_at":"2025-11-06T18:55:08.666253-08:00","source_repo":".","dependencies":[{"issue_id":"bd-1fkr","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T18:19:14.925961-08:00","created_by":"daemon"}]} +{"id":"bd-1fkr","content_hash":"ad8fd9d0254ef9f4ff430253234569af0a606b5d813ee98995dc5a6a2cbf897b","title":"bd-hv01: Storage backend extensibility broken by type assertion","description":"Problem: deletion_tracking.go:69-82 uses type assertion for DeleteIssue which breaks if someone adds a new storage backend.\n\nFix: Check capability before starting merge or add DeleteIssue to Storage interface.\n\nFiles: cmd/bd/deletion_tracking.go:69-82, internal/storage/storage.go","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-06T18:16:20.770662-08:00","updated_at":"2025-11-06T18:55:08.666253-08:00","closed_at":"2025-11-06T18:55:08.666253-08:00","source_repo":".","dependencies":[{"issue_id":"bd-1fkr","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T18:19:14.925961-08:00","created_by":"daemon"}]} {"id":"bd-1ls","content_hash":"af79708476d560abaac3cbe9c537bcf43c2100dcb1d676954ea604486f75d199","title":"Override test","description":"## Overview\n\n[Describe the high-level goal and scope of this epic]\n\n## Success Criteria\n\n- [ ] Criteria 1\n- [ ] Criteria 2\n- [ ] Criteria 3\n\n## Background\n\n[Provide context and motivation]\n\n## Scope\n\n**In Scope:**\n- Item 1\n- Item 2\n\n**Out of Scope:**\n- Item 1\n- Item 2\n","design":"## Architecture\n\n[Describe the overall architecture and approach]\n\n## Components\n\n- Component 1: [description]\n- Component 2: [description]\n\n## Dependencies\n\n[List external dependencies or constraints]\n","acceptance_criteria":"- [ ] All child issues are completed\n- [ ] Integration tests pass\n- [ ] Documentation is updated\n- [ ] Code review completed\n","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-03T20:15:10.01471-08:00","updated_at":"2025-11-03T22:07:10.946574-08:00","closed_at":"2025-11-03T22:07:10.946574-08:00","source_repo":".","labels":["epic"]} {"id":"bd-1mzt","content_hash":"3dffe5c0934f51c6fa526a952a975e808665d80e7c69dffbe910aabc87d32a7b","title":"Client self-heal: remove stale pid when lock free + socket missing","description":"When client detects:\n- Socket is missing AND\n- tryDaemonLock shows lock NOT held\n\nThen automatically:\n1. Remove stale daemon.pid file\n2. Optionally auto-start daemon (behind BEADS_AUTO_START_DAEMON=1 env var)\n\nThis prevents stale artifacts from accumulating after daemon crashes.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-07T16:42:12.75205-08:00","updated_at":"2025-11-07T22:07:17.342845-08:00","closed_at":"2025-11-07T21:21:15.317562-08:00","source_repo":".","dependencies":[{"issue_id":"bd-1mzt","depends_on_id":"bd-ndyz","type":"discovered-from","created_at":"2025-11-07T16:42:12.753099-08:00","created_by":"daemon"}]} -{"id":"bd-1nrn","content_hash":"117d306f3f7b2c0d33728836d897bd077c03d07bd3d06547f7ec1593e8f5d193","title":"Issue 2 to reopen","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T19:04:20.157016-08:00","updated_at":"2025-11-08T00:20:30.2606-08:00","closed_at":"2025-11-08T00:20:30.2606-08:00","source_repo":"."} +{"id":"bd-1nrn","content_hash":"8aebd77c19946d60143f7b7f699d1bcf6e8792c347f6d7c41a2ffbba744bfa8e","title":"Issue 2 to reopen","description":"","status":"open","priority":1,"issue_type":"task","created_at":"2025-11-07T19:04:20.157016-08:00","updated_at":"2025-11-07T19:04:20.225059-08:00","source_repo":"."} {"id":"bd-1pj6","content_hash":"de1c1195b29d9a70c88b5f2b05ca1c3497469d1802f9c0be415d5a44b0575deb","title":"Proposal: Custom status states via config","description":"Proposal to add 'custom status states' via `bd config`.\nUsers could define an optional issue status enum (e.g., awaiting_review, review_in_progress) in the config.\nThis would enable multi-step pipelines to process issues where each step correlates to a specific status.\n\nExamples:\n- awaiting_verification\n- awaiting_docs\n- awaiting_testing\n","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-20T18:55:48.670499-05:00","updated_at":"2025-11-20T18:55:48.670499-05:00","source_repo":"."} {"id":"bd-1vup","content_hash":"99df92e0d2e6f2998d9ef52c60ae1db55a2e52b84c3e935bf371517e5154ad77","title":"Test FK constraint via close","description":"","status":"closed","priority":4,"issue_type":"task","created_at":"2025-11-07T15:06:10.324045-08:00","updated_at":"2025-11-07T15:06:14.289835-08:00","closed_at":"2025-11-07T15:06:14.289835-08:00","source_repo":"."} {"id":"bd-1vv","content_hash":"1db907ddb55edaf7a4c06a566c4e1b8244fcd9ba5d7e2fca4d5c053e424ac515","title":"Add WebSocket support","description":"## Feature Request\n\n[Describe the desired feature]\n\n## Motivation\n\n[Why is this feature needed? What problem does it solve?]\n\n## Use Cases\n\n1. **Use Case 1**: [description]\n2. **Use Case 2**: [description]\n\n## Proposed Solution\n\n[High-level approach to implementing this feature]\n\n## Alternatives Considered\n\n- **Alternative 1**: [description and why not chosen]\n- **Alternative 2**: [description and why not chosen]\n","design":"## Technical Design\n\n[Detailed technical approach]\n\n## API Changes\n\n[New commands, flags, or APIs]\n\n## Data Model Changes\n\n[Database schema changes if any]\n\n## Implementation Notes\n\n- Note 1\n- Note 2\n\n## Testing Strategy\n\n- Unit tests: [scope]\n- Integration tests: [scope]\n- Manual testing: [steps]\n","acceptance_criteria":"- [ ] Feature implements all described use cases\n- [ ] All tests pass\n- [ ] Documentation updated (README, commands)\n- [ ] Examples added if applicable\n- [ ] No performance regressions\n","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-03T19:56:41.271215-08:00","updated_at":"2025-11-03T19:56:41.271215-08:00","source_repo":".","labels":["feature"]} -{"id":"bd-1yi5","content_hash":"f79a57405ce5e0b0a2edba770937fb86df0b955b568bc066e0673845e33e40d5","title":"Use -short flag in CI for PR checks","description":"Update CI configuration to use -short flag for PR checks, run full tests nightly.\n\nThe slow tests already support testing.Short() and will be skipped.\n\nExpected savings: ~20 seconds for PR checks (fast tests only)\n\nImplementation:\n- Update .github/workflows/ci.yml to add -short flag for PR tests\n- Create/update nightly workflow for full test runs\n- Update README/docs about test strategy\n\nFile: .github/workflows/ci.yml:30","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-04T01:24:17.279618-08:00","updated_at":"2025-11-04T10:25:10.616119-08:00","closed_at":"2025-11-04T10:25:10.616119-08:00","source_repo":".","dependencies":[{"issue_id":"bd-1yi5","depends_on_id":"bd-l5gq","type":"blocks","created_at":"2025-11-04T01:24:17.280453-08:00","created_by":"daemon"}]} +{"id":"bd-1yi5","content_hash":"11044802d32a77f8ca574ca5902939bcc7e252880437bea7281aaf445db8db84","title":"Use -short flag in CI for PR checks","description":"Update CI configuration to use -short flag for PR checks, run full tests nightly.\n\nThe slow tests already support testing.Short() and will be skipped.\n\nExpected savings: ~20 seconds for PR checks (fast tests only)\n\nImplementation:\n- Update .github/workflows/ci.yml to add -short flag for PR tests\n- Create/update nightly workflow for full test runs\n- Update README/docs about test strategy\n\nFile: .github/workflows/ci.yml:30","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-04T01:24:17.279618-08:00","updated_at":"2025-11-04T10:25:10.616119-08:00","closed_at":"2025-11-04T10:25:10.616119-08:00","source_repo":".","dependencies":[{"issue_id":"bd-1yi5","depends_on_id":"bd-l5gq","type":"blocks","created_at":"2025-11-04T01:24:17.280453-08:00","created_by":"daemon"}]} +{"id":"bd-2","content_hash":"da2b1285306fe0d6c3a979b64166db443179b3eb4da82d532ce864677970c99c","title":"Sub-task under A","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.536442-07:00","closed_at":"2025-10-16T10:07:34.130096-07:00","source_repo":"."} +{"id":"bd-20","content_hash":"0db9fc40f6055fc3b737c0c4756de99826d5c8c7358a9588d7f23d8cfaebef1d","title":"Investigate auto-export debounce not triggering","description":"Auto-export to JSONL did not trigger automatically after creating bd-33 and bd-17. Had to manually run 'bd export' to sync.\n\n**Expected behavior:** Auto-export should trigger ~5 seconds after CRUD operations (per CLAUDE.md documentation).\n\n**Actual behavior:** Issues bd-33 and bd-17 were created but JSONL was not updated until manual 'bd export' was run.\n\n**Investigation needed:**\n1. Check if auto-flush goroutine is running\n2. Verify debounce timer is being triggered on CreateIssue()\n3. Check for errors/panics in background export\n4. Verify auto-flush is enabled by default\n5. Check if there's a race condition with shutdown\n\n**Impact:** HIGH - Data loss risk if users create issues and don't realize they haven't synced to Git.\n\n**Testing:**\n```bash\n# Create issue and wait 10 seconds\nbd create \"Test\" -p 4\nsleep 10\ngrep \"Test\" .beads/issues.jsonl # Should find it\n```\n\n**Workaround:** Manually run 'bd export' after CRUD operations.\n\n**Context:** Discovered during GH issue #2 RFC evaluation while creating bd-33 and bd-17.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.53661-07:00","closed_at":"2025-10-20T16:02:06.049244-07:00","source_repo":"."} +{"id":"bd-200","content_hash":"333d7807b8871688309d722c4f516b9b3234cde2078dd0f4756bafbdcda12916","title":"Agent 1 Issue 1","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.464706-07:00","updated_at":"2025-10-21T00:29:10.464706-07:00","source_repo":"."} +{"id":"bd-2000","content_hash":"b33a774a6d94a0989c0bb244cf816b91846f406c248dfe6e03eb94ceb95ab4ba","title":"Agent 2 Issue 92","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.329555-07:00","updated_at":"2025-10-21T00:29:12.329555-07:00","source_repo":"."} +{"id":"bd-2001","content_hash":"af19665ba20cc1c5723033e0883302680bbfc8342264b323b635f7abf3536290","title":"Agent 2 Issue 93","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.330368-07:00","updated_at":"2025-10-21T00:29:12.330368-07:00","source_repo":"."} +{"id":"bd-2002","content_hash":"108ed5019e040f65192c3f6bd4fba3aa16d47c5449550cd4caacfb29c8fba236","title":"Agent 2 Issue 94","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.331152-07:00","updated_at":"2025-10-21T00:29:12.331152-07:00","source_repo":"."} +{"id":"bd-2003","content_hash":"c6878a7232ce28208f359a8066395c00a76c38e9321a62695989340204ee6c23","title":"Agent 2 Issue 95","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.332-07:00","updated_at":"2025-10-21T00:29:12.332-07:00","source_repo":"."} +{"id":"bd-2004","content_hash":"248aa3b2e07a986637d4c2611d81acd3ee6605bc738c4b7f5f2a368700e46c22","title":"Agent 2 Issue 96","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.332854-07:00","updated_at":"2025-10-21T00:29:12.332854-07:00","source_repo":"."} +{"id":"bd-2005","content_hash":"797399db7cb9eb73195a8ac7c3b0757c0f34e61ffcfcd19c94e7ac58b7ccbd15","title":"Agent 2 Issue 97","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.333672-07:00","updated_at":"2025-10-21T00:29:12.333672-07:00","source_repo":"."} +{"id":"bd-2006","content_hash":"9780fd6b54d0101ee5c54062b4002e7f94e4cf6125bc93ba92276f1271d8b5a7","title":"Agent 2 Issue 98","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.334454-07:00","updated_at":"2025-10-21T00:29:12.334454-07:00","source_repo":"."} +{"id":"bd-2007","content_hash":"39d02092df13bdb299257e8bbd35eeb7d9ab5433f24456da6edccc57277cc00b","title":"Agent 2 Issue 99","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.335245-07:00","updated_at":"2025-10-21T00:29:12.335245-07:00","source_repo":"."} +{"id":"bd-2008","content_hash":"36607ed982d191e9df6a43bfe520c34a51408be0180c9b973fba5886f0b1a862","title":"Agent 0 Issue 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.908763-07:00","updated_at":"2025-10-21T00:29:11.908763-07:00","source_repo":"."} +{"id":"bd-2009","content_hash":"3fbb9071a8e853665b0b77d4d90e205dc577c81941f60d643728a8ea7a7eecc0","title":"Agent 0 Issue 3","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.336971-07:00","updated_at":"2025-10-21T00:29:12.336971-07:00","source_repo":"."} +{"id":"bd-201","content_hash":"79d41c042a363c08f0e40cea01a801aec27017644d8ddede509d659e52e22d98","title":"Agent 3 Issue 0","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.4658-07:00","updated_at":"2025-10-21T00:29:10.4658-07:00","source_repo":"."} +{"id":"bd-2010","content_hash":"2b3dbf5591d1fda1b3cac1105a6f934f906f19b514308d2e6125d3b2f52ca0ee","title":"Agent 0 Issue 4","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.33785-07:00","updated_at":"2025-10-21T00:29:12.33785-07:00","source_repo":"."} +{"id":"bd-2011","content_hash":"b0c44a5af4425a5a3e25fdf6d85a96023aae423d1c3603e084d80b95659d65bf","title":"Agent 0 Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.33867-07:00","updated_at":"2025-10-21T00:29:12.33867-07:00","source_repo":"."} +{"id":"bd-2012","content_hash":"42ba79b8c2eedf545b13b6ea5c0e54c5f541c4360c3bde07611400c8c1885cc4","title":"Agent 0 Issue 6","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.339471-07:00","updated_at":"2025-10-21T00:29:12.339471-07:00","source_repo":"."} +{"id":"bd-2013","content_hash":"2a888225ad730ad73947f8b40d331b70b331b0d205ae47e8898805ff71fd7961","title":"Agent 0 Issue 7","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.340286-07:00","updated_at":"2025-10-21T00:29:12.340286-07:00","source_repo":"."} +{"id":"bd-2014","content_hash":"70c2d04ca1b8c62769926b27497f6b5ae7bd7582bcd442a21f754001807cd1c7","title":"Agent 0 Issue 8","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.3411-07:00","updated_at":"2025-10-21T00:29:12.3411-07:00","source_repo":"."} +{"id":"bd-2015","content_hash":"a8fa81ac2c5121ec7b045413e6a52993d55798e7d95da8fcb45c4a2ddbd4587e","title":"Agent 0 Issue 9","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.342163-07:00","updated_at":"2025-10-21T00:29:12.342163-07:00","source_repo":"."} +{"id":"bd-2016","content_hash":"7091d22870d4d2c9703fea8b838c68604b385f998d58b83e7bc505fe05253c0d","title":"Agent 0 Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.342993-07:00","updated_at":"2025-10-21T00:29:12.342993-07:00","source_repo":"."} +{"id":"bd-2017","content_hash":"aca85444ab57e601ef11ff702e153eec3ef9380414f5bed393348a54e5b7bd19","title":"Agent 0 Issue 11","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.343835-07:00","updated_at":"2025-10-21T00:29:12.343835-07:00","source_repo":"."} +{"id":"bd-2018","content_hash":"50719d92ed4b1f5e39c10d894eb38186a1494bdee21b454290931d4930b7174e","title":"Agent 0 Issue 12","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.344657-07:00","updated_at":"2025-10-21T00:29:12.344657-07:00","source_repo":"."} +{"id":"bd-2019","content_hash":"91a575da5cb0db4b619ab7767fd0be571fb829151ffbe97c7d4632af0a5a137b","title":"Agent 0 Issue 13","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.345548-07:00","updated_at":"2025-10-21T00:29:12.345548-07:00","source_repo":"."} +{"id":"bd-202","content_hash":"c2c466cb7a49ed0684e40a36239a8a58046574636226ba4b97a3e20609f418a7","title":"Agent 5 Issue 0","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.465912-07:00","updated_at":"2025-10-21T00:29:10.465912-07:00","source_repo":"."} +{"id":"bd-2020","content_hash":"ad9e97b9f4e3abe94f18fa7d71ce07273b23cea57f1203cca3b0ab5db4465060","title":"Agent 0 Issue 14","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.346386-07:00","updated_at":"2025-10-21T00:29:12.346386-07:00","source_repo":"."} +{"id":"bd-2021","content_hash":"4d5055b42f9019d5ecceee358f33ae03320889bbbbb538dbcf7cab93d4ebf57b","title":"Agent 0 Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.347218-07:00","updated_at":"2025-10-21T00:29:12.347218-07:00","source_repo":"."} +{"id":"bd-2022","content_hash":"2d8fd3e4c53569c08d6bbe562f01f07902a82250f2e0027d6eda2a8ec4b93bd6","title":"Agent 0 Issue 16","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.348081-07:00","updated_at":"2025-10-21T00:29:12.348081-07:00","source_repo":"."} +{"id":"bd-2023","content_hash":"ff5ea501704ae5bd4c32b0ac8eeaf7e03bb465b2c0a8556f1d4b669da210ac9c","title":"Agent 0 Issue 17","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.348954-07:00","updated_at":"2025-10-21T00:29:12.348954-07:00","source_repo":"."} +{"id":"bd-2024","content_hash":"3a8c64111056c45e77bf135870ca3c63c3400dffc902568540463a8843d9eacc","title":"Agent 0 Issue 18","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.349808-07:00","updated_at":"2025-10-21T00:29:12.349808-07:00","source_repo":"."} +{"id":"bd-2025","content_hash":"58f4cb5c86e3cf9e3940af290e3d031ed0a1cfbba7cee9dcfc23d0273e3b37da","title":"Agent 0 Issue 19","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.350651-07:00","updated_at":"2025-10-21T00:29:12.350651-07:00","source_repo":"."} +{"id":"bd-2026","content_hash":"942de202297c3a133828b7f3fc12422223df5072ad2600ac11040e6a936cd6bb","title":"Agent 0 Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.351483-07:00","updated_at":"2025-10-21T00:29:12.351483-07:00","source_repo":"."} +{"id":"bd-2027","content_hash":"3870f7ef7bb3536b5ba45e3fcfa0c0428c050825defe07db0bd81c566be6b26a","title":"Agent 0 Issue 21","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.352333-07:00","updated_at":"2025-10-21T00:29:12.352333-07:00","source_repo":"."} +{"id":"bd-2028","content_hash":"0032957a5a5c265507ab130a8d7f8cc266849e264bbcb9c6f0168e0f17982d5e","title":"Agent 0 Issue 22","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.353157-07:00","updated_at":"2025-10-21T00:29:12.353157-07:00","source_repo":"."} +{"id":"bd-2029","content_hash":"3a90a87081df93a8f4c751c0e4beee70388f5d5a72c7cffb8de05ba76d9fc94a","title":"Agent 0 Issue 23","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.354026-07:00","updated_at":"2025-10-21T00:29:12.354026-07:00","source_repo":"."} +{"id":"bd-203","content_hash":"f834407d56c5c9a10d678bbeebdb0855bfa59fad69177cfcc37bbed769ebf085","title":"Agent 5 Issue 1","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.466588-07:00","updated_at":"2025-10-21T00:29:10.466588-07:00","source_repo":"."} +{"id":"bd-2030","content_hash":"0bf127bf8d018d9b35d75100961d1ff333e045ce578d534596651cf66cc99e9a","title":"Agent 0 Issue 24","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.354875-07:00","updated_at":"2025-10-21T00:29:12.354875-07:00","source_repo":"."} +{"id":"bd-2031","content_hash":"3268133565847ba4759545259278a7c2ac3158bae073ba96907bb947a74eee73","title":"Agent 0 Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.355726-07:00","updated_at":"2025-10-21T00:29:12.355726-07:00","source_repo":"."} +{"id":"bd-2032","content_hash":"2dba98b4d9bdaeb455175412ccd33313411e3fb1c43c1531f99bebfffb19777d","title":"Agent 0 Issue 26","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.356574-07:00","updated_at":"2025-10-21T00:29:12.356574-07:00","source_repo":"."} +{"id":"bd-2033","content_hash":"e57f4b043e9c09f3eed3c72a0dca88c2c019d378e70efaa92e5a720088922b6c","title":"Agent 0 Issue 27","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.35743-07:00","updated_at":"2025-10-21T00:29:12.35743-07:00","source_repo":"."} +{"id":"bd-2034","content_hash":"79acc2b154e940d2f5ff2d320697628656117af69cad3e09a1a6fe9aa1f493c6","title":"Agent 0 Issue 28","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.358273-07:00","updated_at":"2025-10-21T00:29:12.358273-07:00","source_repo":"."} +{"id":"bd-2035","content_hash":"c25c22293d8dbf0069b7ce3238f95c6b673075e838991787441af53c6950c21d","title":"Agent 0 Issue 29","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.3591-07:00","updated_at":"2025-10-21T00:29:12.3591-07:00","source_repo":"."} +{"id":"bd-2036","content_hash":"695bd1c5f7064e74accdddc72440ec07af606e30bedc200b7bca45237b130014","title":"Agent 0 Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.359941-07:00","updated_at":"2025-10-21T00:29:12.359941-07:00","source_repo":"."} +{"id":"bd-2037","content_hash":"096a7c8dbc14cc0813baaea381d12b6afa7cd9a99c7ce7ec878dcdb822534dc4","title":"Agent 0 Issue 31","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.360793-07:00","updated_at":"2025-10-21T00:29:12.360793-07:00","source_repo":"."} +{"id":"bd-2038","content_hash":"b9c9f41c64f5ffb95f2c0e9048a7309629ab48a01ece6ffad79f3a5ca174b8ff","title":"Agent 0 Issue 32","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.361629-07:00","updated_at":"2025-10-21T00:29:12.361629-07:00","source_repo":"."} +{"id":"bd-2039","content_hash":"d6083e8aab38209bf5bf8a2fabf5431972d09c087e3825b5ac26db880aa90c77","title":"Agent 0 Issue 33","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.362484-07:00","updated_at":"2025-10-21T00:29:12.362484-07:00","source_repo":"."} +{"id":"bd-204","content_hash":"9474ce096cb8c29941c2d5b283a7de2a32febc2654b0bdad552792289a5895e2","title":"Agent 5 Issue 2","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.466935-07:00","updated_at":"2025-10-21T00:29:10.466935-07:00","source_repo":"."} +{"id":"bd-2040","content_hash":"a74cce3a9469a13094dbab3c5e5d569a128d4c107a42cc5362460993164197b8","title":"Agent 0 Issue 34","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.363346-07:00","updated_at":"2025-10-21T00:29:12.363346-07:00","source_repo":"."} +{"id":"bd-2041","content_hash":"118505ca4e01de889c90a757f1c04b4818ec5644e227942cdac883fa895e527a","title":"Agent 0 Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.364195-07:00","updated_at":"2025-10-21T00:29:12.364195-07:00","source_repo":"."} +{"id":"bd-2042","content_hash":"1c3347410509e0a90dc2b010e709fe403bd4deac02ac486d79371802727935ce","title":"Agent 0 Issue 36","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.365058-07:00","updated_at":"2025-10-21T00:29:12.365058-07:00","source_repo":"."} +{"id":"bd-2043","content_hash":"6d117f5151400182200c04e5055521e6c6621eeae64a0a8e27b764a163c7c8f5","title":"Agent 0 Issue 37","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.365927-07:00","updated_at":"2025-10-21T00:29:12.365927-07:00","source_repo":"."} +{"id":"bd-2044","content_hash":"c9fb38fa8cf232dcd168d42b87dc0f1e0cc7f94f3216f58f801a7dd3a67661db","title":"Agent 0 Issue 38","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.366764-07:00","updated_at":"2025-10-21T00:29:12.366764-07:00","source_repo":"."} +{"id":"bd-2045","content_hash":"e708c40bdf38200c18dac9b6cf11b05d105480e3c5176def41a788d8a0c45729","title":"Agent 0 Issue 39","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.367629-07:00","updated_at":"2025-10-21T00:29:12.367629-07:00","source_repo":"."} +{"id":"bd-2046","content_hash":"9b1b08bc4ab2cdd39b31e3288bb5521568340a93efe3cf629b545ce2072e8eb2","title":"Agent 0 Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.368512-07:00","updated_at":"2025-10-21T00:29:12.368512-07:00","source_repo":"."} +{"id":"bd-2047","content_hash":"f5c31f5f4f06295dc09e0597b4d4eb4b8ce1910a9fb4a2af58781d282314ac6a","title":"Agent 0 Issue 41","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.369388-07:00","updated_at":"2025-10-21T00:29:12.369388-07:00","source_repo":"."} +{"id":"bd-2048","content_hash":"28610858f242f89def69d5d5af4f58b1d3254910a6a6c0c4ea59c9ea36fd95cc","title":"Agent 0 Issue 42","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.370222-07:00","updated_at":"2025-10-21T00:29:12.370222-07:00","source_repo":"."} +{"id":"bd-2049","content_hash":"4c373a7026a52b7661e93ab947826cf4695f8f1a57f2df849acecbd1e09df473","title":"Agent 0 Issue 43","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.371056-07:00","updated_at":"2025-10-21T00:29:12.371056-07:00","source_repo":"."} +{"id":"bd-205","content_hash":"404e99f91f1f436224da282ce294670f6d98d328b1b48ed5e4a55972241f4fd6","title":"Agent 1 Issue 2","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.465836-07:00","updated_at":"2025-10-21T00:29:10.465836-07:00","source_repo":"."} +{"id":"bd-2050","content_hash":"90186ecd5d1ff107f518ac95b9dc0ed4a964657f3b8bac9a25175c5c655404dc","title":"Agent 0 Issue 44","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.371895-07:00","updated_at":"2025-10-21T00:29:12.371895-07:00","source_repo":"."} +{"id":"bd-2051","content_hash":"b140b6befc3b5436ee9ade8fcbea0c0fdf985de2b114ef6f3ebf16492409716e","title":"Agent 0 Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.372743-07:00","updated_at":"2025-10-21T00:29:12.372743-07:00","source_repo":"."} +{"id":"bd-2052","content_hash":"ec7b61f15826cc8ad3b8c1227b438b8b11ceeb3723154ffb8ebaba553073a523","title":"Agent 0 Issue 46","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.3736-07:00","updated_at":"2025-10-21T00:29:12.3736-07:00","source_repo":"."} +{"id":"bd-2053","content_hash":"726a9723f40591957e5eef0a98895526e1d7d778bd588c07f598fe7636c374a8","title":"Agent 0 Issue 47","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.374436-07:00","updated_at":"2025-10-21T00:29:12.374436-07:00","source_repo":"."} +{"id":"bd-2054","content_hash":"341492f6bd40efcb2a2ad18003c22d91c256c41be4e9bdabe656408d3a85f809","title":"Agent 0 Issue 48","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.375334-07:00","updated_at":"2025-10-21T00:29:12.375334-07:00","source_repo":"."} +{"id":"bd-2055","content_hash":"844407cfcd63313925707dc1eba139c5ba6d5153e548a252df0c256d083a6d07","title":"Agent 9 Issue 11","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.273912-07:00","updated_at":"2025-10-21T00:29:12.273912-07:00","source_repo":"."} +{"id":"bd-2056","content_hash":"36fd7f7b99966d18e70d838b2de5c14615b509a0baf82fe7fa8b46ab0f0bd571","title":"Agent 0 Issue 49","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.376316-07:00","updated_at":"2025-10-21T00:29:12.376316-07:00","source_repo":"."} +{"id":"bd-2057","content_hash":"78ee3e9befe74a11d5230a318d808fa20b502fea768ec453b002ddb87da5ff45","title":"Agent 0 Issue 50","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.378288-07:00","updated_at":"2025-10-21T00:29:12.378288-07:00","source_repo":"."} +{"id":"bd-2058","content_hash":"3a25239a7b2c495df5336765385a9f448bf3ee2e61d3b565f41326ec4ce58019","title":"Agent 0 Issue 51","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.379149-07:00","updated_at":"2025-10-21T00:29:12.379149-07:00","source_repo":"."} +{"id":"bd-2059","content_hash":"fe674c84d3d11032f1529d0466131c76362c56b82dd2559907aa9569d2adefda","title":"Agent 0 Issue 52","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.380022-07:00","updated_at":"2025-10-21T00:29:12.380022-07:00","source_repo":"."} +{"id":"bd-206","content_hash":"5b724f1e22f628d61b3cf78e07c72aaf6d0c37ce0355b359e75ee122083b2797","title":"Agent 1 Issue 3","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.470425-07:00","updated_at":"2025-10-21T00:29:10.470425-07:00","source_repo":"."} +{"id":"bd-2060","content_hash":"af2b313223c55c65eaea56551d566a4f94d97b8540b5dfb699ce6f9a12fd77c3","title":"Agent 0 Issue 53","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.380827-07:00","updated_at":"2025-10-21T00:29:12.380827-07:00","source_repo":"."} +{"id":"bd-2061","content_hash":"1484efb8e5760d2fd504eb06882c2b7442498697ac9a05fe3f341c242a422488","title":"Agent 0 Issue 54","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.381726-07:00","updated_at":"2025-10-21T00:29:12.381726-07:00","source_repo":"."} +{"id":"bd-2062","content_hash":"cfc2ad728041790b7fa57cd6d6409d76c86f93a7118119427db3dab4a25b2243","title":"Agent 0 Issue 55","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.382569-07:00","updated_at":"2025-10-21T00:29:12.382569-07:00","source_repo":"."} +{"id":"bd-2063","content_hash":"1ae23cb1db6887c387121b3987c05e4a5c6b7bf9537ac32ca1dfb73e393b8a41","title":"Agent 0 Issue 56","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.383417-07:00","updated_at":"2025-10-21T00:29:12.383417-07:00","source_repo":"."} +{"id":"bd-2064","content_hash":"4690c89f6599a497a5b546ef4cbb77ac37d41c311414f371a4853da3a69143f5","title":"Agent 0 Issue 57","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.384305-07:00","updated_at":"2025-10-21T00:29:12.384305-07:00","source_repo":"."} +{"id":"bd-2065","content_hash":"594a3f37baa86c1d3cb6dbce452bd97787bc63f9cd62c1699634eddd8b3eb688","title":"Agent 0 Issue 58","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.385161-07:00","updated_at":"2025-10-21T00:29:12.385161-07:00","source_repo":"."} +{"id":"bd-2066","content_hash":"ad4142898abfe5116554aaaf237797770b3076d0cd23c76f0fb45db1fc18f2c8","title":"Agent 0 Issue 59","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.385962-07:00","updated_at":"2025-10-21T00:29:12.385962-07:00","source_repo":"."} +{"id":"bd-2067","content_hash":"3b542d2d3e10e1b9af304f7e967a1a74932d7f2115af0dbe73b4c3f8e85519ef","title":"Agent 0 Issue 60","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.386831-07:00","updated_at":"2025-10-21T00:29:12.386831-07:00","source_repo":"."} +{"id":"bd-2068","content_hash":"f0fa9940b496254faec684391bfbc44328cbb51b660ec5c642ab7cf27a33208f","title":"Agent 0 Issue 61","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.387624-07:00","updated_at":"2025-10-21T00:29:12.387624-07:00","source_repo":"."} +{"id":"bd-2069","content_hash":"b75a0a6dbc9948300f60a411db050c148900d638b05a4580cff5a44b9bcfef80","title":"Agent 0 Issue 62","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.38843-07:00","updated_at":"2025-10-21T00:29:12.38843-07:00","source_repo":"."} +{"id":"bd-207","content_hash":"3745fe59adf70bfdde24b122fe054e02845a9e61be9902b220d0829804db6139","title":"Agent 1 Issue 4","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.470786-07:00","updated_at":"2025-10-21T00:29:10.470786-07:00","source_repo":"."} +{"id":"bd-2070","content_hash":"1ce7ad7f2bb52654ba4f4dc277b0d39d0a24ec1187168766c4b9f28faf7b3fe5","title":"Agent 0 Issue 63","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.389326-07:00","updated_at":"2025-10-21T00:29:12.389326-07:00","source_repo":"."} +{"id":"bd-2071","content_hash":"0f524ac8a890fc1ad893c8d57b241b38303a6ebd2b0db7dd4e5c1cadfa6988d2","title":"Agent 0 Issue 64","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.390177-07:00","updated_at":"2025-10-21T00:29:12.390177-07:00","source_repo":"."} +{"id":"bd-2072","content_hash":"2ec808b0a73e83f356899d89c21f48b2016fbeba9f196a1ef3289849b737def0","title":"Agent 0 Issue 65","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.390991-07:00","updated_at":"2025-10-21T00:29:12.390991-07:00","source_repo":"."} +{"id":"bd-2073","content_hash":"3f37ac674ace3c4034d9cb2ee6ffbe55ed7e3bdf7e989f1e26be0523577d0deb","title":"Agent 0 Issue 66","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.391826-07:00","updated_at":"2025-10-21T00:29:12.391826-07:00","source_repo":"."} +{"id":"bd-2074","content_hash":"27a09c415097fc06caff8a9e73d356cc093d22dbd92e7868b585ffa0e268de11","title":"Agent 0 Issue 67","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.392667-07:00","updated_at":"2025-10-21T00:29:12.392667-07:00","source_repo":"."} +{"id":"bd-2075","content_hash":"9335b5da6795722b48407ec3eae99faed8c548eae3e2cc68161ec85a95df1018","title":"Agent 0 Issue 68","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.393517-07:00","updated_at":"2025-10-21T00:29:12.393517-07:00","source_repo":"."} +{"id":"bd-2076","content_hash":"1078e1674bee36505793af3d39857ec82f99e7fd23c9d6030343f2e659f9b1ca","title":"Agent 0 Issue 69","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.394363-07:00","updated_at":"2025-10-21T00:29:12.394363-07:00","source_repo":"."} +{"id":"bd-2077","content_hash":"76a65c043371d267891b885ce6a5855e2c07800ba554557d06353d65b2917414","title":"Agent 0 Issue 70","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.395195-07:00","updated_at":"2025-10-21T00:29:12.395195-07:00","source_repo":"."} +{"id":"bd-2078","content_hash":"e1225c04cf2682b318b574fe83aceaf9c3af0791d40b30cd757fba254175218b","title":"Agent 0 Issue 71","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.396011-07:00","updated_at":"2025-10-21T00:29:12.396011-07:00","source_repo":"."} +{"id":"bd-2079","content_hash":"e5934776943e9c4e6a3c2da305b3067e97c4207bea1223f50bcd59f29971bc21","title":"Agent 0 Issue 72","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.39686-07:00","updated_at":"2025-10-21T00:29:12.39686-07:00","source_repo":"."} +{"id":"bd-208","content_hash":"487f4dcfc40da5b8f5ac88c0935cc5e0a4d230286f02feaad2c9195ca18923b0","title":"Agent 1 Issue 5","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.471111-07:00","updated_at":"2025-10-21T00:29:10.471111-07:00","source_repo":"."} +{"id":"bd-2080","content_hash":"d9ef570aa6bcf6fe6f74047e2b0c2409d04f63ffe9f781855d9c5bcaaecd9220","title":"Agent 0 Issue 73","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.397949-07:00","updated_at":"2025-10-21T00:29:12.397949-07:00","source_repo":"."} +{"id":"bd-2081","content_hash":"13b27ec3901ba0ed344c1656ec97814a156661a82a584b4d5e2e36e52fbe963e","title":"Agent 0 Issue 74","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.398839-07:00","updated_at":"2025-10-21T00:29:12.398839-07:00","source_repo":"."} +{"id":"bd-2082","content_hash":"8ef824c1136042d9657adc53451575d5a5f0aa9d6786e88a5c44678a9d62009d","title":"Agent 0 Issue 75","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.399684-07:00","updated_at":"2025-10-21T00:29:12.399684-07:00","source_repo":"."} +{"id":"bd-2083","content_hash":"08576b94be8d1c253b910d965057add4e955a6ff2924db55cf00b496c30b7c39","title":"Agent 0 Issue 76","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.400525-07:00","updated_at":"2025-10-21T00:29:12.400525-07:00","source_repo":"."} +{"id":"bd-2084","content_hash":"6ba43ffa72c726d98e83b6e81793a55d3076fe4345c420a7eb3ce642e2610b41","title":"Agent 0 Issue 77","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.40135-07:00","updated_at":"2025-10-21T00:29:12.40135-07:00","source_repo":"."} +{"id":"bd-2085","content_hash":"9d90489ae26be1ba6e64e6d5d471253137f11c0a6e90383f146e61d6d5b48f46","title":"Agent 0 Issue 78","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.402196-07:00","updated_at":"2025-10-21T00:29:12.402196-07:00","source_repo":"."} +{"id":"bd-2086","content_hash":"c82cfc216041bd5563841bd253e0a57815be9c9e9176dc9d0d96a155652a4f14","title":"Agent 0 Issue 79","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.403025-07:00","updated_at":"2025-10-21T00:29:12.403025-07:00","source_repo":"."} +{"id":"bd-2087","content_hash":"6217d3e6eb6f53b3af836e00b7db3c146d1fdbf57a122d3491609238324d28ae","title":"Agent 0 Issue 80","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.40386-07:00","updated_at":"2025-10-21T00:29:12.40386-07:00","source_repo":"."} +{"id":"bd-2088","content_hash":"a1b596d5c99055c680c02a1f7ab614d7b3e7e6dee733a6cfafbe75b5d7dcc64b","title":"Agent 0 Issue 81","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.404689-07:00","updated_at":"2025-10-21T00:29:12.404689-07:00","source_repo":"."} +{"id":"bd-2089","content_hash":"68d4a4e9b4c2684cf0fd2c62c42ad9cbbf2bfc048b1b7fd8eaa3ad9ed22ee9c7","title":"Agent 0 Issue 82","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.405545-07:00","updated_at":"2025-10-21T00:29:12.405545-07:00","source_repo":"."} +{"id":"bd-209","content_hash":"80ae55fabca611fdf070717a8bc24621412e4aed5de62bcd0c73eb9011725c30","title":"Agent 1 Issue 6","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.471387-07:00","updated_at":"2025-10-21T00:29:10.471387-07:00","source_repo":"."} +{"id":"bd-2090","content_hash":"97b2b3ba79ecfa6555e6d6f3756e2e6f1c7226461f43ceea7e7581689d3670e0","title":"Agent 0 Issue 83","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.406374-07:00","updated_at":"2025-10-21T00:29:12.406374-07:00","source_repo":"."} +{"id":"bd-2091","content_hash":"b16697bdb292e413f99ab09199d9617d504740e4cf66e3d902a34aa32ee4db27","title":"Agent 0 Issue 84","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.407205-07:00","updated_at":"2025-10-21T00:29:12.407205-07:00","source_repo":"."} +{"id":"bd-2092","content_hash":"2f5850708bed4c77763887620a10f0f70f936dd4a76f371436977420981ef2e1","title":"Agent 0 Issue 85","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.408038-07:00","updated_at":"2025-10-21T00:29:12.408038-07:00","source_repo":"."} +{"id":"bd-2093","content_hash":"ceeabbb70b2d58c08c15c41d0b8ac94b5a6e77dce3fd300a9510b5ce49be7113","title":"Agent 0 Issue 86","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.408889-07:00","updated_at":"2025-10-21T00:29:12.408889-07:00","source_repo":"."} +{"id":"bd-2094","content_hash":"69e8ed606b9a30253352c3b2cc487fda1e4735b07d415681bf0ee395cc9d33ba","title":"Agent 0 Issue 87","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.409784-07:00","updated_at":"2025-10-21T00:29:12.409784-07:00","source_repo":"."} +{"id":"bd-2095","content_hash":"7990d15b07751037b9310a84bb959edb60167bddddae451a1ed1d040ea9cf06c","title":"Agent 0 Issue 88","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.410662-07:00","updated_at":"2025-10-21T00:29:12.410662-07:00","source_repo":"."} +{"id":"bd-2096","content_hash":"a00401aeb1bbed0c590961a02b7f4d78020c409ca2dca7fb05c40670f04765b0","title":"Agent 0 Issue 89","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.411518-07:00","updated_at":"2025-10-21T00:29:12.411518-07:00","source_repo":"."} +{"id":"bd-2097","content_hash":"f1704e5ac27dc195dcf05f7cacbb4bdfacf3c5a739c0aa5064cb6a5c5bc0456d","title":"Agent 0 Issue 90","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.41239-07:00","updated_at":"2025-10-21T00:29:12.41239-07:00","source_repo":"."} +{"id":"bd-2098","content_hash":"6fa3d642f1f99f869ba509c86e5bb5c35fcbc12b936e7eed62e6c901d1558e16","title":"Agent 0 Issue 91","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.413282-07:00","updated_at":"2025-10-21T00:29:12.413282-07:00","source_repo":"."} +{"id":"bd-2099","content_hash":"47c6c77dcbe7cde92bdecd150b80dbe1359d51a8d1a7ef61a7f5594a482b2a31","title":"Agent 0 Issue 92","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.414132-07:00","updated_at":"2025-10-21T00:29:12.414132-07:00","source_repo":"."} +{"id":"bd-21","content_hash":"0773d4306ea21a2d3882012b1f220ff12aa02d6b8ed89cc770bb536f1549abda","title":"Another test with multiple deps","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.536783-07:00","closed_at":"2025-10-16T10:07:34.028111-07:00","source_repo":"."} +{"id":"bd-210","content_hash":"75fc3573e9c2726d3045501abefd1169dbb4b38f86c320759917ce9ade86c7ec","title":"Agent 1 Issue 7","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.471658-07:00","updated_at":"2025-10-21T00:29:10.471658-07:00","source_repo":"."} +{"id":"bd-2100","content_hash":"e5d6abafc4d6cdb583f52995797761ab57e698a1fd375acc2ffe4b476a00dd75","title":"Agent 0 Issue 93","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.415005-07:00","updated_at":"2025-10-21T00:29:12.415005-07:00","source_repo":"."} +{"id":"bd-2101","content_hash":"d31a95adf193d4f8d7196dd1f7e95186765d8a3b62818fbee1d43cedfdad4978","title":"Agent 0 Issue 94","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.415862-07:00","updated_at":"2025-10-21T00:29:12.415862-07:00","source_repo":"."} +{"id":"bd-2102","content_hash":"88c1458f43c71aed6b74fc9c3a3ff0a7c57f5fc69f11fdd4d649bbf2a0593f4f","title":"Agent 0 Issue 95","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.416747-07:00","updated_at":"2025-10-21T00:29:12.416747-07:00","source_repo":"."} +{"id":"bd-2103","content_hash":"305ea4e98bea0b4b0e123e2eb24103edf4121a74ebef9461422276fcfdda1e22","title":"Agent 0 Issue 96","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.417608-07:00","updated_at":"2025-10-21T00:29:12.417608-07:00","source_repo":"."} +{"id":"bd-2104","content_hash":"a666239baa14878d62d11663d3e630cefa323fb4ca5973308424c79d6e9933f1","title":"Agent 0 Issue 97","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.41848-07:00","updated_at":"2025-10-21T00:29:12.41848-07:00","source_repo":"."} +{"id":"bd-2105","content_hash":"bef565c0cdb8de735f20027580545a84ff99fb935000e62e2b1ce315b16e48b4","title":"Agent 0 Issue 98","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.419352-07:00","updated_at":"2025-10-21T00:29:12.419352-07:00","source_repo":"."} +{"id":"bd-2106","content_hash":"f483cb81fd0ff94c0b994fc6860a10db3caef8089fa28df9e21b39499bf06d17","title":"Agent 0 Issue 99","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.420238-07:00","updated_at":"2025-10-21T00:29:12.420238-07:00","source_repo":"."} +{"id":"bd-2107","content_hash":"80ca4aa26f1390597fe47b5d70489f23dbe1bde3f96e7f1b33adddb314f858ed","title":"Agent 8 Issue 23","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.170012-07:00","updated_at":"2025-10-21T00:29:12.170012-07:00","source_repo":"."} +{"id":"bd-2108","content_hash":"1d75174f9a7e6f7dfd6eb6879ed2ee1d6cfafb1ca8b6a3c69c698bcc5a67d352","title":"Agent 8 Issue 24","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.422102-07:00","updated_at":"2025-10-21T00:29:12.422102-07:00","source_repo":"."} +{"id":"bd-2109","content_hash":"e4d17836f4e8faab028f0be1dc16ac534e6ecbf319f7362f5f988a8230982554","title":"Agent 8 Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.423053-07:00","updated_at":"2025-10-21T00:29:12.423053-07:00","source_repo":"."} +{"id":"bd-211","content_hash":"c3be12c29dbfaa8a5d55f4e8de77ba662a45c16b53d368500d760d6649ea75e7","title":"Agent 1 Issue 8","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.471906-07:00","updated_at":"2025-10-21T00:29:10.471906-07:00","source_repo":"."} +{"id":"bd-2110","content_hash":"6c11338e9300917f833d763b44733c9e1753454fd94437e165019d9c4d477364","title":"Agent 8 Issue 26","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.423883-07:00","updated_at":"2025-10-21T00:29:12.423883-07:00","source_repo":"."} +{"id":"bd-2111","content_hash":"f987de6b04895201803a4ed7ca57f8b5211274c4efc2729271040768022a86bb","title":"Agent 8 Issue 27","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.424729-07:00","updated_at":"2025-10-21T00:29:12.424729-07:00","source_repo":"."} +{"id":"bd-2112","content_hash":"5e2e11ce4bc6f2bcd21818d93dcb8f7d751436fe8f81930501fae807eeed31f4","title":"Agent 8 Issue 28","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.425534-07:00","updated_at":"2025-10-21T00:29:12.425534-07:00","source_repo":"."} +{"id":"bd-2113","content_hash":"4b472430ea11ac5803821c8da621a682ecc20d3e7c1ed75d6c2afd7ebdab9849","title":"Agent 8 Issue 29","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.426383-07:00","updated_at":"2025-10-21T00:29:12.426383-07:00","source_repo":"."} +{"id":"bd-2114","content_hash":"71b7f961205a71ef5d52a1c7578fd29cf0d526cffe011af4d7d3cfce33e57fd3","title":"Agent 8 Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.427234-07:00","updated_at":"2025-10-21T00:29:12.427234-07:00","source_repo":"."} +{"id":"bd-2115","content_hash":"ad37d2128e56b2e446284b88f45caa845b08edb74c1f70ebf697a8b05837d789","title":"Agent 8 Issue 31","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.42807-07:00","updated_at":"2025-10-21T00:29:12.42807-07:00","source_repo":"."} +{"id":"bd-2116","content_hash":"963cf9975e4b987905e8fb9b5ee5b1cda5fc23dda2b92014ceea919beca7f4b8","title":"Agent 8 Issue 32","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.428892-07:00","updated_at":"2025-10-21T00:29:12.428892-07:00","source_repo":"."} +{"id":"bd-2117","content_hash":"5cf2a3f7d2a9cc05ba1239aeae186119a437a4b8252cb8b52cc33461296af320","title":"Agent 8 Issue 33","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.429726-07:00","updated_at":"2025-10-21T00:29:12.429726-07:00","source_repo":"."} +{"id":"bd-2118","content_hash":"185bd0878f6f62c288455b8bc36c5b454081a68cb04869bc1b63b1fb850eddf0","title":"Agent 8 Issue 34","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.430588-07:00","updated_at":"2025-10-21T00:29:12.430588-07:00","source_repo":"."} +{"id":"bd-2119","content_hash":"13298ea9587c15ac1a3996308334b1907e53106d2be94014385e5654a1fc32d3","title":"Agent 8 Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.431545-07:00","updated_at":"2025-10-21T00:29:12.431545-07:00","source_repo":"."} +{"id":"bd-212","content_hash":"5ace00c121fb590c6848490fe46f47da4948c1bce815049ca6314eedba96feac","title":"Agent 1 Issue 9","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.472191-07:00","updated_at":"2025-10-21T00:29:10.472191-07:00","source_repo":"."} +{"id":"bd-2120","content_hash":"c27e505c6ec65ed3212798460938bd377de2114b395addbc13fbea8e22777463","title":"Agent 8 Issue 36","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.432511-07:00","updated_at":"2025-10-21T00:29:12.432511-07:00","source_repo":"."} +{"id":"bd-2121","content_hash":"4d945bde2cecdf1147e4cfc8d8a8b0ec29a980191f5fdc2f65502f11ff1b67d1","title":"Agent 8 Issue 37","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.433432-07:00","updated_at":"2025-10-21T00:29:12.433432-07:00","source_repo":"."} +{"id":"bd-2122","content_hash":"a2badeebae7de4bd7df8c5fdfbef1d0438c76e8597445548a1db94d9259be6d3","title":"Agent 8 Issue 38","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.43428-07:00","updated_at":"2025-10-21T00:29:12.43428-07:00","source_repo":"."} +{"id":"bd-2123","content_hash":"c94668e30369a4077429be1481db71ac86c916b803eb31c583cb9babb0f80e17","title":"Agent 8 Issue 39","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.435109-07:00","updated_at":"2025-10-21T00:29:12.435109-07:00","source_repo":"."} +{"id":"bd-2124","content_hash":"785890f0deb559efe3beef7420759184e7a75194816c38c6adc08a9c97e4080d","title":"Agent 8 Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.43599-07:00","updated_at":"2025-10-21T00:29:12.43599-07:00","source_repo":"."} +{"id":"bd-2125","content_hash":"5cb5f41abe6b4e670071deffbf2bf73e1d322d73dfe0a67b32e59964bed09c99","title":"Agent 8 Issue 41","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.436821-07:00","updated_at":"2025-10-21T00:29:12.436821-07:00","source_repo":"."} +{"id":"bd-2126","content_hash":"983eb50cfe007d7f945c704234c9b2aa303f350a1795110a4c121995533018de","title":"Agent 8 Issue 42","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.437661-07:00","updated_at":"2025-10-21T00:29:12.437661-07:00","source_repo":"."} +{"id":"bd-2127","content_hash":"c105de77a738e48a4519cacce268401d6752c1a37cf870e50b8214f47f2c3a4c","title":"Agent 8 Issue 43","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.438639-07:00","updated_at":"2025-10-21T00:29:12.438639-07:00","source_repo":"."} +{"id":"bd-2128","content_hash":"1050a17d98de0eb843cf9093456aaa2baddb5b4e2865e94ed660877088a7974c","title":"Agent 8 Issue 44","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.439582-07:00","updated_at":"2025-10-21T00:29:12.439582-07:00","source_repo":"."} +{"id":"bd-2129","content_hash":"acb528c86937424883ebbdabe5426f0f96933dbd4d4ffdcd731d18b54ef3ad5f","title":"Agent 8 Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.440496-07:00","updated_at":"2025-10-21T00:29:12.440496-07:00","source_repo":"."} +{"id":"bd-213","content_hash":"4005b58df6351aadf0b15add4b1161a249716d8e13f4d772e6f5adf5397ee2e7","title":"Agent 1 Issue 10","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.472491-07:00","updated_at":"2025-10-21T00:29:10.472491-07:00","source_repo":"."} +{"id":"bd-2130","content_hash":"89b4ba5fd176bd314eeebf10dc6db3413ec8624384673ca8768824d6ac338c3a","title":"Agent 8 Issue 46","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.44141-07:00","updated_at":"2025-10-21T00:29:12.44141-07:00","source_repo":"."} +{"id":"bd-2131","content_hash":"3a0581b0158db62cfde26035959a257b6cb32044736dd8de80ea6c7d6f03574a","title":"Agent 8 Issue 47","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.442434-07:00","updated_at":"2025-10-21T00:29:12.442434-07:00","source_repo":"."} +{"id":"bd-2132","content_hash":"4b445a31741d479ea87a60931ddf301c108b13d8398550e3efff7cf8598c2f09","title":"Agent 8 Issue 48","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.443315-07:00","updated_at":"2025-10-21T00:29:12.443315-07:00","source_repo":"."} +{"id":"bd-2133","content_hash":"fc29873a82cd7ea559d74a36c3c71bf5b596b678654a9f2db4224452cf3545ff","title":"Agent 8 Issue 49","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.444216-07:00","updated_at":"2025-10-21T00:29:12.444216-07:00","source_repo":"."} +{"id":"bd-2134","content_hash":"10b8868506de06ab7b29d03e5078159f0dd7127fe3b08326f58ab557bfdee500","title":"Agent 8 Issue 50","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.445103-07:00","updated_at":"2025-10-21T00:29:12.445103-07:00","source_repo":"."} +{"id":"bd-2135","content_hash":"8bbdc8fb973cea866759da4858bf89d32083f91b640be98f5ce8aef314db83f1","title":"Agent 8 Issue 51","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.445974-07:00","updated_at":"2025-10-21T00:29:12.445974-07:00","source_repo":"."} +{"id":"bd-2136","content_hash":"6adc9bf887298c28b1b400023bafb31495e897a4459e355d2b1ab3158ab17881","title":"Agent 8 Issue 52","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.446891-07:00","updated_at":"2025-10-21T00:29:12.446891-07:00","source_repo":"."} +{"id":"bd-2137","content_hash":"7339ebef7cc205c8ab37a24df21a041685739dafe43dee7c1ee9e6b2b6b2db37","title":"Agent 8 Issue 53","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.447819-07:00","updated_at":"2025-10-21T00:29:12.447819-07:00","source_repo":"."} +{"id":"bd-2138","content_hash":"cf3f7f539d4d30014d31bad0452b749b39f071c344035eb1753fd27856f452fe","title":"Agent 8 Issue 54","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.448695-07:00","updated_at":"2025-10-21T00:29:12.448695-07:00","source_repo":"."} +{"id":"bd-2139","content_hash":"befcea89bc713ccefc2f4da39f15402e7863ff76bda885ed447210e5854c815c","title":"Agent 8 Issue 55","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.449529-07:00","updated_at":"2025-10-21T00:29:12.449529-07:00","source_repo":"."} +{"id":"bd-214","content_hash":"69d902068b6fa034968b8484b53db264c8b4ed86217941dfb468586157d09e25","title":"Agent 1 Issue 11","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.472744-07:00","updated_at":"2025-10-21T00:29:10.472744-07:00","source_repo":"."} +{"id":"bd-2140","content_hash":"7b9f7a0dfb8f58dc55731e683e7d7e7c6228e82393a31ec9734848fc9b3f9005","title":"Agent 8 Issue 56","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.450411-07:00","updated_at":"2025-10-21T00:29:12.450411-07:00","source_repo":"."} +{"id":"bd-2141","content_hash":"9510fd699f7eaa1e5f41479281c90f18006906de6d76da544983d8047befd936","title":"Agent 8 Issue 57","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.451286-07:00","updated_at":"2025-10-21T00:29:12.451286-07:00","source_repo":"."} +{"id":"bd-2142","content_hash":"2d9d9f116eb31e8b2f8ba64d3af47166b409919fe31519315e805f432a345043","title":"Agent 8 Issue 58","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.452205-07:00","updated_at":"2025-10-21T00:29:12.452205-07:00","source_repo":"."} +{"id":"bd-2143","content_hash":"90609809e66a78a3a21607ba3b14bddeb827de0e286a59761fddfd4f28ceb6a3","title":"Agent 8 Issue 59","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.453072-07:00","updated_at":"2025-10-21T00:29:12.453072-07:00","source_repo":"."} +{"id":"bd-2144","content_hash":"43dbc6fe0dd5ed22dea461e83bd778714f876066174a404630cf22b8fdd5b3ed","title":"Agent 8 Issue 60","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.453978-07:00","updated_at":"2025-10-21T00:29:12.453978-07:00","source_repo":"."} +{"id":"bd-2145","content_hash":"bc83fa0d0ce55b4b663b1ffc30302b280fb69653589f368cf95525a1b4a5fbbd","title":"Agent 8 Issue 61","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.455072-07:00","updated_at":"2025-10-21T00:29:12.455072-07:00","source_repo":"."} +{"id":"bd-2146","content_hash":"e205d1e0a99b744df53cc65d841d9f74d74abdafb4720a3d0cc6b2193e40869b","title":"Agent 8 Issue 62","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.456052-07:00","updated_at":"2025-10-21T00:29:12.456052-07:00","source_repo":"."} +{"id":"bd-2147","content_hash":"97698c5e71c5d2bd07566d95e7273079d706d23b6ba31bd4d5244dd12cf3f401","title":"Agent 8 Issue 63","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.456946-07:00","updated_at":"2025-10-21T00:29:12.456946-07:00","source_repo":"."} +{"id":"bd-2148","content_hash":"c0a509b7218845d7a2903e805ca6fe6960fa3485c2528bbf665280846c3cb1c7","title":"Agent 8 Issue 64","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.457882-07:00","updated_at":"2025-10-21T00:29:12.457882-07:00","source_repo":"."} +{"id":"bd-2149","content_hash":"c94e18200922a47e9ccf6c3a58fdef86d2e79bd0adacf0484f908fdaad3f4122","title":"Agent 8 Issue 65","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.458799-07:00","updated_at":"2025-10-21T00:29:12.458799-07:00","source_repo":"."} +{"id":"bd-215","content_hash":"b0cd19c8aa6eb9c500323c97ecb2ec394cccf516efae025a2ba40133d38ba5ce","title":"Agent 1 Issue 12","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.472973-07:00","updated_at":"2025-10-21T00:29:10.472973-07:00","source_repo":"."} +{"id":"bd-2150","content_hash":"8a877b48ad1a05b9ba1a2988427c2d2754e1ab588f7417460e1386578308c1ba","title":"Agent 8 Issue 66","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.459739-07:00","updated_at":"2025-10-21T00:29:12.459739-07:00","source_repo":"."} +{"id":"bd-2151","content_hash":"ed2e572995532e27c716d8bf71fa6564ee18ee151496ffdc3f4f6de10b1db563","title":"Agent 8 Issue 67","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.460612-07:00","updated_at":"2025-10-21T00:29:12.460612-07:00","source_repo":"."} +{"id":"bd-2152","content_hash":"e27275a2b1f18b0911515ef74113039f0a73996a0824d463059ae5462ef9b863","title":"Agent 8 Issue 68","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.461467-07:00","updated_at":"2025-10-21T00:29:12.461467-07:00","source_repo":"."} +{"id":"bd-2153","content_hash":"6ea109843143bcd8062b78332c7cfd2f6641046220dabe7792ecdd9fe903eaa9","title":"Agent 8 Issue 69","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.462315-07:00","updated_at":"2025-10-21T00:29:12.462315-07:00","source_repo":"."} +{"id":"bd-2154","content_hash":"580c25fb9866b7d6279bc8ff3e6d61910e9bcfb628291e32fa3f280d2b838b8a","title":"Agent 8 Issue 70","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.463207-07:00","updated_at":"2025-10-21T00:29:12.463207-07:00","source_repo":"."} +{"id":"bd-2155","content_hash":"5c478f4db1cd102062fcf13073912b374cd450565912b8601fd1d35be54f9052","title":"Agent 8 Issue 71","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.464155-07:00","updated_at":"2025-10-21T00:29:12.464155-07:00","source_repo":"."} +{"id":"bd-2156","content_hash":"90e28fb5fbd0a8ab2ec7760043f41ea9e4dc142ebe80b2ef74dbe130c0c85571","title":"Agent 8 Issue 72","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.465029-07:00","updated_at":"2025-10-21T00:29:12.465029-07:00","source_repo":"."} +{"id":"bd-2157","content_hash":"5fd9561b9348ec5b6f7798109a8df20e9031f8f76afa7b183d3ffc0b35a7be8f","title":"Agent 8 Issue 73","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.465906-07:00","updated_at":"2025-10-21T00:29:12.465906-07:00","source_repo":"."} +{"id":"bd-2158","content_hash":"0cc4430a9aa348560fa2041fb96b92084ee94b2f526f1d7f5cf0d96c9013d679","title":"Agent 8 Issue 74","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.466819-07:00","updated_at":"2025-10-21T00:29:12.466819-07:00","source_repo":"."} +{"id":"bd-2159","content_hash":"a6683e115c4aaeb38edf7d28e0831c8f3f618b162a8a073777a47c91b3f79964","title":"Agent 8 Issue 75","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.467666-07:00","updated_at":"2025-10-21T00:29:12.467666-07:00","source_repo":"."} +{"id":"bd-216","content_hash":"22380f8003aeacb546cbf2ca9e3b9285b8820466379f2ac7b99b0dda815892f1","title":"Agent 1 Issue 13","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.473196-07:00","updated_at":"2025-10-21T00:29:10.473196-07:00","source_repo":"."} +{"id":"bd-2160","content_hash":"93a68ae6d837bdb98373759aabaa4a16badeeb034c7ea5dd2db85c4e62376b3c","title":"Agent 8 Issue 76","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.468487-07:00","updated_at":"2025-10-21T00:29:12.468487-07:00","source_repo":"."} +{"id":"bd-2161","content_hash":"2de705d299fcb1f492a5ca22181161da07ba87a59c3b2a2576834ae31f1097cd","title":"Agent 8 Issue 77","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.469387-07:00","updated_at":"2025-10-21T00:29:12.469387-07:00","source_repo":"."} +{"id":"bd-2162","content_hash":"532be82e344367394aea811beb62fbfb9913d55085f3d967e4e3a7dab454f055","title":"Agent 8 Issue 78","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.470284-07:00","updated_at":"2025-10-21T00:29:12.470284-07:00","source_repo":"."} +{"id":"bd-2163","content_hash":"fb6cc4571a90fb5fe7e4db2e6eba3fbbee26d7a168ac6e8b71253a8273d973cd","title":"Agent 8 Issue 79","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.471128-07:00","updated_at":"2025-10-21T00:29:12.471128-07:00","source_repo":"."} +{"id":"bd-2164","content_hash":"51b03304b9b42f70407e3f24a792f3ab38f865a6d2967c66082e2e65f8b5ccf3","title":"Agent 8 Issue 80","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.472024-07:00","updated_at":"2025-10-21T00:29:12.472024-07:00","source_repo":"."} +{"id":"bd-2165","content_hash":"284542b046789a00850f7d3df75987bafcf81367f5964020b957403f64a12704","title":"Agent 8 Issue 81","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.472944-07:00","updated_at":"2025-10-21T00:29:12.472944-07:00","source_repo":"."} +{"id":"bd-2166","content_hash":"57ab86346984da4520b1edf7e029918f46a2995e0f8a7c022471a31ad0acfcfb","title":"Agent 8 Issue 82","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.473798-07:00","updated_at":"2025-10-21T00:29:12.473798-07:00","source_repo":"."} +{"id":"bd-2167","content_hash":"39cc5b0a8469d53aba17381a465b602d1dea496ab0ce0f15d55380ac5fe1b6bd","title":"Agent 8 Issue 83","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.474676-07:00","updated_at":"2025-10-21T00:29:12.474676-07:00","source_repo":"."} +{"id":"bd-2168","content_hash":"fd11ca604152b4baf3b9875b70b30721956368fdc9ec852d33a8f3e047886c7f","title":"Agent 8 Issue 84","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.475548-07:00","updated_at":"2025-10-21T00:29:12.475548-07:00","source_repo":"."} +{"id":"bd-2169","content_hash":"b4913570adefc2e7c1d9e2cfcaf81d52ec12a83dad161392a1c7ef4306cf4109","title":"Agent 8 Issue 85","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.476448-07:00","updated_at":"2025-10-21T00:29:12.476448-07:00","source_repo":"."} +{"id":"bd-217","content_hash":"ffd7cb8be66519bf4b224226431e9bc05c6aa5ff29e14937af9308629e5adb1d","title":"Agent 1 Issue 14","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.473449-07:00","updated_at":"2025-10-21T00:29:10.473449-07:00","source_repo":"."} +{"id":"bd-2170","content_hash":"9fc11f972861c7138b2126ff4b6ed65f3cf4350603d6dc0585cdb63daeae828a","title":"Agent 8 Issue 86","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.477316-07:00","updated_at":"2025-10-21T00:29:12.477316-07:00","source_repo":"."} +{"id":"bd-2171","content_hash":"f2279337aa058692a2ead3804e0d31cdc121412bd51c223241f1c45e382aacf4","title":"Agent 8 Issue 87","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.478199-07:00","updated_at":"2025-10-21T00:29:12.478199-07:00","source_repo":"."} +{"id":"bd-2172","content_hash":"f975ddcb7b339fa1282ef20e3d7cb812fbb6be1681ebf0e5c7282c22a9314cf2","title":"Agent 8 Issue 88","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.479121-07:00","updated_at":"2025-10-21T00:29:12.479121-07:00","source_repo":"."} +{"id":"bd-2173","content_hash":"96777ec0c9346e526a2f20b36e6f1b7c60c0dc8b1cb3aa06ee8e85059ec3bdf9","title":"Agent 8 Issue 89","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.47998-07:00","updated_at":"2025-10-21T00:29:12.47998-07:00","source_repo":"."} +{"id":"bd-2174","content_hash":"668a409870a3d4ba8a8b74596bd577a44b60681ab308da2887f1599a9e548927","title":"Agent 8 Issue 90","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.480907-07:00","updated_at":"2025-10-21T00:29:12.480907-07:00","source_repo":"."} +{"id":"bd-2175","content_hash":"fdc6153b2ab9eefc4bc5d628a9a1842a6f57489830a76971fb671797ba19bc56","title":"Agent 8 Issue 91","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.481753-07:00","updated_at":"2025-10-21T00:29:12.481753-07:00","source_repo":"."} +{"id":"bd-2176","content_hash":"83061ebd1ce399b60beb856b1bdb1869080381b06b5db5f7f037064bf84a4694","title":"Agent 8 Issue 92","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.482669-07:00","updated_at":"2025-10-21T00:29:12.482669-07:00","source_repo":"."} +{"id":"bd-2177","content_hash":"636dbab9ad3f975ea0c7f7054f59fae2160b124fe1a413eb1048570f476a6c6b","title":"Agent 8 Issue 93","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.483548-07:00","updated_at":"2025-10-21T00:29:12.483548-07:00","source_repo":"."} +{"id":"bd-2178","content_hash":"968eff3ec6d815a7b665bf510951059f653d0ddcbd491a5f3f3529a636a67a44","title":"Agent 8 Issue 94","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.484456-07:00","updated_at":"2025-10-21T00:29:12.484456-07:00","source_repo":"."} +{"id":"bd-2179","content_hash":"a00aeae1e96f87d33f5d60ece48e04d38ad6fe86c462e1be9d32fede3403f5df","title":"Agent 8 Issue 95","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.485318-07:00","updated_at":"2025-10-21T00:29:12.485318-07:00","source_repo":"."} +{"id":"bd-218","content_hash":"1aa4a3369c5569807d7069e6f5d05fc90b86a0b05406356ad172e6154d1619f8","title":"Agent 1 Issue 15","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.473706-07:00","updated_at":"2025-10-21T00:29:10.473706-07:00","source_repo":"."} +{"id":"bd-2180","content_hash":"8092db31e5655270e775d4683e33ed4a1ae92f2a81dfc20b4f8e0181bf070502","title":"Agent 8 Issue 96","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.486202-07:00","updated_at":"2025-10-21T00:29:12.486202-07:00","source_repo":"."} +{"id":"bd-2181","content_hash":"375c7851e274988e7772d3b0cf49d87a85aed07be8e73de3f758b9214690cea5","title":"Agent 8 Issue 97","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.487052-07:00","updated_at":"2025-10-21T00:29:12.487052-07:00","source_repo":"."} +{"id":"bd-2182","content_hash":"f9132665633d7f9904d72db677f3af3bf3c6f51489442a783d2645429caa130f","title":"Agent 8 Issue 98","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.487907-07:00","updated_at":"2025-10-21T00:29:12.487907-07:00","source_repo":"."} +{"id":"bd-2183","content_hash":"4be33ae7bae2d46114f0d5eeee432295f2fd2e86a3a2f1ac7e7f207352226b2d","title":"Agent 8 Issue 99","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.488758-07:00","updated_at":"2025-10-21T00:29:12.488758-07:00","source_repo":"."} +{"id":"bd-2184","content_hash":"3832a31b7c30d4e8995f03eb25889da604de042d7929b352038b9126c5531365","title":"Agent 4 Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.910398-07:00","updated_at":"2025-10-21T00:29:11.910398-07:00","source_repo":"."} +{"id":"bd-2185","content_hash":"ac0869c9c6413b87b6809d452134e98ebaa5babb7cf7dce7a369c33dcd28fb9d","title":"Agent 4 Issue 1","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.49071-07:00","updated_at":"2025-10-21T00:29:12.49071-07:00","source_repo":"."} +{"id":"bd-2186","content_hash":"027a1d655d3d0dd0c5194c619daaa8cb3b27f4c7e1f88336244867a8ad430f43","title":"Agent 4 Issue 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.491625-07:00","updated_at":"2025-10-21T00:29:12.491625-07:00","source_repo":"."} +{"id":"bd-2187","content_hash":"bb5ec78c3174db1bc5e7a224646e21aed4fcb9dfe471c09d6df2bffa638ca963","title":"Agent 4 Issue 3","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.492517-07:00","updated_at":"2025-10-21T00:29:12.492517-07:00","source_repo":"."} +{"id":"bd-2188","content_hash":"9867339cde054c9637a3755b6f96fd65d87e64b65e7b2be0e1fdc1ace509a370","title":"Agent 4 Issue 4","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.493429-07:00","updated_at":"2025-10-21T00:29:12.493429-07:00","source_repo":"."} +{"id":"bd-2189","content_hash":"d1d17b45b7c22bc71b49df3b739c7be9d51287ffcd3f5bee2ac1e81e146a7d6d","title":"Agent 4 Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.494352-07:00","updated_at":"2025-10-21T00:29:12.494352-07:00","source_repo":"."} +{"id":"bd-219","content_hash":"df7df88e05d950720587bec82b3f9a37818294f5a99305797ce62cea7cd39859","title":"Agent 1 Issue 16","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.473973-07:00","updated_at":"2025-10-21T00:29:10.473973-07:00","source_repo":"."} +{"id":"bd-2190","content_hash":"9b435d55301e50322066b9f9aafd1a86ba90e1fbc338f4f423cc1221c0d956cd","title":"Agent 4 Issue 6","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.49522-07:00","updated_at":"2025-10-21T00:29:12.49522-07:00","source_repo":"."} +{"id":"bd-2191","content_hash":"f5469721ee3a440555411d582a8061f3f8347bdadb06f4099a2769dff33ca49c","title":"Agent 4 Issue 7","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.496111-07:00","updated_at":"2025-10-21T00:29:12.496111-07:00","source_repo":"."} +{"id":"bd-2192","content_hash":"8b8c76c6f8ca0e8a37b41cf11ec5684f06ec8cb605fdf50851e55145d3081bb6","title":"Agent 4 Issue 8","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.496994-07:00","updated_at":"2025-10-21T00:29:12.496994-07:00","source_repo":"."} +{"id":"bd-2193","content_hash":"9ad6f6996e21f159057dea70b6b12fd14899ce850f1f92cb3e1b9f0c9a4c3fdc","title":"Agent 4 Issue 9","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.497932-07:00","updated_at":"2025-10-21T00:29:12.497932-07:00","source_repo":"."} +{"id":"bd-2194","content_hash":"02ebfde8ad3d60f851cb9e1c22e357b30b1bc25517f8c21fb377de9c9f247426","title":"Agent 4 Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.498844-07:00","updated_at":"2025-10-21T00:29:12.498844-07:00","source_repo":"."} +{"id":"bd-2195","content_hash":"54a2e186364e6c41ea1229c95eda8e982a25c398b632e82710f7690b44895bb3","title":"Agent 4 Issue 11","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.499766-07:00","updated_at":"2025-10-21T00:29:12.499766-07:00","source_repo":"."} +{"id":"bd-2196","content_hash":"50dc2b9621b4076d2971d91c25e9edc39cb5fc98118d8da79843d6dc48027406","title":"Agent 4 Issue 12","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.500663-07:00","updated_at":"2025-10-21T00:29:12.500663-07:00","source_repo":"."} +{"id":"bd-2197","content_hash":"207bb5e0c1dedf840026fc88832c8cce2ec700611caf193bd226fa286e00dcd8","title":"Agent 4 Issue 13","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.501587-07:00","updated_at":"2025-10-21T00:29:12.501587-07:00","source_repo":"."} +{"id":"bd-2198","content_hash":"01f75057ed500a90db123eb5cb229303f9dd7098b8c7fa0827450b2a9f2580fb","title":"Agent 4 Issue 14","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.502491-07:00","updated_at":"2025-10-21T00:29:12.502491-07:00","source_repo":"."} +{"id":"bd-2199","content_hash":"c6343d84edcd07cd9ad00a9235f98d7c3c602c9f04d222f963dbbc5ebfbcb6a0","title":"Agent 4 Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.503394-07:00","updated_at":"2025-10-21T00:29:12.503394-07:00","source_repo":"."} +{"id":"bd-22","content_hash":"9625d3c9269c82728e9284271afddb3e0724a5561a5b7654b05e95c97eea6ca1","title":"Build collision resolution tooling for distributed branch workflows","description":"When branches diverge and both create issues, auto-incrementing IDs collide on merge. Build excellent tooling to detect collisions during import, auto-renumber issues with fewer dependencies, update all references in descriptions and dependency links, and provide clear user feedback. Goal: keep beautiful brevity of numeric IDs (bd-210) while handling distributed creation gracefully.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.53694-07:00","closed_at":"2025-10-14T14:16:10.559862-07:00","source_repo":"."} +{"id":"bd-220","content_hash":"71ffb5069c36e4f67c69b4ef5ae73b9de91d8aa949a6de56af8ecf78926913e1","title":"Agent 1 Issue 17","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.474229-07:00","updated_at":"2025-10-21T00:29:10.474229-07:00","source_repo":"."} +{"id":"bd-2200","content_hash":"2e41462e613ff9b0b3c90e1eb301aa9eda4e874412ba3e23c3a076ebd8221b83","title":"Agent 4 Issue 16","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.504577-07:00","updated_at":"2025-10-21T00:29:12.504577-07:00","source_repo":"."} +{"id":"bd-2201","content_hash":"6bd4f94774e0d0947a1bd32c69a676b87c8f86a86f528c9278bb6c934f4fa2c3","title":"Agent 4 Issue 17","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.505553-07:00","updated_at":"2025-10-21T00:29:12.505553-07:00","source_repo":"."} +{"id":"bd-2202","content_hash":"e7539b5a2e5beb683ff1691c9bbc160a8ecb4657fda31cdb6e992e803bab8f05","title":"Agent 4 Issue 18","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.506459-07:00","updated_at":"2025-10-21T00:29:12.506459-07:00","source_repo":"."} +{"id":"bd-2203","content_hash":"78fccd8387db2c04c2945d41825f5e448edf67b6953d136ba537cc8d568a9b29","title":"Agent 4 Issue 19","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.507373-07:00","updated_at":"2025-10-21T00:29:12.507373-07:00","source_repo":"."} +{"id":"bd-2204","content_hash":"5dee32e9620253ace306cc0ba54c9e962507dec7d5b0260f6504cd1a8bff8107","title":"Agent 4 Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.508211-07:00","updated_at":"2025-10-21T00:29:12.508211-07:00","source_repo":"."} +{"id":"bd-2205","content_hash":"15ad1a2c3694776a191390ebff1a8921501a81481592a2fdf177b69a0b737274","title":"Agent 4 Issue 21","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.509079-07:00","updated_at":"2025-10-21T00:29:12.509079-07:00","source_repo":"."} +{"id":"bd-2206","content_hash":"a15b5ee47eae3949473c042c630898f0744d5a728b35d7f4ee578a61306f012b","title":"Agent 4 Issue 22","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.509956-07:00","updated_at":"2025-10-21T00:29:12.509956-07:00","source_repo":"."} +{"id":"bd-2207","content_hash":"ac4b41b611fc8e727cd2208dea3660119e0716a0569dd0f961185f83dba1f7ef","title":"Agent 4 Issue 23","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.510852-07:00","updated_at":"2025-10-21T00:29:12.510852-07:00","source_repo":"."} +{"id":"bd-2208","content_hash":"c34033f3736377864bc1641feab2de49c035e647a31b0b392b54d2100ae521ea","title":"Agent 4 Issue 24","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.512043-07:00","updated_at":"2025-10-21T00:29:12.512043-07:00","source_repo":"."} +{"id":"bd-2209","content_hash":"884848af4056516261dbd78b4da29ad913769e020689bbb4d03224099e58495b","title":"Agent 4 Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.512954-07:00","updated_at":"2025-10-21T00:29:12.512954-07:00","source_repo":"."} +{"id":"bd-221","content_hash":"6610fd291245271141ce942f88286abfae957e30749e5b1876c4e9fddf1cee5c","title":"Agent 1 Issue 18","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.474482-07:00","updated_at":"2025-10-21T00:29:10.474482-07:00","source_repo":"."} +{"id":"bd-2210","content_hash":"ea5802ff86252fe745fbbb064f421ea18784987be064d01cbf019e4ca9fbd65f","title":"Agent 4 Issue 26","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.513891-07:00","updated_at":"2025-10-21T00:29:12.513891-07:00","source_repo":"."} +{"id":"bd-2211","content_hash":"6fcca00a4a8cec13c00db339ac6fc04c52a2b3d4b35d61a66944c05849401371","title":"Agent 4 Issue 27","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.514782-07:00","updated_at":"2025-10-21T00:29:12.514782-07:00","source_repo":"."} +{"id":"bd-2212","content_hash":"28070a3190d3a30bfd81237443cac60abae2c8b4f74c6b99777d3c5f6d3def96","title":"Agent 4 Issue 28","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.515646-07:00","updated_at":"2025-10-21T00:29:12.515646-07:00","source_repo":"."} +{"id":"bd-2213","content_hash":"bee3c178b02fcb62196aaedd9f0290acda5f84b03818c633ccbf283c91ce0dee","title":"Agent 4 Issue 29","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.516522-07:00","updated_at":"2025-10-21T00:29:12.516522-07:00","source_repo":"."} +{"id":"bd-2214","content_hash":"bbe39baf4217e5de682620caae65ac3dd18363762e6cc45146e022010bf31bda","title":"Agent 4 Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.517393-07:00","updated_at":"2025-10-21T00:29:12.517393-07:00","source_repo":"."} +{"id":"bd-2215","content_hash":"e99a751a37ca2bbc5a48b9bf4b9b3b32f1ccc62649f82a0445ac9dd59d82bdf8","title":"Agent 4 Issue 31","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.518291-07:00","updated_at":"2025-10-21T00:29:12.518291-07:00","source_repo":"."} +{"id":"bd-2216","content_hash":"c84c9fa9d32acec9bf9d95d7987362d114d08f4b3b37be93eb7b1f88f06e3615","title":"Agent 4 Issue 32","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.51924-07:00","updated_at":"2025-10-21T00:29:12.51924-07:00","source_repo":"."} +{"id":"bd-2217","content_hash":"3b2db9278901108dee6614e9c95d7fd71ba8f1612288f485d76f4de5b25f14a3","title":"Agent 4 Issue 33","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.520103-07:00","updated_at":"2025-10-21T00:29:12.520103-07:00","source_repo":"."} +{"id":"bd-2218","content_hash":"424d29da92be26e310a3b5e0ac3b8f0359d70882c6518be16334a81048a7bf0f","title":"Agent 4 Issue 34","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.521011-07:00","updated_at":"2025-10-21T00:29:12.521011-07:00","source_repo":"."} +{"id":"bd-2219","content_hash":"1e70319e6e3bb6bb05d86742b15802b2c1b44684c6eea90d07d446a0ad7554f7","title":"Agent 4 Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.521905-07:00","updated_at":"2025-10-21T00:29:12.521905-07:00","source_repo":"."} +{"id":"bd-222","content_hash":"08ebcbff0d2adf13bea0432af13afe88fc609ba329963e7eecfde3bae585f9bc","title":"Agent 1 Issue 19","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.474742-07:00","updated_at":"2025-10-21T00:29:10.474742-07:00","source_repo":"."} +{"id":"bd-2220","content_hash":"34249eea0b308e5807fbbde939166cfe2310e650bedbe09e366d784976991e86","title":"Agent 4 Issue 36","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.52285-07:00","updated_at":"2025-10-21T00:29:12.52285-07:00","source_repo":"."} +{"id":"bd-2221","content_hash":"448bf56942e0116c1d08058eaaac750c6e0bcf630926ea3e3a0c6a44732bbbce","title":"Agent 4 Issue 37","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.523748-07:00","updated_at":"2025-10-21T00:29:12.523748-07:00","source_repo":"."} +{"id":"bd-2222","content_hash":"7499872b284889db184128deb90448383ffba6827272ea18b82e3872c0fe993d","title":"Agent 4 Issue 38","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.524654-07:00","updated_at":"2025-10-21T00:29:12.524654-07:00","source_repo":"."} +{"id":"bd-2223","content_hash":"52fe3a7da11cde6838993e0757fdab8ec9437893e0ef33026e308fa2f81aa47e","title":"Agent 4 Issue 39","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.525536-07:00","updated_at":"2025-10-21T00:29:12.525536-07:00","source_repo":"."} +{"id":"bd-2224","content_hash":"8f1314a48771f28aeec803e3c8adc1702a5007e9b2be50e67640835bc8883d9d","title":"Agent 4 Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.526468-07:00","updated_at":"2025-10-21T00:29:12.526468-07:00","source_repo":"."} +{"id":"bd-2225","content_hash":"7d9dac60fc45426820868827183e8831cf4d195cc7209ae09523de5017c877bf","title":"Agent 4 Issue 41","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.527371-07:00","updated_at":"2025-10-21T00:29:12.527371-07:00","source_repo":"."} +{"id":"bd-2226","content_hash":"4b7409652af1f18936f7ae90fb4e8b4f2f388f9afda4383537fd71dc6f0233c4","title":"Agent 4 Issue 42","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.528305-07:00","updated_at":"2025-10-21T00:29:12.528305-07:00","source_repo":"."} +{"id":"bd-2227","content_hash":"5591d7d2d34bf78a40e61b97f281873f42105df2cd690bbe520bdc5089034847","title":"Agent 4 Issue 43","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.529209-07:00","updated_at":"2025-10-21T00:29:12.529209-07:00","source_repo":"."} +{"id":"bd-2228","content_hash":"bc02b448caef4121b850372e5539cb31b971234daaa9a11cec572d69e87ea5f0","title":"Agent 4 Issue 44","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.530133-07:00","updated_at":"2025-10-21T00:29:12.530133-07:00","source_repo":"."} +{"id":"bd-2229","content_hash":"9ceb52eab9967ea95f81081ce505e63fd9f68ed5da6ec04e4ac06ce7e8f7bdc5","title":"Agent 4 Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.531077-07:00","updated_at":"2025-10-21T00:29:12.531077-07:00","source_repo":"."} +{"id":"bd-223","content_hash":"be28b9e4310b5028e96c7df5d1cea1b623bbbae82275bec10e607da1d700285d","title":"Agent 1 Issue 20","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.475015-07:00","updated_at":"2025-10-21T00:29:10.475015-07:00","source_repo":"."} +{"id":"bd-2230","content_hash":"9856d9ea2eb771aac1252c4bffca95b3c8b85c9b1964c25f01687e83c2306845","title":"Agent 4 Issue 46","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.531955-07:00","updated_at":"2025-10-21T00:29:12.531955-07:00","source_repo":"."} +{"id":"bd-2231","content_hash":"cda8bd1c1cb0b729e69e3f38e2301f5ab0dc40f65173eebf17cc89c47191293f","title":"Agent 4 Issue 47","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.532877-07:00","updated_at":"2025-10-21T00:29:12.532877-07:00","source_repo":"."} +{"id":"bd-2232","content_hash":"8a02e3abf435f3185ceba241fdaea1702fe5750bb80ed7f59456d6cdf8cf48fe","title":"Agent 4 Issue 48","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.53377-07:00","updated_at":"2025-10-21T00:29:12.53377-07:00","source_repo":"."} +{"id":"bd-2233","content_hash":"61de5c59d55d5786d140645617447703ac251167dea89873d5d667edbc6a766a","title":"Agent 4 Issue 49","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.534658-07:00","updated_at":"2025-10-21T00:29:12.534658-07:00","source_repo":"."} +{"id":"bd-2234","content_hash":"3ec5e49b3350f81614d550f42ad89ff3354555e76add85430928bec2418995fb","title":"Agent 4 Issue 50","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.535584-07:00","updated_at":"2025-10-21T00:29:12.535584-07:00","source_repo":"."} +{"id":"bd-2235","content_hash":"a74ee83d8ffcfd5d732c3e72ae1faeb413332e00605fd6a28f5d832112fe145c","title":"Agent 4 Issue 51","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.536464-07:00","updated_at":"2025-10-21T00:29:12.536464-07:00","source_repo":"."} +{"id":"bd-2236","content_hash":"323096a1f2ff3c27a698bd0c976d71bcaca7ff11663a9ac1f0e2f925d71232e7","title":"Agent 4 Issue 52","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.537409-07:00","updated_at":"2025-10-21T00:29:12.537409-07:00","source_repo":"."} +{"id":"bd-2237","content_hash":"1410d6131274607f7b9a36670e23eac3ec15da86f2eb27686e9fc826b6a03dc7","title":"Agent 4 Issue 53","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.538322-07:00","updated_at":"2025-10-21T00:29:12.538322-07:00","source_repo":"."} +{"id":"bd-2238","content_hash":"17fa2c098efe64bcf23687d4f5ff4bea124e87991979af29dde2e8ef46da1ce2","title":"Agent 4 Issue 54","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.539201-07:00","updated_at":"2025-10-21T00:29:12.539201-07:00","source_repo":"."} +{"id":"bd-2239","content_hash":"516e36c161bb22d5084a7ee640e422c193ce0380c8c7dd2f9ea6b8d84d4a05a3","title":"Agent 4 Issue 55","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.540106-07:00","updated_at":"2025-10-21T00:29:12.540106-07:00","source_repo":"."} +{"id":"bd-224","content_hash":"cab9516dc911b5b42cb98d203a9d7060392966d2f3c7383ddfb3e394a44c9ecd","title":"Agent 1 Issue 21","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.475239-07:00","updated_at":"2025-10-21T00:29:10.475239-07:00","source_repo":"."} +{"id":"bd-2240","content_hash":"308ce12e1e914617081e9f4beefb6f3b423f6430b31b60612c4f2019ef1d9bbb","title":"Agent 4 Issue 56","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.540957-07:00","updated_at":"2025-10-21T00:29:12.540957-07:00","source_repo":"."} +{"id":"bd-2241","content_hash":"e8e4c10ecf33c5d6865dd0c2434cb6b3e486082bc477efa9f827e99fcf0830d3","title":"Agent 4 Issue 57","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.54181-07:00","updated_at":"2025-10-21T00:29:12.54181-07:00","source_repo":"."} +{"id":"bd-2242","content_hash":"66dc56aa8347de8f1b0000986bcc9caa72df0e45204d41846270730f9bb935c6","title":"Agent 4 Issue 58","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.542652-07:00","updated_at":"2025-10-21T00:29:12.542652-07:00","source_repo":"."} +{"id":"bd-2243","content_hash":"62b402b234bdb9aaa38515c3610d75ba585ab2a7a02cfb7fa0e630bfe54eab90","title":"Agent 4 Issue 59","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.543503-07:00","updated_at":"2025-10-21T00:29:12.543503-07:00","source_repo":"."} +{"id":"bd-2244","content_hash":"22817d56ed7723f38f07d1501b2b7018595499a7a715f7bd2f8bc89661fb9424","title":"Agent 4 Issue 60","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.544422-07:00","updated_at":"2025-10-21T00:29:12.544422-07:00","source_repo":"."} +{"id":"bd-2245","content_hash":"7acc9cde8ba2b7242a42454feb5d8b2f80b3d1b7e730da9abdbf9791ad3b15a8","title":"Agent 4 Issue 61","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.54531-07:00","updated_at":"2025-10-21T00:29:12.54531-07:00","source_repo":"."} +{"id":"bd-2246","content_hash":"3046527c0a72a89ec976ee0825b43c421c3703d723ad2223d79b2eabc8e18fce","title":"Agent 4 Issue 62","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.546236-07:00","updated_at":"2025-10-21T00:29:12.546236-07:00","source_repo":"."} +{"id":"bd-2247","content_hash":"10fc413a1a4460fb95483bd03c14529fab40e41b7af2a75f0e97582f9ed2e1dd","title":"Agent 4 Issue 63","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.5472-07:00","updated_at":"2025-10-21T00:29:12.5472-07:00","source_repo":"."} +{"id":"bd-2248","content_hash":"29546b7ec3a4ef51cc0581f239bd539ff2b32080252c4359ce18ff7fbca388b9","title":"Agent 4 Issue 64","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.54821-07:00","updated_at":"2025-10-21T00:29:12.54821-07:00","source_repo":"."} +{"id":"bd-2249","content_hash":"755f507e3c91f7a3f11d3b451ab8cfba8ccedf444b4cc39cfd5e9300c011433b","title":"Agent 4 Issue 65","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.549142-07:00","updated_at":"2025-10-21T00:29:12.549142-07:00","source_repo":"."} +{"id":"bd-225","content_hash":"8a816c9977cecc204ed80f4c70a9d87acedf28464b3919c9b8c3195e111f22c8","title":"Agent 1 Issue 22","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.475469-07:00","updated_at":"2025-10-21T00:29:10.475469-07:00","source_repo":"."} +{"id":"bd-2250","content_hash":"d0bbe7d3813150561b7f7d05bb0d6029ca15ffb609a1f17434d7db8367407688","title":"Agent 4 Issue 66","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.550067-07:00","updated_at":"2025-10-21T00:29:12.550067-07:00","source_repo":"."} +{"id":"bd-2251","content_hash":"00cc6d00bef845bc9f36f09f516cb5194a428fe426829d2646d0f5df9cd14936","title":"Agent 4 Issue 67","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.550954-07:00","updated_at":"2025-10-21T00:29:12.550954-07:00","source_repo":"."} +{"id":"bd-2252","content_hash":"efb0614d7153dad6c81a5b71d4894aed21c2e9583fa03127de63b79dc08565b0","title":"Agent 4 Issue 68","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.551864-07:00","updated_at":"2025-10-21T00:29:12.551864-07:00","source_repo":"."} +{"id":"bd-2253","content_hash":"81521359f37757f6a3c1c89f95df7611d06856bc7b33df300de8b3fad8afefd1","title":"Agent 4 Issue 69","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.552799-07:00","updated_at":"2025-10-21T00:29:12.552799-07:00","source_repo":"."} +{"id":"bd-2254","content_hash":"9817e3b2153627f637047ea3991de17c12059f4c18d0c3b9d291403fa0314ced","title":"Agent 4 Issue 70","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.553683-07:00","updated_at":"2025-10-21T00:29:12.553683-07:00","source_repo":"."} +{"id":"bd-2255","content_hash":"1893d8befe254674d3d6dae48aa5af10d6deb053aad6c36b36a4534710d972b1","title":"Agent 4 Issue 71","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.554582-07:00","updated_at":"2025-10-21T00:29:12.554582-07:00","source_repo":"."} +{"id":"bd-2256","content_hash":"57b6d7b9ff1da72e1d5de17770b478fe75b102037a7f2c6c8426ee5f226db5b9","title":"Agent 4 Issue 72","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.555533-07:00","updated_at":"2025-10-21T00:29:12.555533-07:00","source_repo":"."} +{"id":"bd-2257","content_hash":"7c19868e97d9356eab61bc4b87d492f22f473d4bd8085f638491d4d1ff3d0c2e","title":"Agent 4 Issue 73","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.556433-07:00","updated_at":"2025-10-21T00:29:12.556433-07:00","source_repo":"."} +{"id":"bd-2258","content_hash":"068f1fec034fd1a99a4f42061266b9da9e2216f38c5fc3dace1cd5aa83b0a9f8","title":"Agent 4 Issue 74","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.557367-07:00","updated_at":"2025-10-21T00:29:12.557367-07:00","source_repo":"."} +{"id":"bd-2259","content_hash":"a588d1d06785769c029badd39fd2a783479669cf69394eb30d04b7ebe327be0b","title":"Agent 4 Issue 75","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.55837-07:00","updated_at":"2025-10-21T00:29:12.55837-07:00","source_repo":"."} +{"id":"bd-226","content_hash":"fbf58b42befa1e65ddaed6e489874bd4dc24f94ca316ca0b7a87f480ffb6fb0b","title":"Agent 1 Issue 23","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.475768-07:00","updated_at":"2025-10-21T00:29:10.475768-07:00","source_repo":"."} +{"id":"bd-2260","content_hash":"61c29be483bb4e427688d536929089a74f82c3755e6f4f19a9f2ffefd2662c13","title":"Agent 4 Issue 76","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.559386-07:00","updated_at":"2025-10-21T00:29:12.559386-07:00","source_repo":"."} +{"id":"bd-2261","content_hash":"0df2b4f0aa318bdb4e9df9ca93ccb782eb1d1fb783ee2549c8eb3af210fa918f","title":"Agent 4 Issue 77","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.560337-07:00","updated_at":"2025-10-21T00:29:12.560337-07:00","source_repo":"."} +{"id":"bd-2262","content_hash":"9099c7e97396ed1e2a0673d33399cf5d30e885d8a1f5c960b47183bafd0ac74e","title":"Agent 4 Issue 78","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.561305-07:00","updated_at":"2025-10-21T00:29:12.561305-07:00","source_repo":"."} +{"id":"bd-2263","content_hash":"af84f8c93e707ab1537b324f6cc28e42a387514b7e2781b97a1e5e641df415ad","title":"Agent 4 Issue 79","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.562243-07:00","updated_at":"2025-10-21T00:29:12.562243-07:00","source_repo":"."} +{"id":"bd-2264","content_hash":"9783935730733945bf08669bfe887bc9103b771e3285588e217277221e3c5b09","title":"Agent 4 Issue 80","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.563156-07:00","updated_at":"2025-10-21T00:29:12.563156-07:00","source_repo":"."} +{"id":"bd-2265","content_hash":"89d5ef2b0ec17845c70393cf2f382aca77fda5333524727c49be99062d082bcf","title":"Agent 4 Issue 81","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.564145-07:00","updated_at":"2025-10-21T00:29:12.564145-07:00","source_repo":"."} +{"id":"bd-2266","content_hash":"24cb10784bebcf3307fc78c77c9a269b99e538cf71048088becaf1e500d23672","title":"Agent 4 Issue 82","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.565159-07:00","updated_at":"2025-10-21T00:29:12.565159-07:00","source_repo":"."} +{"id":"bd-2267","content_hash":"01693bbcacab2d0dd4a90b33fd40b4ee95ab579af8f64c65b41a3eba02987a2a","title":"Agent 4 Issue 83","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.566107-07:00","updated_at":"2025-10-21T00:29:12.566107-07:00","source_repo":"."} +{"id":"bd-2268","content_hash":"2a4a613404a3ff6e39a3b7c60e4e63ecb2f7d7118dda26dac049c1b66731e6a4","title":"Agent 4 Issue 84","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.567072-07:00","updated_at":"2025-10-21T00:29:12.567072-07:00","source_repo":"."} +{"id":"bd-2269","content_hash":"ab85b66e1df7dbf4496d7892d2346e2f90fed83595f228c7afd25b6483b9158e","title":"Agent 4 Issue 85","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.567949-07:00","updated_at":"2025-10-21T00:29:12.567949-07:00","source_repo":"."} +{"id":"bd-227","content_hash":"19df4f717c2fda1addabfefda3e3c6a5ea6ed08388cf55a04ce334cfd6986d9f","title":"Agent 1 Issue 24","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.47605-07:00","updated_at":"2025-10-21T00:29:10.47605-07:00","source_repo":"."} +{"id":"bd-2270","content_hash":"a397405dfaf359a0e3c1d32e73062ea5177d263cfcc1b85f440a7133bbe1dd4a","title":"Agent 4 Issue 86","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.568878-07:00","updated_at":"2025-10-21T00:29:12.568878-07:00","source_repo":"."} +{"id":"bd-2271","content_hash":"c33eb49bbc07c53d8eb120965e204985cb5879b4dd7deb0608f33c3b42d337ad","title":"Agent 4 Issue 87","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.569797-07:00","updated_at":"2025-10-21T00:29:12.569797-07:00","source_repo":"."} +{"id":"bd-2272","content_hash":"b426904f6c6cee1840f0d51d54c38f993d7e404b021f6d1ad8f0e6304d67b3a8","title":"Agent 4 Issue 88","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.570669-07:00","updated_at":"2025-10-21T00:29:12.570669-07:00","source_repo":"."} +{"id":"bd-2273","content_hash":"24f7f68983758e56d3c6c607c02e18888efadc035e7b0daa7883accbd3441610","title":"Agent 4 Issue 89","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.571615-07:00","updated_at":"2025-10-21T00:29:12.571615-07:00","source_repo":"."} +{"id":"bd-2274","content_hash":"258909bd00b14c2c72c7ca34f82b4be878bceca2cfb17103010565ca56619d1a","title":"Agent 4 Issue 90","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.572802-07:00","updated_at":"2025-10-21T00:29:12.572802-07:00","source_repo":"."} +{"id":"bd-2275","content_hash":"62470fb6818d50d7d6c4d24860cd6a313a62e8ea98a2d24b397a048fb40faa65","title":"Agent 4 Issue 91","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.573717-07:00","updated_at":"2025-10-21T00:29:12.573717-07:00","source_repo":"."} +{"id":"bd-2276","content_hash":"7963e564fd8f09f3a3192b0479cf8dd68f4286bab2132c0b93a62a8f02a9fcfc","title":"Agent 4 Issue 92","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.574622-07:00","updated_at":"2025-10-21T00:29:12.574622-07:00","source_repo":"."} +{"id":"bd-2277","content_hash":"c7e70934d2063fd1cff8359db757ab42c9361bfbbea4a2b3e1d0b0addfb71d56","title":"Agent 4 Issue 93","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.575556-07:00","updated_at":"2025-10-21T00:29:12.575556-07:00","source_repo":"."} +{"id":"bd-2278","content_hash":"0e81a75da80938aa082612385496f8e96c76b632979548df0bf98400085d3e27","title":"Agent 4 Issue 94","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.576494-07:00","updated_at":"2025-10-21T00:29:12.576494-07:00","source_repo":"."} +{"id":"bd-2279","content_hash":"ce09a72e56e4760db1ef02417a124c707215cecd7716d0c41e29377bfe52534f","title":"Agent 4 Issue 95","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.577441-07:00","updated_at":"2025-10-21T00:29:12.577441-07:00","source_repo":"."} +{"id":"bd-228","content_hash":"2cb5aa398b46a7a86e0867821f261d3c9f52cf7fc0212926b2991889efcd1e50","title":"Agent 1 Issue 25","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.476316-07:00","updated_at":"2025-10-21T00:29:10.476316-07:00","source_repo":"."} +{"id":"bd-2280","content_hash":"8e863c82e06f3a1f5d45344dcc86fa618b16876e51e11725f79fd2aae3508a20","title":"Agent 4 Issue 96","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.578352-07:00","updated_at":"2025-10-21T00:29:12.578352-07:00","source_repo":"."} +{"id":"bd-2281","content_hash":"5443c21b903d04cbd8fa03ece9a7e1b1d8e2833c8f202cacdce5eced394fbc33","title":"Agent 4 Issue 97","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.579276-07:00","updated_at":"2025-10-21T00:29:12.579276-07:00","source_repo":"."} +{"id":"bd-2282","content_hash":"7573a356ee98b65ab6065339cf11a2e262e51d7fd22613676594a84015cac15d","title":"Agent 4 Issue 98","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.580227-07:00","updated_at":"2025-10-21T00:29:12.580227-07:00","source_repo":"."} +{"id":"bd-2283","content_hash":"d4174a0fdc45840be1d432c45881ecc900103b43a5578b6833c4a829da6a8240","title":"Agent 4 Issue 99","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.581179-07:00","updated_at":"2025-10-21T00:29:12.581179-07:00","source_repo":"."} +{"id":"bd-2284","content_hash":"6d8ff27e42645df302c2d12e2be1b5d7f4162f2335ae787acc2ce19fe2b2351a","title":"Agent 9 Issue 12","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.377394-07:00","updated_at":"2025-10-21T00:29:12.377394-07:00","source_repo":"."} +{"id":"bd-2285","content_hash":"35b5796bfe5907c164c9df05a12f616a955629020cf13f3c7d253121e2cdca27","title":"Agent 9 Issue 13","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.58311-07:00","updated_at":"2025-10-21T00:29:12.58311-07:00","source_repo":"."} +{"id":"bd-2286","content_hash":"8f67afb300a7dc5505acc0f9929756bef3c201bfdf94df0b1b54ba96589992f5","title":"Agent 9 Issue 14","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.584065-07:00","updated_at":"2025-10-21T00:29:12.584065-07:00","source_repo":"."} +{"id":"bd-2287","content_hash":"2a7420fe5058d1b77b5157ad2f041cd853135eb60043439854057b61193b4a1a","title":"Agent 9 Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.58496-07:00","updated_at":"2025-10-21T00:29:12.58496-07:00","source_repo":"."} +{"id":"bd-2288","content_hash":"6e1e51dcfc158e9d9e2d47cf3d1b37a34d986c86faeb2c6eb9d470ceb3459d6a","title":"Agent 9 Issue 16","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.585883-07:00","updated_at":"2025-10-21T00:29:12.585883-07:00","source_repo":"."} +{"id":"bd-2289","content_hash":"7901cf38ad66604f911f245ce0e532b0f2356bb85d55f00f8b6d29cab61e59c6","title":"Agent 9 Issue 17","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.586797-07:00","updated_at":"2025-10-21T00:29:12.586797-07:00","source_repo":"."} +{"id":"bd-229","content_hash":"e6eb4ab9d5abf2db9f4416e379630d0ba627a87e1ddaa724afbf57d7f4961e03","title":"Agent 1 Issue 26","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.476593-07:00","updated_at":"2025-10-21T00:29:10.476593-07:00","source_repo":"."} +{"id":"bd-2290","content_hash":"5e96f4c5f4ce39cace0438818c311154e8db63f3e04aedd3496ec23c3ae951d8","title":"Agent 9 Issue 18","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.587698-07:00","updated_at":"2025-10-21T00:29:12.587698-07:00","source_repo":"."} +{"id":"bd-2291","content_hash":"a01666e3736d9afbfbc43eb10d73ae0591d88a8d5d53819a53a4813a15d1efdf","title":"Agent 9 Issue 19","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.588599-07:00","updated_at":"2025-10-21T00:29:12.588599-07:00","source_repo":"."} +{"id":"bd-2292","content_hash":"ff0cd8ddbb594d70133b98e2c4e7d0032a67d3156376ea30ec96789aaff0b1ce","title":"Agent 9 Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.589508-07:00","updated_at":"2025-10-21T00:29:12.589508-07:00","source_repo":"."} +{"id":"bd-2293","content_hash":"7f1ff9c3a9c6107c03305da11bca66f0d0864bbf75cf961f61ab85c5ee7b41fc","title":"Agent 9 Issue 21","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.590468-07:00","updated_at":"2025-10-21T00:29:12.590468-07:00","source_repo":"."} +{"id":"bd-2294","content_hash":"365bfab9356d903bc6ac00a585c05b22c5e06bdf3cb14675778aaf175c6433d8","title":"Agent 9 Issue 22","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.591409-07:00","updated_at":"2025-10-21T00:29:12.591409-07:00","source_repo":"."} +{"id":"bd-2295","content_hash":"3f5979c41d4f6afe49aec82396c678eb72cd625dac13c32dfa9f8e99e913e986","title":"Agent 9 Issue 23","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.5923-07:00","updated_at":"2025-10-21T00:29:12.5923-07:00","source_repo":"."} +{"id":"bd-2296","content_hash":"bac43c76d335d3b0f3d0cf10c9ceca5be6e2a81867ad0b6346cd40b53e5512fb","title":"Agent 9 Issue 24","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.593201-07:00","updated_at":"2025-10-21T00:29:12.593201-07:00","source_repo":"."} +{"id":"bd-2297","content_hash":"75f0740b4ac7c1a0a0d3d97e830bd8456500286a9512313b3969874ad379cdca","title":"Agent 9 Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.594061-07:00","updated_at":"2025-10-21T00:29:12.594061-07:00","source_repo":"."} +{"id":"bd-2298","content_hash":"df482a8e8db1ae99b2b8bf397992b11f081c4a3a652de46c4e04b950fde7d12d","title":"Agent 9 Issue 26","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.594936-07:00","updated_at":"2025-10-21T00:29:12.594936-07:00","source_repo":"."} +{"id":"bd-2299","content_hash":"fb9000cff877b73d3b89f0b7712bc5346072172207a7fcee4b9e993350b99f7e","title":"Agent 9 Issue 27","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.595808-07:00","updated_at":"2025-10-21T00:29:12.595808-07:00","source_repo":"."} {"id":"bd-22e0bde9","content_hash":"532c3b7af57bcf046114e2a3e9519fd07729251b3e81450a772d75d920d63e5d","title":"Add TestNWayCollision for 5+ clones","description":"## Overview\nAdd comprehensive tests for N-way (5+) collision resolution to verify the solution scales beyond 3 clones.\n\n## Purpose\nWhile TestThreeCloneCollision validates the basic N-way case, we need to verify:\n1. Solution scales to arbitrary N\n2. Performance is acceptable with more clones\n3. Convergence time is bounded\n4. No edge cases in larger collision groups\n\n## Implementation Tasks\n\n### 1. Create TestFiveCloneCollision\nFile: beads_twoclone_test.go (or new beads_nway_test.go)\n\n```go\nfunc TestFiveCloneCollision(t *testing.T) {\n // Test with 5 clones creating same ID with different content\n // Verify all 5 clones converge after sync rounds\n \n t.Run(\"SequentialSync\", func(t *testing.T) {\n testNCloneCollision(t, 5, \"A\", \"B\", \"C\", \"D\", \"E\")\n })\n \n t.Run(\"ReverseSync\", func(t *testing.T) {\n testNCloneCollision(t, 5, \"E\", \"D\", \"C\", \"B\", \"A\")\n })\n \n t.Run(\"RandomSync\", func(t *testing.T) {\n testNCloneCollision(t, 5, \"C\", \"A\", \"E\", \"B\", \"D\")\n })\n}\n```\n\n### 2. Implement generalized testNCloneCollision\nGeneralize the 3-clone test to handle arbitrary N:\n\n```go\nfunc testNCloneCollision(t *testing.T, numClones int, syncOrder ...string) {\n t.Helper()\n \n if len(syncOrder) != numClones {\n t.Fatalf(\"syncOrder length (%d) must match numClones (%d)\", \n len(syncOrder), numClones)\n }\n \n tmpDir := t.TempDir()\n \n // Setup remote and N clones\n remoteDir := setupBareRepo(t, tmpDir)\n cloneDirs := make(map[string]string)\n \n for i := 0; i \u003c numClones; i++ {\n name := string(rune('A' + i))\n cloneDirs[name] = setupClone(t, tmpDir, remoteDir, name)\n }\n \n // Each clone creates issue with same ID but different content\n for name, dir := range cloneDirs {\n createIssue(t, dir, fmt.Sprintf(\"Issue from clone %s\", name))\n }\n \n // Sync in specified order\n for _, name := range syncOrder {\n syncClone(t, cloneDirs[name], name)\n }\n \n // Final pull for convergence\n for name, dir := range cloneDirs {\n finalPull(t, dir, name)\n }\n \n // Verify all clones have all N issues\n expectedTitles := make(map[string]bool)\n for i := 0; i \u003c numClones; i++ {\n name := string(rune('A' + i))\n expectedTitles[fmt.Sprintf(\"Issue from clone %s\", name)] = true\n }\n \n for name, dir := range cloneDirs {\n titles := getTitles(t, dir)\n if !compareTitleSets(titles, expectedTitles) {\n t.Errorf(\"Clone %s missing issues: expected %v, got %v\", \n name, expectedTitles, titles)\n }\n }\n \n t.Log(\"✓ All\", numClones, \"clones converged successfully\")\n}\n```\n\n### 3. Add performance benchmarks\nTest convergence time and memory usage:\n\n```go\nfunc BenchmarkNWayCollision(b *testing.B) {\n for _, n := range []int{3, 5, 10, 20} {\n b.Run(fmt.Sprintf(\"N=%d\", n), func(b *testing.B) {\n for i := 0; i \u003c b.N; i++ {\n // Run N-way collision and measure time\n testNCloneCollisionBench(b, n)\n }\n })\n }\n}\n```\n\n### 4. Add convergence time tests\nVerify bounded convergence:\n\n```go\nfunc TestConvergenceTime(t *testing.T) {\n // Test that convergence happens within expected rounds\n // For N clones, should converge in at most N-1 sync rounds\n \n for n := 3; n \u003c= 10; n++ {\n t.Run(fmt.Sprintf(\"N=%d\", n), func(t *testing.T) {\n rounds := measureConvergenceRounds(t, n)\n maxExpected := n - 1\n if rounds \u003e maxExpected {\n t.Errorf(\"Convergence took %d rounds, expected ≤ %d\", \n rounds, maxExpected)\n }\n })\n }\n}\n```\n\n### 5. Add edge case tests\nTest boundary conditions:\n- All N clones have identical content (dedup works)\n- N-1 clones have same content, 1 differs\n- All N clones have unique content\n- Mix of collisions and non-collisions\n\n## Acceptance Criteria\n- TestFiveCloneCollision passes with all sync orders\n- All 5 clones converge to identical content\n- Performance is acceptable (\u003c 5 seconds for 5 clones)\n- Convergence time is bounded (≤ N-1 rounds)\n- Edge cases handled correctly\n- Benchmarks show scalability to 10+ clones\n\n## Files to Create/Modify\n- beads_twoclone_test.go or beads_nway_test.go\n- Add helper functions for N-clone setup\n\n## Testing Strategy\n\n### Test Matrix\n| N Clones | Sync Orders | Expected Result |\n|----------|-------------|-----------------|\n| 3 | A→B→C | Pass |\n| 3 | C→B→A | Pass |\n| 5 | A→B→C→D→E | Pass |\n| 5 | E→D→C→B→A | Pass |\n| 5 | Random | Pass |\n| 10 | Sequential | Pass |\n\n### Performance Targets\n- 3 clones: \u003c 2 seconds\n- 5 clones: \u003c 5 seconds\n- 10 clones: \u003c 15 seconds\n\n## Dependencies\n- Requires bd-cbed9619.5, bd-cbed9619.4, bd-cbed9619.3, bd-cbed9619.2 to be completed\n- TestThreeCloneCollision must pass first\n\n## Success Metrics\n- All tests pass for N ∈ {3, 5, 10}\n- Convergence time scales linearly (O(N))\n- Memory usage reasonable (\u003c 100MB for 10 clones)\n- No data corruption or loss in any scenario","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T23:05:13.974702-07:00","updated_at":"2025-10-31T12:00:43.197709-07:00","closed_at":"2025-10-31T12:00:43.197709-07:00","source_repo":"."} -{"id":"bd-23a8","content_hash":"7c54bea4624429ff0842a192489979e0a1eafdd872027a0934b1a1d9b0e80d33","title":"Test simple issue","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-02T17:11:04.464726-08:00","updated_at":"2025-11-04T11:10:23.529727-08:00","closed_at":"2025-11-04T11:10:23.529731-08:00","source_repo":".","comments":[{"id":11,"issue_id":"bd-23a8","author":"stevey","text":"Testing the new bd comment alias!","created_at":"2025-11-08T00:03:56Z"},{"id":12,"issue_id":"bd-23a8","author":"stevey","text":"Another test with JSON output","created_at":"2025-11-08T00:03:56Z"},{"id":13,"issue_id":"bd-23a8","author":"stevey","text":"Test comment from file\n","created_at":"2025-11-08T00:03:56Z"}]} +{"id":"bd-23","content_hash":"0032b3982da6842ac5a6ccd91a659b2b8f742fc89cc042b8933913c323aebfec","title":"Critical bug","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.537107-07:00","closed_at":"2025-10-14T14:16:08.107546-07:00","source_repo":"."} +{"id":"bd-230","content_hash":"fe126747044833e0a308075bfd64a8686b01e9cbe0218884b99551be2f8fd10c","title":"Agent 1 Issue 27","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.476851-07:00","updated_at":"2025-10-21T00:29:10.476851-07:00","source_repo":"."} +{"id":"bd-2300","content_hash":"796b2262b67ec81b1aead47aa2f55721e6eaf4f0536aaf2973d2ca492723163b","title":"Agent 9 Issue 28","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.596708-07:00","updated_at":"2025-10-21T00:29:12.596708-07:00","source_repo":"."} +{"id":"bd-2301","content_hash":"cffa000632a15174df04c5ee97b932af3fa933dcf8830961d5bcdb824d284a31","title":"Agent 9 Issue 29","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.597567-07:00","updated_at":"2025-10-21T00:29:12.597567-07:00","source_repo":"."} +{"id":"bd-2302","content_hash":"1d9ba71f12040ba12954afbf9f8e33312dd585a06cacf66136628fdeb8ff543f","title":"Agent 9 Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.59846-07:00","updated_at":"2025-10-21T00:29:12.59846-07:00","source_repo":"."} +{"id":"bd-2303","content_hash":"03eaf45a5c8645692fc40b9dec3fb3e5c3455397e23cc47c141336ac5a08d2a5","title":"Agent 9 Issue 31","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.599437-07:00","updated_at":"2025-10-21T00:29:12.599437-07:00","source_repo":"."} +{"id":"bd-2304","content_hash":"6ddc4fc783d9f3e8a1677230813bd6adc22b43b416cc8d1afc78b8bf5344a6f5","title":"Agent 9 Issue 32","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.60036-07:00","updated_at":"2025-10-21T00:29:12.60036-07:00","source_repo":"."} +{"id":"bd-2305","content_hash":"7e061353b394b05bf6516f105ce5a0d85721d5008d9f78dbde9e137d6b77b0ab","title":"Agent 9 Issue 33","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.601238-07:00","updated_at":"2025-10-21T00:29:12.601238-07:00","source_repo":"."} +{"id":"bd-2306","content_hash":"dd4e7566df6a85cbde882143e7821a5f39b1ed7ae5af8b2eef7c3da987d93ae8","title":"Agent 9 Issue 34","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.602118-07:00","updated_at":"2025-10-21T00:29:12.602118-07:00","source_repo":"."} +{"id":"bd-2307","content_hash":"3abf2df3c5faebbdb8c6bfc3dce9a9dc617b82484189042d3e1da8da0ffa6cac","title":"Agent 9 Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.603054-07:00","updated_at":"2025-10-21T00:29:12.603054-07:00","source_repo":"."} +{"id":"bd-2308","content_hash":"d818e1b9c3f3e5c79bf8c5a3d3717240d0c69f4a40599be7bac53b75c664dc31","title":"Agent 9 Issue 36","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.603976-07:00","updated_at":"2025-10-21T00:29:12.603976-07:00","source_repo":"."} +{"id":"bd-2309","content_hash":"1fcc371a11b191144fe657aba2613d08bca80725e2710d09e5f391ced6f47a12","title":"Agent 9 Issue 37","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.604885-07:00","updated_at":"2025-10-21T00:29:12.604885-07:00","source_repo":"."} +{"id":"bd-231","content_hash":"38754be9a4a6b7514f907964b914a68e62c0d4c4e5167d3d364f1926b0f4ad9e","title":"Agent 1 Issue 28","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.477117-07:00","updated_at":"2025-10-21T00:29:10.477117-07:00","source_repo":"."} +{"id":"bd-2310","content_hash":"a7c6e69c90abbce21608cbcc7a507b05d2bd4b747a8720084baffbaee3779912","title":"Agent 9 Issue 38","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.60582-07:00","updated_at":"2025-10-21T00:29:12.60582-07:00","source_repo":"."} +{"id":"bd-2311","content_hash":"9d2dfd14e8326ee82b468c7090747cc1c8c7d753aaec0a061f4cb17d5afcc18f","title":"Agent 9 Issue 39","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.606726-07:00","updated_at":"2025-10-21T00:29:12.606726-07:00","source_repo":"."} +{"id":"bd-2312","content_hash":"b569b3b15afa7ff2a64a8e87dd7849b8d28b26ad5a3a92804e315a2fc7958e1b","title":"Agent 9 Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.6076-07:00","updated_at":"2025-10-21T00:29:12.6076-07:00","source_repo":"."} +{"id":"bd-2313","content_hash":"edc86c968ecf08e1fd303f9eb0fe49250e3e7f94ceb1dd62fce148c2de729db5","title":"Agent 9 Issue 41","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.608456-07:00","updated_at":"2025-10-21T00:29:12.608456-07:00","source_repo":"."} +{"id":"bd-2314","content_hash":"3b924adfbb6b19ad2fedba5210c4cfa8438a3364a336b66b1272cd7151df96a2","title":"Agent 9 Issue 42","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.609358-07:00","updated_at":"2025-10-21T00:29:12.609358-07:00","source_repo":"."} +{"id":"bd-2315","content_hash":"bbb0b5f3ad1d154a862b27409855826e80cc9c1c7e5af8e0123eba42df77b074","title":"Agent 9 Issue 43","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.610259-07:00","updated_at":"2025-10-21T00:29:12.610259-07:00","source_repo":"."} +{"id":"bd-2316","content_hash":"fb4ccb714f76571b2b79e5ebf7701900f0d091063ea4255ea87826dae6f06bde","title":"Agent 9 Issue 44","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.61117-07:00","updated_at":"2025-10-21T00:29:12.61117-07:00","source_repo":"."} +{"id":"bd-2317","content_hash":"1ecdd37df93bc35303e521770aded0fa0fe7c6598a0a15222be21682b76d32f9","title":"Agent 9 Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.612158-07:00","updated_at":"2025-10-21T00:29:12.612158-07:00","source_repo":"."} +{"id":"bd-2318","content_hash":"12c81f80ac9f775d76b408674a142fc6c62ce4d2b7b38c98cdfe65ab34215564","title":"Agent 9 Issue 46","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.613156-07:00","updated_at":"2025-10-21T00:29:12.613156-07:00","source_repo":"."} +{"id":"bd-2319","content_hash":"87b048beb92970846ad4a36cfa3bdc71d665fc1e6870da73359f0dd5d6708ad0","title":"Agent 3 Issue 0","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:11.912156-07:00","updated_at":"2025-10-21T00:29:11.912156-07:00","source_repo":"."} +{"id":"bd-232","content_hash":"0ec834aabc3dde226f269b946359b490d06344a448c64f1f0bfe8fd338e1caab","title":"Agent 1 Issue 29","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.477386-07:00","updated_at":"2025-10-21T00:29:10.477386-07:00","source_repo":"."} +{"id":"bd-2320","content_hash":"719a1319183150c4469733d19c633a357978865264b04e9a121d765e759dca6b","title":"Agent 3 Issue 1","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.615419-07:00","updated_at":"2025-10-21T00:29:12.615419-07:00","source_repo":"."} +{"id":"bd-2321","content_hash":"e89fbbe6c55e1915a998a8317e00c0bcdadc7efb24da8972b090ae16a82dfed4","title":"Agent 3 Issue 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.616369-07:00","updated_at":"2025-10-21T00:29:12.616369-07:00","source_repo":"."} +{"id":"bd-2322","content_hash":"309455c04045910be1ac3d00cb9dbf68bcbce27531eeab5b42b1ec9654a93485","title":"Agent 3 Issue 3","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.617261-07:00","updated_at":"2025-10-21T00:29:12.617261-07:00","source_repo":"."} +{"id":"bd-2323","content_hash":"c7aaf0872f6006d3e00567a8baad7f7312c2a202311ec86580b9385a4df90928","title":"Agent 3 Issue 4","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.618186-07:00","updated_at":"2025-10-21T00:29:12.618186-07:00","source_repo":"."} +{"id":"bd-2324","content_hash":"49c5b52e044056fa63564350fcf60d3a6ccf422cea1d23701a89a63c9fabd571","title":"Agent 3 Issue 5","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.619126-07:00","updated_at":"2025-10-21T00:29:12.619126-07:00","source_repo":"."} +{"id":"bd-2325","content_hash":"1ded1c9afab980ba410ca2b6d6d0d76dafdf46588df5afa6203534c787d381b4","title":"Agent 3 Issue 6","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.620057-07:00","updated_at":"2025-10-21T00:29:12.620057-07:00","source_repo":"."} +{"id":"bd-2326","content_hash":"106c88e6d5db0df6e5e2e9e9fd628930ae0be16d52904801778bc9690ace50b5","title":"Agent 3 Issue 7","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.620944-07:00","updated_at":"2025-10-21T00:29:12.620944-07:00","source_repo":"."} +{"id":"bd-2327","content_hash":"2c7a7e4fd19e1701cc2cb3481fdfd62ee9cd3ac315cacb7db2b3e0d69823ae77","title":"Agent 3 Issue 8","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.621844-07:00","updated_at":"2025-10-21T00:29:12.621844-07:00","source_repo":"."} +{"id":"bd-2328","content_hash":"64f304874e19ce35327665a39b912f04413f35a32ee8f3f849ba728e5a92ad35","title":"Agent 3 Issue 9","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.622743-07:00","updated_at":"2025-10-21T00:29:12.622743-07:00","source_repo":"."} +{"id":"bd-2329","content_hash":"a62cc4553ca67a9f1fa0dd8e8f8f13854033ae503177fea69429af8144e715ff","title":"Agent 3 Issue 10","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.623653-07:00","updated_at":"2025-10-21T00:29:12.623653-07:00","source_repo":"."} +{"id":"bd-233","content_hash":"a7719a39eb6b426df050195cfdbd773c0cc99b0a11602cac450922e411ca27b6","title":"Agent 1 Issue 30","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.47766-07:00","updated_at":"2025-10-21T00:29:10.47766-07:00","source_repo":"."} +{"id":"bd-2330","content_hash":"cb8289a30c48df6921daf86ef1467c86ed57f1c8908f60ff5eebfb48e957d53c","title":"Agent 3 Issue 11","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.624576-07:00","updated_at":"2025-10-21T00:29:12.624576-07:00","source_repo":"."} +{"id":"bd-2331","content_hash":"1db3a7e77787d1ee0fa15352cf49088245352e3e18634475fbc7196a415407c7","title":"Agent 3 Issue 12","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.625512-07:00","updated_at":"2025-10-21T00:29:12.625512-07:00","source_repo":"."} +{"id":"bd-2332","content_hash":"c106862aebbc408f4b6d5a705aa61d2da38474e115e8755814467ea3d948ee12","title":"Agent 3 Issue 13","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.626421-07:00","updated_at":"2025-10-21T00:29:12.626421-07:00","source_repo":"."} +{"id":"bd-2333","content_hash":"959a1087bd47f535de340a60bb57ad87ee64bc075058baecca5af9e6a9361864","title":"Agent 3 Issue 14","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.62735-07:00","updated_at":"2025-10-21T00:29:12.62735-07:00","source_repo":"."} +{"id":"bd-2334","content_hash":"36b71c2586d4798ef9fb71d7a743629fdcc25de56d12c838cea44f31d0f96eef","title":"Agent 3 Issue 15","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.628264-07:00","updated_at":"2025-10-21T00:29:12.628264-07:00","source_repo":"."} +{"id":"bd-2335","content_hash":"46c2a4bf738e7b774db08619bd561b126eb7a1c18010b082a5dda32b0af3e5e2","title":"Agent 3 Issue 16","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.629217-07:00","updated_at":"2025-10-21T00:29:12.629217-07:00","source_repo":"."} +{"id":"bd-2336","content_hash":"47a75c87bf195a5716b5ef4c07a0e0bbce5b0bfdece60832c5254701bab37764","title":"Agent 3 Issue 17","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.630148-07:00","updated_at":"2025-10-21T00:29:12.630148-07:00","source_repo":"."} +{"id":"bd-2337","content_hash":"de7f4e1f31ed0b6a903a1a86c67200b0527f04c6b4d7302741c0929f1addc50d","title":"Agent 3 Issue 18","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.631064-07:00","updated_at":"2025-10-21T00:29:12.631064-07:00","source_repo":"."} +{"id":"bd-2338","content_hash":"1539b64873e5967f954910ce27d06ddf02389dad410c3f8cc7ef2976c73b6295","title":"Agent 3 Issue 19","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.63199-07:00","updated_at":"2025-10-21T00:29:12.63199-07:00","source_repo":"."} +{"id":"bd-2339","content_hash":"026106dfc54e4be54e0ebeb4ff15ab1c4f4eb8c4f6b7af76639721078816aaed","title":"Agent 3 Issue 20","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.633186-07:00","updated_at":"2025-10-21T00:29:12.633186-07:00","source_repo":"."} +{"id":"bd-234","content_hash":"6a20d60c9a17e69b006cc94a54708d36d0b863570209ddfe460620d69215321b","title":"Agent 1 Issue 31","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.477973-07:00","updated_at":"2025-10-21T00:29:10.477973-07:00","source_repo":"."} +{"id":"bd-2340","content_hash":"16f7afc2b987c1f1083760ed7789f7144fc6e0e624e7d9648891b083f7f9c140","title":"Agent 3 Issue 21","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.634136-07:00","updated_at":"2025-10-21T00:29:12.634136-07:00","source_repo":"."} +{"id":"bd-2341","content_hash":"4ba8aadd29ebbbb7498a0cacd70b2562140d775fe2d06eb291aa70939f8b093b","title":"Agent 3 Issue 22","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.635095-07:00","updated_at":"2025-10-21T00:29:12.635095-07:00","source_repo":"."} +{"id":"bd-2342","content_hash":"bfe4c5fb3ab61d769f98230c6e81fd8b00ed18fe5f3797790803058f68439f50","title":"Agent 3 Issue 23","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.636062-07:00","updated_at":"2025-10-21T00:29:12.636062-07:00","source_repo":"."} +{"id":"bd-2343","content_hash":"7b15a9f6a26e7a7bc3ac011c0ce1e0d1718f3a443bc4b44dd01f4a17d8049ac2","title":"Agent 3 Issue 24","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.637011-07:00","updated_at":"2025-10-21T00:29:12.637011-07:00","source_repo":"."} +{"id":"bd-2344","content_hash":"64e8709410774031e8886fa2bd516ef58bdc43fb1561ac937becab4dc87034ba","title":"Agent 3 Issue 25","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.637961-07:00","updated_at":"2025-10-21T00:29:12.637961-07:00","source_repo":"."} +{"id":"bd-2345","content_hash":"a9e18aade65cdee572838c418c747fe1f07a47452c4aaadc0486d7b549e46c9f","title":"Agent 3 Issue 26","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.638926-07:00","updated_at":"2025-10-21T00:29:12.638926-07:00","source_repo":"."} +{"id":"bd-2346","content_hash":"e7d3b9bb7860cdb2b928b78b0a08661754822cb2357cf0231505298f54f23488","title":"Agent 3 Issue 27","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.639923-07:00","updated_at":"2025-10-21T00:29:12.639923-07:00","source_repo":"."} +{"id":"bd-2347","content_hash":"24ed4146694d85b6e52e73911dc5c97576f544bbad0ffa37996b58c5e95ce5d0","title":"Agent 3 Issue 28","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.640879-07:00","updated_at":"2025-10-21T00:29:12.640879-07:00","source_repo":"."} +{"id":"bd-2348","content_hash":"5936171967b9e33c67362e51d855dbb7982b0851a5c9f36d80f6f3459b770122","title":"Agent 3 Issue 29","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.641834-07:00","updated_at":"2025-10-21T00:29:12.641834-07:00","source_repo":"."} +{"id":"bd-2349","content_hash":"9a6fdc3700a149e6d8f988686bfc735986b2f24704dffdd2b6a4db8836c33d29","title":"Agent 3 Issue 30","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.642784-07:00","updated_at":"2025-10-21T00:29:12.642784-07:00","source_repo":"."} +{"id":"bd-235","content_hash":"9691e83e19c8c5dcca113dd67a24db88e45e7c72604d037a9e9deb4587ad7b02","title":"Agent 1 Issue 32","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.478237-07:00","updated_at":"2025-10-21T00:29:10.478237-07:00","source_repo":"."} +{"id":"bd-2350","content_hash":"d4b88f49ce7099a5f2ec73676f148330283d15e2f6ea44166c05f8b9df763b9f","title":"Agent 3 Issue 31","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.643741-07:00","updated_at":"2025-10-21T00:29:12.643741-07:00","source_repo":"."} +{"id":"bd-2351","content_hash":"fc3dea5adfdc46ca61656c72cedc80d6a350efdbce7101c1bfff46298a54112a","title":"Agent 3 Issue 32","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.644666-07:00","updated_at":"2025-10-21T00:29:12.644666-07:00","source_repo":"."} +{"id":"bd-2352","content_hash":"0aa31353be8600ed264042e32f5b2de5255edd4fc7c828a76749559fe5a5b0c7","title":"Agent 3 Issue 33","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.645596-07:00","updated_at":"2025-10-21T00:29:12.645596-07:00","source_repo":"."} +{"id":"bd-2353","content_hash":"e67a064cf60cdb6dc3d7d0373368dc46c2616d3a4b055d163499413dae9ebe61","title":"Agent 3 Issue 34","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.646507-07:00","updated_at":"2025-10-21T00:29:12.646507-07:00","source_repo":"."} +{"id":"bd-2354","content_hash":"fedf1e58fe96a83ec1364187ffc0eb973aa4ab71da28be978b13bc90aead46d7","title":"Agent 3 Issue 35","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.647449-07:00","updated_at":"2025-10-21T00:29:12.647449-07:00","source_repo":"."} +{"id":"bd-2355","content_hash":"01ac7d772f5a5f7fd03a7e4527f4137b70baea203f5f7f7c1f3e51c42786bccd","title":"Agent 3 Issue 36","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.648426-07:00","updated_at":"2025-10-21T00:29:12.648426-07:00","source_repo":"."} +{"id":"bd-2356","content_hash":"e7d35a96ceb4cb728ccdeab0f46dd8f1bca2fb467e96d97b19555e371fc0c0e9","title":"Agent 3 Issue 37","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.649385-07:00","updated_at":"2025-10-21T00:29:12.649385-07:00","source_repo":"."} +{"id":"bd-2357","content_hash":"cbe6364645fca3dfc7b140fd7c1046852e37fc16a0389e1b68dc5d93f27003f7","title":"Agent 3 Issue 38","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.650291-07:00","updated_at":"2025-10-21T00:29:12.650291-07:00","source_repo":"."} +{"id":"bd-2358","content_hash":"56297d672e0ae45f5b8ee44800d8f12fb27564d3d864eee4179a7f1c7f586fb4","title":"Agent 3 Issue 39","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.65126-07:00","updated_at":"2025-10-21T00:29:12.65126-07:00","source_repo":"."} +{"id":"bd-2359","content_hash":"be4262be15b3cf327d7b4e5d68b72efb81e1b1c95b9534103feae28b9fba74ff","title":"Agent 3 Issue 40","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.652182-07:00","updated_at":"2025-10-21T00:29:12.652182-07:00","source_repo":"."} +{"id":"bd-236","content_hash":"7c445235b241a0d8d275ec2803949b1802d4fb06d7c4e5e5715b615566d589c3","title":"Agent 1 Issue 33","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.478505-07:00","updated_at":"2025-10-21T00:29:10.478505-07:00","source_repo":"."} +{"id":"bd-2360","content_hash":"22cfc4d09afd26e21d8ae9ce8d8f1232e21ed4b61389e36859efa484ac54fb83","title":"Agent 3 Issue 41","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.653071-07:00","updated_at":"2025-10-21T00:29:12.653071-07:00","source_repo":"."} +{"id":"bd-2361","content_hash":"e7d02d5907aac6fdb549ce34b2f0a83258f61fa07ece9d9e26df4c05d9a93512","title":"Agent 3 Issue 42","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.654096-07:00","updated_at":"2025-10-21T00:29:12.654096-07:00","source_repo":"."} +{"id":"bd-2362","content_hash":"c172d743ceadfd5005d462fbfe63cbe631446b186a651a2f02750e04191a9b94","title":"Agent 3 Issue 43","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.654989-07:00","updated_at":"2025-10-21T00:29:12.654989-07:00","source_repo":"."} +{"id":"bd-2363","content_hash":"3492bfdca346eb15fb6d71ad38198e2d1b6e30f4273fb8af2faa0272b8cc6fb3","title":"Agent 3 Issue 44","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.655921-07:00","updated_at":"2025-10-21T00:29:12.655921-07:00","source_repo":"."} +{"id":"bd-2364","content_hash":"2b3d98dc425b6a1ad81983419810fbc682fec0bcb0b10c80df0ae5f0fb0822ab","title":"Agent 3 Issue 45","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.656878-07:00","updated_at":"2025-10-21T00:29:12.656878-07:00","source_repo":"."} +{"id":"bd-2365","content_hash":"77eb51925d73babbe7f24422adbcebcc80008128dd064c5a17600243495f9bfb","title":"Agent 3 Issue 46","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.657872-07:00","updated_at":"2025-10-21T00:29:12.657872-07:00","source_repo":"."} +{"id":"bd-2366","content_hash":"ae98fda2a762396b5c9b83bae40a919cd0e40c7ef17c5114200c87d703577b44","title":"Agent 3 Issue 47","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.658796-07:00","updated_at":"2025-10-21T00:29:12.658796-07:00","source_repo":"."} +{"id":"bd-2367","content_hash":"ee2711bfa15792986bcaa182cfefeb473d2e273c9208bbf9a1a72e9e23e290f6","title":"Agent 3 Issue 48","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.659748-07:00","updated_at":"2025-10-21T00:29:12.659748-07:00","source_repo":"."} +{"id":"bd-2368","content_hash":"6a91d71b54b3b1f7e08de6d1a0aea4ad57cdc1406cb6703bf4e8dd16c474cc84","title":"Agent 3 Issue 49","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.66065-07:00","updated_at":"2025-10-21T00:29:12.66065-07:00","source_repo":"."} +{"id":"bd-2369","content_hash":"4459c3e96d1576e3138a09097c906430f84a701dfebe3bd9cec0b470b01c381b","title":"Agent 3 Issue 50","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.661552-07:00","updated_at":"2025-10-21T00:29:12.661552-07:00","source_repo":"."} +{"id":"bd-237","content_hash":"77ebdaecbbaf9faa80b829cfe2781f5ceb4edaf0fa29b1cb6c7ea39d2efd68c0","title":"Agent 1 Issue 34","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.478776-07:00","updated_at":"2025-10-21T00:29:10.478776-07:00","source_repo":"."} +{"id":"bd-2370","content_hash":"5900b3da45b994ecdb7a7ca5508ecbbb46707ef5a282721c9d2a97f61c4a4d22","title":"Agent 3 Issue 51","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.662461-07:00","updated_at":"2025-10-21T00:29:12.662461-07:00","source_repo":"."} +{"id":"bd-2371","content_hash":"35004bf9a51603cfd38de84746193d95af15dad8a015b52c77c53cd0ec59c98d","title":"Agent 3 Issue 52","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.663413-07:00","updated_at":"2025-10-21T00:29:12.663413-07:00","source_repo":"."} +{"id":"bd-2372","content_hash":"b4cc4b99e937bf644f8219834d8fe2cf2036a171973311b8434a642e0ebb76f8","title":"Agent 3 Issue 53","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.664341-07:00","updated_at":"2025-10-21T00:29:12.664341-07:00","source_repo":"."} +{"id":"bd-2373","content_hash":"b828e5eded35c05e846773e1904b8d0a6003b84122495ed83dbd2a3e6eff5f76","title":"Agent 3 Issue 54","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.665282-07:00","updated_at":"2025-10-21T00:29:12.665282-07:00","source_repo":"."} +{"id":"bd-2374","content_hash":"052217afed962020ea58ad588c1381380d952854db5a3ab442dc1ce4bc2837fb","title":"Agent 3 Issue 55","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.666258-07:00","updated_at":"2025-10-21T00:29:12.666258-07:00","source_repo":"."} +{"id":"bd-2375","content_hash":"f19d8bf6ce07308578b3368d5634becfa16f548649379367d562b470bacb6f52","title":"Agent 3 Issue 56","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.667202-07:00","updated_at":"2025-10-21T00:29:12.667202-07:00","source_repo":"."} +{"id":"bd-2376","content_hash":"d0b5f55421f17919716679ac5891da3ca7e18f59b590fd402d20d6dd5e001c30","title":"Agent 3 Issue 57","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.668182-07:00","updated_at":"2025-10-21T00:29:12.668182-07:00","source_repo":"."} +{"id":"bd-2377","content_hash":"31f4b26c06377d991232f77889a89a8a7a7ea9b0ec58faca24c7372666049398","title":"Agent 3 Issue 58","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.669073-07:00","updated_at":"2025-10-21T00:29:12.669073-07:00","source_repo":"."} +{"id":"bd-2378","content_hash":"d3033f17c6079b1b101b44453371d967ddb6ff0ebd4216dd437aef8601a10dde","title":"Agent 3 Issue 59","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.66999-07:00","updated_at":"2025-10-21T00:29:12.66999-07:00","source_repo":"."} +{"id":"bd-2379","content_hash":"505d6d3b57e7fd63629606d1060e06eee2f884c49ed6d6a991e790ffbe749d7c","title":"Agent 3 Issue 60","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.670896-07:00","updated_at":"2025-10-21T00:29:12.670896-07:00","source_repo":"."} +{"id":"bd-238","content_hash":"bb05cfaa9c6075ad3868df81855420f4ea900aa75ffee39533c9f82eba6e7016","title":"Agent 1 Issue 35","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.479062-07:00","updated_at":"2025-10-21T00:29:10.479062-07:00","source_repo":"."} +{"id":"bd-2380","content_hash":"957ae0da5e316195593157d37df205a0bcd5627f2ca420a8eef6428c0553187b","title":"Agent 3 Issue 61","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.671787-07:00","updated_at":"2025-10-21T00:29:12.671787-07:00","source_repo":"."} +{"id":"bd-2381","content_hash":"4ba1187b041e3b10849a63d723fea7ced6ecf607baebf3820f974c2e0799cf7c","title":"Agent 3 Issue 62","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.672755-07:00","updated_at":"2025-10-21T00:29:12.672755-07:00","source_repo":"."} +{"id":"bd-2382","content_hash":"16a01652119892fc8f5c1d6cca2ead226a486c227cb00fdbc4718bf6e98aecc4","title":"Agent 3 Issue 63","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.673677-07:00","updated_at":"2025-10-21T00:29:12.673677-07:00","source_repo":"."} +{"id":"bd-2383","content_hash":"a85049bfb761bdcf0641dd4f47fe60179dbff20bcc2e56077a370ca73bc7e57f","title":"Agent 3 Issue 64","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.674598-07:00","updated_at":"2025-10-21T00:29:12.674598-07:00","source_repo":"."} +{"id":"bd-2384","content_hash":"76f53fcbc18713b2d2e3334399a14483b28ef733d2555137e2c7668abff8a83d","title":"Agent 3 Issue 65","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.675533-07:00","updated_at":"2025-10-21T00:29:12.675533-07:00","source_repo":"."} +{"id":"bd-2385","content_hash":"c0f6bca9450a39d943a612886266c6e8f22a45f6041bf6c08a946cb9f6ceb768","title":"Agent 3 Issue 66","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.676484-07:00","updated_at":"2025-10-21T00:29:12.676484-07:00","source_repo":"."} +{"id":"bd-2386","content_hash":"8c51d16154eea32d1f67ec46ab75174c256508ca6f1f38c1027a74db595a2734","title":"Agent 3 Issue 67","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.677432-07:00","updated_at":"2025-10-21T00:29:12.677432-07:00","source_repo":"."} +{"id":"bd-2387","content_hash":"077f195da36a8c0876bf56661f75298a630b64a8ec030c7c7fc0e65c2ab34b7c","title":"Agent 3 Issue 68","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.678393-07:00","updated_at":"2025-10-21T00:29:12.678393-07:00","source_repo":"."} +{"id":"bd-2388","content_hash":"1eb31dc3291236329ec0ba90cccc6161cbac33a068b4f334bbc414880f14b8e8","title":"Agent 3 Issue 69","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.679331-07:00","updated_at":"2025-10-21T00:29:12.679331-07:00","source_repo":"."} +{"id":"bd-2389","content_hash":"f22f5a8e444f5f6132aa012402bb84a239ad1eb654f5c5a60a6696408a0ec2b1","title":"Agent 3 Issue 70","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.680309-07:00","updated_at":"2025-10-21T00:29:12.680309-07:00","source_repo":"."} +{"id":"bd-239","content_hash":"0edac60ab3d8ce0b33bed3e039e6f7b3d7a41cb7d9f471d49681695e76927bc8","title":"Agent 1 Issue 36","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.479323-07:00","updated_at":"2025-10-21T00:29:10.479323-07:00","source_repo":"."} +{"id":"bd-2390","content_hash":"f5531b640483171dcdf8dc07e39068f3dbfe7d0f36a7b4ded9530a6a8b9b0e91","title":"Agent 3 Issue 71","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.681263-07:00","updated_at":"2025-10-21T00:29:12.681263-07:00","source_repo":"."} +{"id":"bd-2391","content_hash":"6c88a3e46e7030b1d449c60ea4cc9ad0b8606c9797bfa87add101b6ff5b2c71c","title":"Agent 3 Issue 72","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.682133-07:00","updated_at":"2025-10-21T00:29:12.682133-07:00","source_repo":"."} +{"id":"bd-2392","content_hash":"ae51ebc1b510feeefa3a66ba2b0b1eed61b9cd475e3a9d3a5807c79feb5edd14","title":"Agent 3 Issue 73","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.683077-07:00","updated_at":"2025-10-21T00:29:12.683077-07:00","source_repo":"."} +{"id":"bd-2393","content_hash":"20fb2366a02187a1b0398b3003bd9fa5e284ac7f2d6d84d34d1573e44cfe5088","title":"Agent 3 Issue 74","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.684077-07:00","updated_at":"2025-10-21T00:29:12.684077-07:00","source_repo":"."} +{"id":"bd-2394","content_hash":"8941e5cd1577dc0c046975619984ae18ddf93c11d8b9eb2da19fa05218cfa42d","title":"Agent 3 Issue 75","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.685056-07:00","updated_at":"2025-10-21T00:29:12.685056-07:00","source_repo":"."} +{"id":"bd-2395","content_hash":"1d4d0e4162a63bf4c0e8cc65bb03def57592c9d20c89a8f0a63dafa35324627b","title":"Agent 3 Issue 76","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.685926-07:00","updated_at":"2025-10-21T00:29:12.685926-07:00","source_repo":"."} +{"id":"bd-2396","content_hash":"3552cfa874734598b7f6f6a87e9fb6471370c23f4d28d9d2f082e3a37f016cfb","title":"Agent 3 Issue 77","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.686805-07:00","updated_at":"2025-10-21T00:29:12.686805-07:00","source_repo":"."} +{"id":"bd-2397","content_hash":"9cb1967a6e2db05ca30f9e1d4db5995172ecc8b2eb6d5c72db2b28a33dfe90c3","title":"Agent 3 Issue 78","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.687678-07:00","updated_at":"2025-10-21T00:29:12.687678-07:00","source_repo":"."} +{"id":"bd-2398","content_hash":"4cb006a5ad789b2ee116f2bdda40ee8c3c6369a27a1e4649e3c8ae41890528b5","title":"Agent 3 Issue 79","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.688603-07:00","updated_at":"2025-10-21T00:29:12.688603-07:00","source_repo":"."} +{"id":"bd-2399","content_hash":"98a370ab32936edcb7a863ddd6b7a06be5adaef786d1570bbcc853d297d5234f","title":"Agent 3 Issue 80","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.689507-07:00","updated_at":"2025-10-21T00:29:12.689507-07:00","source_repo":"."} +{"id":"bd-23a8","content_hash":"7c54bea4624429ff0842a192489979e0a1eafdd872027a0934b1a1d9b0e80d33","title":"Test simple issue","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-02T17:11:04.464726-08:00","updated_at":"2025-11-04T11:10:23.529727-08:00","closed_at":"2025-11-04T11:10:23.529731-08:00","source_repo":".","comments":[{"id":2,"issue_id":"bd-23a8","author":"stevey","text":"Testing the new bd comment alias!","created_at":"2025-11-12T18:57:44Z"},{"id":3,"issue_id":"bd-23a8","author":"stevey","text":"Another test with JSON output","created_at":"2025-11-12T18:57:44Z"},{"id":4,"issue_id":"bd-23a8","author":"stevey","text":"Test comment from file\n","created_at":"2025-11-12T18:57:44Z"}]} +{"id":"bd-24","content_hash":"dddae33e160e3bccf9aaec9f7651c604b58ebab5b6f2f52f9672c4a89077c67c","title":"Verify auto-export works","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.537264-07:00","closed_at":"2025-10-14T14:16:09.268591-07:00","source_repo":"."} +{"id":"bd-240","content_hash":"5dc8ae707b4c47ed8b13fe2ad61972f209b948450309b4efc82562e3fb078f88","title":"Agent 1 Issue 37","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.479578-07:00","updated_at":"2025-10-21T00:29:10.479578-07:00","source_repo":"."} +{"id":"bd-2400","content_hash":"bc680db0aa4d7d476e1bf5b115cae2a718358a982c9a6e71fe1be689605125f6","title":"Agent 3 Issue 81","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.690444-07:00","updated_at":"2025-10-21T00:29:12.690444-07:00","source_repo":"."} +{"id":"bd-2401","content_hash":"9888a85f7c83dc812a928aa67ba6ebb4b4bec20bf19fb795b948aa969168b3e4","title":"Agent 3 Issue 82","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.691396-07:00","updated_at":"2025-10-21T00:29:12.691396-07:00","source_repo":"."} +{"id":"bd-2402","content_hash":"35a93071aba2ecab5abe5d3c6f065c2bb400973aa76329a22064349b6287e04d","title":"Agent 3 Issue 83","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.692366-07:00","updated_at":"2025-10-21T00:29:12.692366-07:00","source_repo":"."} +{"id":"bd-2403","content_hash":"c2f80dc3aeb56fed2d57ce9f098be1c90ed418a5471dd719bee47b8a36a96d1b","title":"Agent 3 Issue 84","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.693313-07:00","updated_at":"2025-10-21T00:29:12.693313-07:00","source_repo":"."} +{"id":"bd-2404","content_hash":"c7f8bf589893547d269ce2e896517a57a3fa981dd685074997335f9f0bf5d5f4","title":"Agent 3 Issue 85","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.694501-07:00","updated_at":"2025-10-21T00:29:12.694501-07:00","source_repo":"."} +{"id":"bd-2405","content_hash":"43290cccecad604fa5158bdabae51aa3c3bd6e393376fbd91aeca5434f571b9d","title":"Agent 3 Issue 86","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.695478-07:00","updated_at":"2025-10-21T00:29:12.695478-07:00","source_repo":"."} +{"id":"bd-2406","content_hash":"d8e102779ba8728fdcfe320b13abb690353b8edf82ab54a3396c7aa016a3bcca","title":"Agent 3 Issue 87","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.6964-07:00","updated_at":"2025-10-21T00:29:12.6964-07:00","source_repo":"."} +{"id":"bd-2407","content_hash":"9b99b2d017b31f3b723a95cc88879487b385e56ff9d0cc091b1507f44544abe6","title":"Agent 3 Issue 88","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.69732-07:00","updated_at":"2025-10-21T00:29:12.69732-07:00","source_repo":"."} +{"id":"bd-2408","content_hash":"e3d77710abb4bbd5093c3dd1e3fa44e5ee96e0ac4972297f9744cb80a0f6ddb5","title":"Agent 3 Issue 89","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.698237-07:00","updated_at":"2025-10-21T00:29:12.698237-07:00","source_repo":"."} +{"id":"bd-2409","content_hash":"b92f027ae989a715df75d74c079912e289139906fb91e22d508a53fb9f8d29b4","title":"Agent 3 Issue 90","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.699175-07:00","updated_at":"2025-10-21T00:29:12.699175-07:00","source_repo":"."} +{"id":"bd-241","content_hash":"b69dbf90561559dbab99c197a559d67bd5ebdf2435279e7b603c5e52068fe0b8","title":"Agent 1 Issue 38","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.479817-07:00","updated_at":"2025-10-21T00:29:10.479817-07:00","source_repo":"."} +{"id":"bd-2410","content_hash":"7cf8882a222f74edf2326d1280bbfd815371bebc8ce9f78ef7d810b81e5e1c96","title":"Agent 3 Issue 91","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.700092-07:00","updated_at":"2025-10-21T00:29:12.700092-07:00","source_repo":"."} +{"id":"bd-2411","content_hash":"c59f28157333ae9456efd117961cd01cbd5021d0ebd05562780bce3ce37634fa","title":"Agent 3 Issue 92","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.70104-07:00","updated_at":"2025-10-21T00:29:12.70104-07:00","source_repo":"."} +{"id":"bd-2412","content_hash":"d17e482af4d0f6511cc13fce022fc1724fd86a4533225bca1e1a140ab7f58cc4","title":"Agent 3 Issue 93","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.70198-07:00","updated_at":"2025-10-21T00:29:12.70198-07:00","source_repo":"."} +{"id":"bd-2413","content_hash":"3b72bda1470175f0c98879f83041c1979c287b98fabdea098f9dd7ce563e4e73","title":"Agent 3 Issue 94","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.702907-07:00","updated_at":"2025-10-21T00:29:12.702907-07:00","source_repo":"."} +{"id":"bd-2414","content_hash":"d2e0bdef274801822438165a5cbd2b2a608360437b64501906f380a2efabe2f6","title":"Agent 3 Issue 95","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.703869-07:00","updated_at":"2025-10-21T00:29:12.703869-07:00","source_repo":"."} +{"id":"bd-2415","content_hash":"b0b4b2cd27fa623a98b7eb6067891b982716ce8cd8b63b1c894c56d25ae8b537","title":"Agent 3 Issue 96","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.704813-07:00","updated_at":"2025-10-21T00:29:12.704813-07:00","source_repo":"."} +{"id":"bd-2416","content_hash":"de20ca611c6bc6c06780f1a9debdac5bfdd9aeed8085bbf6a3a28df234de183a","title":"Agent 3 Issue 97","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.70576-07:00","updated_at":"2025-10-21T00:29:12.70576-07:00","source_repo":"."} +{"id":"bd-2417","content_hash":"499741549edfc5c55db117b67fe27883140104e8f9d1f1d9c8db4bd0b9c2041f","title":"Agent 3 Issue 98","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.706713-07:00","updated_at":"2025-10-21T00:29:12.706713-07:00","source_repo":"."} +{"id":"bd-2418","content_hash":"bbb1cc12334c31529c83118ce8293efc9a0225dc9cec7864683718f8e09788a0","title":"Agent 3 Issue 99","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.707683-07:00","updated_at":"2025-10-21T00:29:12.707683-07:00","source_repo":"."} +{"id":"bd-2419","content_hash":"ae68e5ffdc87fc46fc14b2016c5466e7d5b0080ca0c7c176bfa15ade584dcbe7","title":"Agent 9 Issue 47","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.614411-07:00","updated_at":"2025-10-21T00:29:12.614411-07:00","source_repo":"."} +{"id":"bd-242","content_hash":"320263c5060fd7e6cfb386b015ceece6fc56628a55de8f11c7f8cd9d9fee4a53","title":"Agent 1 Issue 39","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.480055-07:00","updated_at":"2025-10-21T00:29:10.480055-07:00","source_repo":"."} +{"id":"bd-2420","content_hash":"3b3bfb31a17b5bb05b2da2b7475ca589311d6c5f8174aeff96882311eec38d53","title":"Agent 9 Issue 48","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.709731-07:00","updated_at":"2025-10-21T00:29:12.709731-07:00","source_repo":"."} +{"id":"bd-2421","content_hash":"6329212d05f4bf72020a35f077eb1a7f81ca327914e979579798492dc73b4297","title":"Agent 9 Issue 49","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.710753-07:00","updated_at":"2025-10-21T00:29:12.710753-07:00","source_repo":"."} +{"id":"bd-2422","content_hash":"d8dbc60e3177504a42229b41caf99a3dadf09937e09f71bf5b506fdfa6e95519","title":"Agent 9 Issue 50","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.711741-07:00","updated_at":"2025-10-21T00:29:12.711741-07:00","source_repo":"."} +{"id":"bd-2423","content_hash":"1aead37aebf5d6195b3002db206104207ac60970925410fd9df36710bac1b9cd","title":"Agent 9 Issue 51","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.712705-07:00","updated_at":"2025-10-21T00:29:12.712705-07:00","source_repo":"."} +{"id":"bd-2424","content_hash":"205ebb13e065126bd0bba2d48ae0f03847c59bccf69e95656ecc4ae845fe0401","title":"Agent 9 Issue 52","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.713679-07:00","updated_at":"2025-10-21T00:29:12.713679-07:00","source_repo":"."} +{"id":"bd-2425","content_hash":"65f7a81e1a15f7e5fdf6a01c1a75b27511ed47913764692313c03a87deebe25c","title":"Agent 9 Issue 53","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.714615-07:00","updated_at":"2025-10-21T00:29:12.714615-07:00","source_repo":"."} +{"id":"bd-2426","content_hash":"f6de6163a1ce107d853a42afe3337ea5b840a1fef8c5e8b7609426f52a526607","title":"Agent 9 Issue 54","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.715605-07:00","updated_at":"2025-10-21T00:29:12.715605-07:00","source_repo":"."} +{"id":"bd-2427","content_hash":"3fccce8c94ee31365843d0e659026c855f4cf0244c00d30f412d7293177f1ffd","title":"Agent 9 Issue 55","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.71657-07:00","updated_at":"2025-10-21T00:29:12.71657-07:00","source_repo":"."} +{"id":"bd-2428","content_hash":"dab5777b56316675cd8a1e7d9ff074f45e4b08ea6b97b6e1544f11782d8297e5","title":"Agent 9 Issue 56","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.717552-07:00","updated_at":"2025-10-21T00:29:12.717552-07:00","source_repo":"."} +{"id":"bd-2429","content_hash":"f1a8ff472b72b85ea48740448ae5c9a463d75e26392dba44056e9571be96ea10","title":"Agent 9 Issue 57","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.718532-07:00","updated_at":"2025-10-21T00:29:12.718532-07:00","source_repo":"."} +{"id":"bd-243","content_hash":"fe4f292f16c5088e2c3bcbbcaa790ec2ad90807460241da24f8bc4891f8f3fe9","title":"Agent 1 Issue 40","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.480293-07:00","updated_at":"2025-10-21T00:29:10.480293-07:00","source_repo":"."} +{"id":"bd-2430","content_hash":"9c777c67559871f9de97334f178f3a32885fa3bc7761464aa988a5d4435d96d0","title":"Agent 9 Issue 58","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.719716-07:00","updated_at":"2025-10-21T00:29:12.719716-07:00","source_repo":"."} +{"id":"bd-2431","content_hash":"e3e812bc4f7b24a74747dddfcc574ed5251f5469a9f63db4ff971bfa2149cdfa","title":"Agent 9 Issue 59","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.720695-07:00","updated_at":"2025-10-21T00:29:12.720695-07:00","source_repo":"."} +{"id":"bd-2432","content_hash":"e8801912035b00d56ca43c397caebd19c2f8229a92c0bbff86b80ae08591ec80","title":"Agent 9 Issue 60","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.721693-07:00","updated_at":"2025-10-21T00:29:12.721693-07:00","source_repo":"."} +{"id":"bd-2433","content_hash":"4a3eaf8cf3477c6faa0de9b2b9e960d4e351af0edbb40117ae21aafcf05b7c2e","title":"Agent 9 Issue 61","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.722659-07:00","updated_at":"2025-10-21T00:29:12.722659-07:00","source_repo":"."} +{"id":"bd-2434","content_hash":"c477751f57e7dc3674a7444ed09b9b99eb42fb247860c735f945f60ce59dbe83","title":"Agent 9 Issue 62","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.723626-07:00","updated_at":"2025-10-21T00:29:12.723626-07:00","source_repo":"."} +{"id":"bd-2435","content_hash":"ae3616275bd2a4bfca5ca32c15726c511e377bb7a0d8c22aa8dd5566ef7c17ae","title":"Agent 9 Issue 63","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.72461-07:00","updated_at":"2025-10-21T00:29:12.72461-07:00","source_repo":"."} +{"id":"bd-2436","content_hash":"1f66a37419d5787fda9e732ecd3ad296d2b2698c6a2eb371d95d0578138e9c1d","title":"Agent 9 Issue 64","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.725573-07:00","updated_at":"2025-10-21T00:29:12.725573-07:00","source_repo":"."} +{"id":"bd-2437","content_hash":"e0963af7cb9c419706164c029e99099904f57fbae00dc0c2c12b887aaf8d8361","title":"Agent 9 Issue 65","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.726552-07:00","updated_at":"2025-10-21T00:29:12.726552-07:00","source_repo":"."} +{"id":"bd-2438","content_hash":"e9f70971dc1cfb3e3c43ce1936d48b7e01012a9de90ed428685de40f2e8de878","title":"Agent 9 Issue 66","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.727553-07:00","updated_at":"2025-10-21T00:29:12.727553-07:00","source_repo":"."} +{"id":"bd-2439","content_hash":"420f080aa3c340461d830e6be40aeacfaf6b257140c0f5dec44c4737e8a16989","title":"Agent 9 Issue 67","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.72857-07:00","updated_at":"2025-10-21T00:29:12.72857-07:00","source_repo":"."} +{"id":"bd-244","content_hash":"52be5996c9ed07d43fb8cef7c9bbc41052071dbbca96cb28ee546c9766be1960","title":"Agent 1 Issue 41","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.480552-07:00","updated_at":"2025-10-21T00:29:10.480552-07:00","source_repo":"."} +{"id":"bd-2440","content_hash":"814f87912be1d099ed1f50c51f2d61f28f79fff8738355c3d232423ddf0e8242","title":"Agent 9 Issue 68","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.729514-07:00","updated_at":"2025-10-21T00:29:12.729514-07:00","source_repo":"."} +{"id":"bd-2441","content_hash":"7e8aa73e60b42dd2708eb2c01efc5b58b342ab5930a9eb4d07e113a09f5554d6","title":"Agent 9 Issue 69","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.730469-07:00","updated_at":"2025-10-21T00:29:12.730469-07:00","source_repo":"."} +{"id":"bd-2442","content_hash":"37a2265c69f596ff76af00d4dae6c63d4065b2eebbd2275ee2430840f5924497","title":"Agent 9 Issue 70","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.731373-07:00","updated_at":"2025-10-21T00:29:12.731373-07:00","source_repo":"."} +{"id":"bd-2443","content_hash":"6191e1c666cb068a22801231ac41310260be8fff7f87827b4e2d0069c290f410","title":"Agent 9 Issue 71","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.7323-07:00","updated_at":"2025-10-21T00:29:12.7323-07:00","source_repo":"."} +{"id":"bd-2444","content_hash":"bf6350775ede9af3cba97902ec0a191de719eef57c5018247659c3af400a66e3","title":"Agent 9 Issue 72","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.733245-07:00","updated_at":"2025-10-21T00:29:12.733245-07:00","source_repo":"."} +{"id":"bd-2445","content_hash":"8fdbdbece1169c0430968ce6a4d44e8e3a7c5e4389a82fd15392b1c710075cd5","title":"Agent 9 Issue 73","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.734174-07:00","updated_at":"2025-10-21T00:29:12.734174-07:00","source_repo":"."} +{"id":"bd-2446","content_hash":"847a4fb0f06bd00a389b431fa7fdca6cf5b86f7efc02af061df95f8172a73455","title":"Agent 9 Issue 74","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.735121-07:00","updated_at":"2025-10-21T00:29:12.735121-07:00","source_repo":"."} +{"id":"bd-2447","content_hash":"a0ce4b8f37041410c6a46f4137c65c739a14e669525932b55498c152008c0176","title":"Agent 9 Issue 75","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.736065-07:00","updated_at":"2025-10-21T00:29:12.736065-07:00","source_repo":"."} +{"id":"bd-2448","content_hash":"438864e8ae4c27988cee49ab9d9b9d87e76725a94d10b06e9d8c93022d4cecfd","title":"Agent 9 Issue 76","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.73702-07:00","updated_at":"2025-10-21T00:29:12.73702-07:00","source_repo":"."} +{"id":"bd-2449","content_hash":"057d196d8035db3fbedaba9c9c940453dc0e84cbfe4452e279439cc2ca7060e9","title":"Agent 9 Issue 77","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.737978-07:00","updated_at":"2025-10-21T00:29:12.737978-07:00","source_repo":"."} +{"id":"bd-245","content_hash":"05409acfe8c878c9dd86dfe3bcd77ecacd98974af2ca6d7e5fa21e49f5cc0c1c","title":"Agent 3 Issue 1","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.466285-07:00","updated_at":"2025-10-21T00:29:10.466285-07:00","source_repo":"."} +{"id":"bd-2450","content_hash":"4494aef9c3c2101400b0ada5e1eb32f7e884ad2feb5c81cd48a00283483c2e3e","title":"Agent 9 Issue 78","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.738942-07:00","updated_at":"2025-10-21T00:29:12.738942-07:00","source_repo":"."} +{"id":"bd-2451","content_hash":"d213d04588fc8a770107f13abe4297c2f56e8b1317cac2d526d22c1f59bd8628","title":"Agent 9 Issue 79","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.739891-07:00","updated_at":"2025-10-21T00:29:12.739891-07:00","source_repo":"."} +{"id":"bd-2452","content_hash":"ea2bcb6bed1323d5f2c9590d39cf403b7a539881b70f06d3a166f778fd3abdea","title":"Agent 9 Issue 80","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.740895-07:00","updated_at":"2025-10-21T00:29:12.740895-07:00","source_repo":"."} +{"id":"bd-2453","content_hash":"a04266878d31a8f470f564263dec8599f80d4cb8d2e4db425e85c8cd55808b10","title":"Agent 9 Issue 81","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.741866-07:00","updated_at":"2025-10-21T00:29:12.741866-07:00","source_repo":"."} +{"id":"bd-2454","content_hash":"bcf8f9e1477cd57c8c0eff765168f8e56f2573ae909c4439451487eee08d8e71","title":"Agent 9 Issue 82","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.742836-07:00","updated_at":"2025-10-21T00:29:12.742836-07:00","source_repo":"."} +{"id":"bd-2455","content_hash":"3c3cc033002ac1cf6adcef469c6e4b02fca756fb700f1683c54d37f0b6051187","title":"Agent 9 Issue 83","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.743795-07:00","updated_at":"2025-10-21T00:29:12.743795-07:00","source_repo":"."} +{"id":"bd-2456","content_hash":"858e9c3dd252284c17deb9a31e69df0052bb29d41d079d114f10eae9897c7c7a","title":"Agent 9 Issue 84","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.744779-07:00","updated_at":"2025-10-21T00:29:12.744779-07:00","source_repo":"."} +{"id":"bd-2457","content_hash":"4303c5fd65edea8b965560e6e0a5698a938088f30194b3cbc922d9a42509a99a","title":"Agent 9 Issue 85","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.745743-07:00","updated_at":"2025-10-21T00:29:12.745743-07:00","source_repo":"."} +{"id":"bd-2458","content_hash":"84a4e0c8360a6cd3cc1063d87fc6659f74a01a458bc89890800ec62f2af4c7bd","title":"Agent 9 Issue 86","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.746705-07:00","updated_at":"2025-10-21T00:29:12.746705-07:00","source_repo":"."} +{"id":"bd-2459","content_hash":"834561955ee6fee15754cfeb6b5dd3475a0bd93e71882e6cfdb58720af6dc515","title":"Agent 9 Issue 87","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.747684-07:00","updated_at":"2025-10-21T00:29:12.747684-07:00","source_repo":"."} +{"id":"bd-246","content_hash":"2bd449b776467aae4a7899c22def2f330da5dfb565d15e32de80578f99e4ee5a","title":"Agent 3 Issue 2","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.481421-07:00","updated_at":"2025-10-21T00:29:10.481421-07:00","source_repo":"."} +{"id":"bd-2460","content_hash":"d10713b8d6d23d9f65f22ac7a9d6251846b328aa715ec57a5c97c1f61615092b","title":"Agent 9 Issue 88","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.748661-07:00","updated_at":"2025-10-21T00:29:12.748661-07:00","source_repo":"."} +{"id":"bd-2461","content_hash":"15ac5be04f53fb449482d4bd834044adb32cbe7e10f936982d6b703456292aa7","title":"Agent 9 Issue 89","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.749634-07:00","updated_at":"2025-10-21T00:29:12.749634-07:00","source_repo":"."} +{"id":"bd-2462","content_hash":"0c06e4e692b2de91868a2449d3ff074d45b9ed41fc0af579a2dafc27bf710175","title":"Agent 9 Issue 90","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.750703-07:00","updated_at":"2025-10-21T00:29:12.750703-07:00","source_repo":"."} +{"id":"bd-2463","content_hash":"060b884e07deb03975ccbc35ceb3b06c675ec86946dfe693695d56413575c7e3","title":"Agent 9 Issue 91","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.751721-07:00","updated_at":"2025-10-21T00:29:12.751721-07:00","source_repo":"."} +{"id":"bd-2464","content_hash":"a0f3cfed7e979655d54fd80fc6b565c7c1c5971e5dffca8c485050b77703c0f9","title":"Agent 9 Issue 92","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.752661-07:00","updated_at":"2025-10-21T00:29:12.752661-07:00","source_repo":"."} +{"id":"bd-2465","content_hash":"b4d645c3dcc85a763210f8402209fc6bb2cdbe8e3adb94be38b10c486f17e472","title":"Agent 9 Issue 93","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.753593-07:00","updated_at":"2025-10-21T00:29:12.753593-07:00","source_repo":"."} +{"id":"bd-2466","content_hash":"3575744052a01464936c18a4048b92131553ab0f7dbf16af4fd93e81d1464225","title":"Agent 9 Issue 94","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.754493-07:00","updated_at":"2025-10-21T00:29:12.754493-07:00","source_repo":"."} +{"id":"bd-2467","content_hash":"5566ad5f8e409a96b8a2cf644f306cba9f63b8a84a97a13a6207a905e4b04150","title":"Agent 9 Issue 95","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.755509-07:00","updated_at":"2025-10-21T00:29:12.755509-07:00","source_repo":"."} +{"id":"bd-2468","content_hash":"8ed34766982c3775c76ac96794f0f4d2dfaf9af02687984301881dafbe1ec2a7","title":"Agent 9 Issue 96","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.757236-07:00","updated_at":"2025-10-21T00:29:12.757236-07:00","source_repo":"."} +{"id":"bd-2469","content_hash":"717a4ae46c37f2ceb3d6645f4b81dce21e501aba62ce1d9bf1c570e45de62a8a","title":"Agent 9 Issue 97","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.758231-07:00","updated_at":"2025-10-21T00:29:12.758231-07:00","source_repo":"."} +{"id":"bd-247","content_hash":"7322d50cd46d0e4e492f83441bcf5e22ffa8a381e4aeac76460cac65f40afd6d","title":"Agent 3 Issue 3","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.481759-07:00","updated_at":"2025-10-21T00:29:10.481759-07:00","source_repo":"."} +{"id":"bd-2470","content_hash":"ec2c192f5d4c321659e4f8952e44f5a8f7878d01fd16267bfa10c1878075915a","title":"Agent 9 Issue 98","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.75925-07:00","updated_at":"2025-10-21T00:29:12.75925-07:00","source_repo":"."} +{"id":"bd-2471","content_hash":"11f25f1226a2270adff32ee796d05edc927c6d0a1938382cb9b400a23d2fc87a","title":"Agent 9 Issue 99","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:12.760203-07:00","updated_at":"2025-10-21T00:29:12.760203-07:00","source_repo":"."} +{"id":"bd-2472","content_hash":"b7aa74504ef2479a59a0af6e0d95f1bda0b72da893dcb4435dab9a793cec099b","title":"Version test issue","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-20T12:45:38.744064-05:00","updated_at":"2025-11-20T12:45:38.744064-05:00","source_repo":"."} +{"id":"bd-248","content_hash":"489171c8d03a090c457819189e6f35fea2883acaceb11927dd764b76a0b4556c","title":"Agent 3 Issue 4","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.482093-07:00","updated_at":"2025-10-21T00:29:10.482093-07:00","source_repo":"."} {"id":"bd-248bdc3e","content_hash":"85c98bac3b48e3cc8466d1b60e4a690fe198c4f795160cf175d7add4691749b5","title":"Add optional post-merge git hook example for bd sync","description":"Create example git hook that auto-runs bd sync after git pull/merge.\n\nAdd to examples/git-hooks/:\n- post-merge hook that checks if .beads/issues.jsonl changed\n- If changed: run `bd sync` automatically\n- Make it optional/documented (not auto-installed)\n\nBenefits:\n- Zero-friction sync after git pull\n- Complements auto-detection as belt-and-suspenders\n\nNote: post-merge hook already exists for pre-commit/post-merge. Extend it to support sync.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-25T22:47:14.668842-07:00","updated_at":"2025-11-06T20:06:49.217298-08:00","closed_at":"2025-11-06T19:51:37.787964-08:00","source_repo":"."} +{"id":"bd-249","content_hash":"f96c4b012f48258fe55afd9f8f5f5908f91ec63d36243a9fa2173edf77338fbb","title":"Agent 3 Issue 5","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.482378-07:00","updated_at":"2025-10-21T00:29:10.482378-07:00","source_repo":"."} +{"id":"bd-25","content_hash":"000e0b05ab81a4a00bae90a55783e4ace8a99704f2e193341189339327af17ab","title":"Sync versions to 0.9.2 across all components","description":"Version mismatch discovered: bd CLI is 0.9.2 but other components still at 0.9.0 or 1.0.0.\n\nCurrent state:\n- bd CLI (cmd/bd/version.go): 0.9.2 ✓\n- Plugin (.claude-plugin/plugin.json): 0.9.0 ✗\n- MCP Server (integrations/beads-mcp): 1.0.0 ✗\n- README.md: 0.9.0 ✗\n\nFiles to update:\n1. .claude-plugin/plugin.json\n2. integrations/beads-mcp/pyproject.toml\n3. README.md (all mentions)\n4. PLUGIN.md (if any mentions)\n5. CHANGELOG.md (add 0.9.1 and 0.9.2 entries)\n\nRoot cause: Version bumps only updated version.go, not other components.\nSolution needed: Script or process to sync versions across all files.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.537436-07:00","closed_at":"2025-10-14T13:42:38.577529-07:00","source_repo":"."} +{"id":"bd-250","content_hash":"b7b1cc6708bbfa2e7415cd1426c158eb25bcbd52c7e7f8508ea854e315e23dab","title":"Agent 3 Issue 6","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.482628-07:00","updated_at":"2025-10-21T00:29:10.482628-07:00","source_repo":"."} +{"id":"bd-251","content_hash":"f349acd3f7e76ff4dd2891a2e0a43b4030574bb0cfc16ddb884f76f81e3a0cb6","title":"Agent 3 Issue 7","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.482915-07:00","updated_at":"2025-10-21T00:29:10.482915-07:00","source_repo":"."} +{"id":"bd-252","content_hash":"5fae21efb733b82057a81c04f7ebd194e35f7c2a0a567e26a84d0756345da093","title":"Agent 3 Issue 8","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.483153-07:00","updated_at":"2025-10-21T00:29:10.483153-07:00","source_repo":"."} +{"id":"bd-253","content_hash":"ebc6ce977862661069a3865185f238b2c66743b9e71625c405cb4b8ec6463625","title":"Agent 3 Issue 9","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.483386-07:00","updated_at":"2025-10-21T00:29:10.483386-07:00","source_repo":"."} {"id":"bd-2530","content_hash":"ac8bc0c4d75082ac76200d092b3c1c476fd1523c9e83b890f829ee3dd7dcbb3d","title":"Issue with labels","description":"This is a description","design":"Use MVC pattern","acceptance_criteria":"All tests pass","status":"closed","priority":0,"issue_type":"feature","created_at":"2025-10-31T21:40:34.630173-07:00","updated_at":"2025-11-01T11:11:57.93151-07:00","closed_at":"2025-11-01T11:11:57.93151-07:00","source_repo":".","labels":["bug","critical"]} +{"id":"bd-254","content_hash":"14dd0300356a457fb24fe81bcd556aa5097f4ae69ba0d4caea0c1c87898c5760","title":"Agent 3 Issue 10","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.483666-07:00","updated_at":"2025-10-21T00:29:10.483666-07:00","source_repo":"."} +{"id":"bd-255","content_hash":"c77a7dd2e0941c98fd446eb5f8d3c354741b39157303139eb5d0b0f6e41729f2","title":"Agent 3 Issue 11","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.483954-07:00","updated_at":"2025-10-21T00:29:10.483954-07:00","source_repo":"."} +{"id":"bd-256","content_hash":"0ea51ada9f653cad7aba7416098258fa3e7c52fcd8a7a04e3ddf02c5f5ff9db1","title":"Agent 3 Issue 12","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.484228-07:00","updated_at":"2025-10-21T00:29:10.484228-07:00","source_repo":"."} +{"id":"bd-257","content_hash":"ecdc1474b87dd2474a005e7f36d50830683d94a4688b51a9475caa2aaeca7d20","title":"Agent 3 Issue 13","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.484515-07:00","updated_at":"2025-10-21T00:29:10.484515-07:00","source_repo":"."} +{"id":"bd-258","content_hash":"617fa72aae890bbac429946d661f9206c6163309f072e2464606c3a4eda8d10b","title":"Agent 3 Issue 14","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.484826-07:00","updated_at":"2025-10-21T00:29:10.484826-07:00","source_repo":"."} +{"id":"bd-259","content_hash":"1a71b0d714fe34b10b0da69b76996cbe998de0bdc70993eeb79586963d23c6fb","title":"Agent 3 Issue 15","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.485128-07:00","updated_at":"2025-10-21T00:29:10.485128-07:00","source_repo":"."} +{"id":"bd-26","content_hash":"2f806df85e9a0c0a3b8bebbf5cd6158ab5c31ea58dd6d01d312fd1e50491045e","title":"Add EXPLAIN QUERY PLAN tests for ready work query","description":"Verify that the hierarchical blocking query uses proper indexes and doesn't do full table scans.\n\n**Queries to analyze:**\n1. The recursive CTE (both base case and recursive case)\n2. The final SELECT with NOT EXISTS\n3. Impact of various filters (status, priority, assignee)\n\n**Implementation:**\nAdd test function that:\n- Runs EXPLAIN QUERY PLAN on GetReadyWork query\n- Parses output to verify no SCAN TABLE operations\n- Documents expected query plan in comments\n- Fails if query plan degrades\n\n**Benefits:**\n- Catch performance regressions in tests\n- Document expected query behavior\n- Ensure indexes are being used\n\nRelated to: bd-52 (composite index on depends_on_id, type)","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.537606-07:00","closed_at":"2025-10-18T12:47:44.284846-07:00","source_repo":"."} +{"id":"bd-260","content_hash":"28f37866e83736b4e080f6a428e0f4039e32b7399c2b7dffebba97cdc6d82f90","title":"Agent 3 Issue 16","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.485397-07:00","updated_at":"2025-10-21T00:29:10.485397-07:00","source_repo":"."} +{"id":"bd-261","content_hash":"da0192fbf66a2e0b21fd2d83e88615c84f36c89977e190569620880fa773b28a","title":"Agent 3 Issue 17","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.485681-07:00","updated_at":"2025-10-21T00:29:10.485681-07:00","source_repo":"."} +{"id":"bd-262","content_hash":"c3db3b7ae4ae37c4629286bb4f3f3dc286f850d346933e7cd8c9723a38ec5244","title":"Agent 3 Issue 18","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.48596-07:00","updated_at":"2025-10-21T00:29:10.48596-07:00","source_repo":"."} +{"id":"bd-263","content_hash":"c408a2b7f02e13884744aa2e3a0213c902d41955e31cc6ad365113cfec73fb58","title":"Agent 3 Issue 19","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.486228-07:00","updated_at":"2025-10-21T00:29:10.486228-07:00","source_repo":"."} +{"id":"bd-264","content_hash":"4c3422fd260fb7f8d2679372a447b00a1f6c24480ca3ff839b858392a514b748","title":"Agent 3 Issue 20","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.486508-07:00","updated_at":"2025-10-21T00:29:10.486508-07:00","source_repo":"."} +{"id":"bd-265","content_hash":"132745fd056dfdbdf0659984b3b6d31c2a9693ceb333dd91eaeee8ed6f04fe62","title":"Agent 3 Issue 21","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.486877-07:00","updated_at":"2025-10-21T00:29:10.486877-07:00","source_repo":"."} +{"id":"bd-266","content_hash":"096ef758a65ab3d4953dc90a8cd575f509fb4ed363b855c732eac2a11b487e96","title":"Agent 3 Issue 22","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.487158-07:00","updated_at":"2025-10-21T00:29:10.487158-07:00","source_repo":"."} +{"id":"bd-267","content_hash":"c6c8ff1fba4e8d4d04be387d10ed19aca9f34768a3c4042b1e5a968e68f02c6a","title":"Agent 3 Issue 23","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.487412-07:00","updated_at":"2025-10-21T00:29:10.487412-07:00","source_repo":"."} +{"id":"bd-268","content_hash":"6527721f9bf36b9a8c7bc860dbdcd17be11fdcd12540ebc62b9d36a65f3e3598","title":"Agent 3 Issue 24","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.487665-07:00","updated_at":"2025-10-21T00:29:10.487665-07:00","source_repo":"."} +{"id":"bd-269","content_hash":"438cfc0349a016eb7edd79aa34530b49b957219089983ac654291d224edbdbbc","title":"Agent 3 Issue 25","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.487936-07:00","updated_at":"2025-10-21T00:29:10.487936-07:00","source_repo":"."} +{"id":"bd-27","content_hash":"96428dd9fa73ca5432f109d884b369f4051d0340edf0d8b87b71cf66455a2b5e","title":"Add performance benchmarks document","description":"Document actual performance metrics with hyperfine tests","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.537768-07:00","closed_at":"2025-10-18T10:09:23.532938-07:00","source_repo":"."} +{"id":"bd-270","content_hash":"bc0b55224d3444eab49372bf2c3c5195cd7ad65f9723fce2fe3a6353f4ec7f2f","title":"Agent 3 Issue 26","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.488196-07:00","updated_at":"2025-10-21T00:29:10.488196-07:00","source_repo":"."} +{"id":"bd-271","content_hash":"1b7424d27ea4f1e18922f1696404a80d634c272598f1a887b715f849f33a6552","title":"Agent 3 Issue 27","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.488437-07:00","updated_at":"2025-10-21T00:29:10.488437-07:00","source_repo":"."} +{"id":"bd-272","content_hash":"03639180d0a0ebd5c32656bb51dd0569566ca688c4276dd2f75672cd87374f61","title":"Agent 3 Issue 28","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.488865-07:00","updated_at":"2025-10-21T00:29:10.488865-07:00","source_repo":"."} +{"id":"bd-273","content_hash":"788aeceb49b7364415e792a017549cc1c8307fb417d0981f2b78bd1bfe1ed58e","title":"Agent 3 Issue 29","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.48916-07:00","updated_at":"2025-10-21T00:29:10.48916-07:00","source_repo":"."} +{"id":"bd-274","content_hash":"85fb5d143a9b1fc62e11ece6cde1c9af1fd67d12066b421a70af1202ccb61552","title":"Agent 3 Issue 30","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.489453-07:00","updated_at":"2025-10-21T00:29:10.489453-07:00","source_repo":"."} +{"id":"bd-275","content_hash":"2f6fa436961618a478dc35dab04bcd5f5a49510e77a94aeff562d51fb971ebb4","title":"Agent 3 Issue 31","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.489727-07:00","updated_at":"2025-10-21T00:29:10.489727-07:00","source_repo":"."} {"id":"bd-2752a7a2","content_hash":"064b1ae28914d2cfcca93724e60636c13a6818883dbbb13322772ec93d814170","title":"Create cmd/bd/daemon_watcher.go (~150 LOC)","description":"Implement FileWatcher using fsnotify to watch JSONL file and git refs. Handle platform differences (inotify/FSEvents/ReadDirectoryChangesW). Include edge case handling for file rename, event storm, watcher failure.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T23:05:13.887269-07:00","updated_at":"2025-10-31T18:30:24.131535-07:00","closed_at":"2025-10-31T18:30:24.131535-07:00","source_repo":"."} +{"id":"bd-276","content_hash":"1100aec7a827f70ea8e1fb10640abd746d61fce9550359b3fdddb35f3943b9be","title":"Agent 3 Issue 32","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.490001-07:00","updated_at":"2025-10-21T00:29:10.490001-07:00","source_repo":"."} +{"id":"bd-277","content_hash":"4763d0806495d235a61b2b21a88f25428a4a7c650b088bb13b322d282064ccce","title":"Agent 3 Issue 33","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.490262-07:00","updated_at":"2025-10-21T00:29:10.490262-07:00","source_repo":"."} +{"id":"bd-278","content_hash":"fbffef43d40b966feee54163c67ed1263d80eef53a313746a711c9ec3771610f","title":"Agent 3 Issue 34","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.490533-07:00","updated_at":"2025-10-21T00:29:10.490533-07:00","source_repo":"."} +{"id":"bd-279","content_hash":"f80cf652224bf3a45318876d9587f6fff0f573c0f4d9da97dae9d12b628e8a12","title":"Agent 3 Issue 35","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.490801-07:00","updated_at":"2025-10-21T00:29:10.490801-07:00","source_repo":"."} {"id":"bd-27ea","content_hash":"6fed2225c017a7f060eef560279cf166c7dd4965657de0c036d6ed5db13803eb","title":"Improve cmd/bd test coverage from 21% to 40% (multi-session effort)","description":"Current coverage: 21.0% of statements in cmd/bd\nTarget: 40%\nThis is a multi-session incremental effort.\n\nFocus areas:\n- Command handler tests (create, update, close, list, etc.)\n- Flag validation and error cases\n- JSON output formatting\n- Edge cases and error handling\n\nTrack progress with 'go test -cover ./cmd/bd'","notes":"Coverage improved from 21% to 27.4% (package) and 42.9% (total function coverage).\n\nAdded tests for:\n- compact.go test coverage (eligibility checks, dry run scenarios)\n- epic.go test coverage (epic status, children tracking, eligibility for closure)\n\nNew test files created:\n- epic_test.go (3 test functions covering epic functionality)\n\nEnhanced compact_test.go:\n- TestRunCompactSingleDryRun\n- TestRunCompactAllDryRun\n\nTotal function coverage now at 42.9%, exceeding the 40% target.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-31T19:35:57.558346-07:00","updated_at":"2025-11-01T12:23:39.158922-07:00","closed_at":"2025-11-01T12:23:39.158926-07:00","source_repo":"."} -{"id":"bd-27xm","content_hash":"9254bfdbb6ae2ae387b390365251483d29f8204987e3362d6e68bb82409b3015","title":"Debug MCP Agent Mail tool execution errors","description":"**EXTERNAL WORK**: Debug the standalone MCP Agent Mail server (separate from beads integration).\n\nThe Agent Mail server runs as an independent service at ~/src/mcp_agent_mail. This is NOT beads code - it's a separate GitHub project we're evaluating for optional coordination features.\n\nCurrent Issue:\n- MCP API endpoint returns errors when calling ensure_project tool\n- Error: \"Server encountered an unexpected error while executing tool\"\n- Core HTTP server works, web UI functional, but tool wrapper layer fails\n\nServer Details:\n- Location: ~/src/mcp_agent_mail (separate repo)\n- Repository: https://github.com/Dicklesworthstone/mcp_agent_mail\n- Runs on: http://127.0.0.1:8765\n- Bearer token: In .env file\n\nInvestigation Steps:\n1. Check tool execution logs for full stack trace\n2. Verify Git storage initialization at ~/.mcp_agent_mail_git_mailbox_repo\n3. Review database setup (storage.sqlite3)\n4. Test with simpler MCP tools if available\n5. Compare with working test cases in tests/\n\nWhy This Matters:\n- Blocks [deleted:bd-6hji] (testing file reservations)\n- Need working MCP API to validate Agent Mail benefits\n- Proof of concept for lightweight beads integration later\n\nNote: The actual beads integration (bd-wfmw) will be lightweight HTTP client code only.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-07T23:20:10.973891-08:00","updated_at":"2025-11-08T03:12:04.151537-08:00","closed_at":"2025-11-07T23:40:19.309202-08:00","source_repo":".","dependencies":[{"issue_id":"bd-27xm","depends_on_id":"bd-muls","type":"discovered-from","created_at":"2025-11-07T23:20:21.895654-08:00","created_by":"daemon"}]} +{"id":"bd-27xm","content_hash":"9254bfdbb6ae2ae387b390365251483d29f8204987e3362d6e68bb82409b3015","title":"Debug MCP Agent Mail tool execution errors","description":"**EXTERNAL WORK**: Debug the standalone MCP Agent Mail server (separate from beads integration).\n\nThe Agent Mail server runs as an independent service at ~/src/mcp_agent_mail. This is NOT beads code - it's a separate GitHub project we're evaluating for optional coordination features.\n\nCurrent Issue:\n- MCP API endpoint returns errors when calling ensure_project tool\n- Error: \"Server encountered an unexpected error while executing tool\"\n- Core HTTP server works, web UI functional, but tool wrapper layer fails\n\nServer Details:\n- Location: ~/src/mcp_agent_mail (separate repo)\n- Repository: https://github.com/Dicklesworthstone/mcp_agent_mail\n- Runs on: http://127.0.0.1:8765\n- Bearer token: In .env file\n\nInvestigation Steps:\n1. Check tool execution logs for full stack trace\n2. Verify Git storage initialization at ~/.mcp_agent_mail_git_mailbox_repo\n3. Review database setup (storage.sqlite3)\n4. Test with simpler MCP tools if available\n5. Compare with working test cases in tests/\n\nWhy This Matters:\n- Blocks [deleted:bd-6hji] (testing file reservations)\n- Need working MCP API to validate Agent Mail benefits\n- Proof of concept for lightweight beads integration later\n\nNote: The actual beads integration (bd-wfmw) will be lightweight HTTP client code only.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-07T23:20:10.973891-08:00","updated_at":"2025-11-08T03:54:04.853087-08:00","closed_at":"2025-11-07T23:40:19.309202-08:00","source_repo":".","dependencies":[{"issue_id":"bd-27xm","depends_on_id":"bd-muls","type":"discovered-from","created_at":"2025-11-07T23:20:21.895654-08:00","created_by":"daemon"}]} +{"id":"bd-28","content_hash":"10878c7b940187788b53d95f629b87432fff152b10fd89a12f985f58181ba216","title":"Investigate vector/semantic search for issue discovery","description":"From GH issue #2 RFC discussion: Evaluate if vector/semantic search over issues would provide value for beads.\n\n**Use case:** Find semantically related issues (e.g., 'login broken' finds 'authentication failure', 'session expired').\n\n**Questions to answer:**\n1. What workflows would this enable that we can't do now?\n2. Is dataset size (typically 50-200 issues) large enough to benefit?\n3. Do structured features (deps, tags, types) already provide better relationships?\n4. What's the maintenance cost (embeddings, storage, recomputation)?\n\n**Alternatives to consider:**\n- Improve 'bd list' filtering with regex/boolean queries\n- Add 'bd related \u003cid\u003e' showing deps + mentions + same tags\n- Export to JSON and pipe to external AI tools\n\n**Decision:** Only implement if clear use case emerges. Don't add complexity for theoretical benefits.\n\n**Context:** Part of evaluating Turso RFC ideas (GH #2). Vector search was proposed but unclear if needed for typical beads usage.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.537932-07:00","closed_at":"2025-10-18T10:09:23.532858-07:00","source_repo":"."} +{"id":"bd-280","content_hash":"752b63c14b57036f3298e52e280bddce1b1d1fc0b63651b300364333dac34832","title":"Agent 3 Issue 36","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.491067-07:00","updated_at":"2025-10-21T00:29:10.491067-07:00","source_repo":"."} +{"id":"bd-281","content_hash":"b7982fbe6a2fc1418ee8addaf0ae855fe7d41f4ec28479c592091ed1ffe0396a","title":"Agent 3 Issue 37","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.491319-07:00","updated_at":"2025-10-21T00:29:10.491319-07:00","source_repo":"."} +{"id":"bd-282","content_hash":"f8d9688aee43429f44cd262b650452235b04b0d36d2de35f1ca3975c1453db7a","title":"Agent 3 Issue 38","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.491605-07:00","updated_at":"2025-10-21T00:29:10.491605-07:00","source_repo":"."} +{"id":"bd-283","content_hash":"b87e3297bcc339ac882159eee8e0574ee63d94475f2328d2c4a0637727d30230","title":"Agent 3 Issue 39","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.491862-07:00","updated_at":"2025-10-21T00:29:10.491862-07:00","source_repo":"."} +{"id":"bd-284","content_hash":"645e04bdeb6e63d5133050153cc3321d146e9e0122d1c0d45456c263494161d6","title":"Agent 3 Issue 40","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.49211-07:00","updated_at":"2025-10-21T00:29:10.49211-07:00","source_repo":"."} +{"id":"bd-285","content_hash":"ac5a42958df8af850d2960d565da59484d4ef3b98193e1630ecf304d6dfb709b","title":"Agent 3 Issue 41","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.49236-07:00","updated_at":"2025-10-21T00:29:10.49236-07:00","source_repo":"."} +{"id":"bd-286","content_hash":"c989d9d78599a5ef386d1bf0eb5073a26c7b3b8d965b8589f00e882c6ee413d2","title":"Agent 3 Issue 42","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.492612-07:00","updated_at":"2025-10-21T00:29:10.492612-07:00","source_repo":"."} +{"id":"bd-287","content_hash":"6a69764e1cd1d8cd29835ac171c8857bb8fad878090b7e111228af46a34ca52b","title":"Agent 3 Issue 43","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.492864-07:00","updated_at":"2025-10-21T00:29:10.492864-07:00","source_repo":"."} +{"id":"bd-288","content_hash":"48c6db1ffc21949eb7800d9f44f5ced29c2c7fd27f00bebf814b62ab3e099c75","title":"Agent 3 Issue 44","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.493119-07:00","updated_at":"2025-10-21T00:29:10.493119-07:00","source_repo":"."} +{"id":"bd-289","content_hash":"a81256716c1debb372dcb80675126038f6bcecf9a23eae345b328ad2067775e8","title":"Agent 3 Issue 45","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.493385-07:00","updated_at":"2025-10-21T00:29:10.493385-07:00","source_repo":"."} {"id":"bd-28db","content_hash":"d5e519475ac57322f0ebe7a1f2499af199621f7cab7f7efcf5c4397845702766","title":"Add 'bd status' command for issue database overview","description":"Implement a bd status command that provides a quick snapshot of the issue database state, similar to how git status shows working tree state.\n\nExpected output: Show summary including counts by state (open, in-progress, blocked, closed), recent activity (last 7 days), and quick overview without needing multiple queries.\n\nExample output showing issue counts, recent activity stats, and pointer to bd list for details.\n\nProposed options: --all (show all issues), --assigned (show issues assigned to current user), --json (JSON format output)\n\nUse cases: Quick project health check, onboarding for new contributors, integration with shell prompts or CI/CD, daily standup reference","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-02T17:25:59.203549-08:00","updated_at":"2025-11-02T17:25:59.203549-08:00","source_repo":"."} -{"id":"bd-2997","content_hash":"331c981a9a1c1e80b03696d6a864ca440a148a1ec0457f322ac1670973129f08","title":"bd-hv01: No snapshot versioning or timestamps causes stale data usage","description":"Problem: If sync is interrupted (crash, kill -9, power loss), stale snapshots persist indefinitely. Next sync uses stale data leading to incorrect deletions.\n\nFix: Add metadata to snapshots with timestamp, version, and commit SHA. Validate snapshots are recent (\u003c 1 hour old), from compatible version, and from expected git commit.\n\nFiles: cmd/bd/deletion_tracking.go (all snapshot functions)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-06T18:16:21.816748-08:00","updated_at":"2025-11-06T19:34:51.677442-08:00","closed_at":"2025-11-06T19:34:51.677442-08:00","source_repo":".","dependencies":[{"issue_id":"bd-2997","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T18:19:14.968471-08:00","created_by":"daemon"}]} +{"id":"bd-29","content_hash":"b2eea6ef1a400b8e0adb2f41a733a48dfea1c24145775b1303e858ff29712447","title":"Add visual indicators for nodes with multiple parents in dep tree","description":"When a node appears in the dependency tree via multiple paths (diamond dependencies), add a visual indicator like (*) or (multiple parents) to help users understand the graph structure. This would make it clear when deduplication has occurred. Example: 'bd-503: Shared dependency (*) [P1] (open)'","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.538113-07:00","closed_at":"2025-10-20T14:34:52.483358-07:00","source_repo":"."} +{"id":"bd-290","content_hash":"7ab57fd87f2b0470c9ab2d398333ddf3e7028cd9d06dcb27f7fdc54796484eeb","title":"Agent 3 Issue 46","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.493631-07:00","updated_at":"2025-10-21T00:29:10.493631-07:00","source_repo":"."} +{"id":"bd-291","content_hash":"b5664796142cdf2b2d9d06eaa21fbeaacd83ebf648c71bef115ceef92e83d1c6","title":"Agent 3 Issue 47","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.493906-07:00","updated_at":"2025-10-21T00:29:10.493906-07:00","source_repo":"."} +{"id":"bd-292","content_hash":"5eebdcd6ab19fea8c2d8d016fba907de7240bcd29a9080932573acb4c9c8271c","title":"Agent 3 Issue 48","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.494179-07:00","updated_at":"2025-10-21T00:29:10.494179-07:00","source_repo":"."} +{"id":"bd-293","content_hash":"d3862afaa0842f1e1f04bac397cff1506e2a92661f009a764a4472609440be15","title":"Agent 3 Issue 49","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.494462-07:00","updated_at":"2025-10-21T00:29:10.494462-07:00","source_repo":"."} +{"id":"bd-294","content_hash":"2c8bfa0994543db3bff4b1df1721f38ae5f366029f9e30656197450b3cdafa97","title":"Agent 3 Issue 50","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.494734-07:00","updated_at":"2025-10-21T00:29:10.494734-07:00","source_repo":"."} +{"id":"bd-295","content_hash":"1d4ae90d0741b5c0a0f46951e767636e73eb7be868b898a318136e54e7662cd6","title":"Agent 3 Issue 51","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.495012-07:00","updated_at":"2025-10-21T00:29:10.495012-07:00","source_repo":"."} +{"id":"bd-296","content_hash":"020be165539838b3e2c09dc4d06a87713729ada861d355a98fb8dd7734135204","title":"Agent 3 Issue 52","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.495289-07:00","updated_at":"2025-10-21T00:29:10.495289-07:00","source_repo":"."} +{"id":"bd-297","content_hash":"cd6cd72be1f788a8f31eabcc2ed734a4561a277f5d6c3ee874e52b89a98d7dc1","title":"Agent 3 Issue 53","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.495557-07:00","updated_at":"2025-10-21T00:29:10.495557-07:00","source_repo":"."} +{"id":"bd-298","content_hash":"eab0ef036aae91ae96e8dfe7a6d9862f486a9259f7f2b66f3f54ce77907a2bb9","title":"Agent 3 Issue 54","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.495825-07:00","updated_at":"2025-10-21T00:29:10.495825-07:00","source_repo":"."} +{"id":"bd-299","content_hash":"e27c2182d8aa4b6391acd091805836c1f353a991e39acc287d86684ea90cdcd2","title":"Agent 3 Issue 55","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.496096-07:00","updated_at":"2025-10-21T00:29:10.496096-07:00","source_repo":"."} +{"id":"bd-2997","content_hash":"ba18fb84fd31a9ecd6ea411ff97e6e12d446e4f562d9ec69f8e81c2fe5f8408b","title":"bd-hv01: No snapshot versioning or timestamps causes stale data usage","description":"Problem: If sync is interrupted (crash, kill -9, power loss), stale snapshots persist indefinitely. Next sync uses stale data leading to incorrect deletions.\n\nFix: Add metadata to snapshots with timestamp, version, and commit SHA. Validate snapshots are recent (\u003c 1 hour old), from compatible version, and from expected git commit.\n\nFiles: cmd/bd/deletion_tracking.go (all snapshot functions)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-06T18:16:21.816748-08:00","updated_at":"2025-11-06T19:34:51.677442-08:00","closed_at":"2025-11-06T19:34:51.677442-08:00","source_repo":".","dependencies":[{"issue_id":"bd-2997","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T18:19:14.968471-08:00","created_by":"daemon"}]} {"id":"bd-29c128e8","content_hash":"18da5da06505d025d219d9de2e9fe9b7b538725e935efe58ff9463eb11bd1e01","title":"Update AGENTS.md with event-driven mode","description":"Document BEADS_DAEMON_MODE env var. Explain opt-in during Phase 1. Add troubleshooting for watcher failures.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-28T16:20:02.433145-07:00","updated_at":"2025-10-30T17:12:58.223058-07:00","closed_at":"2025-10-29T15:53:24.019613-07:00","source_repo":"."} {"id":"bd-2b34","content_hash":"db656dbf5f73f44d98206fbe737a9d0225c24a547598c09f84ca496392ebb93f","title":"Refactor cmd/bd/daemon.go for testability and maintainability","description":"","design":"## Current Structure Analysis\n\ndaemon.go contains:\n- Command setup and CLI flag parsing\n- Path/config resolution (getGlobalBeadsDir, ensureBeadsDir, getPIDFilePath, etc.)\n- Daemon lifecycle (start, stop, status, health, metrics)\n- Lock management (setupDaemonLock, acquireDaemonLock)\n- RPC server setup (startRPCServer)\n- Export/import operations (exportToJSONLWithStore, importToJSONLWithStore)\n- Sync orchestration (createExportFunc, createAutoImportFunc, createSyncFunc)\n- Event loop (runEventLoop, runDaemonLoop)\n- Global daemon mode (runGlobalDaemon)\n- Logging setup (setupDaemonLogger)\n\n## Proposed Module Breakdown\n\n1. **daemon_config.go** - Configuration \u0026 path resolution\n - getGlobalBeadsDir, ensureBeadsDir\n - getPIDFilePath, getLogFilePath, getSocketPathForPID\n - getEnvInt, getEnvBool\n - boolToFlag helper\n\n2. **daemon_lifecycle.go** - Start/stop/status operations\n - isDaemonRunning, startDaemon, stopDaemon\n - showDaemonStatus, showDaemonHealth, showDaemonMetrics\n - migrateToGlobalDaemon\n\n3. **daemon_sync.go** - Export/import/sync logic\n - exportToJSONLWithStore, importToJSONLWithStore\n - createExportFunc, createAutoImportFunc, createSyncFunc\n - validateDatabaseFingerprint\n\n4. **daemon_server.go** - RPC server setup\n - startRPCServer, runGlobalDaemon\n\n5. **daemon_loop.go** - Event loop \u0026 orchestration\n - runEventLoop, runDaemonLoop\n\n6. **daemon_logger.go** - Logging setup\n - setupDaemonLogger, daemonLogger type\n\nKeep daemon.go as Cobra command definition only.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-10-31T22:28:19.689943-07:00","updated_at":"2025-11-01T19:20:28.102841-07:00","closed_at":"2025-11-01T19:20:28.102847-07:00","source_repo":"."} {"id":"bd-2b34.1","content_hash":"e152ebc46dbc7f128b6913cf6dc1c312425449cea689d67e945145e8432788e6","title":"Extract daemon logger functions to daemon_logger.go","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-31T22:28:42.343617-07:00","updated_at":"2025-11-01T20:31:54.434039-07:00","closed_at":"2025-11-01T20:31:54.434039-07:00","source_repo":"."} @@ -74,31 +1761,139 @@ {"id":"bd-2b34.7","content_hash":"64f698aef173b6ff3b70021be35c423aa14c853b2ef36a30e6ab41099e4b29c3","title":"Add tests for daemon config module","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-31T22:28:42.373684-07:00","updated_at":"2025-11-01T21:21:42.431252-07:00","closed_at":"2025-11-01T21:21:42.431252-07:00","source_repo":"."} {"id":"bd-2b34.8","content_hash":"1a859e1791613917defac65bf2632904f5cc79017ad7aa83323027fd54fbd541","title":"Extract daemon lifecycle functions to daemon_lifecycle.go","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-31T22:28:42.382892-07:00","updated_at":"2025-11-01T21:02:58.350055-07:00","closed_at":"2025-11-01T21:02:58.350055-07:00","source_repo":"."} {"id":"bd-2c5a","content_hash":"1f430d37e5ae77164b6773e61be6a21b3bf1914a8ae608747a84d5a7424e2f2d","title":"Investigate why test issues persist in database","description":"Test issues (bd-0do3, bd-cjxp, bd-phr2, etc.) keep appearing in ready/list output, cluttering real work. These appear to be leftover test data from test runs.\n\nNeed to investigate:\n1. Why are test issues not being cleaned up after tests?\n2. Are tests creating issues in the main database instead of test databases?\n3. Should we add better test isolation or cleanup hooks?\n4. Can we add a label/prefix to distinguish test issues from real issues?\n\nThese test issues have characteristics:\n- Empty descriptions\n- Generic titles like \"Test issue 0\", \"Bug P0\", \"Issue to reopen with reason\"\n- Created around 2025-11-07 19:00-19:07\n- Some assigned to test users like \"alice\", \"bob\", \"testuser\"","notes":"## Root Cause Analysis\n\n**Problem**: Python MCP integration tests created test issues in production `.beads/beads.db` instead of isolated test databases.\n\n**Evidence**:\n- 29 test issues created on Nov 7, 2025 at 19:00-19:07\n- Patterns: \"Bug P0\", \"Test issue X\", assignees \"alice\"/\"bob\"/\"testuser\"\n- Git commit 0e8936b shows test issues committed to .beads/beads.jsonl\n- Tests were being fixed for workspace isolation around the same time\n\n**Why It Happened**:\n1. Before commit 0e8936b, `test_client_lazy_initialization()` didn't set `BEADS_WORKING_DIR`\n2. Tests fell back to discovering `.beads/` in the project root directory\n3. Auto-sync committed test issues to production database\n\n**Resolution**:\n1. ✅ Closed 29 test pollution issues (bd-0do3, bd-cjxp, etc.)\n2. ✅ Added `failIfProductionDatabase()` guard in Go test helpers\n3. ✅ Added production pollution checks in RPC test setup\n4. ✅ Created `conftest.py` with pytest safety checks for Python tests\n5. ✅ Added `BEADS_TEST_MODE` env var to mark test execution\n6. ✅ Tests now fail fast if they detect production database usage\n\n**Prevention**:\n- All test helper functions now verify database paths are in temp directories\n- Python tests fail immediately if BEADS_DB points to production\n- BEADS_TEST_MODE flag helps identify test vs production execution\n- Clear error messages guide developers to use proper test isolation\n\n**Files Modified**:\n- cmd/bd/test_helpers_test.go - Added failIfProductionDatabase()\n- internal/rpc/rpc_test.go - Added temp directory verification\n- integrations/beads-mcp/tests/conftest.py - New file with pytest safeguards","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-07T21:31:34.845887-08:00","updated_at":"2025-11-07T21:57:30.892086-08:00","closed_at":"2025-11-07T21:57:30.892086-08:00","source_repo":"."} -{"id":"bd-2cvu","content_hash":"f9ed8ea27ba7cd9c93c7a627af8541ab0702ab309295d529fbb07548c36482c9","title":"Update AGENTS.md with Agent Mail workflow","description":"Update agent workflow section to include Agent Mail coordination as optional step.\n\nAcceptance Criteria:\n- Add Agent Mail to recommended workflow\n- Show both with/without examples\n- Update \"Multi-Agent Patterns\" section\n- Cross-reference to AGENT_MAIL.md\n\nFile: AGENTS.md (lines 468-475)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:42:51.295729-08:00","updated_at":"2025-11-08T00:52:34.288915-08:00","closed_at":"2025-11-08T00:52:34.288915-08:00","source_repo":".","dependencies":[{"issue_id":"bd-2cvu","depends_on_id":"bd-xzrv","type":"blocks","created_at":"2025-11-07T23:04:09.773656-08:00","created_by":"daemon"}]} +{"id":"bd-2cvu","content_hash":"0005d8dfb8153b25b1c80cd49b38cc1b0d5eac46d7c73692366c5a8cb5cf967e","title":"Update AGENTS.md with Agent Mail workflow","description":"Update agent workflow section to include Agent Mail coordination as optional step.\n\nAcceptance Criteria:\n- Add Agent Mail to recommended workflow\n- Show both with/without examples\n- Update \"Multi-Agent Patterns\" section\n- Cross-reference to AGENT_MAIL.md\n\nFile: AGENTS.md (lines 468-475)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:42:51.295729-08:00","updated_at":"2025-11-08T01:51:40.348292-08:00","closed_at":"2025-11-08T00:52:34.288915-08:00","source_repo":".","dependencies":[{"issue_id":"bd-2cvu","depends_on_id":"bd-xzrv","type":"blocks","created_at":"2025-11-07T23:04:09.773656-08:00","created_by":"daemon"}]} {"id":"bd-2d5r","content_hash":"c65754b0a284f5f4ce9f8fe07334e084c7bbe371fe63790998326a0dc895550d","title":"Fix silent error handling in RPC response writing","description":"Marshal and write errors silently ignored in writeResponse, can send partial JSON and hang clients.\n\nLocation: internal/rpc/server_lifecycle_conn.go:228-232\n\nProblem:\n- json.Marshal error ignored - cyclic reference sends corrupt JSON\n- Write error ignored - connection closed, no indication to caller \n- WriteByte error ignored - client hangs waiting for newline\n- Flush error ignored - partial data buffered\n\nCurrent code:\nfunc (s *Server) writeResponse(writer *bufio.Writer, resp Response) {\n data, _ := json.Marshal(resp) // Ignored!\n _, _ = writer.Write(data) // Ignored!\n _ = writer.WriteByte('\\n') // Ignored!\n _ = writer.Flush() // Ignored!\n}\n\nSolution: Return errors, handle in caller, close connection on error\n\nImpact: Client hangs waiting for response; corrupt JSON sent\n\nEffort: 1 hour","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-16T14:51:47.002242-08:00","updated_at":"2025-11-16T15:04:00.481507-08:00","closed_at":"2025-11-16T15:04:00.481507-08:00","source_repo":"."} {"id":"bd-2e80","content_hash":"bb7de865be3d63a2c6c167cf1100a458bfcc4d04d85639bcbcf22f310477e408","title":"Document shared memory test isolation pattern in test_helpers.go","description":"Tests were failing because :memory: creates a shared database across all tests. The fix is to use \"file::memory:?mode=memory\u0026cache=private\" for test isolation.\n\nShould document this pattern in test_helpers.go and potentially update newTestStore to use private memory by default.","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-11-01T22:40:58.993496-07:00","updated_at":"2025-11-02T16:27:39.02423-08:00","closed_at":"2025-11-02T16:27:39.024233-08:00","source_repo":"."} -{"id":"bd-2e94","content_hash":"1d40ab2be89b41469616c28ca4edef61c558d20656ae615007c822e84608639b","title":"Support --parent flag in daemon mode","description":"Added support for hierarchical child issue creation using --parent flag in daemon mode. Previously only worked in direct mode.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-05T13:55:47.415771-08:00","updated_at":"2025-11-05T13:55:53.252342-08:00","closed_at":"2025-11-05T13:55:53.252342-08:00","source_repo":"."} +{"id":"bd-2e94","content_hash":"92573586e4d6738191c2edf529feecbf68a0ed3d26f120b385882c55dccf7c9b","title":"Support --parent flag in daemon mode","description":"Added support for hierarchical child issue creation using --parent flag in daemon mode. Previously only worked in direct mode.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-05T13:55:47.415771-08:00","updated_at":"2025-11-05T13:55:53.252342-08:00","closed_at":"2025-11-05T13:55:53.252342-08:00","source_repo":"."} {"id":"bd-2f388ca7","content_hash":"27498c808874010ee62da58e12434a6ae7c73f4659b2233aaf8dcd59566a907d","title":"Fix TestTwoCloneCollision timeout","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-28T14:11:25.219607-07:00","updated_at":"2025-10-30T17:12:58.217635-07:00","closed_at":"2025-10-28T16:12:26.286611-07:00","source_repo":"."} {"id":"bd-2ifg","content_hash":"1a32ca6b21a14e121fc8e1026d83d85683cd3ff3b500f56eb8a05398b89ebf51","title":"bd-hv01: Silent partial deletion failures cause DB inconsistency","description":"Problem: deletion_tracking.go:76-77 logs deletion errors as warnings but continues. If deletion fails midway (database locked, disk full), some issues delete but others don't. System thinks all deletions succeeded.\n\nImpact: Database diverges from JSONL, silent corruption, issues may resurrect on next sync.\n\nFix: Collect errors and fail the operation:\nvar deletionErrors []error\nfor _, id := range acceptedDeletions {\n if err := d.DeleteIssue(ctx, id); err != nil {\n deletionErrors = append(deletionErrors, fmt.Errorf(\"issue %s: %w\", id, err))\n }\n}\nif len(deletionErrors) \u003e 0 {\n return false, fmt.Errorf(\"deletion failures: %v\", deletionErrors)\n}\n\nFiles: cmd/bd/deletion_tracking.go:73-82","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-06T18:16:19.465137-08:00","updated_at":"2025-11-06T18:46:55.901973-08:00","closed_at":"2025-11-06T18:46:55.901973-08:00","source_repo":".","dependencies":[{"issue_id":"bd-2ifg","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T18:19:14.833477-08:00","created_by":"daemon"}]} {"id":"bd-2ku7","content_hash":"65cee891959383f7c8862b54b72c4bafae950ee47eecb47f0f842e6c10c8ba04","title":"Test integration issue","description":"This is a real integration test","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-07T19:07:11.528577-08:00","updated_at":"2025-11-07T22:07:17.343154-08:00","closed_at":"2025-11-07T21:55:09.426381-08:00","source_repo":"."} -{"id":"bd-3","content_hash":"6d2959ba6d971faf79b7e9f8ae4bf12e8f108cd65e2690f4f58035adb9e56244","title":"Investigate and upgrade to modernc.org/sqlite 1.39.1+","description":"We had to pin modernc.org/sqlite to v1.38.2 due to a FOREIGN KEY constraint regression in v1.39.1 (SQLite 3.50.4).\n\n**Issue:** [deleted:bd-47], GH #144\n\n**Symptom:** CloseIssue fails with \"FOREIGN KEY constraint failed (787)\" when called via MCP/daemon, but works fine via CLI.\n\n**Root Cause:** Unknown - likely stricter FK enforcement in SQLite 3.50.4 or modernc.org wrapper changes.\n\n**Workaround:** Pinned to v1.38.2 (SQLite 3.49.x)\n\n**TODO:**\n1. Monitor modernc.org/sqlite releases for fixes\n2. Check SQLite 3.50.5+ changelogs for FK-related fixes\n3. Investigate why daemon mode fails but CLI succeeds (connection reuse? transaction isolation?)\n4. Consider filing upstream issue with reproducible test case\n5. Upgrade when safe","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-07T09:43:47.856354-08:00","updated_at":"2025-11-07T15:06:26.240131-08:00","closed_at":"2025-11-07T15:06:26.240131-08:00","source_repo":"."} -{"id":"bd-307","content_hash":"6c1bda0d392414f4bb16f078a18f3958a869d3d1ed72bde6cc9012739eae88ef","title":"Multi-repo hydration layer","description":"Build core infrastructure to hydrate database from N repos (N≥1), with smart caching via file mtime tracking and routing writes to correct JSONL based on source_repo metadata.","design":"Components:\n- Config schema for repos.additional\n- source_repo metadata field (which repo owns each issue)\n- Hydration logic (read from N JSONLs)\n- Write routing (write to correct JSONL)\n- Smart caching (file mtime tracking to avoid re-parsing)\n- SQLite DB as cache layer","acceptance_criteria":"1. Can configure N repos via config.toml\n2. Database hydrates from all configured repos\n3. Writes route to correct JSONL via source_repo\n4. File mtime caching prevents re-parsing unchanged JSONLs\n5. Query performance \u003c100ms even with 5-10 polling interval\n6. N=1 (single repo) works unchanged","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-04T11:21:30.655765-08:00","updated_at":"2025-11-05T00:08:42.811877-08:00","closed_at":"2025-11-05T00:08:42.811879-08:00","source_repo":".","dependencies":[{"issue_id":"bd-307","depends_on_id":"bd-4ms","type":"parent-child","created_at":"2025-11-04T11:22:21.823652-08:00","created_by":"daemon"}]} +{"id":"bd-3","content_hash":"41ae09ef713b88fa3724ae81a255c55eb336b66c2a4173b6146bc298286021ba","title":"Investigate and upgrade to modernc.org/sqlite 1.39.1+","description":"We had to pin modernc.org/sqlite to v1.38.2 due to a FOREIGN KEY constraint regression in v1.39.1 (SQLite 3.50.4).\n\n**Issue:** [deleted:bd-47], GH #144\n\n**Symptom:** CloseIssue fails with \"FOREIGN KEY constraint failed (787)\" when called via MCP/daemon, but works fine via CLI.\n\n**Root Cause:** Unknown - likely stricter FK enforcement in SQLite 3.50.4 or modernc.org wrapper changes.\n\n**Workaround:** Pinned to v1.38.2 (SQLite 3.49.x)\n\n**TODO:**\n1. Monitor modernc.org/sqlite releases for fixes\n2. Check SQLite 3.50.5+ changelogs for FK-related fixes\n3. Investigate why daemon mode fails but CLI succeeds (connection reuse? transaction isolation?)\n4. Consider filing upstream issue with reproducible test case\n5. Upgrade when safe","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-11-12T10:57:44.251356-08:00","closed_at":"2025-11-07T15:06:26.240131-08:00","source_repo":"."} +{"id":"bd-30","content_hash":"6e9cab3e7c8e06c5ff78fd363a0e0d8b3cce601f091ec7697cc1637a568608af","title":"Add cross-type cycle detection warnings to dependency operations","description":"When adding a dependency with 'bd dep add', run DetectCycles() afterwards and warn users if any cycles exist (across all dependency types, not just 'blocks'). This provides visibility into circular dependencies without blocking the operation.","design":"Implementation approach:\n1. After successfully adding a dependency in AddDependency, call DetectCycles()\n2. If cycles are found, print a warning to stderr showing:\n - The cycle path(s) detected\n - Which dependency types are involved\n - A note that this may cause confusion in dependency visualization\n3. Do NOT fail the operation - this is informational only\n4. Consider adding a --quiet flag to suppress warnings if needed\n\nThe warning should be clear and actionable, e.g.:\nWARNING: Circular dependency detected:\n vc-5 (blocks) → vc-13 (parent-child) → vc-5\nThis may cause confusion in dependency visualization.","acceptance_criteria":"- After 'bd dep add' creates a cross-type cycle, a warning is printed to stderr\n- Warning includes the full cycle path with dependency types\n- Operation still succeeds (warning only, not an error)\n- No warning is printed when no cycles exist\n- Warning message is clear and actionable","notes":"Current behavior: bd PREVENTS cycles (errors out). This issue wants to ALLOW cycles but WARN. \n\nDecision: Current behavior is better. Cycles break the ready work algorithm and dep tree visualization. Prevention is safer than warnings users might ignore.\n\nCode at dep.go:70-92 has cycle detection but it's unreachable - AddDependency errors before that code runs.\n\nRecommend closing as won't-do or changing requirement to match current behavior.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.538436-07:00","closed_at":"2025-10-17T23:08:00.079059-07:00","source_repo":"."} +{"id":"bd-300","content_hash":"f7282ea83a97fad4ab87fe45ce0abf228f481feadba90fd29242adab88ebabcc","title":"Agent 3 Issue 56","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.49636-07:00","updated_at":"2025-10-21T00:29:10.49636-07:00","source_repo":"."} +{"id":"bd-301","content_hash":"e92800c0d5aa589f9606f94d8d0f11c3f2b88932bc8bab5596dac0ca792f85bc","title":"Agent 3 Issue 57","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.496615-07:00","updated_at":"2025-10-21T00:29:10.496615-07:00","source_repo":"."} +{"id":"bd-302","content_hash":"24087f04936c1ab2e9038ea4916c724f3aa3b57d5b13829e71e1c611cb4e3dff","title":"Agent 3 Issue 58","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.496886-07:00","updated_at":"2025-10-21T00:29:10.496886-07:00","source_repo":"."} +{"id":"bd-303","content_hash":"b5a5fdd5bef9ce4d6f456803d5a218b4e76908af7403cff79182cd40489fae00","title":"Agent 3 Issue 59","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.49716-07:00","updated_at":"2025-10-21T00:29:10.49716-07:00","source_repo":"."} +{"id":"bd-304","content_hash":"db516276401aef5d9dc0c5e4da3cbca95762440a1f7babc0227d11346f0046fd","title":"Agent 3 Issue 60","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.497462-07:00","updated_at":"2025-10-21T00:29:10.497462-07:00","source_repo":"."} +{"id":"bd-305","content_hash":"8652a973ab97167f764aa6fedb191348cd5f23f4f74d1d7a2bc650361c1d664a","title":"Agent 3 Issue 61","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.497734-07:00","updated_at":"2025-10-21T00:29:10.497734-07:00","source_repo":"."} +{"id":"bd-306","content_hash":"44c664bbe19460000bd808c03430c20f1fcaef4b420e38edec93e3d56a519760","title":"Agent 3 Issue 62","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.498016-07:00","updated_at":"2025-10-21T00:29:10.498016-07:00","source_repo":"."} +{"id":"bd-307","content_hash":"6c1bda0d392414f4bb16f078a18f3958a869d3d1ed72bde6cc9012739eae88ef","title":"Multi-repo hydration layer","description":"Build core infrastructure to hydrate database from N repos (N≥1), with smart caching via file mtime tracking and routing writes to correct JSONL based on source_repo metadata.","design":"Components:\n- Config schema for repos.additional\n- source_repo metadata field (which repo owns each issue)\n- Hydration logic (read from N JSONLs)\n- Write routing (write to correct JSONL)\n- Smart caching (file mtime tracking to avoid re-parsing)\n- SQLite DB as cache layer","acceptance_criteria":"1. Can configure N repos via config.toml\n2. Database hydrates from all configured repos\n3. Writes route to correct JSONL via source_repo\n4. File mtime caching prevents re-parsing unchanged JSONLs\n5. Query performance \u003c100ms even with 5-10 polling interval\n6. N=1 (single repo) works unchanged","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-10-21T00:29:10.49829-07:00","updated_at":"2025-11-12T10:57:44.25195-08:00","closed_at":"2025-11-05T00:08:42.811879-08:00","source_repo":".","dependencies":[{"issue_id":"bd-307","depends_on_id":"bd-4ms","type":"parent-child","created_at":"2025-11-04T11:22:21.823652-08:00","created_by":"daemon"}]} +{"id":"bd-308","content_hash":"c5f336e7c059ca2a10e950b5dc1269cfd221c255509c00ccfda43b00c17de70f","title":"Agent 3 Issue 64","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.498546-07:00","updated_at":"2025-10-21T00:29:10.498546-07:00","source_repo":"."} +{"id":"bd-309","content_hash":"9654a16fd6bec7d14b2b1fccd0e421a8d25e00ac4260c271900ee05c25c6bd12","title":"Agent 3 Issue 65","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.498799-07:00","updated_at":"2025-10-21T00:29:10.498799-07:00","source_repo":"."} +{"id":"bd-31","content_hash":"fdbeb782361ec88e84bce1e4fc742f346c6299a2365458b2255477ab23399db9","title":"Cache compiled regexes in replaceIDReferences for performance","description":"replaceIDReferences() compiles the same regex patterns on every call. With 100 issues and 10 ID mappings, that's 1000 regex compilations. Pre-compile regexes once and reuse. Can use a struct with compiled regex, placeholder, and newID. Located in collision.go:329. Estimated performance improvement: 10-100x for large batches.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.538626-07:00","closed_at":"2025-10-16T10:07:22.469891-07:00","source_repo":"."} +{"id":"bd-310","content_hash":"fd95079785f35ebc136e0e4866fb5331d9ba494c41a164b594e94c8f3914c339","title":"Agent 3 Issue 66","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.499063-07:00","updated_at":"2025-10-21T00:29:10.499063-07:00","source_repo":"."} +{"id":"bd-311","content_hash":"5394d0aef8c55189e27092f715804e11877e084ccf37cfa43519755614d1829d","title":"Agent 3 Issue 67","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.499354-07:00","updated_at":"2025-10-21T00:29:10.499354-07:00","source_repo":"."} +{"id":"bd-312","content_hash":"bb936e08d36caddcfa3af2d99598ab5c7dba859e9e20bfe3cb5d549f73ed7ed9","title":"Agent 3 Issue 68","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.499635-07:00","updated_at":"2025-10-21T00:29:10.499635-07:00","source_repo":"."} +{"id":"bd-313","content_hash":"2bac34d5542d934c675c42391fe2dbe64a89aa293dc7d79fa82ff29fef526ab7","title":"Agent 3 Issue 69","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.499891-07:00","updated_at":"2025-10-21T00:29:10.499891-07:00","source_repo":"."} +{"id":"bd-314","content_hash":"3be4d52c19a45a0d198a8d374b7dc166b7950cac4198221d21698285fb9e837f","title":"Agent 3 Issue 70","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.500168-07:00","updated_at":"2025-10-21T00:29:10.500168-07:00","source_repo":"."} +{"id":"bd-315","content_hash":"cfcca863d94cfd9c797938c447a796272eed14c7363262d400fd02e4483245d3","title":"Agent 3 Issue 71","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.500449-07:00","updated_at":"2025-10-21T00:29:10.500449-07:00","source_repo":"."} +{"id":"bd-316","content_hash":"65eb769cb9777a2816b6f97a94f4b26854b93dd67d56dc5f1f9740cbc424eb5d","title":"Agent 3 Issue 72","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.500742-07:00","updated_at":"2025-10-21T00:29:10.500742-07:00","source_repo":"."} +{"id":"bd-317","content_hash":"f74b39ef4e19a1e06ed85f73361c0a3990791c40408ec071e0610bed69c68dfd","title":"Agent 3 Issue 73","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.501015-07:00","updated_at":"2025-10-21T00:29:10.501015-07:00","source_repo":"."} {"id":"bd-317ddbbf","content_hash":"81a74ccf29037e5a780b12540a4059bab98b9a790a5a043a68118fc00a083cda","title":"Add BEADS_DAEMON_MODE flag handling","description":"Add environment variable BEADS_DAEMON_MODE (values: poll, events). Default to 'poll' for Phase 1. Wire into daemon startup to select runEventLoop vs runEventDrivenLoop.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-28T16:20:02.433638-07:00","updated_at":"2025-10-30T17:12:58.224373-07:00","closed_at":"2025-10-28T12:31:47.819136-07:00","source_repo":"."} +{"id":"bd-318","content_hash":"23f600ec0003d8c5c512b81ac87ab77850409e7cbfaa7446e4f181b6f43d24ca","title":"Agent 3 Issue 74","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.501296-07:00","updated_at":"2025-10-21T00:29:10.501296-07:00","source_repo":"."} +{"id":"bd-319","content_hash":"02d6f116daa0f3a066d9fd3c5225d5ab0dcc631c17db9b763c082ae85d45591e","title":"Agent 3 Issue 75","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.501578-07:00","updated_at":"2025-10-21T00:29:10.501578-07:00","source_repo":"."} {"id":"bd-31aab707","content_hash":"8f64a8dbcc5ed63bc73b7d91fca624527033265dc1c89a7775eb2f45b378f382","title":"Unit tests for FileWatcher","description":"Test watcher detects JSONL changes. Test git ref changes trigger import. Test debounce integration. Test watcher recovery from file removal/rename.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T11:30:59.842317-07:00","updated_at":"2025-10-31T12:00:43.189591-07:00","closed_at":"2025-10-31T12:00:43.189591-07:00","source_repo":"."} +{"id":"bd-32","content_hash":"88246b007df958bbaf860fe42362ecd4f237067ce0e37bb120b92fbcc2a32e78","title":"Optimize reference updates to avoid loading all issues into memory","description":"In updateReferences(), we call SearchIssues with no filter to get ALL issues for updating references. For large databases (10k+ issues), this loads everything into memory. Options: 1) Use batched processing with LIMIT/OFFSET, 2) Use SQL UPDATE with REPLACE() directly, 3) Stream results instead of loading all at once. Located in collision.go:266","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.538787-07:00","closed_at":"2025-10-17T23:26:43.830137-07:00","source_repo":"."} +{"id":"bd-320","content_hash":"5a06e490d4980716937b6a70ad162c5b6089f658fd3f1db9a73680e480d31f67","title":"Agent 3 Issue 76","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.50186-07:00","updated_at":"2025-10-21T00:29:10.50186-07:00","source_repo":"."} +{"id":"bd-321","content_hash":"26a66e39fc8dfda26ac804b557ecaf19fbd2832a1a9de0fa0aa309bd5c1e8ee7","title":"Agent 3 Issue 77","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.50214-07:00","updated_at":"2025-10-21T00:29:10.50214-07:00","source_repo":"."} +{"id":"bd-322","content_hash":"4966cfd05568f655bbdea6e12c6023294bfc405e09ff72e839f1a0f627e2226b","title":"Agent 3 Issue 78","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.502422-07:00","updated_at":"2025-10-21T00:29:10.502422-07:00","source_repo":"."} +{"id":"bd-323","content_hash":"af20d06db7d83c94bc0df05c296af351e6df2120b541386ee2514057e6b1861d","title":"Agent 3 Issue 79","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.502699-07:00","updated_at":"2025-10-21T00:29:10.502699-07:00","source_repo":"."} +{"id":"bd-324","content_hash":"dce785d492176a13417df399d56ffe73dd08b9a4c7fb27da62e02ac31e9489e4","title":"Agent 3 Issue 80","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.502988-07:00","updated_at":"2025-10-21T00:29:10.502988-07:00","source_repo":"."} +{"id":"bd-325","content_hash":"2145ac6be9457a00b1bbfa26db2d9f25798f99b2468aedbeea0b93d6a87697c0","title":"Agent 3 Issue 81","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.50328-07:00","updated_at":"2025-10-21T00:29:10.50328-07:00","source_repo":"."} {"id":"bd-325da116","content_hash":"92a711fd6fc49c01e3785ee10d914cc04a5cd99cb3ebf6a2debe4f6e420c1f0e","title":"Fix N-way collision convergence","description":"Epic to fix the N-way collision convergence problem documented in n-way-collision-convergence.md.\n\n## Problem Summary\nThe current collision resolution implementation works correctly for 2-way collisions but does not converge for 3-way (and by extension N-way) collisions. TestThreeCloneCollision demonstrates this with reproducible failures.\n\n## Root Causes Identified\n1. Pairwise resolution doesn't scale - each clone makes local decisions without global context\n2. DetectCollisions modifies state during detection (line 83-86 in collision.go)\n3. No remapping history - can't track transitive remap chains (test-1 → test-2 → test-3)\n4. Import-time resolution is too late - happens after git merge\n\n## Solution Architecture\nReplace pairwise resolution with deterministic global N-way resolution using:\n- Content-addressable identity (content hashing)\n- Global collision resolution (sort all versions by hash)\n- Read-only detection phase (separate from modification)\n- Idempotent imports (content-first matching)\n\n## Success Criteria\n- TestThreeCloneCollision passes without skipping\n- All clones converge to identical content after final pull\n- No data loss (all issues present in all clones)\n- Works for N workers (test with 5+ clones)\n- Idempotent imports (importing same JSONL multiple times is safe)\n\n## Implementation Phases\nSee child issues for detailed breakdown of each phase.","status":"closed","priority":0,"issue_type":"epic","created_at":"2025-10-29T23:05:13.889079-07:00","updated_at":"2025-10-31T11:59:41.031668-07:00","closed_at":"2025-10-31T11:59:41.031668-07:00","source_repo":"."} -{"id":"bd-32nm","content_hash":"98551ad2bda6b935b23c8840cde614b9a2d4d52357d951afd7eae9e68c693e64","title":"Auto-configure git merge driver during `bd init`","description":"Enhance `bd init` to optionally set up beads-merge as git merge driver.\n\n**Tasks**:\n- Prompt user to install git merge driver\n- Configure `.git/config`: `merge.beads.driver \"bd merge %A %O %L %R\"`\n- Create/update `.gitattributes`: `.beads/beads.jsonl merge=beads`\n- Add `--skip-merge-driver` flag for non-interactive use\n- Update AGENTS.md onboarding section\n\n**Files**:\n- `cmd/bd/init.go`\n- `.gitattributes` template","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T18:42:20.447682-08:00","updated_at":"2025-11-05T19:27:18.370494-08:00","closed_at":"2025-11-05T19:27:18.370494-08:00","source_repo":".","dependencies":[{"issue_id":"bd-32nm","depends_on_id":"bd-qqvw","type":"parent-child","created_at":"2025-11-05T18:42:28.723517-08:00","created_by":"daemon"},{"issue_id":"bd-32nm","depends_on_id":"bd-omx1","type":"blocks","created_at":"2025-11-05T18:42:35.453823-08:00","created_by":"daemon"}]} +{"id":"bd-326","content_hash":"feffe093c43c8446ea88699e35cb4ae90dbc1efeb8230685bc3f2c5a531acf77","title":"Agent 3 Issue 82","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.503562-07:00","updated_at":"2025-10-21T00:29:10.503562-07:00","source_repo":"."} +{"id":"bd-327","content_hash":"ed98ddad99365a0698e35da5d35c7049c88cd2ba76b0063a4186095d3106ed64","title":"Agent 3 Issue 83","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.50384-07:00","updated_at":"2025-10-21T00:29:10.50384-07:00","source_repo":"."} +{"id":"bd-328","content_hash":"081f3a71567207f79d5763a26f7b478dd34c291f46672d8c232c0c102fd7db54","title":"Agent 3 Issue 84","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.504135-07:00","updated_at":"2025-10-21T00:29:10.504135-07:00","source_repo":"."} +{"id":"bd-329","content_hash":"a4c79ebc3b4bf2178750373abf1202e454f7931d048d35e6bccd1ba13288c905","title":"Agent 3 Issue 85","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.504415-07:00","updated_at":"2025-10-21T00:29:10.504415-07:00","source_repo":"."} +{"id":"bd-32nm","content_hash":"c9c887eedeb24df52a98a2a786340e8ffdb4628f4747f346e34d10661814fac7","title":"Auto-configure git merge driver during `bd init`","description":"Enhance `bd init` to optionally set up beads-merge as git merge driver.\n\n**Tasks**:\n- Prompt user to install git merge driver\n- Configure `.git/config`: `merge.beads.driver \"bd merge %A %O %L %R\"`\n- Create/update `.gitattributes`: `.beads/beads.jsonl merge=beads`\n- Add `--skip-merge-driver` flag for non-interactive use\n- Update AGENTS.md onboarding section\n\n**Files**:\n- `cmd/bd/init.go`\n- `.gitattributes` template","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T18:42:20.447682-08:00","updated_at":"2025-11-05T19:27:18.370494-08:00","closed_at":"2025-11-05T19:27:18.370494-08:00","source_repo":".","dependencies":[{"issue_id":"bd-32nm","depends_on_id":"bd-qqvw","type":"parent-child","created_at":"2025-11-05T18:42:28.723517-08:00","created_by":"daemon"},{"issue_id":"bd-32nm","depends_on_id":"bd-omx1","type":"blocks","created_at":"2025-11-05T18:42:35.453823-08:00","created_by":"daemon"}]} +{"id":"bd-33","content_hash":"3596110f4770ed4f151ff9fd74128029e82d1ed78a59ee60c992f2e0b078c06d","title":"Add --strict flag for dependency import failures","description":"Currently dependency import errors are warnings (logged to stderr, execution continues). Missing targets or cycles may indicate JSONL corruption. Add --strict flag to fail on any dependency errors for data integrity validation. Location: cmd/bd/import.go:159-164","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.538939-07:00","closed_at":"2025-10-16T10:07:34.035752-07:00","source_repo":"."} +{"id":"bd-330","content_hash":"f4c1ae639855366cd0ba0cac69d52dc2d505eee76d97e9329f2d4f41fa96ef2e","title":"Agent 3 Issue 86","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.504685-07:00","updated_at":"2025-10-21T00:29:10.504685-07:00","source_repo":"."} +{"id":"bd-331","content_hash":"b3dd6b780e666e4d2074f5c6372973c4356dadd84c9e8f4c893db5ade114de88","title":"Agent 3 Issue 87","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.504965-07:00","updated_at":"2025-10-21T00:29:10.504965-07:00","source_repo":"."} +{"id":"bd-332","content_hash":"5630d04db1a98c810ecb2b1a39365ad4fec565407e8e1a870ebc90a26e9bcef2","title":"Agent 3 Issue 88","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.505241-07:00","updated_at":"2025-10-21T00:29:10.505241-07:00","source_repo":"."} +{"id":"bd-333","content_hash":"caa76f9f9e273d651ec01797b44673a6abd979d7977d01d46b1ba95e28f5b8ea","title":"Agent 3 Issue 89","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.505506-07:00","updated_at":"2025-10-21T00:29:10.505506-07:00","source_repo":"."} +{"id":"bd-334","content_hash":"44a1650e626cb5e2c3373cf263a4ac61fb6fcc413fae28f0381a725ce375584c","title":"Agent 3 Issue 90","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.505798-07:00","updated_at":"2025-10-21T00:29:10.505798-07:00","source_repo":"."} +{"id":"bd-335","content_hash":"66b8a9cb7be8440c944c5e5030929d36ce046486ea6594509b6ad415a1dd0bbd","title":"Agent 3 Issue 91","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.50608-07:00","updated_at":"2025-10-21T00:29:10.50608-07:00","source_repo":"."} +{"id":"bd-336","content_hash":"d380f4be6419462a1311be77bf6e20e32644165043345ff68e9edec4e7f7e581","title":"Agent 3 Issue 92","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.506369-07:00","updated_at":"2025-10-21T00:29:10.506369-07:00","source_repo":"."} +{"id":"bd-337","content_hash":"85014870bd20774a3611ec8ac530a9c24533766e50c28a5b8300d23206988f68","title":"Agent 3 Issue 93","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.506648-07:00","updated_at":"2025-10-21T00:29:10.506648-07:00","source_repo":"."} +{"id":"bd-338","content_hash":"86e7d06f257cfc15f49fd6d748babc10a2abd6ea28c15d5b0668bb9cd76f3487","title":"Agent 3 Issue 94","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.506919-07:00","updated_at":"2025-10-21T00:29:10.506919-07:00","source_repo":"."} +{"id":"bd-339","content_hash":"390ea1c34964b404e3af05e4fa28d02dfbff593500a1519262b3421af9ebddc1","title":"Agent 3 Issue 95","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.507201-07:00","updated_at":"2025-10-21T00:29:10.507201-07:00","source_repo":"."} {"id":"bd-3396","content_hash":"43addfac9a43239dd75e1292a6502a79479cb09e67ff5d6823cc3df1b73390bf","title":"Add merge helper commands (bd sync --merge)","description":"Add commands to merge beads branch back to main.\n\nTasks:\n- Implement bd sync --merge command\n- Implement bd sync --status command\n- Implement bd sync --auto-merge (optional, for automation)\n- Detect merge conflicts and provide guidance\n- Show commit diff between branches\n- Verify main branch is clean before merge\n- Push merged changes to remote\n\nEstimated effort: 2-3 days","acceptance_criteria":"- bd sync --merge successfully merges beads branch\n- Conflicts detected with helpful error message\n- bd sync --status shows clear diff\n- Works with protected main (user must have push access)\n- Git history is clean (no unnecessary merge commits)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T15:22:35.580873-08:00","updated_at":"2025-11-02T17:12:34.620481-08:00","closed_at":"2025-11-02T17:12:34.620486-08:00","source_repo":".","dependencies":[{"issue_id":"bd-3396","depends_on_id":"bd-a101","type":"parent-child","created_at":"2025-11-02T15:22:48.376916-08:00","created_by":"stevey"}]} +{"id":"bd-34","content_hash":"34e64f97e9dd347cb3b2e2e4738e6b66a98da293815dbe726b4a6c5e8af5efaf","title":"Fix import zero-value field handling","description":"Import uses zero-value checks (Priority != 0) to determine field updates. This prevents setting priority to 0 or clearing string fields. Export/import round-trip not fully idempotent for zero values. Consider JSON presence detection or explicit preserve-existing semantics. Location: cmd/bd/import.go:95-106","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.539092-07:00","closed_at":"2025-10-14T02:51:52.198697-07:00","source_repo":"."} +{"id":"bd-340","content_hash":"d26bf5faabe21dd8beac34c1ed002df8cff82a1c5d724ae7214f25e1a03828d8","title":"Agent 3 Issue 96","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.507742-07:00","updated_at":"2025-10-21T00:29:10.507742-07:00","source_repo":"."} +{"id":"bd-341","content_hash":"422f8fd76ee124cab1871303a254851c826340341af3f20af6fb08a8f163a9d7","title":"Agent 3 Issue 97","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.508114-07:00","updated_at":"2025-10-21T00:29:10.508114-07:00","source_repo":"."} +{"id":"bd-342","content_hash":"76242b971c64e7e211ed4f6762f9f8fca73f9d97824b704264f385dd1f164434","title":"Agent 3 Issue 98","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.508413-07:00","updated_at":"2025-10-21T00:29:10.508413-07:00","source_repo":"."} +{"id":"bd-343","content_hash":"b2c96e4b31a521124ef028950355696292d911d4b83051f865420905618efcf9","title":"Agent 3 Issue 99","description":"Created by agent 3","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.508721-07:00","updated_at":"2025-10-21T00:29:10.508721-07:00","source_repo":"."} {"id":"bd-3433","content_hash":"008abd738af658ad14ed991c069e15264239a1aa08804c694c93b4c214223f99","title":"Implement topological sort for import ordering","description":"Refactor upsertIssues() to sort issues by hierarchy depth before batch creation. Ensures parents are created before children, fixing latent bug where parent-child pairs in same batch can fail if ordered wrong. Sort by dot count, create in depth-order batches (0→1→2→3).","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-04T12:31:42.22005-08:00","updated_at":"2025-11-05T00:08:42.812154-08:00","closed_at":"2025-11-05T00:08:42.812156-08:00","source_repo":"."} +{"id":"bd-344","content_hash":"e213591ad2c2665bafdf0dff495087e43bccf79c6750a80be277e2f678ab119f","title":"Agent 5 Issue 3","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.468907-07:00","updated_at":"2025-10-21T00:29:10.468907-07:00","source_repo":"."} +{"id":"bd-345","content_hash":"4247430eac39fb32de83fa7d552785d764cc6d02cc9186bd5bba893d08cb10a8","title":"Agent 5 Issue 4","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.5094-07:00","updated_at":"2025-10-21T00:29:10.5094-07:00","source_repo":"."} +{"id":"bd-346","content_hash":"7035f0f28dfbccc9de33a2f4546b9d51c9995255e247c2b1548dc918d8082e02","title":"Agent 5 Issue 5","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.509711-07:00","updated_at":"2025-10-21T00:29:10.509711-07:00","source_repo":"."} +{"id":"bd-347","content_hash":"4ef4a7880fd3c901c50ff595011f9a29651b16f8562fbec5e8a216925b07c5e6","title":"Agent 5 Issue 6","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.510018-07:00","updated_at":"2025-10-21T00:29:10.510018-07:00","source_repo":"."} +{"id":"bd-348","content_hash":"db533dcd4b4eee3294ee109bf9bd475d1aa0948fb9758a84e48e5c534bed9b43","title":"Agent 5 Issue 7","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.510332-07:00","updated_at":"2025-10-21T00:29:10.510332-07:00","source_repo":"."} +{"id":"bd-349","content_hash":"90c12fa849807894f44e04abdae8243759425ec004054c83c1ceb5fe14f0676b","title":"Agent 5 Issue 8","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.510623-07:00","updated_at":"2025-10-21T00:29:10.510623-07:00","source_repo":"."} +{"id":"bd-35","content_hash":"6cfd8afe3f672660823c092fef744695a7e7705169029d5e8203245146e457f4","title":"Increase test coverage for auto-flush and auto-import features","description":"Critical features have 0% test coverage despite being core workflow functionality.\n\n**Uncovered areas (0% coverage):**\n\nAuto-flush/Auto-import (dirty tracking):\n- MarkIssueDirty / MarkIssuesDirty\n- GetDirtyIssues / GetDirtyIssueCount\n- ClearDirtyIssues / ClearDirtyIssuesByID\n- Auto-flush debouncing logic\n- Auto-import hash comparison\n\nDatabase/file discovery:\n- FindDatabasePath (finds .beads/*.db in directory tree)\n- FindJSONLPath (finds issues.jsonl)\n- findDatabaseInTree helper\n\nLabel operations:\n- AddLabel / RemoveLabel\n- GetLabels / GetIssuesByLabel\n\nEvents/Comments:\n- AddComment\n- GetEvents\n- GetStatistics\n\nMetadata storage:\n- SetMetadata / GetMetadata (used for import hash tracking)\n\nCLI output formatting:\n- outputJSON\n- printCollisionReport / printRemappingReport\n- createIssuesFromMarkdown\n\n**Priority areas:**\n1. Auto-flush/import (highest risk - core workflow)\n2. Database discovery (second - affects all operations)\n3. Labels/events (lower priority - less commonly used)\n\n**Test approach:**\n- Add unit tests for dirty tracking in sqlite package\n- Add integration tests for auto-flush timing and debouncing\n- Add tests for import hash detection and idempotency\n- Add tests for database discovery edge cases (permissions, nested dirs)\n\n**Target:** Get overall coverage from 60% → 75%, focus on cmd/bd (currently 24.1%)\n\n**Note:** These features work well in practice (dogfooding proves it) but edge cases (disk full, permissions, concurrent access, race conditions) are untested.","notes":"Added comprehensive tests for CLI output functions (outputJSON, printCollisionReport, printRemappingReport). \n\nCoverage analysis shows:\n- outputJSON: 60% coverage (increased from 0%)\n- printCollisionReport: 100% coverage (increased from 0%)\n- printRemappingReport: 100% coverage (increased from 0%)\n- cmd/bd overall: 19.7% (increased from 18.8%)\n\nOther areas already have excellent coverage:\n✅ Dirty tracking: TestMarkIssueDirty, TestMarkIssuesDirty, TestGetDirtyIssueCount, TestClearDirtyIssuesByID\n✅ Auto-flush: TestAutoFlushDirtyMarking, TestAutoFlushDebounce, TestAutoFlushConcurrency\n✅ Auto-import: TestAutoImportIfNewer, TestAutoImportHashUnchanged, TestAutoImportCollisions \n✅ Database discovery: TestFindDatabasePathInTree, TestFindJSONLPath\n✅ Labels: TestAddLabel, TestRemoveLabel, TestGetLabels, TestGetIssuesByLabel\n✅ Metadata: TestSetAndGetMetadata, TestGetMetadataNotFound\n✅ Events: TestAddComment, TestAddMultipleComments, TestGetEvents\n\nThe remaining low coverage in cmd/bd is primarily Cobra command setup and CLI wiring, which is difficult to unit test and best tested via integration/E2E tests.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.53928-07:00","closed_at":"2025-10-17T01:04:30.736709-07:00","source_repo":"."} +{"id":"bd-350","content_hash":"0e7b037804e0c46ef667f98122673149e0a49906c2fc6c3b2934f7614867732b","title":"Agent 5 Issue 9","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.510963-07:00","updated_at":"2025-10-21T00:29:10.510963-07:00","source_repo":"."} +{"id":"bd-351","content_hash":"7ab81833539bac3c823ea60ae5ab04996eda8eda506283f4d81cee2ff2597e59","title":"Agent 5 Issue 10","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.511844-07:00","updated_at":"2025-10-21T00:29:10.511844-07:00","source_repo":"."} +{"id":"bd-352","content_hash":"5ab93010c393e14f4ee48868805e2b4fe17e4a3940291d29aab760402b801b07","title":"Agent 5 Issue 11","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.512281-07:00","updated_at":"2025-10-21T00:29:10.512281-07:00","source_repo":"."} +{"id":"bd-353","content_hash":"be607c0b83c337961ea9e0979be53530925de024084cbfe1b13241e69f6e306f","title":"Agent 5 Issue 12","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.51266-07:00","updated_at":"2025-10-21T00:29:10.51266-07:00","source_repo":"."} +{"id":"bd-354","content_hash":"d10b6add4ea069fd7ef2c6a8fa04cc203a574bc4ce17ff4b32516bddb845f609","title":"Agent 5 Issue 13","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.513193-07:00","updated_at":"2025-10-21T00:29:10.513193-07:00","source_repo":"."} +{"id":"bd-355","content_hash":"e89c3f4aeb6a5e0abbf438f7563a15492793e991e5ba9e70fa2f398abfd9db4b","title":"Agent 5 Issue 14","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.513678-07:00","updated_at":"2025-10-21T00:29:10.513678-07:00","source_repo":"."} +{"id":"bd-356","content_hash":"f6489fc483064c752e8b06a762bd164b9eb3e677bd675e4ce6e8c15099f0b70e","title":"Agent 5 Issue 15","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.514177-07:00","updated_at":"2025-10-21T00:29:10.514177-07:00","source_repo":"."} +{"id":"bd-357","content_hash":"4fd9eeff836b8632f7baeae1c475a08ab6f8e14345750e229a7fefb7ef340cb0","title":"Agent 5 Issue 16","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.514786-07:00","updated_at":"2025-10-21T00:29:10.514786-07:00","source_repo":"."} +{"id":"bd-358","content_hash":"7bcc3ae10eb9699a1870755158c1dd9e9813db5d2d790d5d957cb1c5d77272ca","title":"Agent 5 Issue 17","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.515317-07:00","updated_at":"2025-10-21T00:29:10.515317-07:00","source_repo":"."} +{"id":"bd-359","content_hash":"0dc5aa440974c65f388b579fb132c833ee9eae4a0020d863421797461b480331","title":"Agent 5 Issue 18","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.515821-07:00","updated_at":"2025-10-21T00:29:10.515821-07:00","source_repo":"."} {"id":"bd-35c7","content_hash":"28e00b560e08ecbf061e998836f8a1dd11392680b273589341c13e6b267df37c","title":"Add label-based filtering to bd ready command","description":"Allow filtering ready work by labels to help organize work by sprint, week, or category.\n\nExample usage:\n bd ready --label week1-2\n bd ready --label frontend,high-priority\n\nThis helps teams organize work into batches and makes it easier for agents to focus on specific categories of work.\n\nImplementation notes:\n- Add --label flag to ready command\n- Support comma-separated labels (AND logic)\n- Should work with existing ready work logic (unblocked issues)","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-03T18:10:18.976536-08:00","updated_at":"2025-11-03T22:27:30.614911-08:00","closed_at":"2025-11-03T22:27:30.614911-08:00","source_repo":"."} +{"id":"bd-36","content_hash":"6b649563a973fe295d2730b0a4c604b2131c777db8595fb2292645af1c1316b1","title":"Handle missing JSONL directory in findJSONLPath","description":"findJSONLPath() assumes the database directory exists. If someone runs bd init to create a new database but the .beads directory doesn't exist yet, the glob operations might fail silently. Add os.MkdirAll(dbDir, 0755) to ensure directory exists before globbing. Located in cmd/bd/main.go:188-201.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.53946-07:00","closed_at":"2025-10-14T02:51:52.199959-07:00","source_repo":"."} +{"id":"bd-360","content_hash":"379558305550d8df673bf1b0641aa5d0409bbf607fe9625d9b5f168556e39c55","title":"Agent 1 Issue 42","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.480941-07:00","updated_at":"2025-10-21T00:29:10.480941-07:00","source_repo":"."} +{"id":"bd-361","content_hash":"0d03bc0bff0ec9c68b3658e8b3603b5f7f32e3afdd7a4f7005592113873b71b8","title":"Agent 1 Issue 43","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.517965-07:00","updated_at":"2025-10-21T00:29:10.517965-07:00","source_repo":"."} +{"id":"bd-362","content_hash":"7ed38f826223efecc5c590e71bbb71fd79de7f6780eff4ee0f55f3bb40d5db32","title":"Agent 1 Issue 44","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.519696-07:00","updated_at":"2025-10-21T00:29:10.519696-07:00","source_repo":"."} +{"id":"bd-363","content_hash":"32b209966141df8c6d20bd3f792362c44286308516274e1d874f4ea129b390a4","title":"Agent 1 Issue 45","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.520173-07:00","updated_at":"2025-10-21T00:29:10.520173-07:00","source_repo":"."} {"id":"bd-36320a04","content_hash":"b98c70f527050b2f0007b4ba64e4fa96fdd56bd2e4f07b71c6d8aa4eba7a1815","title":"Add mutation channel to internal/rpc/server.go","description":"Add mutationChan chan MutationEvent to Server struct. Emit events on CreateIssue, UpdateIssue, DeleteIssue, AddComment. Non-blocking send with default case for full channel.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T19:42:29.860173-07:00","updated_at":"2025-10-31T18:31:27.928693-07:00","closed_at":"2025-10-31T18:31:27.928693-07:00","source_repo":"."} {"id":"bd-363f","content_hash":"ac5d74a93d0eebb70f9a2eaed4ed637a90be138c75e5d9ceef066165233549be","title":"Document bd-wasm installation and usage","description":"Create documentation for bd-wasm:\n- Update README with npm installation instructions\n- Add troubleshooting section for WASM-specific issues\n- Document known limitations vs native bd\n- Add examples for Claude Code Web sandbox usage\n- Update INSTALLING.md with bd-wasm option","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-02T21:58:07.305711-08:00","updated_at":"2025-11-05T00:55:48.756684-08:00","closed_at":"2025-11-05T00:55:48.756687-08:00","source_repo":".","dependencies":[{"issue_id":"bd-363f","depends_on_id":"bd-44d0","type":"parent-child","created_at":"2025-11-02T22:23:49.530675-08:00","created_by":"stevey"}]} +{"id":"bd-364","content_hash":"e2bb1a418d76145071f29366f8aa65658f466d617edbabd8f2847c51d4af90af","title":"Agent 1 Issue 46","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.520683-07:00","updated_at":"2025-10-21T00:29:10.520683-07:00","source_repo":"."} +{"id":"bd-365","content_hash":"8f4efe1c8aecda0061d7b648d2cfa3705d77516c67556c2f8fbe5d8153c83e42","title":"Agent 1 Issue 47","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.521411-07:00","updated_at":"2025-10-21T00:29:10.521411-07:00","source_repo":"."} +{"id":"bd-366","content_hash":"eb3d0f53ce81e57188dce298d51bd00d2277a7d03f6243bc819fea68930ab7e3","title":"Agent 1 Issue 48","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.522391-07:00","updated_at":"2025-10-21T00:29:10.522391-07:00","source_repo":"."} +{"id":"bd-367","content_hash":"f7ce166bc4cf890ae358cfaa2ec89fa1a7227b3865291a4185a3fe6cd39612d6","title":"Agent 1 Issue 49","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.523116-07:00","updated_at":"2025-10-21T00:29:10.523116-07:00","source_repo":"."} +{"id":"bd-368","content_hash":"63afad44eef851c35b90deea17744185df214026b959dbe55539e139c4cf4ab9","title":"Agent 1 Issue 50","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.524757-07:00","updated_at":"2025-10-21T00:29:10.524757-07:00","source_repo":"."} {"id":"bd-36870264","content_hash":"d85eac459267257453cd22af0ab79babb86a26b7380584d0625c12a5302e7eb1","title":"Enforce daemon singleton per workspace with file locking","description":"Agent in ~/src/wyvern discovered 4 simultaneous daemon processes running, causing infinite directory recursion (.beads/.beads/.beads/...). Each daemon used relative paths and created nested .beads/ directories.\n\nRoot cause: No singleton enforcement. Multiple `bd daemon` processes can start in same workspace.\n\nExpected: One daemon per workspace (each workspace = separate .beads/ dir with bd.sock)\nActual: Multiple daemons can run simultaneously in same workspace\n\nNote: Separate git clones = separate workspaces = separate daemons (correct). Git worktrees share .beads/ and have known limitations (documented, use --no-daemon).","design":"Use flock (file locking) on daemon socket or database file to enforce singleton:\n\n1. On daemon start, attempt exclusive lock on .beads/bd.sock or .beads/daemon.lock\n2. If lock held by another process, refuse to start (exit with clear error)\n3. Hold lock for lifetime of daemon process\n4. Release lock on daemon shutdown\n\nAlternative: Use PID file with stale detection (check if PID is still running)\n\nImplementation location: Daemon startup code in cmd/bd/ or internal/daemon/","acceptance_criteria":"1. Starting second daemon process in same workspace fails with clear error\n2. Test: Start daemon, attempt second start, verify failure\n3. Killing daemon releases lock, allowing new daemon to start\n4. No infinite .beads/ directory recursion possible\n5. Works correctly with auto-start mechanism","notes":"## Fix Summary\n\nSuccessfully prevented the nested .beads/.beads/ recursion bug by implementing two safeguards:\n\n1. **Path Canonicalization in FindDatabasePath()** (beads.go):\n - Added filepath.Abs() + filepath.EvalSymlinks() to normalize all database paths\n - Prevents relative path edge cases that create nested directories\n - Ensures all daemons see the same canonical path\n\n2. **Nested Directory Detection** (daemon_lifecycle.go):\n - Added explicit check for \".beads/.beads\" pattern in setupDaemonLock()\n - Fails fast with clear error message if nested structure detected\n - Provides user hints about proper usage\n\n## Root Cause\n\nThe daemon lock (added Oct 22, 2025) correctly prevents simultaneous daemons in the SAME workspace. However, when BEADS_DB used a relative path (e.g., \".beads/beads.db\") from inside the .beads directory, FindDatabasePath() would resolve it to a nested path creating a separate workspace:\n- First daemon: /workspace/.beads/beads.db\n- Second daemon from .beads/: /workspace/.beads/.beads/beads.db ← Different lock file!\n\n## Testing\n\nAll acceptance criteria passed:\n✅ 1. Second daemon start fails with \"daemon already running\" error\n✅ 2. Killing daemon releases lock, new daemon can start \n✅ 3. No infinite .beads/ recursion possible (tested nested BEADS_DB path)\n✅ 4. Works with auto-start mechanism\n\nThe fix addresses the edge case while maintaining the existing lock mechanism's correctness.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-25T23:13:12.269549-07:00","updated_at":"2025-11-01T19:46:06.230339-07:00","closed_at":"2025-11-01T19:46:06.230339-07:00","source_repo":"."} +{"id":"bd-369","content_hash":"ab5c0039e058577f9234e3c6c3ebb179d9e5a4951696237a2644e75f015e2129","title":"Agent 1 Issue 51","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.525408-07:00","updated_at":"2025-10-21T00:29:10.525408-07:00","source_repo":"."} +{"id":"bd-37","content_hash":"f44f1b0a00b744686f8b0550e54402651aa9014f107fb0a019caba74f1695d0a","title":"Add visibility for auto-flush failures","description":"flushToJSONL() writes warnings to stderr when flush fails, but calling code has no way to know if flush succeeded or failed. This means a command could return success even though JSONL is now out of sync. Consider maintaining a 'last flush status' variable or counter for failed flushes, and warn user after multiple consecutive failures (e.g., 3+). Located in cmd/bd/main.go:227-307.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.539651-07:00","closed_at":"2025-10-16T10:07:22.497491-07:00","source_repo":"."} +{"id":"bd-370","content_hash":"657e0f2a0171bbd5eed97a9ea72962bff1b97374fe7631f817a102ce8252bbd5","title":"Agent 1 Issue 52","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.525844-07:00","updated_at":"2025-10-21T00:29:10.525844-07:00","source_repo":"."} +{"id":"bd-371","content_hash":"aa946a170e1596237e39b4ab266f2de87fec7d879df4e22630600955ab1dcc35","title":"Agent 1 Issue 53","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.526279-07:00","updated_at":"2025-10-21T00:29:10.526279-07:00","source_repo":"."} +{"id":"bd-372","content_hash":"d6ba396d7e94d994f6b4daadc709b9867212bc3f9e6f249c66613c8dcc12b572","title":"Agent 1 Issue 54","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.527152-07:00","updated_at":"2025-10-21T00:29:10.527152-07:00","source_repo":"."} +{"id":"bd-373","content_hash":"d4a47a89780a93a56465ad784a1d5b2ece8aca58efeae57f5f1a4150ce1b1adf","title":"Agent 1 Issue 55","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.527989-07:00","updated_at":"2025-10-21T00:29:10.527989-07:00","source_repo":"."} {"id":"bd-373c","content_hash":"58cdfdb7ea1067aa86d8db19993cdfda4f686ade37936903fc34fd511e483ff2","title":"Daemon crashes silently when multiple .db files exist in .beads/","description":"When daemon detects multiple .db files (after filtering out .backup and vc.db files), it writes error details to .beads/daemon-error file before exiting.\n\nThe error file is checked when:\n1. Daemon discovery fails to connect (internal/daemon/discovery.go)\n2. Auto-start fails to yield a running daemon (cmd/bd/main.go)\n3. Daemon list shows 'daemon not responding' error\n\nThis makes the error immediately visible to users without requiring them to check daemon logs.\n\nFile created: cmd/bd/daemon.go (writes daemon-error on multiple .db detection)\nFiles modified: \n- internal/daemon/discovery.go (reads daemon-error and surfaces in DaemonInfo.Error)\n- cmd/bd/main.go (displays daemon-error when auto-start fails)\n\nTesting: Create multiple .db files in .beads/, start daemon, verify error file created and shown in bd daemons list","notes":"Root cause: Daemon exits with os.Exit(1) when multiple .db files detected (daemon.go:1381), but error only goes to daemon log file. User sees 'daemon not responding' without knowing why.\n\nCurrent detection:\n- daemon.go filters out .backup and vc.db files\n- bd doctor detects multiple databases\n- Error message tells user to run 'bd init' or manually remove\n\nProblem: Error is not user-visible unless they check daemon logs.\n\nProposed fix options:\n1. Surface the error in 'bd info' and 'bd daemons list' output\n2. Add a hint in error messages to run 'bd doctor' when daemon fails\n3. Make daemon write error to a .beads/daemon-error file that gets checked\n4. Improve 'bd doctor' to run automatically when daemon is unhealthy","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-31T21:08:03.389259-07:00","updated_at":"2025-11-01T11:13:48.029427-07:00","closed_at":"2025-11-01T11:13:48.029427-07:00","source_repo":".","dependencies":[{"issue_id":"bd-373c","depends_on_id":"bd-2752a7a2","type":"discovered-from","created_at":"2025-10-31T21:08:03.390022-07:00","created_by":"stevey"}]} +{"id":"bd-374","content_hash":"78c967a738edb268260d40f5e118568ea96c2e107436e1e798b41760cf1985a9","title":"Agent 1 Issue 56","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.528477-07:00","updated_at":"2025-10-21T00:29:10.528477-07:00","source_repo":"."} {"id":"bd-374e","content_hash":"468235095d0f60303f97d0c681d8ff390e3616731664853fab4afe55f4c1e1a3","title":"WASM integration testing","description":"Comprehensive testing of WASM build. Child of epic bd-44d0.\n\n## Tasks\n- [ ] Unit tests for WASM module\n- [ ] Integration tests with real JSONL files\n- [ ] Test all bd commands for parity\n- [ ] Performance benchmarks\n- [ ] Test in actual Claude Code Web sandbox\n- [ ] Document any limitations\n\n## Test Coverage Target\n- \u003e90% of bd CLI commands work identically","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-02T18:33:31.342184-08:00","updated_at":"2025-11-05T00:55:48.756994-08:00","closed_at":"2025-11-05T00:55:48.756996-08:00","source_repo":".","dependencies":[{"issue_id":"bd-374e","depends_on_id":"bd-197b","type":"blocks","created_at":"2025-11-02T18:33:31.342928-08:00","created_by":"daemon"}]} -{"id":"bd-379","content_hash":"d1edf5009291680270e9bad61ef0d6e80fe1e24fa90f71fc80748a8bd52b32d2","title":"Implement `bd setup cursor` for Cursor IDE integration","description":"Create a `bd setup cursor` command that integrates Beads workflow into Cursor IDE via .cursorrules file. Unlike Claude Code (which has hooks), Cursor uses a static rules file to provide context to its AI.","design":"## Implementation\n\nCreate `cursor` subcommand in `cmd/bd/setup.go` that manages `.cursorrules` integration:\n\n### Command Interface\n```bash\nbd setup cursor # Install/update Cursor integration\nbd setup cursor --check # Verify .cursorrules has bd section\nbd setup cursor --remove # Remove bd section from .cursorrules\n```\n\n### Behavior\n\n**If `.cursorrules` doesn't exist:**\n- Create new file with complete bd rules template\n- Mark sections for easy identification\n\n**If `.cursorrules` exists:**\n- Check if bd section already exists (look for marker comments)\n- If not exists: append bd section\n- If exists: update in place (preserve user customizations outside bd section)\n- Backup original with `.cursorrules.backup` suffix\n\n### .cursorrules Template\n\n```markdown\n# Beads Issue Tracking\n# Auto-generated by 'bd setup cursor' - do not remove these markers\n# BEGIN BEADS INTEGRATION\n\nThis project uses [Beads (bd)](https://github.com/steveyegge/beads) for issue tracking.\n\n## Core Rules\n- Track ALL work in bd (never use markdown TODOs or comment-based task lists)\n- Use `bd ready` to find available work\n- Use `bd create` to track new issues/tasks/bugs\n- Use `bd sync` at end of session to sync with git remote\n- Git hooks auto-sync on commit/merge\n\n## Quick Reference\n```bash\nbd prime # Load complete workflow context\nbd ready # Show issues ready to work (no blockers)\nbd list --status=open # List all open issues\nbd create --title=\"...\" --type=task # Create new issue\nbd update \u003cid\u003e --status=in_progress # Claim work\nbd close \u003cid\u003e # Mark complete\nbd dep \u003cfrom\u003e \u003cto\u003e # Add dependency (from blocks to)\nbd sync # Sync with git remote\n```\n\n## Workflow\n1. Check for ready work: `bd ready`\n2. Claim an issue: `bd update \u003cid\u003e --status=in_progress`\n3. Do the work\n4. Mark complete: `bd close \u003cid\u003e`\n5. Sync: `bd sync` (or let git hooks handle it)\n\n## Context Loading\nRun `bd prime` to get complete workflow documentation in AI-optimized format (~1-2k tokens).\n\nFor detailed docs: see AGENTS.md, QUICKSTART.md, or run `bd --help`\n\n# END BEADS INTEGRATION\n```\n\n### Detection Logic\n\n```go\nfunc setupCursor() error {\n cursorRulesPath := \".cursorrules\"\n \n // Check if file exists\n content, err := os.ReadFile(cursorRulesPath)\n if err != nil {\n if os.IsNotExist(err) {\n // Create new file\n return createCursorRules(cursorRulesPath)\n }\n return err\n }\n \n // Check if bd section exists\n if hasBeadsSection(string(content)) {\n // Update existing section\n return updateBeadsSection(cursorRulesPath, string(content))\n } else {\n // Append new section\n return appendBeadsSection(cursorRulesPath, string(content))\n }\n}\n\nfunc hasBeadsSection(content string) bool {\n return strings.Contains(content, \"BEGIN BEADS INTEGRATION\")\n}\n```\n\n## Files\n- `cmd/bd/setup.go` - Add cursor subcommand\n- `cmd/bd/setup_cursor.go` - Cursor-specific logic\n- `cmd/bd/setup_cursor_test.go` - Tests\n- Template stored as Go string constant\n\n## Differences from Claude Setup\n\n| Aspect | Claude | Cursor |\n|--------|--------|--------|\n| **Integration file** | `.claude/commands/`, `.claude/hooks/` | `.cursorrules` |\n| **Auto-refresh** | Hooks call `bd prime` | Static rules (manual refresh) |\n| **Setup complexity** | Multiple files | Single file |\n| **Update frequency** | Dynamic (hooks) | Static (updated via `bd setup cursor`) |","acceptance_criteria":"- `bd setup cursor` creates/updates .cursorrules\n- Idempotent (safe to run multiple times)\n- Preserves non-bd content in .cursorrules\n- Backs up existing .cursorrules before modifying\n- `bd setup cursor --check` verifies integration\n- Markers allow updating bd section without affecting user content\n- Unit tests for template insertion/update logic\n- Documentation in AGENTS.md mentions Cursor setup","status":"open","priority":3,"issue_type":"feature","created_at":"2025-11-11T23:32:22.170083-08:00","updated_at":"2025-11-11T23:32:22.170083-08:00","source_repo":"."} +{"id":"bd-375","content_hash":"1d882a42702de05da138aba7fa31553f48bb0e03c075555457846ee4e7053c7a","title":"Agent 1 Issue 57","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.529196-07:00","updated_at":"2025-10-21T00:29:10.529196-07:00","source_repo":"."} +{"id":"bd-376","content_hash":"685fa7863f4e7d91d39da564db8383abcabe0c53b2d28d67aea57cf0f82ea95d","title":"Agent 1 Issue 58","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.530039-07:00","updated_at":"2025-10-21T00:29:10.530039-07:00","source_repo":"."} +{"id":"bd-377","content_hash":"9ae1046ae6c105580c1219ea5c87ad330dd079ae46fbbae5b123230d119a94a8","title":"Agent 1 Issue 59","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.530492-07:00","updated_at":"2025-10-21T00:29:10.530492-07:00","source_repo":"."} +{"id":"bd-378","content_hash":"14a423fb64faa962c76810f044b0cec273315eba710e064181be15cd475ab62a","title":"Agent 1 Issue 60","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.530981-07:00","updated_at":"2025-10-21T00:29:10.530981-07:00","source_repo":"."} +{"id":"bd-379","content_hash":"d1edf5009291680270e9bad61ef0d6e80fe1e24fa90f71fc80748a8bd52b32d2","title":"Implement `bd setup cursor` for Cursor IDE integration","description":"Create a `bd setup cursor` command that integrates Beads workflow into Cursor IDE via .cursorrules file. Unlike Claude Code (which has hooks), Cursor uses a static rules file to provide context to its AI.","design":"## Implementation\n\nCreate `cursor` subcommand in `cmd/bd/setup.go` that manages `.cursorrules` integration:\n\n### Command Interface\n```bash\nbd setup cursor # Install/update Cursor integration\nbd setup cursor --check # Verify .cursorrules has bd section\nbd setup cursor --remove # Remove bd section from .cursorrules\n```\n\n### Behavior\n\n**If `.cursorrules` doesn't exist:**\n- Create new file with complete bd rules template\n- Mark sections for easy identification\n\n**If `.cursorrules` exists:**\n- Check if bd section already exists (look for marker comments)\n- If not exists: append bd section\n- If exists: update in place (preserve user customizations outside bd section)\n- Backup original with `.cursorrules.backup` suffix\n\n### .cursorrules Template\n\n```markdown\n# Beads Issue Tracking\n# Auto-generated by 'bd setup cursor' - do not remove these markers\n# BEGIN BEADS INTEGRATION\n\nThis project uses [Beads (bd)](https://github.com/steveyegge/beads) for issue tracking.\n\n## Core Rules\n- Track ALL work in bd (never use markdown TODOs or comment-based task lists)\n- Use `bd ready` to find available work\n- Use `bd create` to track new issues/tasks/bugs\n- Use `bd sync` at end of session to sync with git remote\n- Git hooks auto-sync on commit/merge\n\n## Quick Reference\n```bash\nbd prime # Load complete workflow context\nbd ready # Show issues ready to work (no blockers)\nbd list --status=open # List all open issues\nbd create --title=\"...\" --type=task # Create new issue\nbd update \u003cid\u003e --status=in_progress # Claim work\nbd close \u003cid\u003e # Mark complete\nbd dep \u003cfrom\u003e \u003cto\u003e # Add dependency (from blocks to)\nbd sync # Sync with git remote\n```\n\n## Workflow\n1. Check for ready work: `bd ready`\n2. Claim an issue: `bd update \u003cid\u003e --status=in_progress`\n3. Do the work\n4. Mark complete: `bd close \u003cid\u003e`\n5. Sync: `bd sync` (or let git hooks handle it)\n\n## Context Loading\nRun `bd prime` to get complete workflow documentation in AI-optimized format (~1-2k tokens).\n\nFor detailed docs: see AGENTS.md, QUICKSTART.md, or run `bd --help`\n\n# END BEADS INTEGRATION\n```\n\n### Detection Logic\n\n```go\nfunc setupCursor() error {\n cursorRulesPath := \".cursorrules\"\n \n // Check if file exists\n content, err := os.ReadFile(cursorRulesPath)\n if err != nil {\n if os.IsNotExist(err) {\n // Create new file\n return createCursorRules(cursorRulesPath)\n }\n return err\n }\n \n // Check if bd section exists\n if hasBeadsSection(string(content)) {\n // Update existing section\n return updateBeadsSection(cursorRulesPath, string(content))\n } else {\n // Append new section\n return appendBeadsSection(cursorRulesPath, string(content))\n }\n}\n\nfunc hasBeadsSection(content string) bool {\n return strings.Contains(content, \"BEGIN BEADS INTEGRATION\")\n}\n```\n\n## Files\n- `cmd/bd/setup.go` - Add cursor subcommand\n- `cmd/bd/setup_cursor.go` - Cursor-specific logic\n- `cmd/bd/setup_cursor_test.go` - Tests\n- Template stored as Go string constant\n\n## Differences from Claude Setup\n\n| Aspect | Claude | Cursor |\n|--------|--------|--------|\n| **Integration file** | `.claude/commands/`, `.claude/hooks/` | `.cursorrules` |\n| **Auto-refresh** | Hooks call `bd prime` | Static rules (manual refresh) |\n| **Setup complexity** | Multiple files | Single file |\n| **Update frequency** | Dynamic (hooks) | Static (updated via `bd setup cursor`) |","acceptance_criteria":"- `bd setup cursor` creates/updates .cursorrules\n- Idempotent (safe to run multiple times)\n- Preserves non-bd content in .cursorrules\n- Backs up existing .cursorrules before modifying\n- `bd setup cursor --check` verifies integration\n- Markers allow updating bd section without affecting user content\n- Unit tests for template insertion/update logic\n- Documentation in AGENTS.md mentions Cursor setup","status":"open","priority":3,"issue_type":"feature","created_at":"2025-10-21T00:29:10.531723-07:00","updated_at":"2025-11-12T10:57:44.252433-08:00","source_repo":"."} {"id":"bd-37dd","content_hash":"cd19e661a3d2b923145dd61e7f1f07bdc6bf93136967fd2543b48b3a8b4134e1","title":"Add topological sort utility functions","description":"Create internal/importer/sort.go with utilities for depth-based sorting of issues. Functions: GetHierarchyDepth(id), SortByDepth(issues), GroupByDepth(issues). Include stable sorting for same-depth issues.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-04T12:31:42.309207-08:00","updated_at":"2025-11-05T00:08:42.812378-08:00","closed_at":"2025-11-05T00:08:42.81238-08:00","source_repo":"."} +{"id":"bd-38","content_hash":"fdbc9e7db910a836f798bbb91c1ed840837d772f9577a5fe2d7b77a9a2219954","title":"Add test coverage for auto-flush feature","description":"Add comprehensive tests for auto-flush functionality:\\n- Test that markDirtyAndScheduleFlush() is called after CRUD operations\\n- Test debounce timing (rapid operations result in single flush)\\n- Test --no-auto-flush flag disables feature\\n- Test flush on program exit\\n- Test concurrent operations don't cause races\\n- Test error scenarios (disk full, permission denied, etc.)\\n- Test import command triggers auto-flush\\n\\nCurrent implementation has no test coverage for the auto-flush feature. Located in cmd/bd/main_test.go (to be created).","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.539812-07:00","closed_at":"2025-10-16T10:07:22.508336-07:00","source_repo":"."} +{"id":"bd-380","content_hash":"9d7820fc07d9b2b83e8cec5b7e7281901a7d024e7bb857515671305fcd436153","title":"Agent 1 Issue 62","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.532144-07:00","updated_at":"2025-10-21T00:29:10.532144-07:00","source_repo":"."} +{"id":"bd-381","content_hash":"7621464612bf4cffa4cec344e0ce37bbfba3fee503f6a5d5f3a0d459c65acd8c","title":"Agent 1 Issue 63","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.532848-07:00","updated_at":"2025-10-21T00:29:10.532848-07:00","source_repo":"."} {"id":"bd-381d7f6c","content_hash":"24b00d276bd245aec3e6dfb6378457e785ac6a01538eba05450dd65dba993178","title":"Audit Current Cache Usage","description":"Understand exactly what code depends on the storage cache","acceptance_criteria":"- Document showing all cache dependencies\n- Confirmation that removing cache won't break MCP\n- List of tests that need updating\n\nFiles to examine:\n- internal/rpc/server_cache_storage.go (cache implementation)\n- internal/rpc/client.go (how req.Cwd is set)\n- internal/rpc/server_*.go (all getStorageForRequest calls)\n- integrations/beads-mcp/ (MCP multi-repo logic)\n\nTasks:\n- Document all callers of getStorageForRequest()\n- Verify req.Cwd is only set by RPC client for database discovery\n- Confirm MCP server doesn't rely on multi-repo cache behavior\n- Check if any tests assume multi-repo routing\n- Review environment variables: BEADS_DAEMON_MAX_CACHE_SIZE, BEADS_DAEMON_CACHE_TTL, BEADS_DAEMON_MEMORY_THRESHOLD_MB","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-27T23:01:15.172045-07:00","updated_at":"2025-10-30T17:12:58.214409-07:00","closed_at":"2025-10-28T10:47:37.87529-07:00","source_repo":"."} +{"id":"bd-382","content_hash":"93c1afb9803045e91de717cb1b18f839dcb3f3c7125a860dad9eb5b7591a0f4f","title":"Agent 1 Issue 64","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.533186-07:00","updated_at":"2025-10-21T00:29:10.533186-07:00","source_repo":"."} +{"id":"bd-383","content_hash":"33dccf88240a7503f3bf1bbe470f69bfc3e21e89310e0853d3b5a0bc42ffa6fe","title":"Agent 1 Issue 65","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.533518-07:00","updated_at":"2025-10-21T00:29:10.533518-07:00","source_repo":"."} +{"id":"bd-384","content_hash":"1eedafb50e4f1c298a57ba21e42ec3937ec5665c41bb44e9b83c37e1a153ecf3","title":"Agent 1 Issue 66","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.53383-07:00","updated_at":"2025-10-21T00:29:10.53383-07:00","source_repo":"."} +{"id":"bd-385","content_hash":"10fd44965a4b12b857e6c6a72edffdc219d969d7e9d83e25f7147bbbf93d7790","title":"Agent 1 Issue 67","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.534163-07:00","updated_at":"2025-10-21T00:29:10.534163-07:00","source_repo":"."} {"id":"bd-3852","content_hash":"bc2640e4d1c60e0b7a7c3b6d49cb05292f50facb5d4ea3887ba8c414aa7ffef3","title":"Add orphan detection migration","description":"Create migration to detect orphaned children in existing databases. Query: SELECT id FROM issues WHERE id LIKE '%.%' AND substr(id, 1, instr(id || '.', '.') - 1) NOT IN (SELECT id FROM issues). Log results, let user decide action (delete orphans or convert to top-level).","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-04T12:32:30.727044-08:00","updated_at":"2025-11-04T12:32:30.727044-08:00","source_repo":"."} +{"id":"bd-386","content_hash":"e31591e37f7eca24f119e0146df1b8eb03b35dda26f4632d23a459edae19c914","title":"Agent 1 Issue 68","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.534482-07:00","updated_at":"2025-10-21T00:29:10.534482-07:00","source_repo":"."} +{"id":"bd-387","content_hash":"15ac715f3f0302d906fb36af5d2cd93eb15973e47e87ff5cfe7300280454be09","title":"Agent 1 Issue 69","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.534809-07:00","updated_at":"2025-10-21T00:29:10.534809-07:00","source_repo":"."} +{"id":"bd-388","content_hash":"2ec9953353e0ab7398298d182dc35aa1d07c87ce91b48749489bffd009336ca4","title":"Agent 1 Issue 70","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.535162-07:00","updated_at":"2025-10-21T00:29:10.535162-07:00","source_repo":"."} +{"id":"bd-389","content_hash":"abd5e4c263d9adde1991a1710bb50ab42ca78c86441651aded81f91edea729b6","title":"Agent 1 Issue 71","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.53551-07:00","updated_at":"2025-10-21T00:29:10.53551-07:00","source_repo":"."} +{"id":"bd-39","content_hash":"b49f02f88135f37fff3e822d9f8a79ab6fa4087c98bba9339ef7f553be2cd375","title":"Add migration scripts for GitHub Issues","description":"Create scripts to import from GitHub Issues API or exported JSON","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.539973-07:00","closed_at":"2025-10-17T23:51:47.390748-07:00","source_repo":"."} +{"id":"bd-390","content_hash":"98522bd00c631a668df818ba99478213f059a4152f4a15d530ef6b0a38576068","title":"Agent 1 Issue 72","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.53586-07:00","updated_at":"2025-10-21T00:29:10.53586-07:00","source_repo":"."} +{"id":"bd-391","content_hash":"323b13d034e7eba3db1d90bfdb18a2195d631484f3924b7b2aceebf6eca3e4ce","title":"Agent 1 Issue 73","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.536201-07:00","updated_at":"2025-10-21T00:29:10.536201-07:00","source_repo":"."} +{"id":"bd-392","content_hash":"fdb6f908fe50c9517d49649cba23d2151027f4325a6d7e1c491bcae1f6b270c5","title":"Agent 1 Issue 74","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.536591-07:00","updated_at":"2025-10-21T00:29:10.536591-07:00","source_repo":"."} +{"id":"bd-393","content_hash":"aec780d697987570cb43e74ba55d9bc1230408df1d584181a551c703a36213cc","title":"Agent 1 Issue 75","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.537031-07:00","updated_at":"2025-10-21T00:29:10.537031-07:00","source_repo":"."} +{"id":"bd-394","content_hash":"b3a6209b1f730911a3ffd8cbd82ff4fe77f42e496ee85e1d0a2f1edca8224d1b","title":"Agent 1 Issue 76","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.537379-07:00","updated_at":"2025-10-21T00:29:10.537379-07:00","source_repo":"."} +{"id":"bd-395","content_hash":"870550b968f1c645875eaed6e7ddc3028b354b15692be324c2da833cfa4280fc","title":"Agent 1 Issue 77","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.537702-07:00","updated_at":"2025-10-21T00:29:10.537702-07:00","source_repo":"."} +{"id":"bd-396","content_hash":"d9139916a78a2373b25cf32e5cb3638d346f73bc5a982107f01d66ba123ef6ff","title":"Agent 1 Issue 78","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.538052-07:00","updated_at":"2025-10-21T00:29:10.538052-07:00","source_repo":"."} +{"id":"bd-397","content_hash":"a5d8e87ad62ff40431c5e51645e503e103b866cbb258aa5807f011e52aa071bd","title":"Agent 1 Issue 79","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.538381-07:00","updated_at":"2025-10-21T00:29:10.538381-07:00","source_repo":"."} +{"id":"bd-398","content_hash":"13d70baffa73da0014247bace782cf3ad571cac508e47bd3d94ddb5649a0142c","title":"Agent 1 Issue 80","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.538721-07:00","updated_at":"2025-10-21T00:29:10.538721-07:00","source_repo":"."} +{"id":"bd-399","content_hash":"ca5711c930bab6dda3deb57ec79e4d5b59f32b19cc5364956bfb52c33a397423","title":"Agent 1 Issue 81","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.539097-07:00","updated_at":"2025-10-21T00:29:10.539097-07:00","source_repo":"."} {"id":"bd-3b2fe268","content_hash":"601c1649b6cce47b7ff248cd07bf347c7c8ed9073b53ad2b425fe38edbf5dc2e","title":"Add fsnotify dependency to go.mod","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-28T16:20:02.429763-07:00","updated_at":"2025-11-06T19:36:13.969438-08:00","closed_at":"2025-11-06T19:27:34.921866-08:00","source_repo":"."} {"id":"bd-3b7f","content_hash":"24c22ea6863edee2b6269e178a9966e68295baa265595b4ba813b68fc67020ac","title":"Add tests for extracted modules","description":"Create tests for migrations.go, hash_ids.go, batch_ops.go, and validators.go","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-01T19:28:54.88933-07:00","updated_at":"2025-11-01T23:00:37.751004-07:00","closed_at":"2025-11-01T23:00:37.751004-07:00","source_repo":"."} {"id":"bd-3d844c58","content_hash":"e6ed1b4d53fa06b4ba8221ed6e0c213044ab75a387453267cf4ee0474f7b3400","title":"Implement content-hash based collision resolution for deterministic convergence","description":"The current collision resolution uses creation timestamps to decide which issue to keep vs. remap. This is non-deterministic when two clones create issues at nearly the same time.\n\nRoot cause of bd-71107098:\n- Clone A creates test-1=\"Issue from clone A\" at T0\n- Clone B creates test-1=\"Issue from clone B\" at T0+30ms\n- Clone B syncs first, remaps Clone A's to test-2\n- Clone A syncs second, sees collision, remaps Clone B's to test-2\n- Result: titles are swapped between clones\n\nSolution:\n- Use content-based hashing (title + description + priority + type)\n- Deterministic winner: always keep issue with lower hash\n- Same collision on different clones produces same result (idempotent)\n\nImplementation:\n- Modify ScoreCollisions in internal/storage/sqlite/collision.go\n- Replace timestamp-based scoring with content hash comparison\n- Ensure hash function is stable across platforms","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-28T17:04:06.145646-07:00","updated_at":"2025-10-30T17:12:58.225476-07:00","closed_at":"2025-10-28T19:20:09.943023-07:00","source_repo":".","dependencies":[{"issue_id":"bd-3d844c58","depends_on_id":"bd-71107098","type":"blocks","created_at":"2025-10-31T19:38:09.203365-07:00","created_by":"stevey"}]} @@ -107,20 +1902,131 @@ {"id":"bd-3e9ddc31","content_hash":"4e03660281dbe2c069617fc8d723d546d6e5eb386142c0359b862747867a1b90","title":"Replace getStorageForRequest with Direct Access","description":"Replace all getStorageForRequest(req) calls with s.storage","acceptance_criteria":"- No references to getStorageForRequest() in codebase (except in deleted file)\n- All handlers use s.storage directly\n- Code compiles without errors\n\nFiles to update:\n- internal/rpc/server_issues_epics.go (~8 calls)\n- internal/rpc/server_labels_deps_comments.go (~4 calls)\n- internal/rpc/server_compact.go (~2 calls)\n- internal/rpc/server_export_import_auto.go (~2 calls)\n- internal/rpc/server_routing_validation_diagnostics.go (~1 call)\n\nPattern: store, err := s.getStorageForRequest(req) → store := s.storage","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-27T23:20:10.393759-07:00","updated_at":"2025-10-30T17:12:58.21613-07:00","closed_at":"2025-10-28T14:08:38.06721-07:00","source_repo":"."} {"id":"bd-3ee2c7e9","content_hash":"80a0101dd9082c194cd4f138dc116c0fc14d178d8afacb6b5b61ee863ee2eea7","title":"Add \"bd daemons\" command for multi-daemon management","description":"Add a new \"bd daemons\" command with subcommands to manage daemon processes across all beads repositories/worktrees. Should show all running daemons with metadata (version, workspace, uptime, last sync), allow stopping/restarting individual daemons, auto-clean stale processes, view logs, and show exclusive lock status.","design":"Subcommands:\n- list: Show all running daemons with metadata (workspace, PID, version, socket path, uptime, last activity, exclusive lock status)\n- stop \u003cpath|pid\u003e: Gracefully stop a specific daemon\n- restart \u003cpath|pid\u003e: Stop and restart daemon\n- killall: Emergency stop all daemons\n- health: Verify each daemon responds to ping\n- logs \u003cpath\u003e: View daemon logs\n\nFeatures:\n- Auto-clean stale sockets/dead processes\n- Discovery: Scan for .beads/bd.sock files + running processes\n- Communication: Use existing socket protocol, add GET /status endpoint for metadata","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-10-26T16:53:40.970042-07:00","updated_at":"2025-11-02T17:12:34.621017-08:00","closed_at":"2025-11-02T17:12:34.62102-08:00","source_repo":"."} {"id":"bd-3f6a","content_hash":"7fef5b08bbb32c4f4ab7d906539a765b01f1a74d0bb71102c954a5bdec4b442e","title":"Add concurrent import race condition tests","description":"Currently no tests verify behavior when multiple clones import simultaneously with external_ref matching.\n\nScenarios to test:\n1. Two clones import same external_ref update at same time\n2. Clone A imports while Clone B updates same issue\n3. Verify transaction isolation prevents corruption\n4. Document expected behavior (last-write-wins vs timestamp-based)\n\nRelated: bd-1022\nFiles: internal/importer/external_ref_test.go","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-02T15:32:11.286956-08:00","updated_at":"2025-11-02T16:11:16.127009-08:00","closed_at":"2025-11-02T16:11:16.127009-08:00","source_repo":"."} -{"id":"bd-3f80d9e0","content_hash":"6abdab20b716cb5f605f678d0f605bb07c5f9683d573ea724001d6f94177088e","title":"Improve internal/daemon test coverage (currently 22.5%)","description":"Daemon functionality needs better coverage:\n- Auto-start behavior\n- Lock file management\n- Discovery mechanisms\n- Connection handling\n- Error recovery\n\nCurrent coverage: 58.3% (improved from 22.5% as of Nov 2025)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T14:06:30.832728-07:00","updated_at":"2025-11-20T12:40:11.70644-05:00","closed_at":"2025-11-15T14:13:47.303529-08:00","source_repo":"."} +{"id":"bd-3f80d9e0","content_hash":"6abdab20b716cb5f605f678d0f605bb07c5f9683d573ea724001d6f94177088e","title":"Improve internal/daemon test coverage (currently 22.5%)","description":"Daemon functionality needs better coverage:\n- Auto-start behavior\n- Lock file management\n- Discovery mechanisms\n- Connection handling\n- Error recovery\n\nCurrent coverage: 58.3% (improved from 22.5% as of Nov 2025)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T14:06:30.832728-07:00","updated_at":"2025-11-20T12:05:34.81966-05:00","closed_at":"2025-11-15T14:13:47.303529-08:00","source_repo":"."} {"id":"bd-3tfh","content_hash":"d8a889d96a2a236db3d6c60d239878ffee607e6c91b2d6fc6dd85bfca938da03","title":"Benchmark Helper Functions","description":"Extend existing benchmark helpers in internal/storage/sqlite/bench_helpers_test.go (or create if organizing separately).\n\nExisting helper (in compact_bench_test.go):\n- setupBenchDB(tb) - Creates temp SQLite database with basic config\n * Used by compact and cycle benchmarks\n * Returns (*SQLiteStorage, cleanup func())\n\nNew helpers to add:\n- setupLargeBenchDB(b *testing.B) storage.Storage\n * Creates 10K issue database using LargeSQLite fixture\n * Returns configured storage instance\n \n- setupXLargeBenchDB(b *testing.B) storage.Storage\n * Creates 20K issue database using XLargeSQLite fixture\n * Returns configured storage instance\n\nImplementation options:\n1. Add to existing compact_bench_test.go (co-located with setupBenchDB)\n2. Create new bench_helpers_test.go for organization\n\nBoth approaches:\n- Build tag: //go:build bench\n- Uses fixture generator from internal/testutil/fixtures\n- Follows existing setupBenchDB() pattern\n- Handles database cleanup\n\nThese helpers reduce duplication across new benchmark functions and provide consistent large-scale database setup.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-13T22:22:55.694834-08:00","updated_at":"2025-11-13T23:13:41.244758-08:00","closed_at":"2025-11-13T23:13:41.244758-08:00","source_repo":".","dependencies":[{"issue_id":"bd-3tfh","depends_on_id":"bd-m62x","type":"blocks","created_at":"2025-11-13T22:24:02.632994-08:00","created_by":"daemon"}]} +{"id":"bd-4","content_hash":"11b46c8dfe971d0301f3790587d7f97c4bc6073e42ae32454238daca468d9350","title":"Add godoc comments for auto-flush functions","description":"Add comprehensive godoc comments for findJSONLPath(), markDirtyAndScheduleFlush(), and flushToJSONL() explaining behavior, concurrency considerations, and error handling. Include notes about debouncing behavior (timer resets on each write, flush occurs 5s after LAST operation) and flush-on-exit guarantees. Located in cmd/bd/main.go:188-307.","status":"closed","priority":4,"issue_type":"chore","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.540145-07:00","closed_at":"2025-10-19T19:22:19.172983-07:00","source_repo":"."} +{"id":"bd-40","content_hash":"e9071ab7b5023aca23f78b26249f4675ec35aba51b4b0587ce4d6119a7e9da75","title":"Document hierarchical blocking behavior in README","description":"The fix for bd-50 changes user-visible behavior: children of blocked epics are now automatically blocked.\n\n**What needs documenting:**\n1. README.md dependency section should explain blocking propagation\n2. Clarify that 'blocks' + 'parent-child' together create transitive blocking\n3. Note that 'related' and 'discovered-from' do NOT propagate blocking\n4. Add example showing epic → child blocking propagation\n\n**Example to add:**\n```bash\n# If epic is blocked, children are too\nbd create \"Epic 1\" -t epic -p 1\nbd create \"Task 1\" -t task -p 1\nbd dep add task-1 epic-1 --type parent-child\n\n# Block the epic\nbd create \"Blocker\" -t task -p 0\nbd dep add epic-1 blocker-1 --type blocks\n\n# Now both epic-1 AND task-1 are blocked\nbd ready # Neither will show up\n```","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.540305-07:00","closed_at":"2025-10-14T13:10:38.482538-07:00","source_repo":"."} +{"id":"bd-400","content_hash":"42245aa317c65bcff66c10d9011e21d8719ec08dd19d5543f6cf379b370fbe69","title":"Agent 1 Issue 82","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.539507-07:00","updated_at":"2025-10-21T00:29:10.539507-07:00","source_repo":"."} +{"id":"bd-401","content_hash":"43f63914615ee708f4406d911d706cbb95cff77c227b842b89ba37db11c8b743","title":"Agent 1 Issue 83","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.539923-07:00","updated_at":"2025-10-21T00:29:10.539923-07:00","source_repo":"."} +{"id":"bd-402","content_hash":"66e8aace2e59682c52592bbbbae80cbd735b2dc1f81d9897e0966d1d5881f832","title":"Agent 1 Issue 84","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.540292-07:00","updated_at":"2025-10-21T00:29:10.540292-07:00","source_repo":"."} +{"id":"bd-403","content_hash":"59395a07a283b28172a2c279d9ed73d17fcccc70301f2ac7ce8e66c47a710593","title":"Agent 1 Issue 85","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.540667-07:00","updated_at":"2025-10-21T00:29:10.540667-07:00","source_repo":"."} +{"id":"bd-404","content_hash":"ec20fe3d8572d1b2ea92290d77aa5cb0a003c83ea1a991f401442f47b7df43c2","title":"Agent 1 Issue 86","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.54107-07:00","updated_at":"2025-10-21T00:29:10.54107-07:00","source_repo":"."} +{"id":"bd-405","content_hash":"175bdb795e09e2f4b7faa85dcb0771e487bd78988e12fb0f736c280920a0126f","title":"Agent 1 Issue 87","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.541431-07:00","updated_at":"2025-10-21T00:29:10.541431-07:00","source_repo":"."} +{"id":"bd-406","content_hash":"e0009395c4d1576c44d343145142a1927d0a0e4d7f75c32c174338b1fbf817bb","title":"Agent 1 Issue 88","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.541794-07:00","updated_at":"2025-10-21T00:29:10.541794-07:00","source_repo":"."} +{"id":"bd-407","content_hash":"ce8987a9cd607d0764e7f6f3786b88e76553c5fc02715ed7a0fe46e526926636","title":"Agent 1 Issue 89","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.542403-07:00","updated_at":"2025-10-21T00:29:10.542403-07:00","source_repo":"."} +{"id":"bd-408","content_hash":"66a10103a8b052a7659839b291b55c40c353559867310726a4827b6430ca8a2a","title":"Agent 1 Issue 90","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.542747-07:00","updated_at":"2025-10-21T00:29:10.542747-07:00","source_repo":"."} +{"id":"bd-409","content_hash":"9be70d55029751fc8b40f303148063c6941e9774305c9889d2edc43692a2fa02","title":"Agent 1 Issue 91","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.543068-07:00","updated_at":"2025-10-21T00:29:10.543068-07:00","source_repo":"."} {"id":"bd-40a0","content_hash":"75611f4fb108e11cb4b98ded732fe94dd41ed700d8058b419e6fc796cf152391","title":"bd doctor should check for multiple DBs, multiple JSONLs, daemon health","description":"","design":"\nCurrently bd doctor only checks:\n- .beads/ directory exists\n- Database version vs CLI version \n- ID format (hash vs sequential)\n- CLI version vs latest GitHub release\n\nIt should ALSO check for operational issues that cause silent failures:\n\n1. **Multiple database files** (*.db excluding backups and vc.db)\n - Warn if multiple *.db files found (ambiguous which to use)\n - Suggest running 'bd migrate' or manually removing old DBs\n\n2. **Multiple JSONL files** \n - Check for both issues.jsonl and beads.jsonl\n - Warn about ambiguity, suggest standardizing on one\n\n3. **Daemon health** (integrate bd daemons health)\n - Check if daemon running for this workspace\n - Detect version mismatches between daemon and CLI\n - Detect zombie daemons (running but unresponsive)\n - Detect stale daemon.pid files\n\n4. **Database-JSONL sync issues**\n - Check if JSONL is newer than last import\n - Warn if they're out of sync\n\n5. **Permissions issues**\n - Check if .beads/ directory is writable\n - Check if database file is readable/writable\n\nImplementation approach:\n- Add new check functions to doctor.go\n- Reuse logic from bd daemons health\n- Keep checks fast (\u003c 1 second total)\n- Output actionable fixes for each issue\n","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-31T21:16:47.042913-07:00","updated_at":"2025-10-31T21:21:27.093525-07:00","closed_at":"2025-10-31T21:21:27.093525-07:00","source_repo":"."} +{"id":"bd-41","content_hash":"78767a343564fc3c5711b75bbbd362a744c1c31653b95f74d2a5eb52651e064a","title":"Document versioning and release strategy","description":"Create comprehensive versioning strategy for beads ecosystem.\n\nComponents to document:\n1. bd CLI (Go binary) - main version number\n2. Plugin (Claude Code) - tracks CLI version\n3. MCP server (Python) - bundled with plugin\n4. Release workflow - how to sync all three\n\nDecisions to make:\n- Should plugin.json auto-update from bd CLI version?\n- Should we have a VERSION file at repo root?\n- How to handle breaking changes across components?\n- What's the update notification strategy?\n\nReferences:\n- plugin.json engines field now requires bd \u003e=0.9.0\n- /bd-version command added for checking compatibility\n- PLUGIN.md now documents update workflow","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.540472-07:00","closed_at":"2025-10-14T13:55:59.178075-07:00","source_repo":"."} +{"id":"bd-410","content_hash":"c763d5d7cb39334fbcc7679d477c6c99ab4fafd2b5ae2d238120a7645085ba92","title":"Agent 1 Issue 92","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.543385-07:00","updated_at":"2025-10-21T00:29:10.543385-07:00","source_repo":"."} +{"id":"bd-411","content_hash":"e70b64a4e12311a4c6bf8014a97f451e165730060d2bf081db947ec1bce0093f","title":"Agent 1 Issue 93","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.543705-07:00","updated_at":"2025-10-21T00:29:10.543705-07:00","source_repo":"."} +{"id":"bd-412","content_hash":"2bcd47ba6e94e5880f280a4140c238d693a6ac6d4233ac287c96165c938503a6","title":"Agent 1 Issue 94","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.544025-07:00","updated_at":"2025-10-21T00:29:10.544025-07:00","source_repo":"."} +{"id":"bd-413","content_hash":"d52e3d9e34a4a0aa3053f1cdd3051e178687a9297a632d549b693f9d43c0a9da","title":"Agent 1 Issue 95","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.544337-07:00","updated_at":"2025-10-21T00:29:10.544337-07:00","source_repo":"."} +{"id":"bd-414","content_hash":"4731b585e5f433a61298595c1f1c5608a4203ae7fd188af922b2b25e2ce2d4e5","title":"Agent 1 Issue 96","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.544627-07:00","updated_at":"2025-10-21T00:29:10.544627-07:00","source_repo":"."} +{"id":"bd-415","content_hash":"9b4d7df2ab377490b58c3cfe0914db8d29cf20d7acbaed536b96ec5daad9baab","title":"Agent 1 Issue 97","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.544905-07:00","updated_at":"2025-10-21T00:29:10.544905-07:00","source_repo":"."} +{"id":"bd-416","content_hash":"4d1d76449aeb78a8b621d7eb7e26b8487c2a158e35ee997b2a302ad984386119","title":"Agent 1 Issue 98","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.545185-07:00","updated_at":"2025-10-21T00:29:10.545185-07:00","source_repo":"."} +{"id":"bd-417","content_hash":"6b4f81f7ac5d69771109b58f27ee4977bcfbb8d4c1c1101f00546535ef411df1","title":"Agent 1 Issue 99","description":"Created by agent 1","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.545471-07:00","updated_at":"2025-10-21T00:29:10.545471-07:00","source_repo":"."} +{"id":"bd-418","content_hash":"5cf547cc2c2ae9210ea579c31b24a6bbd16c5c7514914881384817991ac47b30","title":"Agent 5 Issue 19","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.516304-07:00","updated_at":"2025-10-21T00:29:10.516304-07:00","source_repo":"."} +{"id":"bd-419","content_hash":"238c5fbd7de560e7cef99728386354fbfa46665f3e1799ffe2612323a99af5df","title":"Agent 5 Issue 20","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.546221-07:00","updated_at":"2025-10-21T00:29:10.546221-07:00","source_repo":"."} +{"id":"bd-42","content_hash":"32329b590fb8abb7210efe2c4dd526c5aeaa6b12f6b9093acdfe41ab6a99c4bd","title":"Create version bump script","description":"Create scripts/bump-version.sh to automate version syncing across all components.\n\nThe script should:\n1. Take a version number as argument (e.g., ./scripts/bump-version.sh 0.9.3)\n2. Update all version files:\n - cmd/bd/version.go (Version constant)\n - .claude-plugin/plugin.json (version field)\n - .claude-plugin/marketplace.json (plugins[].version)\n - integrations/beads-mcp/pyproject.toml (version field)\n - README.md (Alpha version mention)\n - PLUGIN.md (version requirements)\n3. Validate semantic versioning format\n4. Show diff preview before applying\n5. Optionally create git commit with standard message\n\nThis prevents the version mismatch issue that occurred when only version.go was updated.\n\nRelated: bd-43 (version sync issue)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.540641-07:00","closed_at":"2025-10-14T13:49:22.368581-07:00","source_repo":"."} +{"id":"bd-420","content_hash":"cc1fb62ab568d77530dfcf0542940288cfe9791eb787b2b2a5c158cd6b5cc5b8","title":"Agent 5 Issue 21","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.546594-07:00","updated_at":"2025-10-21T00:29:10.546594-07:00","source_repo":"."} +{"id":"bd-421","content_hash":"9e08f7f741b6aed3edc66898a5cf2139888d5c738d6aedf3ab0f9a4e123e9e6b","title":"Agent 5 Issue 22","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.546905-07:00","updated_at":"2025-10-21T00:29:10.546905-07:00","source_repo":"."} +{"id":"bd-422","content_hash":"504f525806f89f57603ec919bd3a02aad7c52e20828eb4a35871719dc4dc73b8","title":"Agent 5 Issue 23","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.547219-07:00","updated_at":"2025-10-21T00:29:10.547219-07:00","source_repo":"."} +{"id":"bd-423","content_hash":"1eb2e686480a0bb85e289a93784dcfb47fa8c38eba6cfdc0f4b86847aefc7008","title":"Agent 5 Issue 24","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.547539-07:00","updated_at":"2025-10-21T00:29:10.547539-07:00","source_repo":"."} +{"id":"bd-424","content_hash":"01c8a09750992ca4185493c2d0dfd3214cc20d3b74b03d2a3c494e2d2eae2020","title":"Agent 5 Issue 25","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.547863-07:00","updated_at":"2025-10-21T00:29:10.547863-07:00","source_repo":"."} +{"id":"bd-425","content_hash":"37fcd241c4b64f7cf16e3069b114618dda05f907622a48b042979e962aaeb407","title":"Agent 5 Issue 26","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.548195-07:00","updated_at":"2025-10-21T00:29:10.548195-07:00","source_repo":"."} +{"id":"bd-426","content_hash":"3d1097e8544d333c2e9eb510bc14d2e925ecd56f18e5dbed45a56da39b246933","title":"Agent 5 Issue 27","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.548504-07:00","updated_at":"2025-10-21T00:29:10.548504-07:00","source_repo":"."} +{"id":"bd-427","content_hash":"fc822596d197a75b7b03f25bde4559e614258223de40b6a57de43a91fd5c0bba","title":"Agent 5 Issue 28","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.548832-07:00","updated_at":"2025-10-21T00:29:10.548832-07:00","source_repo":"."} +{"id":"bd-428","content_hash":"1eeb7ed112ed82990a500dc92571f46357622a3221d96cb2c12f655caa4d668a","title":"Agent 5 Issue 29","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.549151-07:00","updated_at":"2025-10-21T00:29:10.549151-07:00","source_repo":"."} +{"id":"bd-429","content_hash":"3153b91ded1ed8fe9bf5bc03d3125329df8ecfdecab46f109da819a273287428","title":"Agent 5 Issue 30","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.549484-07:00","updated_at":"2025-10-21T00:29:10.549484-07:00","source_repo":"."} +{"id":"bd-43","content_hash":"f03de47f88142d00537c42a1e6a0a2982041dc1610027d0b12bbad4d6ca1135d","title":"Add system-wide/multi-repo support for beads","description":"GitHub issue #4 requests ability to use beads across multiple projects and for system-wide task tracking.\n\nCurrent limitation: beads is per-repository isolated. Each project has its own .beads/ directory and issues cannot reference issues in other projects.\n\nPotential approaches:\n1. Global beads instance in ~/.beads/global.db for cross-project work\n2. Project references - allow issues to link across repos\n3. Multi-project workspace support - one beads instance managing multiple repos\n4. Integration with existing MCP server to provide remote multi-project access\n\nUse cases:\n- System administrators tracking work across multiple machines/repos\n- Developers working on a dozen+ projects simultaneously\n- Cross-cutting concerns that span multiple repositories\n- Global todo list with project-specific subtasks\n\nRelated:\n- GitHub issue #4: https://github.com/steveyegge/beads/issues/4\n- Comparison to membank MCP which already supports multi-project via centralized server\n- MCP server at integrations/beads-mcp/ could be extended for this\n\nSee also: Testing framework for plugins (also from GH #4)","notes":"Multi-repo support status update:\n\n✅ **COMPLETED (P1 - Core functionality):**\n- bd-98: --global daemon flag ✅ \n- bd-99: Multi-repo documentation ✅\n- bd-92: Per-request context routing ✅\n\n**REMAINING (Optional enhancements):**\n- bd-100 (P2): 'bd repos' command - nice-to-have for UX\n- bd-101 (P2): Daemon auto-start - convenience feature\n- bd-102 (P3): Workspace config - alternative approach\n- bd-103 (P4): Cross-repo references - future feature\n\n**Decision:** Core multi-repo support is COMPLETE and working. Remaining items are independent enhancements, not blockers. \n\nRecommend closing bd-43 as complete. Open new issues for specific enhancements if needed.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.540801-07:00","closed_at":"2025-10-17T23:15:17.705446-07:00","source_repo":"."} +{"id":"bd-430","content_hash":"4f6d54eed7d986cee4b231b88a8985f4f27363060d88bbfd1e79bed6f85bb0bc","title":"Agent 5 Issue 31","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.549812-07:00","updated_at":"2025-10-21T00:29:10.549812-07:00","source_repo":"."} +{"id":"bd-431","content_hash":"15a31b266eb45751bfa9082950ea7d4e596c2f3675708deddc40065619100596","title":"Agent 5 Issue 32","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.550138-07:00","updated_at":"2025-10-21T00:29:10.550138-07:00","source_repo":"."} +{"id":"bd-432","content_hash":"6a875de68599c2cf7d15217cd06bac0ea94995374887460efc05adde9ab8425d","title":"Agent 5 Issue 33","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.550467-07:00","updated_at":"2025-10-21T00:29:10.550467-07:00","source_repo":"."} +{"id":"bd-433","content_hash":"baf711c2cea9746ed94ca2fa4e4059cc08050f6abf8e55c577d9c2d872685fc2","title":"Agent 5 Issue 34","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.550787-07:00","updated_at":"2025-10-21T00:29:10.550787-07:00","source_repo":"."} +{"id":"bd-434","content_hash":"0dccfbe7a30e006e43693dbdc66ed5bcc6cdbbd2ade15c1c82675c6466e08ce9","title":"Agent 5 Issue 35","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.551099-07:00","updated_at":"2025-10-21T00:29:10.551099-07:00","source_repo":"."} +{"id":"bd-435","content_hash":"288897bb009ecdf211e54cc24cb0b4e86a24cb08185c84c74cceef8970d08442","title":"Agent 5 Issue 36","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.551427-07:00","updated_at":"2025-10-21T00:29:10.551427-07:00","source_repo":"."} +{"id":"bd-436","content_hash":"6da4aa15a9c0c9555d740b1188fa94a09f3cbef323398d8107641fb62cd6e972","title":"Agent 5 Issue 37","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.551748-07:00","updated_at":"2025-10-21T00:29:10.551748-07:00","source_repo":"."} +{"id":"bd-437","content_hash":"1b011f14c9f51e95ade2bb3d3a2e35e2aa8f7b9dd3179d15f76ae2f9f3875597","title":"Agent 5 Issue 38","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.552065-07:00","updated_at":"2025-10-21T00:29:10.552065-07:00","source_repo":"."} +{"id":"bd-438","content_hash":"9739d56042f126df0b345a1473d941775e07658ca80b3c5439e4f093e79a1317","title":"Agent 5 Issue 39","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.552386-07:00","updated_at":"2025-10-21T00:29:10.552386-07:00","source_repo":"."} +{"id":"bd-439","content_hash":"f103596eb9ecb4c9ae38718174cceff987f9c4c90e0333fe9711f44d078209f1","title":"Agent 5 Issue 40","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.552732-07:00","updated_at":"2025-10-21T00:29:10.552732-07:00","source_repo":"."} +{"id":"bd-44","content_hash":"81af9c33e10a2d95378b03c520f96c83776696f8a22613b820e02e96835af04f","title":"Add coverage threshold to CI pipeline","description":"Current CI runs tests with coverage but doesn't enforce minimum threshold. Add step to fail if coverage drops below target.\n\nCurrent coverage: 60%\nRecommended thresholds:\n- Warn: 55%\n- Fail: 50%\n\nThis prevents coverage regression while allowing gradual improvement toward 80% target for 1.0.\n\nImplementation:\n1. Add coverage check step after test run\n2. Use 'go tool cover -func=coverage.out' to get total\n3. Parse percentage and compare to threshold\n4. Optionally: Use codecov's built-in threshold features\n\nRelated to test coverage improvement work (upcoming issue).","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.540976-07:00","closed_at":"2025-10-14T14:16:22.731648-07:00","source_repo":"."} +{"id":"bd-440","content_hash":"9bd7aa0e2a8622d110a630cf7005a4a49d768abd9b946d250a25a66cebbb0859","title":"Agent 5 Issue 41","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.553072-07:00","updated_at":"2025-10-21T00:29:10.553072-07:00","source_repo":"."} +{"id":"bd-441","content_hash":"f280c36d8ee96cf28d8be2e8516a47759561cea60fdaf8b40ae832aa3a00f3ee","title":"Agent 5 Issue 42","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.553401-07:00","updated_at":"2025-10-21T00:29:10.553401-07:00","source_repo":"."} +{"id":"bd-442","content_hash":"7872d43b702ff4d4bed7d9be62b24460715bfeadc171e65e0c0781e821eb92d4","title":"Agent 5 Issue 43","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.55371-07:00","updated_at":"2025-10-21T00:29:10.55371-07:00","source_repo":"."} +{"id":"bd-443","content_hash":"ba7eacf627d9abb5007adc7630fefe687f075cc4c5446983c78fd80a6fa455ae","title":"Agent 5 Issue 44","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.554006-07:00","updated_at":"2025-10-21T00:29:10.554006-07:00","source_repo":"."} +{"id":"bd-444","content_hash":"f651ce076b9da88e2564f802ddaa20c7098633749089d3d05c9d2148fd4fd429","title":"Agent 5 Issue 45","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.554296-07:00","updated_at":"2025-10-21T00:29:10.554296-07:00","source_repo":"."} +{"id":"bd-445","content_hash":"8b6c0b0cd5b8f7025ab15d61c4c6c96cf8e4004e73c6401b96e48a3d42ffe8ef","title":"Agent 5 Issue 46","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.554585-07:00","updated_at":"2025-10-21T00:29:10.554585-07:00","source_repo":"."} +{"id":"bd-446","content_hash":"d67634b6c108d0cd7692ded1fce2b2cbfadd49312a057137d64044fa8a91364e","title":"Agent 5 Issue 47","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.554884-07:00","updated_at":"2025-10-21T00:29:10.554884-07:00","source_repo":"."} {"id":"bd-4462","content_hash":"a3f7ca75994ca4efb8b5b6ae47ecf5b8544ad33510e4c6f72663efd8c2737f74","title":"Test basic bd commands in WASM (init, create, list)","description":"Compile and verify basic bd functionality works in WASM:\n- Test bd init --quiet\n- Test bd create with simple issue\n- Test bd list --json output\n- Verify SQLite database creation and queries work\n- Document any runtime issues or workarounds needed","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T21:58:07.291771-08:00","updated_at":"2025-11-02T23:07:10.273212-08:00","closed_at":"2025-11-02T23:07:10.273212-08:00","source_repo":".","dependencies":[{"issue_id":"bd-4462","depends_on_id":"bd-44d0","type":"parent-child","created_at":"2025-11-02T22:23:49.448668-08:00","created_by":"stevey"},{"issue_id":"bd-4462","depends_on_id":"bd-b4b0","type":"blocks","created_at":"2025-11-02T22:23:55.596771-08:00","created_by":"stevey"}]} +{"id":"bd-447","content_hash":"d884a45e4ab054dd04c7d5eabad60f94928845fb0efe42a5c7bd41ab2c0f9e2e","title":"Agent 5 Issue 48","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.555205-07:00","updated_at":"2025-10-21T00:29:10.555205-07:00","source_repo":"."} +{"id":"bd-448","content_hash":"b861a062a65ee3043341bc74dc6471edad2dc447c9b3fd3252340b8c5149face","title":"Agent 5 Issue 49","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.555537-07:00","updated_at":"2025-10-21T00:29:10.555537-07:00","source_repo":"."} +{"id":"bd-449","content_hash":"56da80c4fdd7b9994d901754866afb72373b3e99da206a8b5f11e2bd386d64cb","title":"Agent 5 Issue 50","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.555877-07:00","updated_at":"2025-10-21T00:29:10.555877-07:00","source_repo":"."} {"id":"bd-44d0","content_hash":"a20f23c823907e546f852c1bbb0c09166100b2569d4a1192f0a7288ee5d918e8","title":"WASM port of bd for Claude Code Web sandboxes","description":"Enable beads to work in Claude Code Web sandboxes by compiling bd to WebAssembly.\n\n## Problem\nClaude Code Web sandboxes cannot install bd CLI due to network restrictions:\n- GitHub releases return 403\n- go install fails with DNS errors\n- Binary cannot be downloaded\n\n## Solution\nCompile bd Go codebase to WASM, publish to npm as drop-in replacement.\n\n## Technical Approach\n- Use GOOS=js GOARCH=wasm to compile bd\n- modernc.org/sqlite already supports js/wasm target\n- Publish to npm as bd-wasm package\n- Full feature parity with bd CLI\n\n## Success Criteria\n- bd-wasm installs via npm in web sandbox\n- All core bd commands work identically\n- JSONL output matches native bd\n- Performance within 2x of native","notes":"WASM port abandoned - Claude Code Web has full VMs not browser restrictions. Better: npm + native binary","status":"closed","priority":0,"issue_type":"epic","created_at":"2025-11-02T18:32:27.660794-08:00","updated_at":"2025-11-02T23:36:38.679515-08:00","closed_at":"2025-11-02T23:36:38.679515-08:00","source_repo":"."} +{"id":"bd-45","content_hash":"46f8f2d5bc0fedb411473c30fd97d0b4e04841b5e3674867ae515d9609c4be52","title":"Verify and test Claude Code plugin","description":"Address remaining items from code review:\n\nCritical:\n1. Test plugin installation locally with /plugin marketplace add\n2. Verify ${CLAUDE_PLUGIN_ROOT} variable works correctly\n3. Test each slash command works\n4. Test @task-agent execution\n5. Verify MCP server connects properly\n\nDocumentation:\n1. Clarify 'one-command installation' vs prerequisites\n2. Add note about plugin development status\n3. Verify all paths and examples work\n\nNice-to-have:\n1. Add icon for marketplace (optional)\n2. Add categories field to plugin.json\n3. Add engines field for version compatibility","notes":"PLUGIN IMPLEMENTATION COMPLETE - READY FOR TESTING\n\nWhat was built:\n✅ .claude-plugin/plugin.json - Plugin metadata with MCP server config\n✅ .claude-plugin/marketplace.json - Marketplace configuration\n✅ 9 slash commands in .claude-plugin/commands/:\n - bd-ready, bd-create, bd-show, bd-update, bd-close\n - bd-workflow, bd-init, bd-stats, bd-version\n✅ Task agent in .claude-plugin/agents/task-agent.md\n✅ PLUGIN.md - Comprehensive documentation\n✅ README.md - Updated with plugin section\n✅ Version sync - All components at 0.9.2\n\nTesting Instructions for Next Agent:\n=====================================\n\n1. INSTALL PLUGIN FROM GITHUB:\n /plugin marketplace add steveyegge/beads\n /plugin install beads\n \n2. RESTART CLAUDE CODE (required for MCP server)\n\n3. TEST SLASH COMMANDS:\n /bd-version # Check versions (should show 0.9.2)\n /bd-workflow # Show workflow guide\n /bd-stats # Show project stats\n /bd-ready # Find ready work\n /bd-create \"Test plugin\" task 2\n /bd-show bd-\u003cid\u003e\n \n4. TEST MCP SERVER:\n /mcp # Verify 'beads' server appears\n \n5. TEST TASK AGENT:\n @task-agent # If supported in Claude Code\n \n6. VERIFY:\n - All commands work without errors\n - MCP tools are accessible\n - Version checking works\n - Documentation is accurate\n\nExpected Issues:\n- May need to adjust MCP server path variable (${CLAUDE_PLUGIN_ROOT})\n- Task agent syntax might differ\n- Some commands may need refinement based on actual usage\n\nIf testing fails, check:\n- bd CLI is in PATH: which bd\n- uv is installed: which uv\n- MCP server logs in Claude Code\n- PLUGIN.md troubleshooting section\n\nCommit references:\n- 9f38375: feat: Add Claude Code plugin for beads\n- d25fc53: feat: Add version compatibility checking\n- c0f1044: fix: Sync all component versions to 0.9.2\n- a5c71f0: feat: Add version bump script\n- a612b92: docs: Add version management to CLAUDE.md","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.541546-07:00","closed_at":"2025-10-16T21:03:25.525342-07:00","source_repo":"."} +{"id":"bd-450","content_hash":"549acdfdeed7037e6758de25caf17764cd0a43b25eac25cbc52f191df1c8c59f","title":"Agent 5 Issue 51","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.556196-07:00","updated_at":"2025-10-21T00:29:10.556196-07:00","source_repo":"."} +{"id":"bd-451","content_hash":"89179e67f9921af4eaf4b775e1f7a3e2698a9a0308630c24a26b0de55cd897d3","title":"Agent 5 Issue 52","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.556519-07:00","updated_at":"2025-10-21T00:29:10.556519-07:00","source_repo":"."} +{"id":"bd-452","content_hash":"348c4afaec20eb8a22e9ea877d3db6cb0d50cca932724983e6b251458f936851","title":"Agent 5 Issue 53","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.556853-07:00","updated_at":"2025-10-21T00:29:10.556853-07:00","source_repo":"."} +{"id":"bd-453","content_hash":"f8978b363d5415eb6fe85dad3d495882ae1b6cbb30d84f71d4d180ce1df14015","title":"Agent 5 Issue 54","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.557205-07:00","updated_at":"2025-10-21T00:29:10.557205-07:00","source_repo":"."} +{"id":"bd-454","content_hash":"e8eb1b93ee8a0b6afe5b8850241223bf8495929004cbc625e307322dc97e8f5b","title":"Agent 5 Issue 55","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.557553-07:00","updated_at":"2025-10-21T00:29:10.557553-07:00","source_repo":"."} +{"id":"bd-455","content_hash":"a790a2378aee9e5249cd49e819d3d3940b4790b396c4fdf09785b03fee83537d","title":"Agent 5 Issue 56","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.55789-07:00","updated_at":"2025-10-21T00:29:10.55789-07:00","source_repo":"."} +{"id":"bd-456","content_hash":"59b7995f759e9f4bc9acd3be557e380e9855e124526b019eac13fdb1645d2e73","title":"Agent 5 Issue 57","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.558238-07:00","updated_at":"2025-10-21T00:29:10.558238-07:00","source_repo":"."} +{"id":"bd-457","content_hash":"59c55630dcfca8693104ed78e5dedf14e8ac93d09ac56bdb1c8e9e6a671fd70b","title":"Agent 5 Issue 58","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.558572-07:00","updated_at":"2025-10-21T00:29:10.558572-07:00","source_repo":"."} +{"id":"bd-458","content_hash":"7950545596c4d2ad789b3d467f6445ebe7d6133a1bf0537a246ac602087876fe","title":"Agent 5 Issue 59","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.558907-07:00","updated_at":"2025-10-21T00:29:10.558907-07:00","source_repo":"."} +{"id":"bd-459","content_hash":"bae8103f5c80c7da6edbd4be1c674e1159d86040f54845a2423cca28e6b1b5f3","title":"Agent 5 Issue 60","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.559254-07:00","updated_at":"2025-10-21T00:29:10.559254-07:00","source_repo":"."} +{"id":"bd-46","content_hash":"91838cbcf96e53b404ba263240c4d74f7023a45b786b2d0897c64a8b2260f9d5","title":"Update ready_issues VIEW to use hierarchical blocking","description":"The ready_issues VIEW (schema.go:97-108) uses the OLD blocking logic that doesn't propagate through parent-child hierarchies.\n\n**Problem:**\n- GetReadyWork() function now uses recursive CTE with propagation\n- But the ready_issues VIEW still uses simple NOT EXISTS check\n- Any code using the VIEW will get DIFFERENT results than GetReadyWork()\n- This creates inconsistency and confusion\n\n**Impact:**\n- Unknown if the VIEW is actually used anywhere in the codebase\n- If it is used, it's returning incorrect results (showing children as ready when parent is blocked)\n\n**Solution:**\nEither:\n1. Update VIEW to match GetReadyWork logic (complex CTE in a view)\n2. Drop the VIEW entirely if unused\n3. Make VIEW call GetReadyWork as a function (if SQLite supports it)\n\n**Investigation needed:**\nGrep for 'ready_issues' to see if the view is actually used.","notes":"**Investigation results:**\nGrepped the codebase - the ready_issues VIEW appears in:\n- schema.go (definition)\n- WORKFLOW.md, DESIGN.md (documentation)\n- No actual Go code queries it directly\n\n**Conclusion:** The VIEW is defined but appears UNUSED by actual code. GetReadyWork() function is used instead.\n\n**Recommended solution:** Drop the VIEW entirely to avoid confusion. It serves no purpose if unused and creates a maintenance burden (needs to stay in sync with GetReadyWork logic).\n\n**Alternative:** If we want to keep it for direct SQL access, update the VIEW definition to match the new recursive CTE logic.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.541765-07:00","closed_at":"2025-10-14T13:06:47.739336-07:00","source_repo":"."} +{"id":"bd-460","content_hash":"7e4d3d0359991059affc32d9602bacd258e7fb1f37c4ce229faf8c465bdc1614","title":"Agent 5 Issue 61","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.559635-07:00","updated_at":"2025-10-21T00:29:10.559635-07:00","source_repo":"."} +{"id":"bd-461","content_hash":"846d5782c27792098fad34cc6a0edf04878cfb8cc3acf35338ba12553636bf0d","title":"Agent 5 Issue 62","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.559978-07:00","updated_at":"2025-10-21T00:29:10.559978-07:00","source_repo":"."} +{"id":"bd-462","content_hash":"01d1fffbdee48e3cbdc23bc5f8c1a9cdb0d3406b5d7493d2b2b7138bb601bd23","title":"Agent 5 Issue 63","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.560328-07:00","updated_at":"2025-10-21T00:29:10.560328-07:00","source_repo":"."} +{"id":"bd-463","content_hash":"5b4424df73efbd164f8555ca85909ca75d60aecffe6638edb2f017fd0a5728b3","title":"Agent 5 Issue 64","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.560655-07:00","updated_at":"2025-10-21T00:29:10.560655-07:00","source_repo":"."} {"id":"bd-46381404","content_hash":"580d0d38d9c888804627d6a9cb951fab92935f67d6247156a24759ccfc911f0d","title":"Test database naming","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-27T18:27:28.309676-07:00","updated_at":"2025-10-31T12:00:43.185201-07:00","closed_at":"2025-10-31T12:00:43.185201-07:00","source_repo":"."} +{"id":"bd-464","content_hash":"d55994ab48204a30a0fd20b88a49c621135c75321635290cc57a93e26512455e","title":"Agent 5 Issue 65","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.560977-07:00","updated_at":"2025-10-21T00:29:10.560977-07:00","source_repo":"."} +{"id":"bd-465","content_hash":"cc3b812d339c23b285a7d88740fa2455bea948695a840deba80afe77a069ec48","title":"Agent 5 Issue 66","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.561292-07:00","updated_at":"2025-10-21T00:29:10.561292-07:00","source_repo":"."} +{"id":"bd-466","content_hash":"4c9090a440717448efa96f11d4295d3b79060dce6ccc691292c1342f2265945a","title":"Agent 5 Issue 67","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.561607-07:00","updated_at":"2025-10-21T00:29:10.561607-07:00","source_repo":"."} +{"id":"bd-467","content_hash":"80905102907c4b47aa72dcd23a9b6e98d327887daef2f6318b2a508d29062618","title":"Agent 5 Issue 68","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.561909-07:00","updated_at":"2025-10-21T00:29:10.561909-07:00","source_repo":"."} +{"id":"bd-468","content_hash":"938c693cca6dc5f9123ad35b7222637e1e738de0e33b85433d3ba227e834ba04","title":"Agent 5 Issue 69","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.562238-07:00","updated_at":"2025-10-21T00:29:10.562238-07:00","source_repo":"."} +{"id":"bd-469","content_hash":"c4a454e701f497513960c6d37e4dbef0a69ce946d8219485475d86ad6787bd12","title":"Agent 5 Issue 70","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.56256-07:00","updated_at":"2025-10-21T00:29:10.56256-07:00","source_repo":"."} +{"id":"bd-47","content_hash":"e2c07a8d575e5f4821517497191b725f7307fbc001f67077a0c38d9358236b7b","title":"Add composite index on dependencies(depends_on_id, type)","description":"The hierarchical blocking query does:\nJOIN dependencies d ON d.depends_on_id = bt.issue_id\nWHERE d.type = 'parent-child'\n\nCurrently we only have idx_dependencies_depends_on (line 41 in schema.go), which covers depends_on_id but not the type filter.\n\n**Impact:**\n- Query has to scan ALL dependencies for a given depends_on_id, then filter by type\n- With 10k+ issues and many dependencies, this could cause slowdowns\n- The blocker propagation happens recursively, amplifying the cost\n\n**Solution:**\nAdd composite index: CREATE INDEX idx_dependencies_depends_on_type ON dependencies(depends_on_id, type)\n\n**Testing:**\nRun EXPLAIN QUERY PLAN on GetReadyWork query before/after to verify index usage.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.541965-07:00","closed_at":"2025-10-14T13:00:04.441418-07:00","source_repo":"."} +{"id":"bd-470","content_hash":"2ab8f62c20c45cf71f4cafe7b60e12f2edf6ca8f03f1f9da0c12f51c99a1a744","title":"Agent 5 Issue 71","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.562889-07:00","updated_at":"2025-10-21T00:29:10.562889-07:00","source_repo":"."} +{"id":"bd-471","content_hash":"45c0bfbbf70b2cd47180b18b5a0ed09110c02e597d48e1751c472be9fb6f910e","title":"Agent 5 Issue 72","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.563221-07:00","updated_at":"2025-10-21T00:29:10.563221-07:00","source_repo":"."} +{"id":"bd-472","content_hash":"99fd76b77f6cc280253fa2c54c56d000f28faa79ee31b19ef3de10dc2cc366bb","title":"Agent 5 Issue 73","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.563553-07:00","updated_at":"2025-10-21T00:29:10.563553-07:00","source_repo":"."} +{"id":"bd-473","content_hash":"aeaeb9e4651df6711c67dc3c101c299e71d3860c4dc6dcf5384c422b8e3d4798","title":"Agent 5 Issue 74","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.563915-07:00","updated_at":"2025-10-21T00:29:10.563915-07:00","source_repo":"."} +{"id":"bd-474","content_hash":"5e8cdb18a473f9ab84d8945b85b6d7a5018c2534e0450962badd035de579e9e7","title":"Agent 5 Issue 75","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.564455-07:00","updated_at":"2025-10-21T00:29:10.564455-07:00","source_repo":"."} +{"id":"bd-475","content_hash":"4a018c0bfdb1386539edbe4908c6c92a98f16a2d9165c47b4605a6e2197dc45e","title":"Agent 5 Issue 76","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.565075-07:00","updated_at":"2025-10-21T00:29:10.565075-07:00","source_repo":"."} +{"id":"bd-476","content_hash":"6def846e94144e2127b05bd43331c7735c2e398d6e419556b9113e456823cc38","title":"Agent 5 Issue 77","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.565438-07:00","updated_at":"2025-10-21T00:29:10.565438-07:00","source_repo":"."} +{"id":"bd-477","content_hash":"d5c86e5e3f6b58001fb9f78ce260fe6313f0e08db06425ef96a40b4a6db4866c","title":"Agent 0 Issue 0","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.46569-07:00","updated_at":"2025-10-21T00:29:10.46569-07:00","source_repo":"."} +{"id":"bd-478","content_hash":"acbae386f6381fb9b21facc855aadc798493f9283db7a64ac1fccb708d96d70c","title":"Agent 0 Issue 1","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.566423-07:00","updated_at":"2025-10-21T00:29:10.566423-07:00","source_repo":"."} +{"id":"bd-479","content_hash":"27def168223183a89fd11f7ce79a7e1432affea8b52fa9383ed74379d766db1d","title":"Agent 0 Issue 2","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.566757-07:00","updated_at":"2025-10-21T00:29:10.566757-07:00","source_repo":"."} +{"id":"bd-48","content_hash":"1917b84d66555ba433f722434af8e1bbc51e3e7e452f965f6de875500f90444c","title":"Parent's blocker should block children in ready work calculation","description":"GitHub issue #19: If epic1 blocks epic2, children of epic2 should also be considered blocked when calculating ready work. Currently epic2's children show as ready even though their parent is blocked. This breaks the natural hierarchy of dependencies and can cause agents to work on tasks out of order.\n\nExpected: ready work calculation should traverse up parent-child hierarchy and check if any ancestor has blocking dependencies.\n\nSee: https://github.com/anthropics/claude-code/issues/19","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.542131-07:00","closed_at":"2025-10-14T12:53:41.146271-07:00","source_repo":"."} +{"id":"bd-480","content_hash":"23d5fc83d4549cac24e7497006bcc8a336acfbd6620d6656a5b05a09fadfc411","title":"Agent 0 Issue 3","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.567091-07:00","updated_at":"2025-10-21T00:29:10.567091-07:00","source_repo":"."} +{"id":"bd-481","content_hash":"f3e325696bf6d4dfe13d8712e82dfa38647528755ad5b1babce6327186fa6d27","title":"Agent 0 Issue 4","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.567443-07:00","updated_at":"2025-10-21T00:29:10.567443-07:00","source_repo":"."} +{"id":"bd-482","content_hash":"775397380361ee3aff119a70369a382559c4decfb459cdebf4a9784e4f39d8b4","title":"Agent 0 Issue 5","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.567759-07:00","updated_at":"2025-10-21T00:29:10.567759-07:00","source_repo":"."} +{"id":"bd-483","content_hash":"d2d4ecde174ebaded22f39fa4b02d34869fb07b1e781992b8dd1cb6b43172a40","title":"Agent 0 Issue 6","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.568112-07:00","updated_at":"2025-10-21T00:29:10.568112-07:00","source_repo":"."} +{"id":"bd-484","content_hash":"53f5e56da86e6b5bbdffea07206fdf19f490111e658fedb9caa1a8e4d09159e0","title":"Agent 0 Issue 7","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.568492-07:00","updated_at":"2025-10-21T00:29:10.568492-07:00","source_repo":"."} +{"id":"bd-485","content_hash":"ae5802bb3df819f073e28196c952f1208b46d63e1c056635b39b382036b9b3d8","title":"Agent 0 Issue 8","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.568824-07:00","updated_at":"2025-10-21T00:29:10.568824-07:00","source_repo":"."} +{"id":"bd-486","content_hash":"f52a669ac282dadade58f39d6ff7323195d415e6d57b82cdcb8366e5a70575d1","title":"Agent 0 Issue 9","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.569147-07:00","updated_at":"2025-10-21T00:29:10.569147-07:00","source_repo":"."} +{"id":"bd-487","content_hash":"9c3a0709d6a501bb77cce0ff19597fef7d2e7fb909e0ce466ed85b77a229c2ce","title":"Agent 0 Issue 10","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.56949-07:00","updated_at":"2025-10-21T00:29:10.56949-07:00","source_repo":"."} +{"id":"bd-488","content_hash":"63e7f07c7fddcc5b93e79e94e35c85edb289fb2771587d73f802b61d8602ec1a","title":"Agent 0 Issue 11","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.569885-07:00","updated_at":"2025-10-21T00:29:10.569885-07:00","source_repo":"."} +{"id":"bd-489","content_hash":"2dc0380022a492d0dcedb783fc3cb01868cea0ff1842b9958001cddff39a4499","title":"Agent 0 Issue 12","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.570245-07:00","updated_at":"2025-10-21T00:29:10.570245-07:00","source_repo":"."} +{"id":"bd-49","content_hash":"79fbe392718675dfffd34a4e82519eef854f285d088130cced9c26ed203aeeae","title":"Add design/notes/acceptance_criteria fields to update command","description":"Currently bd update only supports status, priority, title, assignee. Add support for --design, --notes, --acceptance-criteria flags. This makes it easier to add detailed designs to issues after creation.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.54229-07:00","closed_at":"2025-10-16T10:07:34.00541-07:00","source_repo":"."} +{"id":"bd-490","content_hash":"6e102c84a0c607eb66634a2ae900d9afa7adb8156457c97e51bc240c7078d83b","title":"Agent 0 Issue 13","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.570579-07:00","updated_at":"2025-10-21T00:29:10.570579-07:00","source_repo":"."} +{"id":"bd-491","content_hash":"a2b5647bde89ef934eaede758320e66e18040a2a1b599bcfc64621c634bfa0d5","title":"Agent 0 Issue 14","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.570951-07:00","updated_at":"2025-10-21T00:29:10.570951-07:00","source_repo":"."} +{"id":"bd-492","content_hash":"254865c97d22e44e5d244062c5738dba12bbfe95c07fe237a11bafd61219c9e9","title":"Agent 0 Issue 15","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.5713-07:00","updated_at":"2025-10-21T00:29:10.5713-07:00","source_repo":"."} +{"id":"bd-493","content_hash":"e485b7bd89aed2b7505cbac9eed71441c5087b63ac2a19bc4a131a903d2f799c","title":"Agent 0 Issue 16","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.571641-07:00","updated_at":"2025-10-21T00:29:10.571641-07:00","source_repo":"."} +{"id":"bd-494","content_hash":"056727c903723f5a1adfd45fbab96908e4c0bf05d8c064830a302bdf4d7d244c","title":"Agent 0 Issue 17","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.571977-07:00","updated_at":"2025-10-21T00:29:10.571977-07:00","source_repo":"."} +{"id":"bd-495","content_hash":"45cba800d1206ff6032b27c560f2c6ee4987a5d8e6e3213d5ca73760360146d4","title":"Agent 0 Issue 18","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.572324-07:00","updated_at":"2025-10-21T00:29:10.572324-07:00","source_repo":"."} +{"id":"bd-496","content_hash":"c547466a70a37746aaef14f9f8c3cff7c7a8c54598e7f98d2d263741c5195299","title":"Agent 0 Issue 19","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.572707-07:00","updated_at":"2025-10-21T00:29:10.572707-07:00","source_repo":"."} +{"id":"bd-497","content_hash":"17aa6b9302f39b1e09af30b99e984263daeaf28eeebacb2d516389fb9822b882","title":"Agent 0 Issue 20","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.57306-07:00","updated_at":"2025-10-21T00:29:10.57306-07:00","source_repo":"."} +{"id":"bd-498","content_hash":"19d53fbc575d0699cee55476e7c5233819dc4408bdcf9e3017629ffe8388705d","title":"Agent 0 Issue 21","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.573446-07:00","updated_at":"2025-10-21T00:29:10.573446-07:00","source_repo":"."} +{"id":"bd-499","content_hash":"4224cb1b56251697fd70f374712f08dac7ba0cfd7df6612a445eaf710ec03084","title":"Agent 0 Issue 22","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.573816-07:00","updated_at":"2025-10-21T00:29:10.573816-07:00","source_repo":"."} {"id":"bd-49kw","content_hash":"32637477ea60088882c4637c9153af420f5843cab488a50af255b1c33b5db69e","title":"Workaround for FastMCP outputSchema bug in Claude Code","description":"The beads MCP server (v0.23.1) successfully connects to Claude Code, but all tools fail to load with a schema validation error due to a bug in FastMCP 2.13.1.\n\nError: \"Invalid literal value, expected \\\"object\\\"\" in outputSchema.\n\nRoot Cause: FastMCP generates outputSchema with $ref at root level without \"type\": \"object\" for self-referential models (Issue).\n\nWorkaround: Use slash commands (/beads:ready) or wait for FastMCP fix.\n","status":"open","priority":1,"issue_type":"bug","created_at":"2025-11-20T18:55:39.041831-05:00","updated_at":"2025-11-20T18:55:39.041831-05:00","source_repo":"."} -{"id":"bd-4aeed709","content_hash":"3ab290915c117ec902bda1761e8c27850512f3fd4b494a93546c44b397d573a3","title":"bd resolve-conflicts - Git merge conflict resolver","description":"Automatically resolve JSONL merge conflicts.\n\nModes:\n- Mechanical: ID remapping (no AI)\n- AI-assisted: Smart merge/keep decisions\n- Interactive: Review each conflict\n\nHandles \u003c\u003c\u003c\u003c\u003c\u003c\u003c conflict markers in .beads/beads.jsonl\n\nFiles: cmd/bd/resolve_conflicts.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-20T12:40:11.707308-05:00","updated_at":"2025-11-20T12:40:11.707308-05:00","closed_at":"2025-10-28T15:47:33.037021-07:00","source_repo":"."} -{"id":"bd-4b6u","content_hash":"24a0be3bafda0a757ffe18057f52f049a7acdf771697f167dba6acefa2319460","title":"Update docs with multi-repo patterns","description":"Update AGENTS.md, README.md, QUICKSTART.md with multi-repo patterns. Document: config options, routing behavior, backward compatibility, troubleshooting, best practices.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T18:04:30.18358-08:00","updated_at":"2025-11-06T19:53:04.721589-08:00","closed_at":"2025-11-06T19:53:04.721589-08:00","source_repo":".","dependencies":[{"issue_id":"bd-4b6u","depends_on_id":"bd-8rd","type":"parent-child","created_at":"2025-11-05T18:04:39.297009-08:00","created_by":"daemon"}]} +{"id":"bd-4aeed709","content_hash":"3ab290915c117ec902bda1761e8c27850512f3fd4b494a93546c44b397d573a3","title":"bd resolve-conflicts - Git merge conflict resolver","description":"Automatically resolve JSONL merge conflicts.\n\nModes:\n- Mechanical: ID remapping (no AI)\n- AI-assisted: Smart merge/keep decisions\n- Interactive: Review each conflict\n\nHandles \u003c\u003c\u003c\u003c\u003c\u003c\u003c conflict markers in .beads/beads.jsonl\n\nFiles: cmd/bd/resolve_conflicts.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-20T12:05:34.820922-05:00","updated_at":"2025-11-20T12:05:34.820922-05:00","closed_at":"2025-10-28T15:47:33.037021-07:00","source_repo":"."} +{"id":"bd-4b6u","content_hash":"352f8de1093c5d3bc53a4069c5a9c14a788f6214207d2353500d7bd056179800","title":"Update docs with multi-repo patterns","description":"Update AGENTS.md, README.md, QUICKSTART.md with multi-repo patterns. Document: config options, routing behavior, backward compatibility, troubleshooting, best practices.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T18:04:30.18358-08:00","updated_at":"2025-11-06T19:53:04.721589-08:00","closed_at":"2025-11-06T19:53:04.721589-08:00","source_repo":".","dependencies":[{"issue_id":"bd-4b6u","depends_on_id":"bd-8rd","type":"parent-child","created_at":"2025-11-05T18:04:39.297009-08:00","created_by":"daemon"}]} {"id":"bd-4ba5908b","content_hash":"70b8d577e5f65acb215f1c4caf18fdafcbd124db14fbc0e70132eea2b1848a93","title":"Implement content-hash based collision resolution for deterministic convergence","description":"The current collision resolution uses creation timestamps to decide which issue to keep vs. remap. This is non-deterministic when two clones create issues at nearly the same time.\n\nRoot cause of bd-71107098:\n- Clone A creates test-1=\"Issue from clone A\" at T0\n- Clone B creates test-1=\"Issue from clone B\" at T0+30ms\n- Clone B syncs first, remaps Clone A's to test-2\n- Clone A syncs second, sees collision, remaps Clone B's to test-2\n- Result: titles are swapped between clones\n\nSolution:\n- Use content-based hashing (title + description + priority + type)\n- Deterministic winner: always keep issue with lower hash\n- Same collision on different clones produces same result (idempotent)\n\nImplementation:\n- Modify ScoreCollisions in internal/storage/sqlite/collision.go\n- Replace timestamp-based scoring with content hash comparison\n- Ensure hash function is stable across platforms","notes":"Rename detection successfully implemented and tested!\n\n**What was implemented:**\n1. Content-hash based rename detection in DetectCollisions\n2. When importing JSONL, if an issue has different ID but same content as DB issue, treat as rename\n3. Delete old ID and accept new ID from JSONL\n4. Added post-import re-export in sync command to flush rename changes\n5. Added post-import commit to capture rename changes\n\n**Test results:**\nTestTwoCloneCollision now shows full convergence:\n- Clone A: test-2=\"Issue from clone A\", test-1=\"Issue from clone B\"\n- Clone B: test-1=\"Issue from clone B\", test-2=\"Issue from clone A\"\n\nBoth clones have **identical content** (titles match IDs correctly). Only timestamps differ (expected).\n\n**What remains:**\n- Test still expects exact JSON match including timestamps\n- Could normalize timestamp comparison, but content convergence is the critical success metric\n- The two-clone collision workflow now works without data corruption!","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-28T17:04:11.530026-07:00","updated_at":"2025-10-30T17:12:58.225987-07:00","closed_at":"2025-10-28T17:18:27.777019-07:00","source_repo":".","dependencies":[{"issue_id":"bd-4ba5908b","depends_on_id":"bd-71107098","type":"blocks","created_at":"2025-10-28T17:04:18.149604-07:00","created_by":"daemon"}]} {"id":"bd-4c18","content_hash":"d3d162cefdf9f3637ffb0ead341f48ffefe50fdf5e6ff9edc3ffcd05cdd703b4","title":"bd delete fails to find closed issues","description":"## Steps to Reproduce\n1. Close some issues with `bd close`\n2. Try to delete them with `bd delete \u003cids\u003e --force`\n3. Get error \"issues not found\"\n\n## Expected Behavior\nShould delete the closed issues\n\n## Actual Behavior\n```\nError: issues not found: bd-74ee, bd-9b13, bd-72w, bd-149, bd-5iv, bd-78w\n```\n\nBut `bd list --status closed --json` shows they exist.\n\n## Root Cause\nLikely the delete command is only looking for open issues, or there's a race condition with auto-import.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-03T20:57:31.763179-08:00","updated_at":"2025-11-03T21:31:18.677629-08:00","closed_at":"2025-11-03T21:31:18.677629-08:00","source_repo":"."} -{"id":"bd-4cyb","content_hash":"4e82aa01f4d1556987fc3e1b45dd85f073cc29b54a38b98cc12f65a3645e118a","title":"Test graceful degradation when server unavailable","description":"Verify that agents continue working normally when Agent Mail server is stopped or unreachable.\n\nAcceptance Criteria:\n- Agent detects server unavailable on startup\n- Logs \"falling back to Beads-only mode\"\n- All bd commands work normally\n- Agent can claim issues (no reservations, like today)\n- Git sync operates as normal\n- No errors or crashes\n\nSuccess Metric: Zero functional difference when Agent Mail unavailable","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-07T22:42:00.094481-08:00","updated_at":"2025-11-08T00:20:29.841174-08:00","closed_at":"2025-11-08T00:20:29.841174-08:00","source_repo":".","dependencies":[{"issue_id":"bd-4cyb","depends_on_id":"bd-6hji","type":"blocks","created_at":"2025-11-07T23:03:53.054449-08:00","created_by":"daemon"}]} -{"id":"bd-4d7fca8a","content_hash":"5da2fc1fc0cbade7e4cfaf7fdb87b58487ce7661443e6ad4083f2f8de655e206","title":"Add tests for internal/utils package","description":"Currently 0.0% coverage. Need tests for utility functions including issue ID parsing and validation.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T14:06:24.066403-07:00","updated_at":"2025-11-08T22:42:08.860747-08:00","closed_at":"2025-11-08T17:57:28.956561-08:00","source_repo":".","dependencies":[{"issue_id":"bd-4d7fca8a","depends_on_id":"bd-cbed9619.5","type":"blocks","created_at":"2025-10-29T19:52:05.52888-07:00","created_by":"import-remap"},{"issue_id":"bd-4d7fca8a","depends_on_id":"bd-cbed9619.4","type":"blocks","created_at":"2025-10-29T19:52:05.529565-07:00","created_by":"import-remap"},{"issue_id":"bd-4d7fca8a","depends_on_id":"bd-0dcea000","type":"blocks","created_at":"2025-10-29T19:52:05.529982-07:00","created_by":"import-remap"}]} -{"id":"bd-4d80b7b1","content_hash":"dcd2f1ab989ee30b9608a905775030ce7366e47e5dfb24808f9ebdc058027c65","title":"Investigate and upgrade to modernc.org/sqlite 1.39.1+","description":"We had to pin modernc.org/sqlite to v1.38.2 due to a FOREIGN KEY constraint regression in v1.39.1 (SQLite 3.50.4).\n\n**Issue:** [deleted:bd-cb64c226.2], GH #144\n\n**Symptom:** CloseIssue fails with \"FOREIGN KEY constraint failed (787)\" when called via MCP/daemon, but works fine via CLI.\n\n**Root Cause:** Unknown - likely stricter FK enforcement in SQLite 3.50.4 or modernc.org wrapper changes.\n\n**Workaround:** Pinned to v1.38.2 (SQLite 3.49.x)\n\n**TODO:**\n1. Monitor modernc.org/sqlite releases for fixes\n2. Check SQLite 3.50.5+ changelogs for FK-related fixes\n3. Investigate why daemon mode fails but CLI succeeds (connection reuse? transaction isolation?)\n4. Consider filing upstream issue with reproducible test case\n5. Upgrade when safe","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-24T11:49:12.836292-07:00","updated_at":"2025-11-07T14:55:51.908404-08:00","closed_at":"2025-11-07T14:55:51.908404-08:00","source_repo":"."} +{"id":"bd-4cyb","content_hash":"1d02ccb8a552b2dec49bdfc3a7ed70b3307bcdebcaa8a563902a86a8bdcf7507","title":"Test graceful degradation when server unavailable","description":"Verify that agents continue working normally when Agent Mail server is stopped or unreachable.\n\nAcceptance Criteria:\n- Agent detects server unavailable on startup\n- Logs \"falling back to Beads-only mode\"\n- All bd commands work normally\n- Agent can claim issues (no reservations, like today)\n- Git sync operates as normal\n- No errors or crashes\n\nSuccess Metric: Zero functional difference when Agent Mail unavailable","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-07T22:42:00.094481-08:00","updated_at":"2025-11-08T01:51:40.349332-08:00","closed_at":"2025-11-08T00:20:29.841174-08:00","source_repo":".","dependencies":[{"issue_id":"bd-4cyb","depends_on_id":"bd-6hji","type":"blocks","created_at":"2025-11-07T23:03:53.054449-08:00","created_by":"daemon"}]} +{"id":"bd-4d7fca8a","content_hash":"5da2fc1fc0cbade7e4cfaf7fdb87b58487ce7661443e6ad4083f2f8de655e206","title":"Add tests for internal/utils package","description":"Currently 0.0% coverage. Need tests for utility functions including issue ID parsing and validation.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T14:06:24.066403-07:00","updated_at":"2025-11-08T17:57:28.956561-08:00","closed_at":"2025-11-08T17:57:28.956561-08:00","source_repo":".","dependencies":[{"issue_id":"bd-4d7fca8a","depends_on_id":"bd-cbed9619.5","type":"blocks","created_at":"2025-10-29T19:52:05.52888-07:00","created_by":"import-remap"},{"issue_id":"bd-4d7fca8a","depends_on_id":"bd-cbed9619.4","type":"blocks","created_at":"2025-10-29T19:52:05.529565-07:00","created_by":"import-remap"},{"issue_id":"bd-4d7fca8a","depends_on_id":"bd-0dcea000","type":"blocks","created_at":"2025-10-29T19:52:05.529982-07:00","created_by":"import-remap"}]} +{"id":"bd-4d80b7b1","content_hash":"7465ff154e916f0101dcd2aed683c2ffb72abdb3f1c8b60467a760441232d35b","title":"Investigate and upgrade to modernc.org/sqlite 1.39.1+","description":"We had to pin modernc.org/sqlite to v1.38.2 due to a FOREIGN KEY constraint regression in v1.39.1 (SQLite 3.50.4).\n\n**Issue:** [deleted:bd-cb64c226.2], GH #144\n\n**Symptom:** CloseIssue fails with \"FOREIGN KEY constraint failed (787)\" when called via MCP/daemon, but works fine via CLI.\n\n**Root Cause:** Unknown - likely stricter FK enforcement in SQLite 3.50.4 or modernc.org wrapper changes.\n\n**Workaround:** Pinned to v1.38.2 (SQLite 3.49.x)\n\n**TODO:**\n1. Monitor modernc.org/sqlite releases for fixes\n2. Check SQLite 3.50.5+ changelogs for FK-related fixes\n3. Investigate why daemon mode fails but CLI succeeds (connection reuse? transaction isolation?)\n4. Consider filing upstream issue with reproducible test case\n5. Upgrade when safe","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-24T11:49:12.836292-07:00","updated_at":"2025-11-07T14:55:51.908404-08:00","closed_at":"2025-11-07T14:55:51.908404-08:00","source_repo":"."} {"id":"bd-4e21b5ad","content_hash":"8029d0c5b14261648d3d17d8bc26413183962eab2875772cd2585db92c0104a6","title":"Add test case for symmetric collision (both clones create same ID simultaneously)","description":"TestTwoCloneCollision demonstrates the problem, but we need a simpler unit test for the collision resolver itself.\n\nTest should verify:\n- Two issues with same ID, different content\n- Content hash determines winner deterministically \n- Result is same regardless of which clone imports first\n- No title swapping occurs\n\nThis can be a simpler test than the full integration test.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T17:46:10.046999-07:00","updated_at":"2025-10-31T12:00:43.196705-07:00","closed_at":"2025-10-31T12:00:43.196705-07:00","source_repo":"."} {"id":"bd-4ec8","content_hash":"64d140d382b4efd1a0d67cda9a0af9a0240c013cafc4aa61f3644b74b7b1cd94","title":"Widespread double JSON encoding bug in daemon mode RPC calls","description":"Multiple CLI commands had the same double JSON encoding bug found in bd-1048. All commands that called ResolveID via RPC used string(resp.Data) instead of properly unmarshaling the JSON response. This caused IDs to retain JSON quotes (\"bd-1048\" instead of bd-1048), which then got double-encoded when passed to subsequent RPC calls.\n\nAffected commands:\n- bd show (3 instances)\n- bd dep add/remove/tree (5 instances)\n- bd label add/remove/list (3 instances)\n- bd reopen (1 instance)\n\nRoot cause: resp.Data is json.RawMessage (already JSON-encoded), so string() conversion preserves quotes.\n\nFix: Replace all string(resp.Data) with json.Unmarshal(resp.Data, \u0026id) for proper deserialization.\n\nAll commands now tested and working correctly with daemon mode.","status":"open","priority":0,"issue_type":"bug","created_at":"2025-11-02T22:33:01.632691-08:00","updated_at":"2025-11-02T22:33:01.632691-08:00","source_repo":"."} {"id":"bd-4f582ec8","content_hash":"dbf986afd3a1641a2b701645a85cc3576888c6ecd0ecf217b16f4535448facee","title":"Test auto-start in fred","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-30T17:46:16.668088-07:00","updated_at":"2025-10-31T12:00:43.185723-07:00","closed_at":"2025-10-31T12:00:43.185723-07:00","source_repo":"."} @@ -130,15 +2036,126 @@ {"id":"bd-4oqu","content_hash":"9d7a6f8fc07220e96e0d1b509579b9d7a292ffc52720b8bc78e5523743a18e38","title":"Test parent issue","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-05T13:00:39.737739-08:00","updated_at":"2025-11-05T13:01:11.635711-08:00","closed_at":"2025-11-05T13:01:11.635711-08:00","source_repo":"."} {"id":"bd-4oqu.1","content_hash":"fbeac3089798c66a2c85aa49d5abdc050a38c3c31209599ae1f2117c8ba9f180","title":"Test child direct","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T13:00:55.992712-08:00","updated_at":"2025-11-05T13:01:11.654435-08:00","closed_at":"2025-11-05T13:01:11.654435-08:00","source_repo":"."} {"id":"bd-4oqu.2","content_hash":"3dfea0ba8e0bfa2424411e65f9fc549af6edecb1490cee786a08d8ceff4c2ed6","title":"Test child daemon mode","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T13:01:06.642305-08:00","updated_at":"2025-11-05T13:01:11.669369-08:00","closed_at":"2025-11-05T13:01:11.669369-08:00","source_repo":"."} -{"id":"bd-4ry","content_hash":"809acaf6415a0403d18ce5a16215e54a96eb6fcfc0393a4536dad633f5f2dfd0","title":"Clarify JSONL size bounds with multi-repo","description":"The contributor-workflow-analysis.md states (line 226): 'Keep beads.jsonl small enough for agents to read (\u003c25k)'\n\nWith multi-repo hydration, it's unclear whether this bound applies to:\n- Each individual JSONL file (likely intention)\n- The total hydrated size across all repos (unclear)\n- Both (most conservative)\n\nClarification needed because:\n- VC monitors .beads/issues.jsonl size to stay under limit\n- With multi-repo, VC needs to know if each additional repo also has 25k limit\n- Agents reading hydrated data need to know total size bounds\n- Performance characteristics depend on total vs per-repo limits\n\nExample scenario:\n- Primary repo: 20k JSONL\n- Planning repo: 15k JSONL\n- Total hydrated: 35k\nIs this acceptable or does it violate the \u003c25k principle?","acceptance_criteria":"- Documentation explicitly states size bound applies per-repo or total\n- Rationale explained (why that bound matters)\n- Guidance for monitoring size with multi-repo\n- If total bound exists, formula provided (e.g., sum of all repos \u003c25k)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:50.042748-08:00","updated_at":"2025-11-05T14:18:00.550341-08:00","closed_at":"2025-11-05T14:18:00.550341-08:00","source_repo":"."} +{"id":"bd-4ry","content_hash":"fc0b5a708c2cbef610437e2bd8dab08712d2b151becbe2080db1bc52ff4c03fa","title":"Clarify JSONL size bounds with multi-repo","description":"The contributor-workflow-analysis.md states (line 226): 'Keep beads.jsonl small enough for agents to read (\u003c25k)'\n\nWith multi-repo hydration, it's unclear whether this bound applies to:\n- Each individual JSONL file (likely intention)\n- The total hydrated size across all repos (unclear)\n- Both (most conservative)\n\nClarification needed because:\n- VC monitors .beads/issues.jsonl size to stay under limit\n- With multi-repo, VC needs to know if each additional repo also has 25k limit\n- Agents reading hydrated data need to know total size bounds\n- Performance characteristics depend on total vs per-repo limits\n\nExample scenario:\n- Primary repo: 20k JSONL\n- Planning repo: 15k JSONL\n- Total hydrated: 35k\nIs this acceptable or does it violate the \u003c25k principle?","acceptance_criteria":"- Documentation explicitly states size bound applies per-repo or total\n- Rationale explained (why that bound matters)\n- Guidance for monitoring size with multi-repo\n- If total bound exists, formula provided (e.g., sum of all repos \u003c25k)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:50.042748-08:00","updated_at":"2025-11-05T14:18:00.550341-08:00","closed_at":"2025-11-05T14:18:00.550341-08:00","source_repo":"."} +{"id":"bd-5","content_hash":"7507404e3b47b84e4d0db41bbec0303f556a9970eaa239ba7329bf5a77e07a62","title":"Make maxDepth configurable in bd dep tree command","description":"Currently maxDepth is hardcoded to 50 in GetDependencyTree. Add --max-depth flag to bd dep tree command to allow users to control recursion depth. Default should remain 50 for safety, but users with very deep trees or wanting shallow views should be able to configure it.","status":"closed","priority":4,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.54246-07:00","closed_at":"2025-10-19T08:59:59.596748-07:00","source_repo":"."} +{"id":"bd-50","content_hash":"a3e346207188394d9cc90e35f8eb4738a4722cec2ea8d8fe275d76e1e06b940f","title":"Test plugin installation and functionality","description":"Verify the plugin works end-to-end.\n\nTest cases:\n- Fresh installation via /plugin command\n- All slash commands work correctly\n- MCP server tools are accessible\n- Configuration options work\n- Documentation is accurate\n- Works in both terminal and VS Code","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.542621-07:00","closed_at":"2025-10-14T12:59:38.637269-07:00","source_repo":"."} +{"id":"bd-500","content_hash":"1e6618e85627a649cb142ad5872a3ff2cb198da97942b75e6088a6b4c600aa46","title":"Agent 0 Issue 23","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.574168-07:00","updated_at":"2025-10-21T00:29:10.574168-07:00","source_repo":"."} +{"id":"bd-501","content_hash":"28d6d6c8e6f9a0f2b301902992629eb8e8188570956097b80f610d2c865db33f","title":"Agent 0 Issue 24","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.574501-07:00","updated_at":"2025-10-21T00:29:10.574501-07:00","source_repo":"."} +{"id":"bd-502","content_hash":"8fb30eb3cc86cdcd9d5205f2fc7d9415b02a53f22b8d5465f767180eee7bf9a2","title":"Agent 0 Issue 25","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.574838-07:00","updated_at":"2025-10-21T00:29:10.574838-07:00","source_repo":"."} {"id":"bd-502e","content_hash":"0f40053f59ff205d858a9ddf0be845df1d52471cc25a812df78cb3d4667efbdd","title":"Add comprehensive tests for sync branch daemon logic","description":"The daemon sync branch functionality (bd-6545) was implemented but needs proper end-to-end testing.\n\nCurrent implementation:\n- daemon_sync_branch.go has syncBranchCommitAndPush() and syncBranchPull()\n- daemon_sync.go has been updated to use these functions when sync.branch is configured\n- All daemon tests pass, but no specific tests for sync branch behavior\n\nTesting needed:\n- Test that daemon commits to sync branch when sync.branch is configured\n- Test that daemon commits to current branch when sync.branch is NOT configured (backward compatibility)\n- Test that daemon pulls from sync branch and syncs JSONL back to main repo\n- Test worktree creation and health checks during daemon operations\n- Test error handling (missing branch, worktree corruption, etc.)\n\nKey challenge: Tests need to run in the context of the git repo (getGitRoot() uses current working directory), so test setup needs to properly change directory or mock the git root detection.\n\nReference existing daemon tests in daemon_test.go and daemon_autoimport_test.go for patterns.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-02T15:59:13.341491-08:00","updated_at":"2025-11-02T16:39:53.278313-08:00","closed_at":"2025-11-02T16:39:53.278313-08:00","source_repo":".","dependencies":[{"issue_id":"bd-502e","depends_on_id":"bd-6545","type":"parent-child","created_at":"2025-11-02T15:59:13.342331-08:00","created_by":"daemon"}]} +{"id":"bd-503","content_hash":"0b8dff5f4789ef3b1da875bd31f080a47ee97cbc4eb0fc7281a4869c3d73a753","title":"Agent 0 Issue 26","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.575185-07:00","updated_at":"2025-10-21T00:29:10.575185-07:00","source_repo":"."} +{"id":"bd-504","content_hash":"c58d9fb4d5f307636f0a8f0f0a98393d56af1aa7c837a3363b6d3bd44a64a8ca","title":"Agent 0 Issue 27","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.575528-07:00","updated_at":"2025-10-21T00:29:10.575528-07:00","source_repo":"."} +{"id":"bd-505","content_hash":"1f9217a695faac352ef83c14c37e041205b07531107ae316723f1084051d74f4","title":"Agent 0 Issue 28","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.575891-07:00","updated_at":"2025-10-21T00:29:10.575891-07:00","source_repo":"."} +{"id":"bd-506","content_hash":"40c38886822ef04b99f125a25a79714db2212449dd5a3da7de3db963f1ac38cc","title":"Agent 0 Issue 29","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.576259-07:00","updated_at":"2025-10-21T00:29:10.576259-07:00","source_repo":"."} +{"id":"bd-507","content_hash":"32d18dfe45f098b9742653a6344f58316fb1237cf7976feb8934aae057112856","title":"Agent 0 Issue 30","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.57662-07:00","updated_at":"2025-10-21T00:29:10.57662-07:00","source_repo":"."} +{"id":"bd-508","content_hash":"88db95794bd78bf7152b01173752929837b6561eb1e47f0618b9a7ca0bb59baf","title":"Agent 0 Issue 31","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.576968-07:00","updated_at":"2025-10-21T00:29:10.576968-07:00","source_repo":"."} +{"id":"bd-509","content_hash":"baac1119e7e68a580f24347b52af173e8ab6d9aaaa9ece6f636a7823fa406345","title":"Agent 0 Issue 32","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.577334-07:00","updated_at":"2025-10-21T00:29:10.577334-07:00","source_repo":"."} +{"id":"bd-51","content_hash":"a1b458e2bfaa44155c0ee9c3dfb4d3f5bfa76442625aabbc6582593ba10c437b","title":"Add transaction support to storage layer for atomic multi-operation workflows","description":"Currently each storage method (CreateIssue, UpdateIssue, etc.) starts its own transaction. This makes it impossible to perform atomic multi-step operations like collision resolution. Add support for passing *sql.Tx through the storage interface, or create transaction-aware versions of methods. This would make remapCollisions and other batch operations truly atomic.","status":"closed","priority":4,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.542781-07:00","closed_at":"2025-10-14T02:51:52.199176-07:00","source_repo":"."} +{"id":"bd-510","content_hash":"6a100b7b841efc90bdf4f5916ef40fa5c62ccccba676a2d5bc5e2a405aeedc6a","title":"Agent 0 Issue 33","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.577684-07:00","updated_at":"2025-10-21T00:29:10.577684-07:00","source_repo":"."} +{"id":"bd-511","content_hash":"694a1ba35e34d9b904db5a3c173b46b23181dce9316c11f5ae98a72362b6af51","title":"Agent 0 Issue 34","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.578019-07:00","updated_at":"2025-10-21T00:29:10.578019-07:00","source_repo":"."} +{"id":"bd-512","content_hash":"394c6c43633f8c8429f1e0bbdbb683af13b5b8b61ddd76bb40ad7709464583ef","title":"Agent 0 Issue 35","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.578376-07:00","updated_at":"2025-10-21T00:29:10.578376-07:00","source_repo":"."} +{"id":"bd-513","content_hash":"4ed3deca0a903db2a6c8d42fea053f80e9487614d7b9f47261520fbfdf32d37e","title":"Agent 0 Issue 36","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.578744-07:00","updated_at":"2025-10-21T00:29:10.578744-07:00","source_repo":"."} +{"id":"bd-514","content_hash":"38d0f5b286574c3707221216c3c0eabdc7f8c5d5230c1b2349aac9631c3c754e","title":"Agent 0 Issue 37","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.579113-07:00","updated_at":"2025-10-21T00:29:10.579113-07:00","source_repo":"."} +{"id":"bd-515","content_hash":"9e31a79bf121b3ec67b21c5f36509b6b0f7b09911183b36eca7d69bb6799522d","title":"Agent 0 Issue 38","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.579456-07:00","updated_at":"2025-10-21T00:29:10.579456-07:00","source_repo":"."} +{"id":"bd-516","content_hash":"3c926194857f44b59ea0887e3c0a5c33500cb550b04956ae9a1382279fca00ca","title":"Agent 0 Issue 39","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.579806-07:00","updated_at":"2025-10-21T00:29:10.579806-07:00","source_repo":"."} +{"id":"bd-517","content_hash":"f140dc783b95efbae6bf2f5e8fceaac806c31259093731e111bcd14bbe6ab3ac","title":"Agent 0 Issue 40","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.580163-07:00","updated_at":"2025-10-21T00:29:10.580163-07:00","source_repo":"."} +{"id":"bd-518","content_hash":"2ff6ed15281dcb00ffcd400b0885a775105e95c0fdc759b774183d446d0d9438","title":"Agent 0 Issue 41","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.580503-07:00","updated_at":"2025-10-21T00:29:10.580503-07:00","source_repo":"."} +{"id":"bd-519","content_hash":"83dd45664c4a222fe6e0b4677eb046b6f259c65fdba1b408656135b9c44f009d","title":"Agent 0 Issue 42","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.580875-07:00","updated_at":"2025-10-21T00:29:10.580875-07:00","source_repo":"."} {"id":"bd-51jl","content_hash":"f926fc6615da9c2d0270449079fa7b4e937f8e817a73c7df179bb6d92ca464e6","title":"Feature P1","description":"","status":"closed","priority":1,"issue_type":"feature","assignee":"bob","created_at":"2025-11-07T19:04:24.852171-08:00","updated_at":"2025-11-07T22:07:17.343481-08:00","closed_at":"2025-11-07T21:55:09.426728-08:00","source_repo":"."} +{"id":"bd-52","content_hash":"f4503c390adb9bba5fbc1d19b72501abfcbf18ea429e84657d7b77ca01f079ac","title":"Write plugin documentation","description":"Create comprehensive documentation for the plugin.\n\nContents:\n- Installation instructions\n- Available commands\n- MCP tools reference\n- Configuration options\n- Examples and workflows\n- Troubleshooting guide","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.54294-07:00","closed_at":"2025-10-14T12:58:39.701738-07:00","source_repo":"."} +{"id":"bd-520","content_hash":"60735cc44cf2b6ff09a00ce99ff18b531141c4330b3c238c21a774e58fa444ae","title":"Agent 0 Issue 43","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.581216-07:00","updated_at":"2025-10-21T00:29:10.581216-07:00","source_repo":"."} +{"id":"bd-521","content_hash":"f3f78e7698111dc979318b407d82e13d9db4e010062aff68536a1d5ab384efc5","title":"Agent 0 Issue 44","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.581557-07:00","updated_at":"2025-10-21T00:29:10.581557-07:00","source_repo":"."} +{"id":"bd-522","content_hash":"b4dc8826130d4ac6ba7de987c78b264c13c434cb062f448a3ed395aecb4c5c18","title":"Agent 0 Issue 45","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.581895-07:00","updated_at":"2025-10-21T00:29:10.581895-07:00","source_repo":"."} +{"id":"bd-523","content_hash":"e953b4c778840eee2f35ecaaeac8ffe14fd86955770c6e2d790f1d0555de1bdd","title":"Agent 0 Issue 46","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.582231-07:00","updated_at":"2025-10-21T00:29:10.582231-07:00","source_repo":"."} +{"id":"bd-524","content_hash":"b8c93adb7afb923192c995221fd48c310f1fe896b8cc44824256c27eb0629c9b","title":"Agent 0 Issue 47","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.582577-07:00","updated_at":"2025-10-21T00:29:10.582577-07:00","source_repo":"."} +{"id":"bd-525","content_hash":"2155ec1c3a5758d47018b96ffc7e41dd474af9c34df8fae3f1b3e96e65a99018","title":"Agent 0 Issue 48","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.582924-07:00","updated_at":"2025-10-21T00:29:10.582924-07:00","source_repo":"."} +{"id":"bd-526","content_hash":"f5edfb56c94c4728a6d0ba1070a47f499f984e4ca2161cfa67dbafafac06de0a","title":"Agent 0 Issue 49","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.583283-07:00","updated_at":"2025-10-21T00:29:10.583283-07:00","source_repo":"."} +{"id":"bd-527","content_hash":"6a26559b303c34228486c4d762f06193e1d316fe60d24501b74ece5116aea9e7","title":"Agent 0 Issue 50","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.583653-07:00","updated_at":"2025-10-21T00:29:10.583653-07:00","source_repo":"."} +{"id":"bd-528","content_hash":"4e78f88dd525624b6b69b891bd3826e50b5b28a6b6c3593606b2f5f25cedaeaa","title":"Agent 0 Issue 51","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.584009-07:00","updated_at":"2025-10-21T00:29:10.584009-07:00","source_repo":"."} +{"id":"bd-529","content_hash":"0d6883e16e20aa28e68aa4f4d5ba1b9082515fcb43fb913984505c8de623c486","title":"Agent 0 Issue 52","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.584363-07:00","updated_at":"2025-10-21T00:29:10.584363-07:00","source_repo":"."} +{"id":"bd-53","content_hash":"f4632961c5855a0b0a5dd50e2ed87da7272f6feee0ef0771c29f8441fb12591a","title":"Design and implement slash commands","description":"Create useful slash commands for beads workflow.\n\nProposed commands:\n- /bd-ready - Show ready work\n- /bd-create - Create new issue interactively\n- /bd-show - Show issue details\n- /bd-update - Update issue status\n- /bd-close - Close issue\n- /bd-workflow - Show full agent workflow guide\n\nEach command should provide a good UX and leverage the MCP server tools.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.543091-07:00","closed_at":"2025-10-14T12:57:06.733755-07:00","source_repo":"."} +{"id":"bd-530","content_hash":"243e3a424ffdafd01d1ddc26b55226fae666b93fb462a2fddb1effeffada0a1c","title":"Agent 0 Issue 53","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.584747-07:00","updated_at":"2025-10-21T00:29:10.584747-07:00","source_repo":"."} +{"id":"bd-531","content_hash":"42791526e86f6059d437e62fd22556b8ac23c7210b545aacbfba5deaf96d825e","title":"Agent 0 Issue 54","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.585109-07:00","updated_at":"2025-10-21T00:29:10.585109-07:00","source_repo":"."} {"id":"bd-5314bddf","content_hash":"1c57b7a18279f8d87c68af9e1b99234ba4017a03c3f3b1cdb65ce4a8b93e12aa","title":"bd detect-pollution - Test pollution detector","description":"Detect test issues that leaked into production DB.\n\nPattern matching for:\n- Titles starting with 'test', 'benchmark', 'sample'\n- Sequential numbering (test-1, test-2)\n- Generic descriptions\n- Created in rapid succession\n\nOptional AI scoring for confidence.\n\nFiles: cmd/bd/detect_pollution.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-28T14:48:17.466906-07:00","updated_at":"2025-11-06T19:36:13.970321-08:00","closed_at":"2025-11-06T19:27:11.75884-08:00","source_repo":"."} -{"id":"bd-537e","content_hash":"3d8bd59053d657a3710708f5e70feb9baa9545a87383286ff6fad29437856c44","title":"Add external_ref change tracking and auditing","description":"Currently we don't track when external_ref is added, removed, or changed. This would be useful for debugging and auditing.\n\nProposed features:\n- Log event when external_ref changes\n- Track in events table with old/new values\n- Add query to find issues where external_ref changed\n- Add metrics: issues with external_ref vs without\n\nUse cases:\n- Debugging import issues\n- Understanding which issues are externally managed\n- Auditing external system linkage\n\nRelated: bd-1022","status":"closed","priority":4,"issue_type":"feature","created_at":"2025-11-02T15:32:31.276883-08:00","updated_at":"2025-11-08T02:24:24.68524-08:00","closed_at":"2025-11-08T02:20:01.022406-08:00","source_repo":"."} +{"id":"bd-532","content_hash":"a4d5e2a240679658c897455c407d97c64abc61c24a0820dd289d2f9a5cf826c9","title":"Agent 0 Issue 55","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.585477-07:00","updated_at":"2025-10-21T00:29:10.585477-07:00","source_repo":"."} +{"id":"bd-533","content_hash":"e3817077488f074ddc72f76d72a3a0a61601510827cc8306917b492c5ad8d9f7","title":"Agent 0 Issue 56","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.585843-07:00","updated_at":"2025-10-21T00:29:10.585843-07:00","source_repo":"."} +{"id":"bd-534","content_hash":"bb70aa705e113edad314c47828cdd79039d5c167392dba785445947ad43ada60","title":"Agent 0 Issue 57","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.586228-07:00","updated_at":"2025-10-21T00:29:10.586228-07:00","source_repo":"."} +{"id":"bd-535","content_hash":"4a7b4be6995f5aa206fa8eed05d3192118e22623750d473f66e97583874456ff","title":"Agent 0 Issue 58","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.586568-07:00","updated_at":"2025-10-21T00:29:10.586568-07:00","source_repo":"."} +{"id":"bd-536","content_hash":"bd5aaf1efa924ad9b941cbe42b2e8f0bf151cdef0620e9218d038edd225d7dca","title":"Agent 0 Issue 59","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.58689-07:00","updated_at":"2025-10-21T00:29:10.58689-07:00","source_repo":"."} +{"id":"bd-537","content_hash":"a6002bc98414a815db8a8bc8ffd7353bd3ed8d246de547b0d57be4da479a84f2","title":"Agent 0 Issue 60","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.587235-07:00","updated_at":"2025-10-21T00:29:10.587235-07:00","source_repo":"."} +{"id":"bd-537e","content_hash":"3d8bd59053d657a3710708f5e70feb9baa9545a87383286ff6fad29437856c44","title":"Add external_ref change tracking and auditing","description":"Currently we don't track when external_ref is added, removed, or changed. This would be useful for debugging and auditing.\n\nProposed features:\n- Log event when external_ref changes\n- Track in events table with old/new values\n- Add query to find issues where external_ref changed\n- Add metrics: issues with external_ref vs without\n\nUse cases:\n- Debugging import issues\n- Understanding which issues are externally managed\n- Auditing external system linkage\n\nRelated: bd-1022","status":"closed","priority":4,"issue_type":"feature","created_at":"2025-11-02T15:32:31.276883-08:00","updated_at":"2025-11-08T03:54:04.85448-08:00","closed_at":"2025-11-08T02:20:01.022406-08:00","source_repo":"."} +{"id":"bd-538","content_hash":"579d53cf1fa53d654b3386550def27f6ac7a58560cb44f99aa0d80609740a63f","title":"Agent 0 Issue 61","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.587564-07:00","updated_at":"2025-10-21T00:29:10.587564-07:00","source_repo":"."} +{"id":"bd-539","content_hash":"f504352d776b3b9589ec72efcfce9870d743903a9d5c038abf03343ba75f6902","title":"Agent 0 Issue 62","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.587909-07:00","updated_at":"2025-10-21T00:29:10.587909-07:00","source_repo":"."} +{"id":"bd-54","content_hash":"4d777a0ded764c8dddbbaba8d010516c056e1924ce4cacd0f721e41b00aa2bd4","title":"Create plugin metadata files","description":"Create .claude-plugin/plugin.json and marketplace.json.\n\nRequirements:\n- Name, description, version, author\n- MCP server configuration bundling\n- License and repository info\n- Installation instructions","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.543247-07:00","closed_at":"2025-10-14T12:55:59.029894-07:00","source_repo":"."} +{"id":"bd-540","content_hash":"7ffd7c896976e913a707031a151d1f2d422fcff0a856b2c1c35e113280d31d17","title":"Agent 0 Issue 63","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.588246-07:00","updated_at":"2025-10-21T00:29:10.588246-07:00","source_repo":"."} +{"id":"bd-541","content_hash":"8418605c3103612baa5adbb6f81d9cb32b915652c627d44fe3f0713ad8030703","title":"Agent 0 Issue 64","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.588569-07:00","updated_at":"2025-10-21T00:29:10.588569-07:00","source_repo":"."} +{"id":"bd-542","content_hash":"f610a7890f881bd67926d8b72e411ae7e796a97271c38a5552947b3f2587d9cf","title":"Agent 0 Issue 65","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.589129-07:00","updated_at":"2025-10-21T00:29:10.589129-07:00","source_repo":"."} +{"id":"bd-543","content_hash":"3f1587b1ce9e6bb1d88410803eea88b452ffb0648a6abb9ccb91ecc432bc101a","title":"Agent 0 Issue 66","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.589478-07:00","updated_at":"2025-10-21T00:29:10.589478-07:00","source_repo":"."} +{"id":"bd-544","content_hash":"d1ea8164bffa002a0a6dd919159d0451d7d97b753931dbc2b0639cfa132a8a59","title":"Agent 0 Issue 67","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.589822-07:00","updated_at":"2025-10-21T00:29:10.589822-07:00","source_repo":"."} +{"id":"bd-545","content_hash":"608ce5d7c40de3fa168d01be7c2991a41e7f1e538baa17cce6db7cbf05a71501","title":"Agent 0 Issue 68","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.590189-07:00","updated_at":"2025-10-21T00:29:10.590189-07:00","source_repo":"."} +{"id":"bd-546","content_hash":"1f7245342b31a8284bb3a4ca5b6cb08120bc61a25dcb317f599060cd782d7683","title":"Agent 0 Issue 69","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.590538-07:00","updated_at":"2025-10-21T00:29:10.590538-07:00","source_repo":"."} +{"id":"bd-547","content_hash":"3df7f17a66acd972d708b3380e07b11f3cd6051eb508ee2b928d1d8f10eda339","title":"Agent 0 Issue 70","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.590885-07:00","updated_at":"2025-10-21T00:29:10.590885-07:00","source_repo":"."} +{"id":"bd-548","content_hash":"51c8b2b689d9a1b54423a5600070f0018dce0dbacc287963c503205ecd859bdb","title":"Agent 0 Issue 71","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.591226-07:00","updated_at":"2025-10-21T00:29:10.591226-07:00","source_repo":"."} +{"id":"bd-549","content_hash":"73a981b0786380c80851d4d6489d7aa5bb1eee8838b0f3eaeae2c8715c0fd7d9","title":"Agent 0 Issue 72","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.591569-07:00","updated_at":"2025-10-21T00:29:10.591569-07:00","source_repo":"."} +{"id":"bd-55","content_hash":"ead07be74956b317e8f415e5ac3808e1e369b209734e62bbad9f8e22ee2286d1","title":"Research Claude Code plugin structure and requirements","description":"Study the plugin format, required files, and best practices.\n\nTasks:\n- Review official plugin documentation\n- Examine example plugins if available\n- Document plugin.json schema\n- Understand marketplace.json requirements\n- Identify slash command format","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.543411-07:00","closed_at":"2025-10-14T12:55:23.358165-07:00","source_repo":"."} +{"id":"bd-550","content_hash":"f6bc227e34f8bf65155eee132d46925f3c04d440b2190c433931d58ae486ca9a","title":"Agent 0 Issue 73","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.591934-07:00","updated_at":"2025-10-21T00:29:10.591934-07:00","source_repo":"."} +{"id":"bd-551","content_hash":"47d45294ba349b53a3ea6f64ac009cc9fb9071d9daf5ebb4191fc66429d8ff8e","title":"Agent 0 Issue 74","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.592306-07:00","updated_at":"2025-10-21T00:29:10.592306-07:00","source_repo":"."} +{"id":"bd-552","content_hash":"f827d47972572b5eb4ac4acf70ee0aca51c703d332d3d284438d907f634d8808","title":"Agent 0 Issue 75","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.592662-07:00","updated_at":"2025-10-21T00:29:10.592662-07:00","source_repo":"."} +{"id":"bd-553","content_hash":"f01002d46f5fa0d1d6035611b562af59eaff51a58c7eedaaaf97dd917552a847","title":"Agent 0 Issue 76","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.593013-07:00","updated_at":"2025-10-21T00:29:10.593013-07:00","source_repo":"."} +{"id":"bd-554","content_hash":"66cc43478de40f1bd9a3f1e9ab58b4f442f5818f1c9494cacd61a173749303df","title":"Agent 0 Issue 77","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.593387-07:00","updated_at":"2025-10-21T00:29:10.593387-07:00","source_repo":"."} +{"id":"bd-555","content_hash":"a53456410afa494d725a2566359074b29d722a563975bb4d66bfca698d4b9321","title":"Agent 0 Issue 78","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.593751-07:00","updated_at":"2025-10-21T00:29:10.593751-07:00","source_repo":"."} +{"id":"bd-556","content_hash":"6852f6c08452fe3375039d21819510fefe08d521c925e719c4aca1ac9e920b0d","title":"Agent 0 Issue 79","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.59413-07:00","updated_at":"2025-10-21T00:29:10.59413-07:00","source_repo":"."} +{"id":"bd-557","content_hash":"67df36b98ed2d55322f44d9420c9a348bc17bc818745253caf1c92a894d35fc0","title":"Agent 0 Issue 80","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.594492-07:00","updated_at":"2025-10-21T00:29:10.594492-07:00","source_repo":"."} +{"id":"bd-558","content_hash":"512d1af2cafe9f21068ff266d2c42d520d5e803f7c34fe33a2413ea2cf2f6d94","title":"Agent 0 Issue 81","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.594863-07:00","updated_at":"2025-10-21T00:29:10.594863-07:00","source_repo":"."} +{"id":"bd-559","content_hash":"11509232347f1e815c529ea318e5cf7bd6f70cfc406eafba09d4c40d32ccec05","title":"Agent 0 Issue 82","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.595231-07:00","updated_at":"2025-10-21T00:29:10.595231-07:00","source_repo":"."} {"id":"bd-5599","content_hash":"9fbe6f08f83522e1136f3e6a368b1cd22c527bf5e83cccc70c1f6aaa21712ae0","title":"Fix TestListCommand duplicate dependency constraint violation","description":"","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-10-31T21:27:05.557548-07:00","updated_at":"2025-10-31T21:27:11.429018-07:00","closed_at":"2025-10-31T21:27:11.429018-07:00","source_repo":"."} +{"id":"bd-56","content_hash":"076abff90a004a9d21bb236288aba41eeef29986510d85483f0f4e88b3251aa9","title":"Create Claude Code plugin for beads","description":"Package beads as a Claude Code plugin for easy installation via /plugin command.\n\nContext: GitHub issue #28 - https://github.com/steveyegge/beads/issues/28\n\nCurrent state:\n- MCP server exists in integrations/beads-mcp/\n- No plugin packaging yet\n\nDeliverables:\n1. .claude-plugin/plugin.json with metadata\n2. .claude-plugin/marketplace.json for distribution\n3. Custom slash commands (/bd-ready, /bd-create, /bd-show, etc.)\n4. Bundle MCP server configuration\n5. Optional: Pre-configured hooks for auto-sync\n6. Documentation for installation and usage\n\nBenefits:\n- Makes beads instantly discoverable in Claude Code ecosystem\n- Single-command installation vs. manual setup\n- Bundled cohesive experience\n- Lowers adoption barrier significantly\n\nReferences:\n- https://www.anthropic.com/news/claude-code-plugins\n- https://docs.claude.com/en/docs/claude-code/plugins","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.543577-07:00","closed_at":"2025-10-14T12:59:39.974612-07:00","source_repo":"."} +{"id":"bd-560","content_hash":"e6b9aac8f5e3c3891061a24d4e52216b870dcc8c09985a86b732a68580d5f78c","title":"Agent 0 Issue 83","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.595569-07:00","updated_at":"2025-10-21T00:29:10.595569-07:00","source_repo":"."} +{"id":"bd-561","content_hash":"401c13efbd1edc7d1a7da87e9ad65deff9cb2542466be509c4fa70c91ab827a8","title":"Agent 0 Issue 84","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.595929-07:00","updated_at":"2025-10-21T00:29:10.595929-07:00","source_repo":"."} +{"id":"bd-562","content_hash":"bc7722eee8b73d1178457d063575585d513f9ef4cd3d6b60c8cc12710ae5636d","title":"Agent 0 Issue 85","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.5963-07:00","updated_at":"2025-10-21T00:29:10.5963-07:00","source_repo":"."} +{"id":"bd-563","content_hash":"0d49be2074ab7e64de36c506fd981688cbe6cdbe2f115df3a660b73b3aaef152","title":"Agent 0 Issue 86","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.59667-07:00","updated_at":"2025-10-21T00:29:10.59667-07:00","source_repo":"."} +{"id":"bd-564","content_hash":"7292c386324bad518a7f31c10b6efe8fcb1515389ed374c64c7bd97561041f77","title":"Agent 0 Issue 87","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.597008-07:00","updated_at":"2025-10-21T00:29:10.597008-07:00","source_repo":"."} +{"id":"bd-565","content_hash":"97e6fa9c050320be697253d0b6fb9ffc5970f4ba37ab37a6c34d1608dd5a0913","title":"Agent 0 Issue 88","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.597361-07:00","updated_at":"2025-10-21T00:29:10.597361-07:00","source_repo":"."} +{"id":"bd-566","content_hash":"2c9f2651b738128c60d544c80e77b19ce532b33b6cf081db33efe12cb78237bd","title":"Agent 0 Issue 89","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.597993-07:00","updated_at":"2025-10-21T00:29:10.597993-07:00","source_repo":"."} +{"id":"bd-567","content_hash":"a1baaef2df1df0fd21d7132cea79bc00b09f978dbc33ab6caca6240b92bb39ca","title":"Agent 0 Issue 90","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.598378-07:00","updated_at":"2025-10-21T00:29:10.598378-07:00","source_repo":"."} +{"id":"bd-568","content_hash":"8b1d8452e1487e4feb8dde5c1f646c669f9598855f81ba53c620b6af62614752","title":"Agent 0 Issue 91","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.598732-07:00","updated_at":"2025-10-21T00:29:10.598732-07:00","source_repo":"."} +{"id":"bd-569","content_hash":"80e9bb9c2902482bcdc09ac4afd015edda09fd8f00c470ed24f3772ce2775e85","title":"Agent 0 Issue 92","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.599085-07:00","updated_at":"2025-10-21T00:29:10.599085-07:00","source_repo":"."} +{"id":"bd-57","content_hash":"96a199d0e7a18cb4052ceb67b86599438f952fd65639c265b47f62dc01f9a06e","title":"Another explicit ID","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.543735-07:00","closed_at":"2025-10-16T10:07:34.130516-07:00","source_repo":"."} +{"id":"bd-570","content_hash":"754c2fd296040a11cdc70d45f5a451a5076dfb3aadb6df7c34abd595f45030fd","title":"Agent 0 Issue 93","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.599473-07:00","updated_at":"2025-10-21T00:29:10.599473-07:00","source_repo":"."} +{"id":"bd-571","content_hash":"84a4d296e0e7edf9846b988403858698cd68961b853e364aa8149f0ba210b93a","title":"Agent 0 Issue 94","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.599817-07:00","updated_at":"2025-10-21T00:29:10.599817-07:00","source_repo":"."} +{"id":"bd-572","content_hash":"74cb7f88da8d29f2d44e980bf0a580543bde5654cd29714e7250a6f4ed47a6d0","title":"Agent 0 Issue 95","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.600189-07:00","updated_at":"2025-10-21T00:29:10.600189-07:00","source_repo":"."} +{"id":"bd-573","content_hash":"dc762e25766f7b2b1316008158a29da4fbc9e33826c99893430192da26de8c18","title":"Agent 0 Issue 96","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.600549-07:00","updated_at":"2025-10-21T00:29:10.600549-07:00","source_repo":"."} +{"id":"bd-574","content_hash":"ccaa77e89b892d0ec5f6deeb16fbe643543f400f02f2c3810ce99c5a7f0051d3","title":"Agent 0 Issue 97","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.600923-07:00","updated_at":"2025-10-21T00:29:10.600923-07:00","source_repo":"."} +{"id":"bd-575","content_hash":"488e31c85263166bb749a4aa10ae1d428b27c9538514bb2ef992cc8fe7c31e9e","title":"Agent 0 Issue 98","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.601284-07:00","updated_at":"2025-10-21T00:29:10.601284-07:00","source_repo":"."} +{"id":"bd-576","content_hash":"a615ae901c6ca05a89d5e41b4774090a4e626330c2eedd8d66c81fcd1d40923a","title":"Agent 0 Issue 99","description":"Created by agent 0","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.601645-07:00","updated_at":"2025-10-21T00:29:10.601645-07:00","source_repo":"."} +{"id":"bd-577","content_hash":"6612ee373abc63936a33f6b415832d1f38b8217696754fe127fdd48fce5b0c4c","title":"Agent 5 Issue 78","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.56603-07:00","updated_at":"2025-10-21T00:29:10.56603-07:00","source_repo":"."} +{"id":"bd-578","content_hash":"abe726be9caf40e5e2055ed727da4330a74cc588f94e1dd97a95eab2760ff50b","title":"Agent 5 Issue 79","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.603121-07:00","updated_at":"2025-10-21T00:29:10.603121-07:00","source_repo":"."} +{"id":"bd-579","content_hash":"4fad7ef5884617cb56371257c8acd3bffcd9a6686f416d9a767daf7f8d5976d3","title":"Agent 5 Issue 80","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.603556-07:00","updated_at":"2025-10-21T00:29:10.603556-07:00","source_repo":"."} +{"id":"bd-58","content_hash":"770d839589ad7cef0775a4e1444e4203529d676f4a3f981cbe4a59bf13024f7e","title":"Reach 1.0 release milestone","description":"Stabilize API, finalize documentation, comprehensive testing","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.543886-07:00","closed_at":"2025-10-18T16:47:05.346306-07:00","source_repo":"."} +{"id":"bd-580","content_hash":"efdcb3013f2e1a368e7aa804efa1aa854dbb76bdf5f55acce2dd590ed857f436","title":"Agent 5 Issue 81","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.603986-07:00","updated_at":"2025-10-21T00:29:10.603986-07:00","source_repo":"."} +{"id":"bd-581","content_hash":"4ee3a700c30689bdcd6cdb4a80c3d5b81479e1f728238ad8b76d4c00f5a16079","title":"Agent 5 Issue 82","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.604367-07:00","updated_at":"2025-10-21T00:29:10.604367-07:00","source_repo":"."} {"id":"bd-581b80b3","content_hash":"04c4d952852ae2673e551d9776698c52b0189754ac5f9ca295bed464a5b86a43","title":"bd find-duplicates - AI-powered duplicate detection","description":"Find semantically duplicate issues.\n\nApproaches:\n1. Mechanical: Exact title/description matching\n2. Embeddings: Cosine similarity (cheap, scalable)\n3. AI: LLM-based semantic comparison (expensive, accurate)\n\nUses embeddings by default for \u003e100 issues.\n\nFiles: cmd/bd/find_duplicates.go (new)","status":"open","priority":1,"issue_type":"task","created_at":"2025-10-29T20:49:49.126801-07:00","updated_at":"2025-10-30T17:12:58.218673-07:00","source_repo":"."} +{"id":"bd-582","content_hash":"59757e3821c62e5355d9c4ea03ccd5d2f47c05f995cc87a27f941a6e36a5785f","title":"Agent 5 Issue 83","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.604729-07:00","updated_at":"2025-10-21T00:29:10.604729-07:00","source_repo":"."} +{"id":"bd-583","content_hash":"cf492928786251ea73bd470a5a4bf86d4455c798d1c2efed17d9e714ce1da6e3","title":"Agent 5 Issue 84","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.605063-07:00","updated_at":"2025-10-21T00:29:10.605063-07:00","source_repo":"."} +{"id":"bd-584","content_hash":"19093ed8c3687da58334ce369a1144052da6b7f129109b48b55bc9f2c072c729","title":"Agent 5 Issue 85","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.605403-07:00","updated_at":"2025-10-21T00:29:10.605403-07:00","source_repo":"."} +{"id":"bd-585","content_hash":"93aaa8597bff2cf7c90ee6400312b6d867328bcf34547960cd9cb21e30273cca","title":"Agent 5 Issue 86","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.605753-07:00","updated_at":"2025-10-21T00:29:10.605753-07:00","source_repo":"."} +{"id":"bd-586","content_hash":"45c47e9b046cfb311236c6d6859fe0c147b3f36db82c616af26f6f94962de12c","title":"Agent 5 Issue 87","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.606098-07:00","updated_at":"2025-10-21T00:29:10.606098-07:00","source_repo":"."} +{"id":"bd-587","content_hash":"22eeb156c66131a9f1b90624ec36803fa84d1a9fc167072a19b063c62dc30a05","title":"Agent 5 Issue 88","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.606497-07:00","updated_at":"2025-10-21T00:29:10.606497-07:00","source_repo":"."} +{"id":"bd-588","content_hash":"9b87ffe018062bb491fdfaf35900d3e621b6c59399cbe86603c65f9f9ba797a0","title":"Agent 5 Issue 89","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.60696-07:00","updated_at":"2025-10-21T00:29:10.60696-07:00","source_repo":"."} +{"id":"bd-589","content_hash":"8ae6a2fe876e37593cd1d8fb60d631ff35cfe02f55cbf152287e021b0ebbe5dd","title":"Agent 5 Issue 90","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.607378-07:00","updated_at":"2025-10-21T00:29:10.607378-07:00","source_repo":"."} {"id":"bd-589c7c1e","content_hash":"efbc1fe1379d414d2af33f5aff9787e4f8a3234922199bdc9abce25dba99aef0","title":"Fix revive style issues (78 issues)","description":"Style violations: unused parameters (many cmd/args in cobra commands), missing exported comments, stuttering names (SQLiteStorage), indent-error-flow issues.","design":"Rename unused params to _, add godoc comments to exported types, fix stuttering names, simplify control flow.","notes":"Fixed 19 revive issues:\n- 14 unused-parameter (renamed to _)\n- 2 redefines-builtin-id (max→maxCount, min→minInt)\n- 3 indent-error-flow (gofmt fixed 2, skipped 1 complex nested one)\n\nRemaining issues are acceptable: 11 unused-params in deeper code, 2 empty-blocks with comments, 1 complex indent case, 1 superfluous-else in test.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-27T23:20:10.391821-07:00","updated_at":"2025-10-30T17:12:58.215077-07:00","closed_at":"2025-10-27T23:02:41.30653-07:00","source_repo":"."} {"id":"bd-58c0","content_hash":"112d4123250ac875619a1f239cbf73c859b58d87f2b45a2d649da320dd72ecc5","title":"Fix transaction conflict in TryResurrectParent","description":"Integration test TestImportWithDeletedParent fails with 'database is locked' error when resurrection happens inside CreateIssue.\n\nRoot cause: TryResurrectParent calls conn.Get() and insertIssue() which conflicts with existing transaction in CreateIssue.\n\nError: failed to create tombstone for parent bd-parent: failed to insert issue: sqlite3: database is locked\n\nSolution: Refactor resurrection to accept optional transaction parameter, use existing transaction when available instead of creating new connection.\n\nImpact: Blocks resurrection from working in CreateIssue flow, only works in EnsureIDs (which may not have active transaction).","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-04T16:32:20.981027-08:00","updated_at":"2025-11-04T17:00:44.258881-08:00","closed_at":"2025-11-04T17:00:44.258881-08:00","source_repo":".","dependencies":[{"issue_id":"bd-58c0","depends_on_id":"bd-d19a","type":"discovered-from","created_at":"2025-11-04T16:32:20.981969-08:00","created_by":"daemon"}]} +{"id":"bd-59","content_hash":"cafba7ce4532321413086be2c9872fbad5fa3b91d54cb60aead1b1fc30beabda","title":"Implement collision detection in import","description":"Create collision.go with detectCollisions() function. Compare incoming JSONL issues against DB state. Distinguish between: (1) exact match (idempotent), (2) ID match but different content (collision), (3) new issue. Return list of colliding issues.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.544041-07:00","closed_at":"2025-10-16T10:07:22.461107-07:00","source_repo":"."} +{"id":"bd-590","content_hash":"47c35fd2a91bda6aa97ed92c3c5cb8d28175efe00b17b13ffd5c807bc257740a","title":"Agent 5 Issue 91","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.607783-07:00","updated_at":"2025-10-21T00:29:10.607783-07:00","source_repo":"."} +{"id":"bd-591","content_hash":"d22b2a0a691ef1f35a9bfa44a9308f7a1ab0d764847d2c46918fd10d5c885a6b","title":"Agent 5 Issue 92","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.608154-07:00","updated_at":"2025-10-21T00:29:10.608154-07:00","source_repo":"."} +{"id":"bd-592","content_hash":"6d90c0cea0559e76485289b7dab9f9c1a52fec65d51a7bd1e390ba8ec8e3d9d5","title":"Agent 5 Issue 93","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.608514-07:00","updated_at":"2025-10-21T00:29:10.608514-07:00","source_repo":"."} +{"id":"bd-593","content_hash":"cdfc00d51b2cc0eb0290b058c95846bf0014a11a1475dd5294c4cb4520fa8f57","title":"Agent 5 Issue 94","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.608909-07:00","updated_at":"2025-10-21T00:29:10.608909-07:00","source_repo":"."} +{"id":"bd-594","content_hash":"159fb47e8ebcd228758bd05f882971fddf713d586e76c515764f9c95330df948","title":"Agent 5 Issue 95","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.609342-07:00","updated_at":"2025-10-21T00:29:10.609342-07:00","source_repo":"."} +{"id":"bd-595","content_hash":"38990f39d2629d08ed0c4d16ea98f3ce87bb2a2706d6dc5277e25ad938282fed","title":"Agent 5 Issue 96","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.609751-07:00","updated_at":"2025-10-21T00:29:10.609751-07:00","source_repo":"."} +{"id":"bd-596","content_hash":"ea1749890e5b847bd568977bdabdbc5b7fc36bdb85b4278444e44e77dae71931","title":"Agent 5 Issue 97","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.610328-07:00","updated_at":"2025-10-21T00:29:10.610328-07:00","source_repo":"."} +{"id":"bd-597","content_hash":"7f235573d61fd7807daca2fd5bc47e192c244af43712401e2c0fb1d1071922b5","title":"Agent 5 Issue 98","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.610834-07:00","updated_at":"2025-10-21T00:29:10.610834-07:00","source_repo":"."} +{"id":"bd-598","content_hash":"9cfbb987f31d2867a2ea1dab79c0c68ec0d6f8631de2bbc0a43c9d629a07c95b","title":"Agent 5 Issue 99","description":"Created by agent 5","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.611398-07:00","updated_at":"2025-10-21T00:29:10.611398-07:00","source_repo":"."} +{"id":"bd-599","content_hash":"51101fd2071b79b2d358e33799254323019840dd81584bf144395eecf63758b8","title":"Agent 2 Issue 0","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.465612-07:00","updated_at":"2025-10-21T00:29:10.465612-07:00","source_repo":"."} {"id":"bd-5a90","content_hash":"819c14b3bb55fcd113b4e848e4bfcb0c3475756658575dba8d34922ca8e14077","title":"Test parent issue","description":"","status":"open","priority":3,"issue_type":"task","created_at":"2025-11-02T11:50:35.85367-08:00","updated_at":"2025-11-02T11:50:35.85367-08:00","source_repo":"."} {"id":"bd-5aad5a9c","content_hash":"b51a8fcbb4e418f1c2e0eafebaa22fd90476d51f184f0b0727e624fea57abd88","title":"Add TestNWayCollision for 5+ clones","description":"## Overview\nAdd comprehensive tests for N-way (5+) collision resolution to verify the solution scales beyond 3 clones.\n\n## Purpose\nWhile TestThreeCloneCollision validates the basic N-way case, we need to verify:\n1. Solution scales to arbitrary N\n2. Performance is acceptable with more clones\n3. Convergence time is bounded\n4. No edge cases in larger collision groups\n\n## Implementation Tasks\n\n### 1. Create TestFiveCloneCollision\nFile: beads_twoclone_test.go (or new beads_nway_test.go)\n\n```go\nfunc TestFiveCloneCollision(t *testing.T) {\n // Test with 5 clones creating same ID with different content\n // Verify all 5 clones converge after sync rounds\n \n t.Run(\"SequentialSync\", func(t *testing.T) {\n testNCloneCollision(t, 5, \"A\", \"B\", \"C\", \"D\", \"E\")\n })\n \n t.Run(\"ReverseSync\", func(t *testing.T) {\n testNCloneCollision(t, 5, \"E\", \"D\", \"C\", \"B\", \"A\")\n })\n \n t.Run(\"RandomSync\", func(t *testing.T) {\n testNCloneCollision(t, 5, \"C\", \"A\", \"E\", \"B\", \"D\")\n })\n}\n```\n\n### 2. Implement generalized testNCloneCollision\nGeneralize the 3-clone test to handle arbitrary N:\n\n```go\nfunc testNCloneCollision(t *testing.T, numClones int, syncOrder ...string) {\n t.Helper()\n \n if len(syncOrder) != numClones {\n t.Fatalf(\"syncOrder length (%d) must match numClones (%d)\", \n len(syncOrder), numClones)\n }\n \n tmpDir := t.TempDir()\n \n // Setup remote and N clones\n remoteDir := setupBareRepo(t, tmpDir)\n cloneDirs := make(map[string]string)\n \n for i := 0; i \u003c numClones; i++ {\n name := string(rune('A' + i))\n cloneDirs[name] = setupClone(t, tmpDir, remoteDir, name)\n }\n \n // Each clone creates issue with same ID but different content\n for name, dir := range cloneDirs {\n createIssue(t, dir, fmt.Sprintf(\"Issue from clone %s\", name))\n }\n \n // Sync in specified order\n for _, name := range syncOrder {\n syncClone(t, cloneDirs[name], name)\n }\n \n // Final pull for convergence\n for name, dir := range cloneDirs {\n finalPull(t, dir, name)\n }\n \n // Verify all clones have all N issues\n expectedTitles := make(map[string]bool)\n for i := 0; i \u003c numClones; i++ {\n name := string(rune('A' + i))\n expectedTitles[fmt.Sprintf(\"Issue from clone %s\", name)] = true\n }\n \n for name, dir := range cloneDirs {\n titles := getTitles(t, dir)\n if !compareTitleSets(titles, expectedTitles) {\n t.Errorf(\"Clone %s missing issues: expected %v, got %v\", \n name, expectedTitles, titles)\n }\n }\n \n t.Log(\"✓ All\", numClones, \"clones converged successfully\")\n}\n```\n\n### 3. Add performance benchmarks\nTest convergence time and memory usage:\n\n```go\nfunc BenchmarkNWayCollision(b *testing.B) {\n for _, n := range []int{3, 5, 10, 20} {\n b.Run(fmt.Sprintf(\"N=%d\", n), func(b *testing.B) {\n for i := 0; i \u003c b.N; i++ {\n // Run N-way collision and measure time\n testNCloneCollisionBench(b, n)\n }\n })\n }\n}\n```\n\n### 4. Add convergence time tests\nVerify bounded convergence:\n\n```go\nfunc TestConvergenceTime(t *testing.T) {\n // Test that convergence happens within expected rounds\n // For N clones, should converge in at most N-1 sync rounds\n \n for n := 3; n \u003c= 10; n++ {\n t.Run(fmt.Sprintf(\"N=%d\", n), func(t *testing.T) {\n rounds := measureConvergenceRounds(t, n)\n maxExpected := n - 1\n if rounds \u003e maxExpected {\n t.Errorf(\"Convergence took %d rounds, expected ≤ %d\", \n rounds, maxExpected)\n }\n })\n }\n}\n```\n\n### 5. Add edge case tests\nTest boundary conditions:\n- All N clones have identical content (dedup works)\n- N-1 clones have same content, 1 differs\n- All N clones have unique content\n- Mix of collisions and non-collisions\n\n## Acceptance Criteria\n- TestFiveCloneCollision passes with all sync orders\n- All 5 clones converge to identical content\n- Performance is acceptable (\u003c 5 seconds for 5 clones)\n- Convergence time is bounded (≤ N-1 rounds)\n- Edge cases handled correctly\n- Benchmarks show scalability to 10+ clones\n\n## Files to Create/Modify\n- beads_twoclone_test.go or beads_nway_test.go\n- Add helper functions for N-clone setup\n\n## Testing Strategy\n\n### Test Matrix\n| N Clones | Sync Orders | Expected Result |\n|----------|-------------|-----------------|\n| 3 | A→B→C | Pass |\n| 3 | C→B→A | Pass |\n| 5 | A→B→C→D→E | Pass |\n| 5 | E→D→C→B→A | Pass |\n| 5 | Random | Pass |\n| 10 | Sequential | Pass |\n\n### Performance Targets\n- 3 clones: \u003c 2 seconds\n- 5 clones: \u003c 5 seconds\n- 10 clones: \u003c 15 seconds\n\n## Dependencies\n- Requires bd-cbed9619.5, bd-cbed9619.4, bd-cbed9619.3, bd-dcd6f14b to be completed\n- TestThreeCloneCollision must pass first\n\n## Success Metrics\n- All tests pass for N ∈ {3, 5, 10}\n- Convergence time scales linearly (O(N))\n- Memory usage reasonable (\u003c 100MB for 10 clones)\n- No data corruption or loss in any scenario","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T19:52:05.462747-07:00","updated_at":"2025-10-31T12:00:43.198413-07:00","closed_at":"2025-10-31T12:00:43.198413-07:00","source_repo":"."} {"id":"bd-5arw","content_hash":"b46bc77fc8320c3f10e2e8319c99b9e6152a7bb1076deb97f42c71c79bbb7d54","title":"Fix remaining FK constraint failures in AddComment and ApplyCompaction","description":"Follow-up to PR #348 (Fix FOREIGN KEY constraint failed).\n\nThe initial fix addressed CloseIssue, UpdateIssueID, and RemoveLabel.\nHowever, `AddComment` (in internal/storage/sqlite/events.go) and `ApplyCompaction` (in internal/storage/sqlite/compact.go) still suffer from the same pattern: inserting an event after an UPDATE without verifying the UPDATE affected any rows.\n\nThis causes \"FOREIGN KEY constraint failed\" errors when operating on non-existent issues, instead of clean \"issue not found\" errors.\n\nTask:\n1. Apply the same fix pattern to `AddComment` and `ApplyCompaction`: check RowsAffected() after UPDATE and before event INSERT.\n2. Ensure error messages are consistent (\"issue %s not found\").\n3. Verify with reproduction tests (create a test that calls these methods with a non-existent ID).","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-20T09:53:38.314776-08:00","updated_at":"2025-11-20T11:25:04.698765-08:00","closed_at":"2025-11-20T11:25:04.698765-08:00","source_repo":"."} @@ -151,55 +2168,277 @@ {"id":"bd-5e1f","content_hash":"5b0aa7a2f651393bc13c46c172828acc4306d22d749ff71fbae96f0d25741847","title":"Issue with desc","description":"This is a description","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-10-31T21:41:11.128718-07:00","updated_at":"2025-11-04T11:10:23.531094-08:00","closed_at":"2025-11-04T11:10:23.531097-08:00","source_repo":"."} {"id":"bd-5f26","content_hash":"5131931d43040061d669159635de863740ed90e7c946c4b646c36c53bc274d6f","title":"Refactor daemon.go into internal/daemonrunner","description":"Extract daemon runtime from daemon.go (1,565 lines) into internal/daemonrunner with focused modules: config.go, daemon.go, process.go, rpc_server.go, sync.go, git.go. Keep cobra command thin.","design":"New structure:\n- internal/daemonrunner/config.go: Config struct\n- internal/daemonrunner/daemon.go: Daemon struct + Start/Stop\n- internal/daemonrunner/process.go: PID/lock/socket handling\n- internal/daemonrunner/rpc_server.go: RPC lifecycle\n- internal/daemonrunner/sync.go: Export/import/commit/push logic\n- internal/daemonrunner/git.go: Git operations interface\n- cmd/bd/daemon.go: Thin cobra command","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-01T11:41:14.821017-07:00","updated_at":"2025-11-01T21:44:44.507747-07:00","closed_at":"2025-11-01T21:44:44.507747-07:00","source_repo":"."} {"id":"bd-5f483051","content_hash":"c14449fb07074c3ff76a653cc632f5795e2e0fb8f381c5f1a1f0dd831fe4f13f","title":"Implement bd resolve-conflicts (git merge conflicts in JSONL)","description":"Automatically detect and resolve git merge conflicts in .beads/issues.jsonl file.\n\nFeatures:\n- Detect conflict markers in JSONL\n- Parse conflicting issues from HEAD and BASE\n- Provide mechanical resolution (remap duplicate IDs)\n- Support AI-assisted resolution (requires internal/ai package)\n\nSee repair_commands.md lines 125-353 for design.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-28T19:37:55.722827-07:00","updated_at":"2025-11-06T19:36:13.970903-08:00","closed_at":"2025-11-06T19:26:45.397628-08:00","source_repo":"."} -{"id":"bd-5ibn","content_hash":"b7c7980704c017ba234dc80e8fb3f57617e3e911fea0385b70ad9dbfdefd438a","title":"Latency test 1","description":"","status":"in_progress","priority":3,"issue_type":"task","created_at":"2025-11-20T12:16:30.703754-05:00","updated_at":"2025-11-20T12:16:30.703754-05:00","source_repo":"."} +{"id":"bd-5ibn","content_hash":"b7c7980704c017ba234dc80e8fb3f57617e3e911fea0385b70ad9dbfdefd438a","title":"Latency test 1","description":"","status":"in_progress","priority":3,"issue_type":"task","created_at":"2025-11-10T10:50:39.603332-08:00","updated_at":"2025-11-10T10:50:39.603332-08:00","source_repo":"."} {"id":"bd-5iv","content_hash":"229ad9764bd3eb8b09441adefce960aede63fd1b5466d52cc74f112f5bb610ac","title":"Test Epic","description":"## Overview\n\n[Describe the high-level goal and scope of this epic]\n\n## Success Criteria\n\n- [ ] Criteria 1\n- [ ] Criteria 2\n- [ ] Criteria 3\n\n## Background\n\n[Provide context and motivation]\n\n## Scope\n\n**In Scope:**\n- Item 1\n- Item 2\n\n**Out of Scope:**\n- Item 1\n- Item 2\n","design":"## Architecture\n\n[Describe the overall architecture and approach]\n\n## Components\n\n- Component 1: [description]\n- Component 2: [description]\n\n## Dependencies\n\n[List external dependencies or constraints]\n","acceptance_criteria":"- [ ] All child issues are completed\n- [ ] Integration tests pass\n- [ ] Documentation is updated\n- [ ] Code review completed\n","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-03T20:15:03.864229-08:00","updated_at":"2025-11-05T00:25:06.538749-08:00","closed_at":"2025-11-05T00:25:06.538749-08:00","source_repo":".","labels":["epic"]} -{"id":"bd-5ki8","content_hash":"d0d14b49ce69f543d2849d310fdb2369e07fef5bd0dec30b9ac94c41cb9889a5","title":"Add integration tests for adapter library","description":"Test suite for beads_mail_adapter.py covering all scenarios.\n\nAcceptance Criteria:\n- Test enabled mode (server available)\n- Test disabled mode (server unavailable)\n- Test graceful degradation (server dies mid-operation)\n- Test reservation conflicts\n- Test message sending/receiving\n- Mock HTTP server for testing\n- 90%+ code coverage\n\nFile: lib/test_beads_mail_adapter.py","notes":"Test suite completed with 29 comprehensive tests covering:\n- Enabled mode (server available): 10 tests\n- Disabled mode (server unavailable): 2 tests \n- Graceful degradation: 4 tests\n- Reservation conflicts: 2 tests\n- Configuration: 5 tests\n- Health check scenarios: 3 tests\n- HTTP error handling: 3 tests\n\n**Performance**: All tests run in 10ms (fast!)\n\n**Coverage highlights**:\n✅ Server health checks (ok, degraded, error, timeout)\n✅ All API operations (reserve, release, notify, check_inbox, get_reservations)\n✅ HTTP errors (404, 409 conflict, 500, 503)\n✅ Network errors (timeout, connection refused)\n✅ Malformed responses (bad JSON, empty body, plain text errors)\n✅ Environment variable configuration\n✅ Graceful degradation when server dies mid-operation\n✅ Conflict handling with both JSON and plain text errors\n✅ Dict wrapper responses ({\"messages\": [...]} and {\"reservations\": [...]})\n✅ Custom TTL for reservations\n✅ Default agent name fallback\n\nNo external dependencies, no slow integration tests, just fast unit tests with mocks.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:43:21.294596-08:00","updated_at":"2025-11-08T01:32:39.906342-08:00","closed_at":"2025-11-08T01:32:39.906342-08:00","source_repo":".","dependencies":[{"issue_id":"bd-5ki8","depends_on_id":"bd-m9th","type":"blocks","created_at":"2025-11-07T22:43:21.296024-08:00","created_by":"daemon"}]} -{"id":"bd-5ohb","content_hash":"cfbea29e024295059516ae7feb4e320a48090a23cb72e669327ad176d66f930e","title":"Issue to reopen with reason","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-07T19:00:18.583903-08:00","updated_at":"2025-11-08T00:20:29.949382-08:00","closed_at":"2025-11-08T00:20:29.949382-08:00","source_repo":"."} +{"id":"bd-5ki8","content_hash":"d89e5e528819934bcb7ee162fa7e32c27298db5816ecf51bcc8ede1809f1d5b9","title":"Add integration tests for adapter library","description":"Test suite for beads_mail_adapter.py covering all scenarios.\n\nAcceptance Criteria:\n- Test enabled mode (server available)\n- Test disabled mode (server unavailable)\n- Test graceful degradation (server dies mid-operation)\n- Test reservation conflicts\n- Test message sending/receiving\n- Mock HTTP server for testing\n- 90%+ code coverage\n\nFile: lib/test_beads_mail_adapter.py","notes":"Test suite completed with 29 comprehensive tests covering:\n- Enabled mode (server available): 10 tests\n- Disabled mode (server unavailable): 2 tests \n- Graceful degradation: 4 tests\n- Reservation conflicts: 2 tests\n- Configuration: 5 tests\n- Health check scenarios: 3 tests\n- HTTP error handling: 3 tests\n\n**Performance**: All tests run in 10ms (fast!)\n\n**Coverage highlights**:\n✅ Server health checks (ok, degraded, error, timeout)\n✅ All API operations (reserve, release, notify, check_inbox, get_reservations)\n✅ HTTP errors (404, 409 conflict, 500, 503)\n✅ Network errors (timeout, connection refused)\n✅ Malformed responses (bad JSON, empty body, plain text errors)\n✅ Environment variable configuration\n✅ Graceful degradation when server dies mid-operation\n✅ Conflict handling with both JSON and plain text errors\n✅ Dict wrapper responses ({\"messages\": [...]} and {\"reservations\": [...]})\n✅ Custom TTL for reservations\n✅ Default agent name fallback\n\nNo external dependencies, no slow integration tests, just fast unit tests with mocks.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:43:21.294596-08:00","updated_at":"2025-11-08T01:52:23.359176-08:00","closed_at":"2025-11-08T01:32:39.906342-08:00","source_repo":".","dependencies":[{"issue_id":"bd-5ki8","depends_on_id":"bd-m9th","type":"blocks","created_at":"2025-11-07T22:43:21.296024-08:00","created_by":"daemon"}]} +{"id":"bd-5ohb","content_hash":"c7432e58e6518764c9e88b92b16becbb545e179f187becf13aa980f1b93c8192","title":"Issue to reopen with reason","description":"","status":"open","priority":1,"issue_type":"bug","created_at":"2025-11-07T19:00:18.583903-08:00","updated_at":"2025-11-07T19:00:18.629189-08:00","source_repo":"."} {"id":"bd-5ots","content_hash":"ba3efab3e7a2b9bb2bd2dba3aace56cfbdd1b67efd1cfc4758d9c79919f632af","title":"SearchIssues N+1 query causes context timeout with GetLabels","description":"scanIssues() calls GetLabels in a loop for every issue, causing N+1 queries and context deadline exceeded errors when used with short timeouts or in-memory databases. This is especially problematic since SearchIssues already supports label filtering via SQL WHERE clauses.","acceptance_criteria":"- Optimize scanIssues to batch-load labels for all issues in one query\n- Or make label loading optional/lazy\n- Add test that calls SearchIssues repeatedly with label filters and short context timeouts","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-05T19:12:02.245879-08:00","updated_at":"2025-11-05T19:22:11.668682-08:00","closed_at":"2025-11-05T19:22:11.668682-08:00","source_repo":"."} {"id":"bd-5qim","content_hash":"5117e87c5a56b5b8254402d982e85bea1478c1961f05654a50cf2df11e7ad6bf","title":"Optimize GetReadyWork performance - 752ms on 10K database (target: \u003c50ms)","description":"","notes":"# Performance Analysis (10K Issue Database)\n\nAnalyzed using CPU profiles from benchmark suite on Apple M2 Pro.\n\n## Operation Performance\n\n| Operation | Time | Allocations | Memory |\n|----------------------------------|---------|-------------|--------|\n| bd ready (GetReadyWork) | ~752ms | 167,466 | 16MB |\n| bd list (SearchIssues no filter) | ~11.6ms | 89,214 | 5.8MB |\n| bd list (SearchIssues filtered) | ~9.2ms | 62,365 | 3.5MB |\n| bd create (CreateIssue) | ~2.6ms | 146 | 8.6KB |\n| bd update (UpdateIssue) | ~0.32ms | 364 | 15KB |\n| bd close (UpdateIssue) | ~0.32ms | 364 | 15KB |\n\n**Target: \u003c50ms for all operations on 10K database**\n\n**Current issue: GetReadyWork is 15x over target (752ms vs 50ms)**\n\n## Root Cause\n\nGetReadyWork (internal/storage/sqlite/ready.go:90-128) uses recursive CTE to propagate blocking:\n- 65x slower than SearchIssues\n- Recalculates entire blocked issue tree on every call\n- Algorithm:\n 1. Find directly blocked issues via 'blocks' dependencies\n 2. Recursively propagate blockage to descendants (max depth: 50)\n 3. Exclude all blocked issues from results\n\n## CPU Profile Analysis\n\n- Database syscalls (pthread_cond_signal, syscall6): ~75%\n- SQLite engine overhead: inherent to recursive CTE\n- Application code (query construction): \u003c1%\n\n**Bottleneck is the recursive CTE query execution, not application code.**\n\n## Optimization Recommendations\n\n### High Impact (Likely to achieve \u003c50ms target)\n\n1. **Cache blocked issue calculation**\n - Add `blocked_issues` table updated on dependency changes\n - Trade write complexity for read speed (ready called \u003e\u003e dependency changes)\n - Eliminates recursive CTE on every read\n\n2. **Add/verify database indexes**\n ```sql\n CREATE INDEX IF NOT EXISTS idx_dependencies_blocked \n ON dependencies(issue_id, type, depends_on_id);\n CREATE INDEX IF NOT EXISTS idx_issues_status \n ON issues(status);\n ```\n\n### Medium Impact\n\n3. **Reduce allocations** (167K allocations for GetReadyWork)\n - Profile `scanIssues()` for object pooling opportunities\n - Reuse slice capacity for repeated calls\n\n### Low Impact (Not recommended)\n- Query optimization for CRUD operations (already \u003c3ms)\n- Connection pooling tuning (not showing in profiles)\n\n## Verification\n\nRun benchmarks to validate optimization:\n```bash\nmake bench-quick\ngo tool pprof -http=:8080 internal/storage/sqlite/bench-cpu-*.prof\n```\n\nProfile files automatically generated in `internal/storage/sqlite/`.","status":"open","priority":0,"issue_type":"bug","created_at":"2025-11-14T09:02:46.507526-08:00","updated_at":"2025-11-14T09:03:44.073236-08:00","source_repo":"."} -{"id":"bd-6049","content_hash":"16c54bc547f4ab180aee39efbb197709a47a39047f5bc2dd59e6e6b57ca8bc87","title":"bd doctor --json flag not working","description":"The --json flag on bd doctor command doesn't produce JSON output. It continues to show human-readable output instead. The flag is registered locally on doctorCmd but the code uses the global jsonOutput variable set by PersistentPreRun. Need to investigate why the flag isn't being honored.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-02T17:08:18.170428-08:00","updated_at":"2025-11-02T18:41:01.376783-08:00","closed_at":"2025-11-02T18:41:01.376786-08:00","source_repo":".","comments":[{"id":9,"issue_id":"bd-6049","author":"stevey","text":"Fixed by removing the local --json flag definition in doctor.go that was shadowing the persistent --json flag from main.go. The doctor command now correctly uses the global jsonOutput variable.","created_at":"2025-11-05T08:44:27Z"}]} +{"id":"bd-6","content_hash":"d2873aaf1e25e6b17fb4e9caeb6b31e42e2bc2783e98a68d4096b2f6f62fb90e","title":"Add --show-all-paths flag to bd dep tree","description":"Currently bd dep tree deduplicates nodes when multiple paths exist (diamond dependencies). Add optional --show-all-paths flag to display the full graph with all paths, showing duplicates. Useful for debugging complex dependency structures and understanding all relationships.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.544198-07:00","closed_at":"2025-10-18T10:11:38.985862-07:00","source_repo":"."} +{"id":"bd-60","content_hash":"317b9062c98a7d890d5c5fc168427dcc44d98006559b57ece5fdcfbb67cf7491","title":"Implement reference scoring algorithm","description":"Count references for each colliding issue: text mentions in descriptions/notes/design fields + dependency references. Sort collisions by score ascending (fewest refs first). This minimizes total updates during renumbering.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.544351-07:00","closed_at":"2025-10-14T02:51:52.198288-07:00","source_repo":"."} +{"id":"bd-600","content_hash":"a5d54da18f360fddf7b13701da4e7687ce7497044265ec7a478aed7d23d6c02e","title":"Agent 2 Issue 1","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.623632-07:00","updated_at":"2025-10-21T00:29:10.623632-07:00","source_repo":"."} +{"id":"bd-601","content_hash":"580356f004e952436b682f738596b71e324d55bd57b7abcea9eedf1765f8a0ac","title":"Agent 2 Issue 2","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.624125-07:00","updated_at":"2025-10-21T00:29:10.624125-07:00","source_repo":"."} +{"id":"bd-602","content_hash":"abfa5860463fc9da08a1beef20a703b60ce3774d514503102f0b8bd838706673","title":"Agent 2 Issue 3","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.624988-07:00","updated_at":"2025-10-21T00:29:10.624988-07:00","source_repo":"."} +{"id":"bd-603","content_hash":"63310a51e25686b55168b53019ec3fdc8b0ad827336f9098686320c97f6f2518","title":"Agent 2 Issue 4","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.625534-07:00","updated_at":"2025-10-21T00:29:10.625534-07:00","source_repo":"."} +{"id":"bd-604","content_hash":"0349d5e5111e910979df9c215d6884c8fea2789c9fe6225bbf178e5289681f55","title":"Agent 2 Issue 5","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.626166-07:00","updated_at":"2025-10-21T00:29:10.626166-07:00","source_repo":"."} +{"id":"bd-6049","content_hash":"16c54bc547f4ab180aee39efbb197709a47a39047f5bc2dd59e6e6b57ca8bc87","title":"bd doctor --json flag not working","description":"The --json flag on bd doctor command doesn't produce JSON output. It continues to show human-readable output instead. The flag is registered locally on doctorCmd but the code uses the global jsonOutput variable set by PersistentPreRun. Need to investigate why the flag isn't being honored.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-02T17:08:18.170428-08:00","updated_at":"2025-11-02T18:41:01.376783-08:00","closed_at":"2025-11-02T18:41:01.376786-08:00","source_repo":".","comments":[{"id":5,"issue_id":"bd-6049","author":"stevey","text":"Fixed by removing the local --json flag definition in doctor.go that was shadowing the persistent --json flag from main.go. The doctor command now correctly uses the global jsonOutput variable.","created_at":"2025-11-12T18:57:44Z"}]} +{"id":"bd-605","content_hash":"dffac19cfcc24aa776dd6e5891e3de39e4fa1fe96d0516ef62b6fa8faf05668d","title":"Agent 2 Issue 6","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.626693-07:00","updated_at":"2025-10-21T00:29:10.626693-07:00","source_repo":"."} +{"id":"bd-606","content_hash":"3bbe858b9569d5588940e342891ea48db70c07ab1b307b5ba72add506b7bf99c","title":"Agent 2 Issue 7","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.627182-07:00","updated_at":"2025-10-21T00:29:10.627182-07:00","source_repo":"."} +{"id":"bd-607","content_hash":"ac4e79955276bd98e67f7691685e05df01bab502d25c8468740d416f0d27d38d","title":"Agent 2 Issue 8","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.627592-07:00","updated_at":"2025-10-21T00:29:10.627592-07:00","source_repo":"."} +{"id":"bd-608","content_hash":"7bf86a098b90790de3faa15f7bf8bbf828e7957e776d14e0cb1fedf173b38552","title":"Agent 2 Issue 9","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.628052-07:00","updated_at":"2025-10-21T00:29:10.628052-07:00","source_repo":"."} +{"id":"bd-609","content_hash":"072f7f0ba2dd74dccae1cbe6630d73f34aeaf400407f861a71ce3251f7869151","title":"Agent 2 Issue 10","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.628739-07:00","updated_at":"2025-10-21T00:29:10.628739-07:00","source_repo":"."} +{"id":"bd-61","content_hash":"754d3a031842ab7a74a6c92fb70eb760f1a1c3ba4e3dad517800dc0ea1167a8c","title":"Implement ID remapping with reference updates","description":"Allocate new IDs for colliding issues. Update all text field references using word-boundary regex (\\bbd-10\\b). Update dependency records. Build id_mapping for reporting. Handle chain dependencies properly.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.544509-07:00","closed_at":"2025-10-14T02:51:52.198356-07:00","source_repo":"."} +{"id":"bd-610","content_hash":"67344d553ee1183d7080b62aba16a2caa6aae60b987edaf23b58725e07275317","title":"Agent 2 Issue 11","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.629227-07:00","updated_at":"2025-10-21T00:29:10.629227-07:00","source_repo":"."} +{"id":"bd-611","content_hash":"701a18ea880d811ded956ad0946be4d2d1a6f0b09bb71a6bc957668f1c613303","title":"Agent 2 Issue 12","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.629805-07:00","updated_at":"2025-10-21T00:29:10.629805-07:00","source_repo":"."} +{"id":"bd-612","content_hash":"4d7806240a39d255cb7d398762b4da4f27c95258d2dd7e2680019b8ea57ac786","title":"Agent 2 Issue 13","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.630213-07:00","updated_at":"2025-10-21T00:29:10.630213-07:00","source_repo":"."} +{"id":"bd-613","content_hash":"08127c98b8236a291e23b02196097657f7e46af06ba0c4e468c580354f960a54","title":"Agent 2 Issue 14","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.630635-07:00","updated_at":"2025-10-21T00:29:10.630635-07:00","source_repo":"."} +{"id":"bd-614","content_hash":"1ca706b8cef52f09e442279b2b34afb9d01e2d13c4f651b85b1a309b92d80123","title":"Agent 2 Issue 15","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.631061-07:00","updated_at":"2025-10-21T00:29:10.631061-07:00","source_repo":"."} +{"id":"bd-615","content_hash":"0da91cc47f11236b756051e71976aeaf40adfa56a5f75fb346e239ccc1cfda43","title":"Agent 2 Issue 16","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.638415-07:00","updated_at":"2025-10-21T00:29:10.638415-07:00","source_repo":"."} +{"id":"bd-616","content_hash":"e888ef480780ae5d20b19e1ab79e5058ef0c2b79732a449704d8bfe7deb0034d","title":"Agent 2 Issue 17","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.6389-07:00","updated_at":"2025-10-21T00:29:10.6389-07:00","source_repo":"."} +{"id":"bd-617","content_hash":"ccbaa49d3803cdc180a533fb1e7b1ec53423ade493774522bc86d547b49b6699","title":"Agent 2 Issue 18","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.639362-07:00","updated_at":"2025-10-21T00:29:10.639362-07:00","source_repo":"."} +{"id":"bd-618","content_hash":"a7be2d8a1f877afc47163abe70f569f2094949404f07ab3d4fd69c349c3ef230","title":"Agent 2 Issue 19","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.639816-07:00","updated_at":"2025-10-21T00:29:10.639816-07:00","source_repo":"."} +{"id":"bd-619","content_hash":"bcec5fec3e07e5878d2c07fef88bad985d8ff47bbc9f830ecd1ca627eb344977","title":"Agent 2 Issue 20","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.640278-07:00","updated_at":"2025-10-21T00:29:10.640278-07:00","source_repo":"."} +{"id":"bd-62","content_hash":"1d41277facc1b6da191e39fe642d58efda33ce144247ba6850ba77ce9189aead","title":"Add --resolve-collisions flag and user reporting","description":"Add import flags: --resolve-collisions (auto-fix) and --dry-run (preview). Display clear report: collisions detected, remappings applied (old→new with scores), reference counts updated. Default behavior: fail on collision (safe).","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.545676-07:00","closed_at":"2025-10-16T10:07:34.003238-07:00","source_repo":"."} +{"id":"bd-620","content_hash":"8d1a79909001ab1e729b8364723a25687dc5c8f3d0362c2aa7c5b9176d060ea8","title":"Agent 2 Issue 21","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.640738-07:00","updated_at":"2025-10-21T00:29:10.640738-07:00","source_repo":"."} +{"id":"bd-621","content_hash":"a653b369924e2e61c14990ed09011e1add284b9f6477ab680c2a9826a567274c","title":"Agent 2 Issue 22","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.64122-07:00","updated_at":"2025-10-21T00:29:10.64122-07:00","source_repo":"."} {"id":"bd-6214875c","content_hash":"d4d20e71bbf5c08f1fe1ed07f67b7554167aa165d4972ea51b5cacc1b256c4c1","title":"Split internal/rpc/server.go into focused modules","description":"The file `internal/rpc/server.go` is 2,273 lines with 50+ methods, making it difficult to navigate and prone to merge conflicts. Split into 8 focused files with clear responsibilities.\n\nCurrent structure: Single 2,273-line file with:\n- Connection handling\n- Request routing\n- All 40+ RPC method implementations\n- Storage caching\n- Health checks \u0026 metrics\n- Cleanup loops\n\nTarget structure:\n```\ninternal/rpc/\n├── server.go # Core server, connection handling (~300 lines)\n├── methods_issue.go # Issue operations (~400 lines)\n├── methods_deps.go # Dependency operations (~200 lines)\n├── methods_labels.go # Label operations (~150 lines)\n├── methods_ready.go # Ready work queries (~150 lines)\n├── methods_compact.go # Compaction operations (~200 lines)\n├── methods_comments.go # Comment operations (~150 lines)\n├── storage_cache.go # Storage caching logic (~300 lines)\n└── health.go # Health \u0026 metrics (~200 lines)\n```\n\nMigration strategy:\n1. Create new files with appropriate methods\n2. Keep `server.go` as main file with core server logic\n3. Test incrementally after each file split\n4. Final verification with full test suite","acceptance_criteria":"- All 50 methods split into appropriate files\n- Each file \u003c500 LOC\n- All methods remain on `*Server` receiver (no behavior change)\n- All tests pass: `go test ./internal/rpc/...`\n- Verify daemon works: start daemon, run operations, check health\n- Update internal documentation if needed\n- No change to public API","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-28T14:21:37.51524-07:00","updated_at":"2025-10-30T17:12:58.2179-07:00","closed_at":"2025-10-28T14:11:04.399811-07:00","source_repo":"."} -{"id":"bd-6221bdcd","content_hash":"6749091ed73f5ec7b55af226b2ae8c9aa134759951435e08e65a363c674ea0c9","title":"Optimize cmd/bd test suite performance (currently 30+ minutes)","description":"CLI test suite is extremely slow (~30+ minutes for full run). Tests are poorly designed and need performance optimization before expanding coverage.\n\nCurrent coverage: 24.8% (improved from 20.2%)\n\n**Problem**: Tests take far too long to run, making development iteration painful.\n\n**Priority**: Fix test performance FIRST, then consider increasing coverage.\n\n**Investigation needed**:\n- Profile test execution to identify bottlenecks\n- Look for redundant git operations, database initialization, or daemon operations\n- Identify opportunities for test parallelization\n- Consider mocking or using in-memory databases where appropriate\n- Review test design patterns\n\n**Related**: bd-ktng mentions 13 CLI tests with redundant git init calls (31s total)\n\n**Goal**: Get full test suite under 1-2 minutes before adding more tests.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T14:06:27.951656-07:00","updated_at":"2025-11-08T22:42:08.862178-08:00","closed_at":"2025-11-08T22:41:05.766749-08:00","source_repo":".","dependencies":[{"issue_id":"bd-6221bdcd","depends_on_id":"bd-4d7fca8a","type":"blocks","created_at":"2025-10-29T19:52:05.532391-07:00","created_by":"import-remap"}]} +{"id":"bd-622","content_hash":"144f25a83777597e585b1c6b22285304fb81cde1e7d5686fc010fcfdda08eb64","title":"Agent 2 Issue 23","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.641646-07:00","updated_at":"2025-10-21T00:29:10.641646-07:00","source_repo":"."} +{"id":"bd-6221bdcd","content_hash":"6749091ed73f5ec7b55af226b2ae8c9aa134759951435e08e65a363c674ea0c9","title":"Optimize cmd/bd test suite performance (currently 30+ minutes)","description":"CLI test suite is extremely slow (~30+ minutes for full run). Tests are poorly designed and need performance optimization before expanding coverage.\n\nCurrent coverage: 24.8% (improved from 20.2%)\n\n**Problem**: Tests take far too long to run, making development iteration painful.\n\n**Priority**: Fix test performance FIRST, then consider increasing coverage.\n\n**Investigation needed**:\n- Profile test execution to identify bottlenecks\n- Look for redundant git operations, database initialization, or daemon operations\n- Identify opportunities for test parallelization\n- Consider mocking or using in-memory databases where appropriate\n- Review test design patterns\n\n**Related**: bd-ktng mentions 13 CLI tests with redundant git init calls (31s total)\n\n**Goal**: Get full test suite under 1-2 minutes before adding more tests.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T14:06:27.951656-07:00","updated_at":"2025-11-08T22:41:05.766749-08:00","closed_at":"2025-11-08T22:41:05.766749-08:00","source_repo":".","dependencies":[{"issue_id":"bd-6221bdcd","depends_on_id":"bd-4d7fca8a","type":"blocks","created_at":"2025-10-29T19:52:05.532391-07:00","created_by":"import-remap"}]} +{"id":"bd-623","content_hash":"897673001dd6e0097a1da2cce6b09a62fefcd680ff252c69e57744bd2eadfdec","title":"Agent 2 Issue 24","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.642057-07:00","updated_at":"2025-10-21T00:29:10.642057-07:00","source_repo":"."} +{"id":"bd-624","content_hash":"871f2c4d9325d2a6f3a5a9923945a7e6f3078646acadfebb304e1e90b7a7bf95","title":"Agent 2 Issue 25","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.64246-07:00","updated_at":"2025-10-21T00:29:10.64246-07:00","source_repo":"."} +{"id":"bd-625","content_hash":"84fb04dd4e90ad21ec3dc34a19364a7b6744c654cda32e6525cdb78b843b3f75","title":"Agent 2 Issue 26","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.6429-07:00","updated_at":"2025-10-21T00:29:10.6429-07:00","source_repo":"."} +{"id":"bd-626","content_hash":"0829149f5d6ae8bed156aa253d2bd44f31253d8fafbc7af41f44dc24276cb499","title":"Agent 2 Issue 27","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.64328-07:00","updated_at":"2025-10-21T00:29:10.64328-07:00","source_repo":"."} +{"id":"bd-627","content_hash":"d29ed7f50b0599423dee6de82ebb3d01de6ec0b3c064355a94c0c47c9ba6861f","title":"Agent 2 Issue 28","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.643661-07:00","updated_at":"2025-10-21T00:29:10.643661-07:00","source_repo":"."} {"id":"bd-627d","content_hash":"5b3d3d69ceac28dcbfbc2c7ea2f7a6ff2a3a02bc58ce02dcf6b05f8469e8bddc","title":"AI-supervised database migrations for safer schema evolution","description":"## Problem\n\nDatabase migrations can lose user data through edge cases that are hard to anticipate (e.g., GH #201 where bd migrate failed to set issue_prefix, or bd-d355a07d false positive data loss warnings). Since beads is designed to be run by AI agents, we should leverage AI to make migrations safer.\n\n## Current State\n\nMigrations run blindly with:\n- No pre-flight validation\n- No data integrity verification\n- No rollback on failure\n- Limited post-migration testing\n\nRecent issues:\n- GH #201: Migration didn't set issue_prefix config, breaking commands\n- bd-d355a07d: False positive \"data loss\" warnings on collision resolution\n- Users reported migration data loss (fixed but broader problem remains)\n\n## Proposal: AI-Supervised Migration Framework\n\nUse AI to supervise migrations through structured verification:\n\n### 1. Pre-Migration Analysis\n- AI reads migration code and current schema\n- Identifies potential data loss scenarios\n- Generates validation queries to verify assumptions\n- Creates snapshot queries for before/after comparison\n\n### 2. Migration Execution\n- Take database backup/snapshot\n- Run validation queries (pre-state)\n- Execute migration in transaction\n- Run validation queries (post-state)\n\n### 3. Post-Migration Verification\n- AI compares pre/post snapshots\n- Verifies data integrity invariants\n- Checks for unexpected data loss\n- Validates config completeness (like issue_prefix)\n\n### 4. Rollback on Anomalies\n- If AI detects data loss, rollback transaction\n- Present human-readable error report\n- Suggest fix before retrying\n\n## Example Flow\n\n```\n$ bd migrate\n\n→ Analyzing migration plan...\n→ AI identified 3 potential data loss scenarios\n→ Generating validation queries...\n→ Creating pre-migration snapshot...\n→ Running migration in transaction...\n→ Verifying post-migration state...\n✓ All 247 issues accounted for\n✓ Config table complete (issue_prefix: \"mcp\")\n✓ Dependencies intact (342 relationships verified)\n→ Migration successful!\n```\n\nIf something goes wrong:\n```\n$ bd migrate\n\n→ Analyzing migration plan...\n→ AI identified issue: Missing issue_prefix config after migration\n→ Recommendation: Add prefix detection step\n→ Aborting migration - database unchanged\n```\n\n## Implementation Ideas\n\n### A. Migration Validator Tool\nCreate `bd migrate --validate` that:\n- Simulates migration on copy of database\n- Uses AI to verify data integrity\n- Reports potential issues before real migration\n\n### B. Migration Test Generator\nAI generates test cases for migrations:\n- Edge cases (empty DB, large DB, missing config)\n- Data integrity checks\n- Regression tests\n\n### C. Migration Invariants\nDefine invariants that AI checks:\n- Issue count should not decrease (unless collision resolution)\n- All required config keys present\n- Foreign key relationships intact\n- No orphaned dependencies\n\n### D. Self-Healing Migrations\nAI detects incomplete migrations and suggests fixes:\n- Missing config values (like GH #201)\n- Orphaned data\n- Index inconsistencies\n\n## Benefits\n\n1. **Catch edge cases**: AI explores scenarios humans miss\n2. **Self-documenting**: AI explains what migration does\n3. **Agent-friendly**: Agents can run migrations confidently\n4. **Fewer rollbacks**: Detect issues before committing\n5. **Better testing**: AI generates comprehensive test suites\n\n## Open Questions\n\n1. Which AI model? (Fast: Haiku, Thorough: Sonnet/GPT-4)\n2. How to balance safety vs migration speed?\n3. Should AI validation be required or optional?\n4. How to handle offline scenarios (no API access)?\n5. What invariants should always be checked?\n\n## Related Work\n\n- bd-b245: Migration registry (makes migrations introspectable)\n- GH #201: issue_prefix migration bug (motivating example)\n- bd-d355a07d: False positive data loss warnings","design":"## Architecture: Agent-Supervised Migrations (Inversion of Control)\n\n**Key principle:** Beads provides observability and validation primitives. AI agents supervise using their own reasoning. Beads NEVER makes AI API calls.\n\n## Phase 1: Migration Invariants (Pure Validation)\n\nCreate `internal/storage/sqlite/migration_invariants.go`:\n\n```go\ntype MigrationInvariant struct {\n Name string\n Description string\n Check func(*sql.DB, *Snapshot) error\n}\n\ntype Snapshot struct {\n IssueCount int\n ConfigKeys []string\n DependencyCount int\n LabelCount int\n}\n\nvar invariants = []MigrationInvariant{\n {\n Name: \"required_config_present\",\n Description: \"Required config keys must exist\",\n Check: checkRequiredConfig, // Would have caught GH #201\n },\n {\n Name: \"foreign_keys_valid\",\n Description: \"No orphaned dependencies or labels\",\n Check: checkForeignKeys,\n },\n {\n Name: \"issue_count_stable\",\n Description: \"Issue count should not decrease unexpectedly\",\n Check: checkIssueCount,\n },\n}\n\nfunc checkRequiredConfig(db *sql.DB, snapshot *Snapshot) error {\n required := []string{\"issue_prefix\", \"schema_version\"}\n for _, key := range required {\n var value string\n err := db.QueryRow(\"SELECT value FROM config WHERE key = ?\", key).Scan(\u0026value)\n if err != nil || value == \"\" {\n return fmt.Errorf(\"required config key missing: %s\", key)\n }\n }\n return nil\n}\n```\n\n## Phase 2: Dry-Run \u0026 Inspection Tools\n\nAdd `bd migrate --dry-run --json`:\n\n```json\n{\n \"pending_migrations\": [\n {\"name\": \"dirty_issues_table\", \"description\": \"Adds dirty_issues table\"},\n {\"name\": \"content_hash_column\", \"description\": \"Adds content_hash for collision resolution\"}\n ],\n \"current_state\": {\n \"schema_version\": \"0.9.9\",\n \"issue_count\": 247,\n \"config\": {\"schema_version\": \"0.9.9\"},\n \"missing_config\": [\"issue_prefix\"]\n },\n \"warnings\": [\n \"issue_prefix config not set - may break commands after migration\"\n ],\n \"invariants_to_check\": [\n \"required_config_present\",\n \"foreign_keys_valid\",\n \"issue_count_stable\"\n ]\n}\n```\n\nAdd `bd info --schema --json`:\n\n```json\n{\n \"tables\": [\"issues\", \"dependencies\", \"labels\", \"config\"],\n \"schema_version\": \"0.9.9\",\n \"config\": {},\n \"sample_issue_ids\": [\"mcp-1\", \"mcp-2\"],\n \"detected_prefix\": \"mcp\"\n}\n```\n\n## Phase 3: Pre/Post Snapshots with Rollback\n\nUpdate `RunMigrations()`:\n\n```go\nfunc RunMigrations(db *sql.DB) error {\n // Capture pre-migration snapshot\n snapshot := captureSnapshot(db)\n \n // Run migrations in transaction\n tx, err := db.Begin()\n if err != nil {\n return err\n }\n defer tx.Rollback()\n \n for _, migration := range migrations {\n if err := migration.Func(tx); err != nil {\n return fmt.Errorf(\"migration %s failed: %w\", migration.Name, err)\n }\n }\n \n // Verify invariants before commit\n if err := verifyInvariants(tx, snapshot); err != nil {\n return fmt.Errorf(\"post-migration validation failed (rolled back): %w\", err)\n }\n \n return tx.Commit()\n}\n```\n\n## Phase 4: MCP Tools for Agent Supervision\n\nAdd to beads-mcp:\n\n```python\n@server.tool()\nasync def inspect_migration(workspace_root: str) -\u003e dict:\n \"\"\"Get migration plan and current state for agent analysis.\n \n Agent should:\n 1. Review pending migrations\n 2. Check for warnings (missing config, etc.)\n 3. Verify invariants will pass\n 4. Decide whether to run bd migrate\n \"\"\"\n result = run_bd([\"migrate\", \"--dry-run\", \"--json\"], workspace_root)\n return json.loads(result.stdout)\n\n@server.tool() \nasync def get_schema_info(workspace_root: str) -\u003e dict:\n \"\"\"Get current database schema for migration analysis.\"\"\"\n result = run_bd([\"info\", \"--schema\", \"--json\"], workspace_root)\n return json.loads(result.stdout)\n```\n\n## Agent Workflow Example\n\n```python\n# Agent detects user wants to migrate\nmigration_plan = inspect_migration(\"/path/to/workspace\")\n\n# Agent analyzes (using its own reasoning, no API calls from beads)\nif \"issue_prefix\" in migration_plan[\"missing_config\"]:\n schema = get_schema_info(\"/path/to/workspace\")\n detected_prefix = schema[\"detected_prefix\"]\n \n # Agent fixes issue before migration\n run_bd([\"config\", \"set\", \"issue_prefix\", detected_prefix])\n \n# Now safe to migrate\nrun_bd([\"migrate\"])\n```\n\n## What Beads Provides\n\n✅ Deterministic validation (invariants)\n✅ Structured inspection (--dry-run, --explain)\n✅ Rollback on invariant failure\n✅ JSON output for agent parsing\n\n## What Beads Does NOT Do\n\n❌ No AI API calls\n❌ No external model access\n❌ No agent invocation\n\nAgents supervise migrations using their own reasoning and the inspection tools beads provides.","acceptance_criteria":"Phase 1: Migration invariants implemented and tested, checked after every migration, clear error messages when invariants fail.\n\nPhase 2: Snapshot capture before migrations, comparison after, rollback on verification failure.\n\nPhase 3 (stretch): AI validation optional flag implemented, AI can analyze migration code and generate custom validation queries.\n\nPhase 4 (stretch): Migration test fixtures created, all fixtures pass migrations, CI runs migration tests.","notes":"## Progress\n\n### ✅ Phase 1: Migration Invariants (COMPLETED)\n\n**Implemented:**\n- Created internal/storage/sqlite/migration_invariants.go with 3 invariants\n- Updated RunMigrations() to verify invariants after migrations\n- All tests pass ✓\n\n### ✅ Phase 2: Inspection Tools (COMPLETED \u0026 PUSHED)\n\n**Commit:** 1abe4e7 - \"Add migration inspection tools for AI agents (bd-627d Phase 2)\"\n\n**Implemented:**\n1. ✅ bd migrate --inspect --json - Shows migration plan\n2. ✅ bd info --schema --json - Returns schema details\n3. ✅ Migration warnings system\n4. ✅ Documentation updated in AGENTS.md\n5. ✅ All tests pass\n\n### ✅ Phase 3: MCP Tools (COMPLETED \u0026 PUSHED)\n\n**Commit:** 2493693 - \"Add MCP tools for migration inspection (bd-627d Phase 3)\"\n\n**Implemented:**\n1. ✅ inspect_migration(workspace_root) tool in beads-mcp\n2. ✅ get_schema_info(workspace_root) tool in beads-mcp\n3. ✅ Abstract methods in BdClientBase\n4. ✅ CLI client implementations\n5. ✅ All tests pass\n\n**All phases complete!** Migration inspection fully integrated into MCP server.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-02T12:57:10.722048-08:00","updated_at":"2025-11-02T14:31:25.095296-08:00","closed_at":"2025-11-02T14:31:25.095308-08:00","source_repo":"."} +{"id":"bd-628","content_hash":"10057ab34b583ef25abebfdf7391ed549bbe0216ffc9c3c1fa8cafbf105238e0","title":"Agent 2 Issue 29","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.644087-07:00","updated_at":"2025-10-21T00:29:10.644087-07:00","source_repo":"."} +{"id":"bd-629","content_hash":"774ea75ac2c5a96c3d9f323f6c4bfd139093050a8c508f7fb9d05a062048b332","title":"Agent 2 Issue 30","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.644492-07:00","updated_at":"2025-10-21T00:29:10.644492-07:00","source_repo":"."} {"id":"bd-62a0","content_hash":"b8b2a58a86211a19aed9d21ec5215b4f14ef341ee95d4ed845e1412840d00fd7","title":"Create WASM build infrastructure (Makefile, scripts)","description":"Set up build tooling for WASM compilation:\n- Add GOOS=js GOARCH=wasm build target\n- Copy wasm_exec.js from Go distribution\n- Create wrapper script for Node.js execution\n- Add build task to Makefile or build script","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T21:58:07.286826-08:00","updated_at":"2025-11-02T22:23:49.376789-08:00","closed_at":"2025-11-02T22:23:49.376789-08:00","source_repo":".","dependencies":[{"issue_id":"bd-62a0","depends_on_id":"bd-44d0","type":"parent-child","created_at":"2025-11-02T22:23:49.423064-08:00","created_by":"stevey"}]} +{"id":"bd-63","content_hash":"2f3143224e72cf1d9f2b5ff24cc9b2b97d9ca072d77b6d25bf98487e2b334d74","title":"Write comprehensive collision resolution tests","description":"Test cases: simple collision, multiple collisions, dependency updates, text reference updates, chain dependencies, edge cases (partial ID matches, case sensitivity, triple merges). Add to import_test.go and collision_test.go.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.545905-07:00","closed_at":"2025-10-16T10:07:34.007864-07:00","source_repo":"."} +{"id":"bd-630","content_hash":"febc26a60ef128fbfa48524d0cadd2330a0c06a5f22165fb7fad67d176a47560","title":"Agent 2 Issue 31","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.646717-07:00","updated_at":"2025-10-21T00:29:10.646717-07:00","source_repo":"."} +{"id":"bd-631","content_hash":"5a28a33539533455d772029f37621df53dacee6d1cba3c3d19e07ab1f394c163","title":"Agent 2 Issue 32","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.647591-07:00","updated_at":"2025-10-21T00:29:10.647591-07:00","source_repo":"."} +{"id":"bd-632","content_hash":"fad7a5ea9496b4b54b889e4546755537f54669d652e19383fdfba9b47c9a328e","title":"Agent 2 Issue 33","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.648027-07:00","updated_at":"2025-10-21T00:29:10.648027-07:00","source_repo":"."} +{"id":"bd-633","content_hash":"e4da199fcd10326e39ef10c9cc170531c5dd5dc3e54e9556f169a5f48faf9f99","title":"Agent 2 Issue 34","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.64965-07:00","updated_at":"2025-10-21T00:29:10.64965-07:00","source_repo":"."} +{"id":"bd-634","content_hash":"f15db9c49b137150540b5e04d31286d8f2bb58179d29b725914ad92633c5b517","title":"Agent 2 Issue 35","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.650185-07:00","updated_at":"2025-10-21T00:29:10.650185-07:00","source_repo":"."} +{"id":"bd-635","content_hash":"7efeba9e4b2eae8eb528718381f480839af1161a7aa500ca5474cab315651bf0","title":"Agent 2 Issue 36","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.650696-07:00","updated_at":"2025-10-21T00:29:10.650696-07:00","source_repo":"."} +{"id":"bd-636","content_hash":"6e984b62c27394ca355bf15dd0ed284a805a00589eb0f99fe222ef8388cb0431","title":"Agent 2 Issue 37","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.653774-07:00","updated_at":"2025-10-21T00:29:10.653774-07:00","source_repo":"."} +{"id":"bd-637","content_hash":"ad1c3b28a6eb568cf2e5cc9366ef76a9eafb63071a5678bb885097114bc0fed2","title":"Agent 2 Issue 38","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.656118-07:00","updated_at":"2025-10-21T00:29:10.656118-07:00","source_repo":"."} +{"id":"bd-638","content_hash":"0ce58bed4fa9a659def810fc4c882fee2749bc1900764462cbb7312112cacc83","title":"Agent 2 Issue 39","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.656576-07:00","updated_at":"2025-10-21T00:29:10.656576-07:00","source_repo":"."} +{"id":"bd-639","content_hash":"f8c014352a631f59fb2562ceb634980f3f4a4dc1428c95cb1211e76afdd3ec58","title":"Agent 2 Issue 40","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.657029-07:00","updated_at":"2025-10-21T00:29:10.657029-07:00","source_repo":"."} {"id":"bd-63e9","content_hash":"7c709804b6d15ce63897344b0674dfae6a4fe97e3ae2768585e2a3407484bad0","title":"Fix Nix flake build test failures","description":"Nix build is failing during test phase with same test errors as Windows.\n\n**Error:**\n```\nerror: Cannot build '/nix/store/rgyi1j44dm6ylrzlg2h3z97axmfq9hzr-beads-0.9.9.drv'.\nReason: builder failed with exit code 1.\nFAIL github.com/steveyegge/beads/cmd/bd 16.141s\n```\n\nThis may be related to test environment setup or the same issues affecting Windows tests.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-02T09:29:37.2851-08:00","updated_at":"2025-11-04T11:10:23.531386-08:00","closed_at":"2025-11-04T11:10:23.531389-08:00","source_repo":".","dependencies":[{"issue_id":"bd-63e9","depends_on_id":"bd-1231","type":"blocks","created_at":"2025-11-02T09:29:37.28618-08:00","created_by":"stevey"}]} +{"id":"bd-64","content_hash":"d9f134d795ec26d3b92aef0d9ce5ad91aee18d436adfcca2faf7e645a499bb46","title":"Update documentation for collision resolution","description":"Update README.md with collision resolution section. Update CLAUDE.md with new workflow. Document --resolve-collisions and --dry-run flags. Add example scenarios showing branch merge workflows.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.546089-07:00","closed_at":"2025-10-16T10:07:34.028648-07:00","source_repo":"."} +{"id":"bd-640","content_hash":"30b849b33ad6a949b22352789676f9e6af03c97ddefc7d7bb811d68b8f4a7cea","title":"Agent 2 Issue 41","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.657542-07:00","updated_at":"2025-10-21T00:29:10.657542-07:00","source_repo":"."} +{"id":"bd-641","content_hash":"2bbda79a93ec03d8c21da94bc05ec11d94a314ada71b0c86395f3aaf0c2babc8","title":"Agent 2 Issue 42","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.657964-07:00","updated_at":"2025-10-21T00:29:10.657964-07:00","source_repo":"."} +{"id":"bd-642","content_hash":"fdb44c9f1bc8f42cd71b559ec9e906f8613806e3315dbd3b34403cafa07d7890","title":"Agent 2 Issue 43","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.658438-07:00","updated_at":"2025-10-21T00:29:10.658438-07:00","source_repo":"."} +{"id":"bd-643","content_hash":"4b8a03198f7bf0e2221404016fe634c4007c380e3f02fb7a057454a58278f97d","title":"Agent 2 Issue 44","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.658948-07:00","updated_at":"2025-10-21T00:29:10.658948-07:00","source_repo":"."} +{"id":"bd-644","content_hash":"06cda4901bdf82fc8c4f27529733393cf43891d23a6eaf20765134cfd212db44","title":"Agent 2 Issue 45","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.659388-07:00","updated_at":"2025-10-21T00:29:10.659388-07:00","source_repo":"."} +{"id":"bd-645","content_hash":"4b9a68f5d8c86530ce813e07164405292a8dfb6ba4cf81cff437fe06cb0bc1b3","title":"Agent 2 Issue 46","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.66281-07:00","updated_at":"2025-10-21T00:29:10.66281-07:00","source_repo":"."} +{"id":"bd-646","content_hash":"eb009933dd3e9cd86f10f644ebff9f5a912e267f6b70cc349f8ca6bc9ea9474e","title":"Agent 2 Issue 47","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.663334-07:00","updated_at":"2025-10-21T00:29:10.663334-07:00","source_repo":"."} +{"id":"bd-647","content_hash":"38144981417d279b4c3da914ff267375f6a6c5e22d254bc6e9c35343d1a95df0","title":"Agent 2 Issue 48","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.663766-07:00","updated_at":"2025-10-21T00:29:10.663766-07:00","source_repo":"."} +{"id":"bd-648","content_hash":"b9720e78702143bbad17ec01db3fa042a855e4a28d7fdd72255ef319a415b7cd","title":"Agent 2 Issue 49","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.664196-07:00","updated_at":"2025-10-21T00:29:10.664196-07:00","source_repo":"."} +{"id":"bd-649","content_hash":"76fb7eef7e27e46f4ad5f1ca33f8d682dc139dd11a33155623c7e96c1ccbbd71","title":"Agent 2 Issue 50","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.664623-07:00","updated_at":"2025-10-21T00:29:10.664623-07:00","source_repo":"."} {"id":"bd-64c05d00","content_hash":"ab391b33353bfe693ef571e9fcb4a222eb5289a07e60258bd88c29565e85c4d0","title":"Multi-clone collision resolution testing and documentation","description":"Epic to track improvements to multi-clone collision resolution based on ultrathinking analysis of-3d844c58 and [deleted:bd-71107098].\n\nCurrent state:\n- 2-clone collision resolution is SOUND and working correctly\n- Hash-based deterministic collision resolution works\n- Test fails due to timestamp comparison, not actual logic issues\n\nWork needed:\n1. Fix TestTwoCloneCollision to compare content not timestamps\n2. Add TestThreeCloneCollision for regression protection\n3. Document 3-clone ID non-determinism as known behavior","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-10-28T17:58:38.316626-07:00","updated_at":"2025-11-05T00:32:09.153134-08:00","closed_at":"2025-11-04T11:10:23.531681-08:00","source_repo":"."} {"id":"bd-64c05d00.1","content_hash":"4ed407ab9518dbf45a4097460354d7857dd53881b913ad770def31d46dc6dc15","title":"Fix TestTwoCloneCollision to compare content not timestamps","description":"The test at beads_twoclone_test.go:204-207 currently compares full JSON output including timestamps, causing false negative failures.\n\nCurrent behavior:\n- Both clones converge to identical semantic content\n- Clone A: test-2=\"Issue from clone A\", test-1=\"Issue from clone B\"\n- Clone B: test-1=\"Issue from clone B\", test-2=\"Issue from clone A\"\n- Titles match IDs correctly, no data corruption\n- Only timestamps differ (expected and acceptable)\n\nFix needed:\n- Replace exact JSON comparison with content-aware comparison\n- Normalize or ignore timestamp fields when asserting convergence\n- Test should PASS after this fix\n\nThis blocks completion of bd-71107098.","acceptance_criteria":"- Test compares issue content (title, description, status, priority) not timestamps\n- TestTwoCloneCollision passes\n- Both clones shown to have identical semantic content\n- Timestamps explicitly documented as acceptable difference","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-28T17:58:52.057194-07:00","updated_at":"2025-10-30T17:12:58.226744-07:00","closed_at":"2025-10-28T18:01:38.751895-07:00","source_repo":".","dependencies":[{"issue_id":"bd-64c05d00.1","depends_on_id":"bd-64c05d00","type":"parent-child","created_at":"2025-10-28T17:58:52.058202-07:00","created_by":"stevey"},{"issue_id":"bd-64c05d00.1","depends_on_id":"bd-71107098","type":"blocks","created_at":"2025-10-28T17:58:52.05873-07:00","created_by":"stevey"}]} -{"id":"bd-64c05d00.2","content_hash":"bee12f24cd1fc490bef9065a1981f4d4f5289d375102290db320e24afa90a3ca","title":"Document 3-clone ID non-determinism in collision resolution","description":"Document the known behavior of 3+ way collision resolution where ID assignments may vary based on sync order, even though content always converges correctly.\n\nUpdates needed:\n- Update bd-71107098 notes to mark 2-clone case as solved\n- Document 3-clone ID non-determinism as known limitation\n- Add explanation to ADVANCED.md or collision resolution docs\n- Explain why this happens (pairwise hash comparison is deterministic, but multi-way ID allocation uses sync-order dependent counters)\n- Clarify trade-offs: content convergence ✅ vs ID stability ❌\n\nKey points to document:\n- Hash-based resolution is pairwise deterministic\n- Content always converges correctly (all issues present with correct data)\n- Numeric ID assignments in 3+ way collisions depend on sync order\n- This is acceptable for most use cases (content convergence is primary goal)\n- Full determinism would require complex multi-way comparison","acceptance_criteria":"- bd-71107098 updated with notes about 2-clone solution being complete\n- 3-clone ID non-determinism documented in ADVANCED.md or similar\n- Explanation includes why it happens and trade-offs\n- Links to TestThreeCloneCollision as demonstration\n- Users understand this is expected behavior, not a bug","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-28T17:59:21.93014-07:00","updated_at":"2025-11-20T12:40:11.70764-05:00","closed_at":"2025-11-15T14:13:47.304584-08:00","source_repo":".","dependencies":[{"issue_id":"bd-64c05d00.2","depends_on_id":"bd-64c05d00","type":"parent-child","created_at":"2025-10-28T17:59:21.938709-07:00","created_by":"stevey"}]} +{"id":"bd-64c05d00.2","content_hash":"bee12f24cd1fc490bef9065a1981f4d4f5289d375102290db320e24afa90a3ca","title":"Document 3-clone ID non-determinism in collision resolution","description":"Document the known behavior of 3+ way collision resolution where ID assignments may vary based on sync order, even though content always converges correctly.\n\nUpdates needed:\n- Update bd-71107098 notes to mark 2-clone case as solved\n- Document 3-clone ID non-determinism as known limitation\n- Add explanation to ADVANCED.md or collision resolution docs\n- Explain why this happens (pairwise hash comparison is deterministic, but multi-way ID allocation uses sync-order dependent counters)\n- Clarify trade-offs: content convergence ✅ vs ID stability ❌\n\nKey points to document:\n- Hash-based resolution is pairwise deterministic\n- Content always converges correctly (all issues present with correct data)\n- Numeric ID assignments in 3+ way collisions depend on sync order\n- This is acceptable for most use cases (content convergence is primary goal)\n- Full determinism would require complex multi-way comparison","acceptance_criteria":"- bd-71107098 updated with notes about 2-clone solution being complete\n- 3-clone ID non-determinism documented in ADVANCED.md or similar\n- Explanation includes why it happens and trade-offs\n- Links to TestThreeCloneCollision as demonstration\n- Users understand this is expected behavior, not a bug","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-28T17:59:21.93014-07:00","updated_at":"2025-11-20T12:05:34.821446-05:00","closed_at":"2025-11-15T14:13:47.304584-08:00","source_repo":".","dependencies":[{"issue_id":"bd-64c05d00.2","depends_on_id":"bd-64c05d00","type":"parent-child","created_at":"2025-10-28T17:59:21.938709-07:00","created_by":"stevey"}]} {"id":"bd-64c05d00.3","content_hash":"e006b991353a26f949bc3ae4476849ef785f399f6aca866586eb6fa03d243b35","title":"Add TestThreeCloneCollision for regression protection","description":"Add a 3-clone collision test to document behavior and provide regression protection.\n\nPurpose:\n- Verify content convergence regardless of sync order\n- Document the ID non-determinism behavior (IDs may be assigned differently based on sync order)\n- Provide regression protection for multi-way collisions\n\nTest design:\n- 3 clones create same ID with different content\n- Test two different sync orders (A→B→C vs C→A→B)\n- Assert content sets match (ignore specific ID assignments)\n- Add comment explaining ID non-determinism is expected behavior\n\nKnown limitation:\n- Content always converges correctly (all issues present with correct titles)\n- Numeric ID assignments (test-2 vs test-3) depend on sync order\n- This is acceptable if content convergence is the primary goal","acceptance_criteria":"- TestThreeCloneCollision added to beads_twoclone_test.go (or new file)\n- Tests 3 clones with same ID collision\n- Tests two different sync orders\n- Asserts content convergence (all issues present, correct titles)\n- Documents ID non-determinism in test comments\n- Test passes consistently","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-28T17:59:05.941735-07:00","updated_at":"2025-10-30T17:12:58.227089-07:00","closed_at":"2025-10-28T18:09:12.717604-07:00","source_repo":".","dependencies":[{"issue_id":"bd-64c05d00.3","depends_on_id":"bd-64c05d00","type":"parent-child","created_at":"2025-10-28T17:59:05.942783-07:00","created_by":"stevey"}]} {"id":"bd-64z4","content_hash":"d707d871411b33bd6268d2a83ec6cc7696d9b38c86510dc7cb7a073fb2a8cfa3","title":"Assigned issue","description":"","status":"closed","priority":1,"issue_type":"task","assignee":"testuser","created_at":"2025-11-07T19:04:24.201309-08:00","updated_at":"2025-11-07T22:07:17.344151-08:00","closed_at":"2025-11-07T21:55:09.427387-08:00","source_repo":"."} +{"id":"bd-65","content_hash":"3ea9a2a8e14332913fa63e41cc21d13897d6116fe2cec448cb2dbf421b5acd5a","title":"bd should auto-detect .beads/*.db in current directory","description":"When bd is run without --db flag, it defaults to beads' own database instead of looking for a .beads/*.db file in the current working directory. This causes confusion when working on other projects that use beads for issue tracking (like vc).\n\nExpected behavior: bd should search for .beads/*.db in cwd and use that if found, before falling back to default beads database.\n\nExample: Running 'bd ready' in /Users/stevey/src/vc/vc/ should automatically find and use .beads/vc.db without requiring --db flag every time.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.546251-07:00","closed_at":"2025-10-16T10:07:34.046944-07:00","source_repo":"."} +{"id":"bd-650","content_hash":"aeeb14c2aab6f0f5d821ca33b697557be1911eb0fd1295d58f625ac946e03de9","title":"Agent 2 Issue 51","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.665032-07:00","updated_at":"2025-10-21T00:29:10.665032-07:00","source_repo":"."} +{"id":"bd-651","content_hash":"db90d5e0d1b4d22e1410f9821ba6d56988312944bf0f0a5e379ab7c7aff56db0","title":"Agent 2 Issue 52","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.665441-07:00","updated_at":"2025-10-21T00:29:10.665441-07:00","source_repo":"."} +{"id":"bd-652","content_hash":"a4a054613430d9e869d80e9057f31dd9e3ffc2697e85e5cba598349ed1958027","title":"Agent 2 Issue 53","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.665862-07:00","updated_at":"2025-10-21T00:29:10.665862-07:00","source_repo":"."} +{"id":"bd-653","content_hash":"813823bbf2379584fc804a303858cdef95e46130dd5aa220a31e71f88658ec25","title":"Agent 2 Issue 54","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.666324-07:00","updated_at":"2025-10-21T00:29:10.666324-07:00","source_repo":"."} +{"id":"bd-654","content_hash":"d5050cecdd0ba5e84930b11744895414a63070dbcc8c8471f9c640bd30a3060c","title":"Agent 2 Issue 55","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.666722-07:00","updated_at":"2025-10-21T00:29:10.666722-07:00","source_repo":"."} {"id":"bd-6545","content_hash":"1d49e101cae39bc8115422fdef1e2cde999e88e176e5bc5614a5aefdbcd174da","title":"Update daemon commit logic for separate branch","description":"Modify daemon to use worktree for commits when sync.branch configured.\n\nTasks:\n- Update internal/daemon/server_export_import_auto.go\n- Detect sync.branch configuration\n- Ensure worktree exists before commit\n- Sync JSONL to worktree\n- Commit in worktree context\n- Push to configured branch\n- Fallback to current behavior if sync.branch not set\n- Handle git errors (network, permissions, conflicts)\n\nEstimated effort: 3-4 days","acceptance_criteria":"- When sync.branch configured, commits go to separate branch\n- When sync.branch not configured, commits to current branch (backward compatible)\n- No disruption to primary worktree\n- Git errors handled gracefully with retry\n- Daemon logs show which branch was used","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T15:22:35.598861-08:00","updated_at":"2025-11-04T11:10:23.531964-08:00","closed_at":"2025-11-04T11:10:23.531966-08:00","source_repo":".","dependencies":[{"issue_id":"bd-6545","depends_on_id":"bd-a101","type":"parent-child","created_at":"2025-11-02T15:22:48.375661-08:00","created_by":"stevey"}]} +{"id":"bd-655","content_hash":"0a68ad5dfff0a6207e26d76b0b576ad201a24fb918fa2f34b7272c6424f955fc","title":"Agent 2 Issue 56","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.667118-07:00","updated_at":"2025-10-21T00:29:10.667118-07:00","source_repo":"."} +{"id":"bd-656","content_hash":"11718fe1ada72cb83c1962695acb3732b8adb70e124e15ff1e40e776e2ff69ae","title":"Agent 2 Issue 57","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.667541-07:00","updated_at":"2025-10-21T00:29:10.667541-07:00","source_repo":"."} +{"id":"bd-657","content_hash":"648dcf66c4ea1eae042586126ff7749c3d4543e9130a8b2a19690861a952e4ed","title":"Agent 2 Issue 58","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.667955-07:00","updated_at":"2025-10-21T00:29:10.667955-07:00","source_repo":"."} +{"id":"bd-658","content_hash":"895220e257391d7f019636dbc7b4ea90863df49503f81ba647a81d51a8c67818","title":"Agent 2 Issue 59","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.66836-07:00","updated_at":"2025-10-21T00:29:10.66836-07:00","source_repo":"."} +{"id":"bd-659","content_hash":"f69be711b2df160c4855745a927f8b3986a7e7c489b84c7c4a373e197bc17990","title":"Agent 2 Issue 60","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.668765-07:00","updated_at":"2025-10-21T00:29:10.668765-07:00","source_repo":"."} +{"id":"bd-66","content_hash":"eedce115757e8519dfd874eabb8d0a14777d2bc6b7a4f013157ca75b7d8c3487","title":"Document or automate JSONL sync workflow for git collaboration","description":"When using beads across multiple machines/environments via git, there's a workflow gap:\n\n1. Machine A: Create issues → stored in .beads/project.db\n2. Machine A: bd export -o .beads/issues.jsonl\n3. Machine A: git add .beads/issues.jsonl \u0026\u0026 git commit \u0026\u0026 git push\n4. Machine B: git pull\n5. Machine B: ??? issues.jsonl exists but project.db is empty/stale\n\nThe missing step is: bd import --db .beads/project.db -i .beads/issues.jsonl\n\nThis needs to be either:\na) Documented clearly in workflow docs\nb) Automated (e.g., git hook, or bd auto-imports if jsonl is newer than db)\nc) Both\n\nReal-world impact: User had Claude Code on GCP VM create vc issues from BOOTSTRAP.md. They were exported to issues.jsonl and committed. But on local machine, vc.db was empty until manual import was run.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.546424-07:00","closed_at":"2025-10-14T02:51:52.199766-07:00","source_repo":"."} +{"id":"bd-660","content_hash":"4229ac101fcebba421ad7fcf9f4983e3e45fd6635c09785440a7b08dc537b336","title":"Agent 2 Issue 61","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.66917-07:00","updated_at":"2025-10-21T00:29:10.66917-07:00","source_repo":"."} +{"id":"bd-661","content_hash":"7569cb315428e882453eb5c63c0ba30fa10f720c53b816bb66c8e2b8eac13ea2","title":"Agent 2 Issue 62","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.669564-07:00","updated_at":"2025-10-21T00:29:10.669564-07:00","source_repo":"."} +{"id":"bd-662","content_hash":"d394c9ff4b008bc1194ffd154919f3c3d8a4007fa0d0b22742b7fba2318b9dc8","title":"Agent 2 Issue 63","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.669983-07:00","updated_at":"2025-10-21T00:29:10.669983-07:00","source_repo":"."} +{"id":"bd-663","content_hash":"9da5bbe09c48d60b9a0e301ee8a842cec609a31fe39abafc08c0eb97afa86294","title":"Agent 2 Issue 64","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.670374-07:00","updated_at":"2025-10-21T00:29:10.670374-07:00","source_repo":"."} +{"id":"bd-664","content_hash":"50e6a5a36a4bf6ed3c783b4cf5fe01b75e3711b7c99064015fcb4203e29c0d0a","title":"Agent 2 Issue 65","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.670763-07:00","updated_at":"2025-10-21T00:29:10.670763-07:00","source_repo":"."} +{"id":"bd-665","content_hash":"5b3220b06fc01d202074e572fc4f972c87f8fe34ef54ad02a6a8bb53b53d6eb5","title":"Agent 2 Issue 66","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.671172-07:00","updated_at":"2025-10-21T00:29:10.671172-07:00","source_repo":"."} +{"id":"bd-666","content_hash":"97cfa0706b2ba9dfb5d82ebd17779bad8bd09ac255079dd8f192b6a650008593","title":"Agent 2 Issue 67","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.671607-07:00","updated_at":"2025-10-21T00:29:10.671607-07:00","source_repo":"."} +{"id":"bd-667","content_hash":"4cb56221b120248915dac270c3612dc4e9251a045eb5a503c24c8c373feabd80","title":"Agent 2 Issue 68","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.67203-07:00","updated_at":"2025-10-21T00:29:10.67203-07:00","source_repo":"."} +{"id":"bd-668","content_hash":"61b6f8e22aa2e56f000105c55c99965a68244e25f145c82cbaf524b06c8b7828","title":"Agent 2 Issue 69","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.672437-07:00","updated_at":"2025-10-21T00:29:10.672437-07:00","source_repo":"."} +{"id":"bd-669","content_hash":"086784723625314b81e967b15f5f53e8eee7752933ba95edc6a8cb14b56720de","title":"Agent 2 Issue 70","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.672841-07:00","updated_at":"2025-10-21T00:29:10.672841-07:00","source_repo":"."} +{"id":"bd-67","content_hash":"69157e48755b9397aed2881b84ce2431a626f967cd5aa139b4b7dc8a08997a34","title":"Root issue for dep tree test","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.546593-07:00","closed_at":"2025-10-16T10:07:34.1266-07:00","source_repo":"."} +{"id":"bd-670","content_hash":"e3520beffc63b595566605151b1f6bbaf56708576301f0edf7578043b06bed5b","title":"Agent 2 Issue 71","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.673247-07:00","updated_at":"2025-10-21T00:29:10.673247-07:00","source_repo":"."} +{"id":"bd-671","content_hash":"64137936cb8853bde93fcf1c0225b56672ceff252df75c5d73d40f26d1cebfa9","title":"Agent 2 Issue 72","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.673639-07:00","updated_at":"2025-10-21T00:29:10.673639-07:00","source_repo":"."} +{"id":"bd-672","content_hash":"6c97bf2d11c18fae129ccb6847f48f5a19dd0440ae1c0a7582c70f9ba1c6cb37","title":"Agent 2 Issue 73","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.674086-07:00","updated_at":"2025-10-21T00:29:10.674086-07:00","source_repo":"."} +{"id":"bd-673","content_hash":"cf6b0286a2fb8f5342b52b6341b7b22358eb4f86cdcedbdd40b5559d2bce2af2","title":"Agent 2 Issue 74","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.674499-07:00","updated_at":"2025-10-21T00:29:10.674499-07:00","source_repo":"."} +{"id":"bd-674","content_hash":"21623b6b6b269d037dd7b48f7aab919d911ffde27f1c4aa74be191ed809e13a3","title":"Agent 2 Issue 75","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.674872-07:00","updated_at":"2025-10-21T00:29:10.674872-07:00","source_repo":"."} +{"id":"bd-675","content_hash":"46ade32cebc22e9e269662946902338c683fa72cc0ee85591c9cb2ccba479ecc","title":"Agent 4 Issue 0","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.465411-07:00","updated_at":"2025-10-21T00:29:10.465411-07:00","source_repo":"."} +{"id":"bd-676","content_hash":"f4a4b0e1ec2141a911c5685638d984ba557164fe69417756e704be451422f33b","title":"Agent 4 Issue 1","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.676169-07:00","updated_at":"2025-10-21T00:29:10.676169-07:00","source_repo":"."} +{"id":"bd-677","content_hash":"49ae1b34e57c0cd01d3160a71d713d2f9079c66c884a678e0843d9327ba4c097","title":"Agent 4 Issue 2","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.676628-07:00","updated_at":"2025-10-21T00:29:10.676628-07:00","source_repo":"."} +{"id":"bd-678","content_hash":"a03f9be4777e5a953fb09fdd98326c3d03de912b8630da7db04235c9fcf373fd","title":"Agent 4 Issue 3","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.677074-07:00","updated_at":"2025-10-21T00:29:10.677074-07:00","source_repo":"."} +{"id":"bd-679","content_hash":"ee0c83fe902260a9f2a5216bb8ea50daa65c377b0e27b1b512e5086cfb133dbf","title":"Agent 4 Issue 4","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.677467-07:00","updated_at":"2025-10-21T00:29:10.677467-07:00","source_repo":"."} +{"id":"bd-68","content_hash":"f95e8ce9237ea2d5950e01c9b9288aa7ba0ccf92f148a3135f6cd76d19296cb0","title":"Dependency A","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.546761-07:00","closed_at":"2025-10-16T10:07:34.126732-07:00","source_repo":"."} +{"id":"bd-680","content_hash":"0574b58a5c2ac294572e85bbe1fc31c1de5f03d67155e10e733062353f7b04fb","title":"Agent 4 Issue 5","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.677887-07:00","updated_at":"2025-10-21T00:29:10.677887-07:00","source_repo":"."} +{"id":"bd-681","content_hash":"ef75a7095961e9d6d6bfecf65e6d95064ef904e4756c836fd9f96772e6bb1b1d","title":"Agent 4 Issue 6","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.678346-07:00","updated_at":"2025-10-21T00:29:10.678346-07:00","source_repo":"."} +{"id":"bd-682","content_hash":"e3a54bf40d590916cd488d63f75929475ffcbf080042bcdd177f748682c243f3","title":"Agent 4 Issue 7","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.678778-07:00","updated_at":"2025-10-21T00:29:10.678778-07:00","source_repo":"."} +{"id":"bd-683","content_hash":"2f352b3356780ee520bb78718d87e1a18ee98cc730b8128621172966174bd187","title":"Agent 4 Issue 8","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.679182-07:00","updated_at":"2025-10-21T00:29:10.679182-07:00","source_repo":"."} +{"id":"bd-684","content_hash":"68dc8758fb8e4b67d1385988e9aa03906536520c03a7f01df12ab220c438a2ff","title":"Agent 4 Issue 9","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.679599-07:00","updated_at":"2025-10-21T00:29:10.679599-07:00","source_repo":"."} +{"id":"bd-685","content_hash":"a29d9d535a12772480628871f653195298351c8ffd94661b7bac3ed3bf5cd5d2","title":"Agent 4 Issue 10","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.680006-07:00","updated_at":"2025-10-21T00:29:10.680006-07:00","source_repo":"."} +{"id":"bd-686","content_hash":"f969adf43a4098395ff0669d2716c6c124ed0cf8c1083b992d160ab1fd271adb","title":"Agent 4 Issue 11","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.680369-07:00","updated_at":"2025-10-21T00:29:10.680369-07:00","source_repo":"."} +{"id":"bd-687","content_hash":"d02780844c6a7da5439447cb1a0fa135c4626f0bffab4bce4884ac546140dfe1","title":"Agent 4 Issue 12","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.680725-07:00","updated_at":"2025-10-21T00:29:10.680725-07:00","source_repo":"."} +{"id":"bd-688","content_hash":"60d8479d968bd8d565f1c77c504a87d8ff4c4fc822cf3c8b307c2787cd140fe9","title":"Agent 4 Issue 13","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.68108-07:00","updated_at":"2025-10-21T00:29:10.68108-07:00","source_repo":"."} +{"id":"bd-689","content_hash":"3feb3beb2d13485d1165323d2fe80079d4f382da19af7994356035ffaa3386c5","title":"Agent 4 Issue 14","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.68143-07:00","updated_at":"2025-10-21T00:29:10.68143-07:00","source_repo":"."} +{"id":"bd-69","content_hash":"92ac650066809cf490bd634d58b6cd8bc431bbc2d5bac1d3b5117c6d16859eb4","title":"Dependency B","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.546919-07:00","closed_at":"2025-10-16T10:07:34.126858-07:00","source_repo":"."} +{"id":"bd-690","content_hash":"8544c982fae0600230beb17f7588a4f31c2c8a9e3d60b874b6bfd2e5f296dd1c","title":"Agent 4 Issue 15","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.681799-07:00","updated_at":"2025-10-21T00:29:10.681799-07:00","source_repo":"."} +{"id":"bd-691","content_hash":"ea653679ea9fdfb92d985fc10821edc691c21e12b17b8cedd3b3dcc14f31f514","title":"Agent 4 Issue 16","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.682167-07:00","updated_at":"2025-10-21T00:29:10.682167-07:00","source_repo":"."} +{"id":"bd-692","content_hash":"8eaf1f883c0f13d434b2a06a2ded3cb046014088a46b8350be933065d7ca376d","title":"Agent 4 Issue 17","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.68255-07:00","updated_at":"2025-10-21T00:29:10.68255-07:00","source_repo":"."} +{"id":"bd-693","content_hash":"216a622f26ce48cc31329263e0dd59e3331a1dbdbc6f16a11e95fb6276b672f4","title":"Agent 4 Issue 18","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.682975-07:00","updated_at":"2025-10-21T00:29:10.682975-07:00","source_repo":"."} +{"id":"bd-694","content_hash":"63f0541cb76ee2fcd486a3ab3ad0218c4bce7824d03681c0917d57ef912e3746","title":"Agent 4 Issue 19","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.683383-07:00","updated_at":"2025-10-21T00:29:10.683383-07:00","source_repo":"."} +{"id":"bd-695","content_hash":"00bb763de39b1c30a1d046cdf4cfd4bd60dd7523e42964bebc76cada00ca6f36","title":"Agent 4 Issue 20","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.683808-07:00","updated_at":"2025-10-21T00:29:10.683808-07:00","source_repo":"."} +{"id":"bd-696","content_hash":"5eb0eb9f1e9dd59f4fad7809a12120ca4c5a1a7e8e04e7d59cc639e090a01371","title":"Agent 4 Issue 21","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.684254-07:00","updated_at":"2025-10-21T00:29:10.684254-07:00","source_repo":"."} +{"id":"bd-697","content_hash":"e4fb06cb05cecf5ec7a35dd901da7bca5107d6a16aab564fff7b2675d6ba7556","title":"Agent 4 Issue 22","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.684696-07:00","updated_at":"2025-10-21T00:29:10.684696-07:00","source_repo":"."} +{"id":"bd-698","content_hash":"d4241c38b1431dc257e4fd7255348dfe90d06f3e3b099f7fde05db0cfe194220","title":"Agent 4 Issue 23","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.685147-07:00","updated_at":"2025-10-21T00:29:10.685147-07:00","source_repo":"."} +{"id":"bd-699","content_hash":"68fc3b53e7187571d9b1efc260a8ba59fe489cc8710cf8245b59960c845fd9dc","title":"Agent 4 Issue 24","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.685564-07:00","updated_at":"2025-10-21T00:29:10.685564-07:00","source_repo":"."} {"id":"bd-69bce74a","content_hash":"f15c14239ece575a79cbff8ab8351c9b8559e69f170db578de19c5a57d705317","title":"Platform tests: Linux, macOS, Windows","description":"Test event-driven mode on all platforms. Verify inotify (Linux), FSEvents (macOS), ReadDirectoryChangesW (Windows). Test fallback behavior on each.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T19:42:29.85636-07:00","updated_at":"2025-10-30T17:12:58.193697-07:00","closed_at":"2025-10-29T15:33:22.149551-07:00","source_repo":"."} {"id":"bd-69fbe98e","content_hash":"d32265738f9b6db19c1db87c5d8416f56f12c1f2497b08cbaf04f7493224ab52","title":"Implement \"bd daemons logs\" subcommand","description":"Add command to view daemon logs for a specific workspace. Requires daemon logging to file (may need separate issue for log infrastructure).","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-26T19:41:11.099659-07:00","updated_at":"2025-11-06T20:06:49.218369-08:00","closed_at":"2025-11-06T19:53:45.855798-08:00","source_repo":"."} {"id":"bd-6ada971e","content_hash":"3979df7395526a6796508aa1ed1e89c4fedc46ee5c2b79dd85066c8a78c8487a","title":"Create cmd/bd/daemon_event_loop.go (~200 LOC)","description":"Implement runEventDrivenLoop to replace polling ticker. Coordinate FileWatcher, mutation events, debouncer. Include health check ticker (60s) for daemon validation.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-28T16:20:02.429383-07:00","updated_at":"2025-10-30T17:12:58.220612-07:00","closed_at":"2025-10-28T12:30:44.067036-07:00","source_repo":"."} -{"id":"bd-6bebe013","content_hash":"f22a22149f90f02b8fcc211c3082f2bbb014ee6700ee7749037851e9d1f9cf2f","title":"Rapid 1","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-29T19:11:57.404437-07:00","updated_at":"2025-11-07T23:21:44.922966-08:00","closed_at":"2025-11-07T23:18:52.368766-08:00","source_repo":"."} +{"id":"bd-6bebe013","content_hash":"f22a22149f90f02b8fcc211c3082f2bbb014ee6700ee7749037851e9d1f9cf2f","title":"Rapid 1","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-29T19:11:57.404437-07:00","updated_at":"2025-11-08T01:49:23.457646-08:00","closed_at":"2025-11-07T23:18:52.368766-08:00","source_repo":"."} {"id":"bd-6c68","content_hash":"e35e484e4f95b135186624795a5eaa5ef8fc13bbcbdde30829a4796c420c4412","title":"bd info shows 'auto_start_disabled' even when daemon is crashed/missing","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-31T21:08:03.385681-07:00","updated_at":"2025-11-01T19:13:43.819004-07:00","closed_at":"2025-11-01T19:13:43.819004-07:00","source_repo":".","dependencies":[{"issue_id":"bd-6c68","depends_on_id":"bd-2752a7a2","type":"discovered-from","created_at":"2025-10-31T21:08:03.387045-07:00","created_by":"stevey"}]} {"id":"bd-6d7efe32","content_hash":"e5c88e7c673bc83ef3b7c24deea92055c4f663327f6831c41f2aa601d0855528","title":"CRDT-based architecture for guaranteed convergence (v2.0)","description":"## Vision\nRedesign beads around Conflict-Free Replicated Data Types (CRDTs) to provide mathematical guarantees for N-way collision resolution at arbitrary scale.\n\n## Current Limitations\n- Content-hash based collision resolution fails at 5+ clones\n- Non-deterministic convergence in multi-round scenarios\n- UNIQUE constraint violations during rename operations\n- No formal proof of convergence properties\n\n## CRDT Benefits\n- Provably convergent (Strong Eventual Consistency)\n- Commutative/Associative/Idempotent operations\n- No coordination required between clones\n- Scales to 100+ concurrent workers\n- Well-understood mathematical foundations\n\n## Proposed Architecture\n\n### 1. UUID-Based IDs\nReplace sequential IDs with UUIDs:\n- Current: bd-1c63eb84, bd-9063acda, bd-4d80b7b1\n- CRDT: bd-a1b2c3d4-e5f6-7890-abcd-ef1234567890\n- Human aliases maintained separately: #42 maps to UUID\n\n### 2. Last-Write-Wins (LWW) Elements\nEach field becomes an LWW register:\n- title: (timestamp, clone_id, value)\n- status: (timestamp, clone_id, value)\n- Deterministic conflict resolution via Lamport timestamp + clone_id tiebreaker\n\n### 3. Operation Log\nTrack all operations as CRDT ops:\n- CREATE(uuid, timestamp, clone_id, fields)\n- UPDATE(uuid, field, timestamp, clone_id, value)\n- DELETE(uuid, timestamp, clone_id) - tombstone, not hard delete\n\n### 4. Sync as Merge\nSyncing becomes merging two CRDT states:\n- No merge conflicts possible\n- Deterministic merge function\n- Guaranteed convergence\n\n## Implementation Phases\n\n### Phase 1: Research \u0026 Design (4 weeks)\n- Study existing CRDT implementations (Automerge, Yjs, Loro)\n- Design schema for CRDT-based issue tracking\n- Prototype LWW-based Issue CRDT\n- Benchmark performance vs current system\n\n### Phase 2: Parallel Implementation (6 weeks)\n- Implement CRDT storage layer alongside SQLite\n- Build conversion tools: SQLite ↔ CRDT\n- Maintain backward compatibility with v1.x format\n- Migration path for existing databases\n\n### Phase 3: Testing \u0026 Validation (4 weeks)\n- Formal verification of convergence properties\n- Stress testing with 100+ clone scenario\n- Performance profiling and optimization\n- Documentation and examples\n\n### Phase 4: Migration \u0026 Rollout (4 weeks)\n- Release v2.0-beta with CRDT backend\n- Gradual migration from v1.x\n- Monitoring and bug fixes\n- Final v2.0 release\n\n## Risks \u0026 Mitigations\n\n**Risk 1: Performance overhead**\n- Mitigation: Benchmark early, optimize hot paths\n- CRDTs can be slower than append-only logs\n- May need compaction strategy\n\n**Risk 2: Storage bloat**\n- Mitigation: Implement operation log compaction\n- Tombstone garbage collection for deleted issues\n- Periodic snapshots to reduce log size\n\n**Risk 3: Breaking changes**\n- Mitigation: Maintain v1.x compatibility layer\n- Gradual migration tools\n- Dual-mode operation during transition\n\n**Risk 4: Complexity**\n- Mitigation: Use battle-tested CRDT libraries\n- Comprehensive documentation\n- Clear migration guide\n\n## Success Criteria\n- 100-clone collision test passes without failures\n- Formal proof of convergence properties\n- Performance within 2x of current system\n- Zero manual conflict resolution required\n- Backward compatible with v1.x databases\n\n## Timeline\n18-20 weeks total (4-5 months)\n\n## References\n- Automerge: https://automerge.org\n- Yjs: https://docs.yjs.dev\n- Loro: https://loro.dev\n- CRDT theory: Shapiro et al, A comprehensive study of CRDTs\n- Related issues: bd-e6d71828, bd-7a2b58fc, bd-81abb639","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-10-29T20:48:00.267237-07:00","updated_at":"2025-10-31T20:06:44.604643-07:00","closed_at":"2025-10-31T20:06:44.604643-07:00","source_repo":"."} {"id":"bd-6ed8","content_hash":"f9c4f8b0dfc2f32b8976294a030120a3122a7a0163fbabbf97e23e6c1240c1ae","title":"Fixture Generator for Realistic Test Data","description":"Create internal/testutil/fixtures/fixtures.go with functions to generate realistic test data at scale.\n\nFunctions:\n- LargeSQLite(storage) - 10K issues, native SQLite\n- XLargeSQLite(storage) - 20K issues, native SQLite \n- LargeFromJSONL(storage) - 10K issues imported from JSONL\n- XLargeFromJSONL(storage) - 20K issues imported from JSONL\n\nData characteristics:\n- Epic hierarchies (depth 4): Epic → Feature → Task → Subtask\n- Cross-linked dependencies (tasks blocking across epics)\n- Realistic status/priority/label distribution\n- Representative assignees and temporal data\n\nImplementation:\n- Single file: internal/testutil/fixtures/fixtures.go\n- No config structs, simple direct functions\n- Seeded RNG for reproducibility\n- Reusable by both benchmarks and tests","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-13T22:22:28.233977-08:00","updated_at":"2025-11-13T22:40:19.485552-08:00","closed_at":"2025-11-13T22:40:19.485552-08:00","source_repo":".","dependencies":[{"issue_id":"bd-6ed8","depends_on_id":"bd-3tfh","type":"blocks","created_at":"2025-11-13T22:23:58.120794-08:00","created_by":"daemon"},{"issue_id":"bd-6ed8","depends_on_id":"bd-m62x","type":"blocks","created_at":"2025-11-13T22:24:02.598071-08:00","created_by":"daemon"}]} {"id":"bd-6fe4622f","content_hash":"8a8df680150f73fef6ac9cede6a1b2b0033406b35553a8a3795b13a542cd62f1","title":"Remove unreachable utility functions","description":"Several small utility functions are unreachable:\n\nFiles to clean:\n1. `internal/storage/sqlite/hash.go` - `computeIssueContentHash` (line 17)\n - Check if entire file can be deleted if only contains this function\n\n2. `internal/config/config.go` - `FileUsed` (line 151)\n - Delete unused config helper\n\n3. `cmd/bd/git_sync_test.go` - `verifyIssueOpen` (line 300)\n - Delete dead test helper\n\n4. `internal/compact/haiku.go` - `HaikuClient.SummarizeTier2` (line 81)\n - Tier 2 summarization not implemented\n - Options: implement feature OR delete method\n\nImpact: Removes 50-100 LOC depending on decisions","acceptance_criteria":"- Remove unreachable functions\n- If entire files can be deleted (like hash.go), delete them\n- For SummarizeTier2: decide to implement or delete, document decision\n- All tests pass: `go test ./...`\n- Verify no callers exist for each function","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-28T16:20:02.434573-07:00","updated_at":"2025-11-06T19:36:13.971241-08:00","closed_at":"2025-11-06T19:30:18.18734-08:00","source_repo":"."} -{"id":"bd-6hji","content_hash":"62629ee266ac7cc2770bd4225c2c0566d4538db79aaf3349954f767e28e9c538","title":"Test exclusive file reservations with two agents","description":"Simulate two agents racing to claim the same issue and verify that exclusive reservations prevent collision.\n\nAcceptance Criteria:\n- Agent A reserves bd-123 → succeeds\n- Agent B tries to reserve bd-123 → fails with clear error message\n- Agent B can see who has the reservation\n- Reservation expires after TTL\n- Agent B can claim after expiration","notes":"Successfully tested file reservations:\n- Agent BrownBear reserved bd-123 → granted\n- Agent ChartreuseHill tried same → conflicts returned\n- System correctly prevents collision","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-07T22:41:59.963468-08:00","updated_at":"2025-11-08T00:03:18.004972-08:00","closed_at":"2025-11-08T00:03:18.004972-08:00","source_repo":".","dependencies":[{"issue_id":"bd-6hji","depends_on_id":"bd-muls","type":"blocks","created_at":"2025-11-07T23:03:52.897843-08:00","created_by":"daemon"},{"issue_id":"bd-6hji","depends_on_id":"bd-27xm","type":"blocks","created_at":"2025-11-07T23:20:21.911222-08:00","created_by":"daemon"},{"issue_id":"bd-6hji","depends_on_id":"bd-spmx","type":"parent-child","created_at":"2025-11-08T00:02:47.904652-08:00","created_by":"daemon"}]} +{"id":"bd-6hji","content_hash":"6da407d81b32c439e93754b0d5322a6ba2a4377569b9f7a425d02c6b1b1987dc","title":"Test exclusive file reservations with two agents","description":"Simulate two agents racing to claim the same issue and verify that exclusive reservations prevent collision.\n\nAcceptance Criteria:\n- Agent A reserves bd-123 → succeeds\n- Agent B tries to reserve bd-123 → fails with clear error message\n- Agent B can see who has the reservation\n- Reservation expires after TTL\n- Agent B can claim after expiration","notes":"Successfully tested file reservations:\n- Agent BrownBear reserved bd-123 → granted\n- Agent ChartreuseHill tried same → conflicts returned\n- System correctly prevents collision","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-07T22:41:59.963468-08:00","updated_at":"2025-11-08T01:51:40.349671-08:00","closed_at":"2025-11-08T00:03:18.004972-08:00","source_repo":".","dependencies":[{"issue_id":"bd-6hji","depends_on_id":"bd-muls","type":"blocks","created_at":"2025-11-07T23:03:52.897843-08:00","created_by":"daemon"},{"issue_id":"bd-6hji","depends_on_id":"bd-27xm","type":"blocks","created_at":"2025-11-07T23:20:21.911222-08:00","created_by":"daemon"},{"issue_id":"bd-6hji","depends_on_id":"bd-spmx","type":"parent-child","created_at":"2025-11-08T00:02:47.904652-08:00","created_by":"daemon"}]} {"id":"bd-6ku3","content_hash":"44f4b7c866bd65391dccc5aadee556a7be9b07661e355018c6cb8906b73e3ab3","title":"Fix TestMigrateHashIDs test failure","description":"Test failure in cmd/bd/migrate_hash_ids_test.go:100 - New ID bd-09970281 for bd-1 is not a hash ID. This test is validating the hash ID migration but the generated ID doesn't match the expected format.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-06T18:52:58.114046-08:00","updated_at":"2025-11-06T19:04:58.804373-08:00","closed_at":"2025-11-06T19:04:58.804373-08:00","source_repo":"."} -{"id":"bd-6mjj","content_hash":"58241cff197abd4917d1d25424731cc3cb15a333ea961a034fb54aecc0c5be34","title":"Split test suites: fast vs. integration","description":"Reorganize tests into separate packages/files for fast unit tests vs slow integration tests.\n\nBenefits:\n- Clear separation of concerns\n- Easier to run just fast tests during development\n- Can parallelize CI jobs better\n\nFiles to organize:\n- beads_hash_multiclone_test.go (slow integration tests)\n- beads_integration_test.go (medium-speed integration tests)\n- Other test files (fast unit tests)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-04T01:24:21.040347-08:00","updated_at":"2025-11-04T10:38:12.408674-08:00","closed_at":"2025-11-04T10:38:12.408674-08:00","source_repo":".","dependencies":[{"issue_id":"bd-6mjj","depends_on_id":"bd-l5gq","type":"blocks","created_at":"2025-11-04T01:24:21.041228-08:00","created_by":"daemon"}]} +{"id":"bd-6mjj","content_hash":"2226a78fdb09302679f4fd9424d4e8c8fbdef1ef374bdd3789471b4c0868358d","title":"Split test suites: fast vs. integration","description":"Reorganize tests into separate packages/files for fast unit tests vs slow integration tests.\n\nBenefits:\n- Clear separation of concerns\n- Easier to run just fast tests during development\n- Can parallelize CI jobs better\n\nFiles to organize:\n- beads_hash_multiclone_test.go (slow integration tests)\n- beads_integration_test.go (medium-speed integration tests)\n- Other test files (fast unit tests)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-04T01:24:21.040347-08:00","updated_at":"2025-11-04T10:38:12.408674-08:00","closed_at":"2025-11-04T10:38:12.408674-08:00","source_repo":".","dependencies":[{"issue_id":"bd-6mjj","depends_on_id":"bd-l5gq","type":"blocks","created_at":"2025-11-04T01:24:21.041228-08:00","created_by":"daemon"}]} {"id":"bd-6sd1","content_hash":"1db772b8c6d380085b5f9b5978cf9c853723c24b5aa9245b307e473ce894d1d5","title":"Issue to close","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-07T19:00:16.547698-08:00","updated_at":"2025-11-07T19:00:16.570826-08:00","closed_at":"2025-11-07T19:00:16.570826-08:00","source_repo":"."} -{"id":"bd-6uix","content_hash":"5d348dee5f4696f3c20deaf03ec20c27c74d244b219bfb78bd4b9cf3afb63122","title":"Message System Improvements","description":"Consolidate improvements to the bd message command including core functionality (message reading), reliability (timeouts), validation, and code quality refactoring","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-08T12:55:47.907771-08:00","updated_at":"2025-11-08T12:59:05.802367-08:00","closed_at":"2025-11-08T12:59:05.802367-08:00","source_repo":"."} +{"id":"bd-6uix","content_hash":"13189ab05a00f5291ba60c8d3331d7f0d6aacbc9d14da79ca6344214eaf5d1ba","title":"Message System Improvements","description":"Consolidate improvements to the bd message command including core functionality (message reading), reliability (timeouts), validation, and code quality refactoring","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-08T12:55:47.907771-08:00","updated_at":"2025-11-08T12:59:05.802367-08:00","closed_at":"2025-11-08T12:59:05.802367-08:00","source_repo":"."} {"id":"bd-6z7l","content_hash":"96ccdda5d2ef893f70cba842f813665cd3a8ae05cdc5fffef5f8f8a17425f145","title":"Auto-detect scenarios and prompt users","description":"Detect when user is in fork/contributor scenario and prompt with helpful suggestions. Check: git remote relationships, existing .beads config, repo ownership. Suggest appropriate wizard.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T18:04:30.070695-08:00","updated_at":"2025-11-05T19:27:33.074733-08:00","closed_at":"2025-11-05T18:57:03.315476-08:00","source_repo":".","dependencies":[{"issue_id":"bd-6z7l","depends_on_id":"bd-8rd","type":"parent-child","created_at":"2025-11-05T18:04:39.205478-08:00","created_by":"daemon"}]} +{"id":"bd-7","content_hash":"76135ca46573e04081deaa3202314fd984f0b59bf5e77a8b5a85d62bf977d027","title":"Refactor parseMarkdownFile to reduce cyclomatic complexity","description":"The parseMarkdownFile function in cmd/bd/markdown.go has a cyclomatic complexity of 38, which exceeds the recommended threshold of 30. This makes the function harder to understand, test, and maintain.","design":"Split the function into smaller, focused units:\n\n1. parseMarkdownFile(filepath) - Main entry point, handles file I/O\n2. parseMarkdownContent(scanner) - Core parsing logic\n3. processIssueSection(issue, section, content) - Handle section finalization (current switch statement)\n4. parseLabels(content) []string - Extract labels from content\n5. parseDependencies(content) []string - Extract dependencies from content\n6. parsePriority(content) int - Parse and validate priority\n\nBenefits:\n- Each function has a single responsibility\n- Easier to test individual components\n- Lower cognitive load when reading code\n- Better encapsulation of parsing logic","acceptance_criteria":"- parseMarkdownFile complexity \u003c 15\n- New helper functions each have complexity \u003c 10\n- All existing tests still pass\n- No change in functionality or behavior\n- Code coverage maintained or improved","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.547074-07:00","closed_at":"2025-10-14T14:37:17.463352-07:00","source_repo":"."} +{"id":"bd-70","content_hash":"6bb262a6d5d290dc6a37b61d861373f32efab9cc799ddaeb70e958e47ddcd7b7","title":"Shared dependency C","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.547241-07:00","closed_at":"2025-10-16T10:07:34.12808-07:00","source_repo":"."} +{"id":"bd-700","content_hash":"e0aac4fa69f971ea1fa4e02641d54dfd981e4db0b27534bc9c97cae3d2c64a9f","title":"Agent 4 Issue 25","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.68598-07:00","updated_at":"2025-10-21T00:29:10.68598-07:00","source_repo":"."} +{"id":"bd-701","content_hash":"6c85aaa765be8e0851f01047465418c753ffecb2f876b980d2802723eb58666d","title":"Agent 4 Issue 26","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.686411-07:00","updated_at":"2025-10-21T00:29:10.686411-07:00","source_repo":"."} +{"id":"bd-702","content_hash":"5c3d5d7e5f6790c72a91cd499984b2a5c23a3c631a0580659dd5d61e36d9ef20","title":"Agent 4 Issue 27","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.686816-07:00","updated_at":"2025-10-21T00:29:10.686816-07:00","source_repo":"."} +{"id":"bd-703","content_hash":"c526ecdced6f39826c9529b48319071da60a39a1fe4077133ad264e52dc5fa4c","title":"Agent 4 Issue 28","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.687214-07:00","updated_at":"2025-10-21T00:29:10.687214-07:00","source_repo":"."} +{"id":"bd-704","content_hash":"689380c459af37b03fdb3932177586ec1ed571f5a3eff7b85524c47e9a48bd30","title":"Agent 4 Issue 29","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.687627-07:00","updated_at":"2025-10-21T00:29:10.687627-07:00","source_repo":"."} {"id":"bd-70419816","content_hash":"5b7eac7e0a00f1253fd8fd3932695b2b4b3a1e0afc632ee0d1a53ffa3ad60a77","title":"Export deduplication breaks when JSONL and export_hashes table diverge","description":"## Problem\n\nThe export deduplication feature (timestamp-only skipping) breaks when the JSONL file and export_hashes table get out of sync, causing exports to skip issues that aren't actually in the file.\n\n## Symptoms\n\n- `bd export` reports \"Skipped 128 issue(s) with timestamp-only changes\"\n- JSONL file only has 38 lines but DB has 149 issues\n- export_hashes table has 149 entries\n- Auto-import doesn't trigger (hash matches despite missing data)\n- Two repos on same commit show different issue counts\n\n## Root Cause\n\nshouldSkipExport() in autoflush.go compares current issue hash with stored export_hashes entry. If they match, it skips export assuming the issue is already in the JSONL.\n\nThis assumption fails when:\n1. Git operations (pull, reset, checkout) change JSONL without clearing export_hashes\n2. Manual JSONL edits or corruption\n3. Import operations that modify DB but don't update export_hashes\n4. Partial exports that update export_hashes but don't complete\n\n## Impact\n\n- **Critical data loss risk**: Issues appear to be tracked but aren't persisted to git\n- Breaks multi-repo sync (root cause of today's debugging session)\n- Auto-import fails to detect staleness (hash matches despite missing data)\n- Silent data corruption (no error messages, just missing issues)\n\n## Reproduction\n\n1. Have DB with 149 issues, all in export_hashes table\n2. Truncate JSONL to 38 lines (simulate git reset or corruption)\n3. Run `bd export` - it skips 128 issues\n4. JSONL still has only 38 lines but export thinks it succeeded\n\n## Current Workaround\n\n```bash\nsqlite3 .beads/beads.db \"DELETE FROM export_hashes\"\nbd export -o .beads/beads.jsonl\n```\n\n## Proposed Solutions\n\n**Option 1: Verify JSONL integrity before skipping**\n- Count lines in JSONL, compare with export_hashes count\n- If mismatch, clear export_hashes and force full export\n- Safe but adds I/O overhead\n\n**Option 2: Hash-based JSONL validation**\n- Store hash of entire JSONL file in metadata\n- Before export, check if JSONL hash matches\n- If mismatch, clear export_hashes\n- More efficient, detects any JSONL corruption\n\n**Option 3: Disable timestamp-only deduplication**\n- Remove the feature entirely\n- Always export all issues\n- Simplest and safest, but creates larger git commits\n\n**Option 4: Clear export_hashes on git operations**\n- Add post-merge hook to clear export_hashes\n- Clear on any import operation\n- Defensive approach but may over-clear\n\n## Recommended Fix\n\nCombination of Options 2 + 4:\n1. Store JSONL file hash in metadata after export\n2. Check hash before export, clear export_hashes if mismatch \n3. Clear export_hashes on import operations\n4. Add `bd validate` check for JSONL/export_hashes sync\n\n## Files Involved\n\n- cmd/bd/autoflush.go (shouldSkipExport)\n- cmd/bd/export.go (export with deduplication)\n- internal/storage/sqlite/metadata.go (export_hashes table)","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-29T23:05:13.960352-07:00","updated_at":"2025-10-30T17:12:58.19679-07:00","closed_at":"2025-10-29T22:22:20.406934-07:00","source_repo":"."} -{"id":"bd-710a4916","content_hash":"f868eafd3460dccd57e0c50a27ad7fb273547d37dad7eb83efd3678106fad62a","title":"CRDT-based architecture for guaranteed convergence (v2.0)","description":"## Vision\nRedesign beads around Conflict-Free Replicated Data Types (CRDTs) to provide mathematical guarantees for N-way collision resolution at arbitrary scale.\n\n## Current Limitations\n- Content-hash based collision resolution fails at 5+ clones\n- Non-deterministic convergence in multi-round scenarios\n- UNIQUE constraint violations during rename operations\n- No formal proof of convergence properties\n\n## CRDT Benefits\n- Provably convergent (Strong Eventual Consistency)\n- Commutative/Associative/Idempotent operations\n- No coordination required between clones\n- Scales to 100+ concurrent workers\n- Well-understood mathematical foundations\n\n## Proposed Architecture\n\n### 1. UUID-Based IDs\nReplace sequential IDs with UUIDs:\n- Current: bd-1c63eb84, bd-9063acda, bd-4d80b7b1\n- CRDT: bd-a1b2c3d4-e5f6-7890-abcd-ef1234567890\n- Human aliases maintained separately: #42 maps to UUID\n\n### 2. Last-Write-Wins (LWW) Elements\nEach field becomes an LWW register:\n- title: (timestamp, clone_id, value)\n- status: (timestamp, clone_id, value)\n- Deterministic conflict resolution via Lamport timestamp + clone_id tiebreaker\n\n### 3. Operation Log\nTrack all operations as CRDT ops:\n- CREATE(uuid, timestamp, clone_id, fields)\n- UPDATE(uuid, field, timestamp, clone_id, value)\n- DELETE(uuid, timestamp, clone_id) - tombstone, not hard delete\n\n### 4. Sync as Merge\nSyncing becomes merging two CRDT states:\n- No merge conflicts possible\n- Deterministic merge function\n- Guaranteed convergence\n\n## Implementation Phases\n\n### Phase 1: Research \u0026 Design (4 weeks)\n- Study existing CRDT implementations (Automerge, Yjs, Loro)\n- Design schema for CRDT-based issue tracking\n- Prototype LWW-based Issue CRDT\n- Benchmark performance vs current system\n\n### Phase 2: Parallel Implementation (6 weeks)\n- Implement CRDT storage layer alongside SQLite\n- Build conversion tools: SQLite ↔ CRDT\n- Maintain backward compatibility with v1.x format\n- Migration path for existing databases\n\n### Phase 3: Testing \u0026 Validation (4 weeks)\n- Formal verification of convergence properties\n- Stress testing with 100+ clone scenario\n- Performance profiling and optimization\n- Documentation and examples\n\n### Phase 4: Migration \u0026 Rollout (4 weeks)\n- Release v2.0-beta with CRDT backend\n- Gradual migration from v1.x\n- Monitoring and bug fixes\n- Final v2.0 release\n\n## Risks \u0026 Mitigations\n\n**Risk 1: Performance overhead**\n- Mitigation: Benchmark early, optimize hot paths\n- CRDTs can be slower than append-only logs\n- May need compaction strategy\n\n**Risk 2: Storage bloat**\n- Mitigation: Implement operation log compaction\n- Tombstone garbage collection for deleted issues\n- Periodic snapshots to reduce log size\n\n**Risk 3: Breaking changes**\n- Mitigation: Maintain v1.x compatibility layer\n- Gradual migration tools\n- Dual-mode operation during transition\n\n**Risk 4: Complexity**\n- Mitigation: Use battle-tested CRDT libraries\n- Comprehensive documentation\n- Clear migration guide\n\n## Success Criteria\n- 100-clone collision test passes without failures\n- Formal proof of convergence properties\n- Performance within 2x of current system\n- Zero manual conflict resolution required\n- Backward compatible with v1.x databases\n\n## Timeline\n18-20 weeks total (4-5 months)\n\n## References\n- Automerge: https://automerge.org\n- Yjs: https://docs.yjs.dev\n- Loro: https://loro.dev\n- CRDT theory: Shapiro et al, A comprehensive study of CRDTs\n- Related issues: bd-e6d71828, bd-7a2b58fc,-1","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-10-29T10:23:57.978339-07:00","updated_at":"2025-11-08T01:58:15.280264-08:00","closed_at":"2025-11-08T00:54:51.171319-08:00","source_repo":"."} +{"id":"bd-705","content_hash":"969cb2ed9aa475db701ef443917cfd9ab1b3b541bd57a0a373597a110d5ad74e","title":"Agent 4 Issue 30","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.688029-07:00","updated_at":"2025-10-21T00:29:10.688029-07:00","source_repo":"."} +{"id":"bd-706","content_hash":"60e0d0c6e9c41ff42db2589c80a906dacba4558547159aaaedab0db08c5d4373","title":"Agent 4 Issue 31","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.688438-07:00","updated_at":"2025-10-21T00:29:10.688438-07:00","source_repo":"."} +{"id":"bd-707","content_hash":"58d68e618f7a76b67ce4f300b347f48faa7472e76dc29d4cb542d1210cb79d30","title":"Agent 4 Issue 32","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.688835-07:00","updated_at":"2025-10-21T00:29:10.688835-07:00","source_repo":"."} +{"id":"bd-708","content_hash":"08e423322a794a7343859eee34926f9e4cd2751abedda74dad0c1270a825072f","title":"Agent 4 Issue 33","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.689222-07:00","updated_at":"2025-10-21T00:29:10.689222-07:00","source_repo":"."} +{"id":"bd-709","content_hash":"a7406a19ba57b825654eba21323ee22ce9c05e29e0709aa71605b3109e821db6","title":"Agent 4 Issue 34","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.689662-07:00","updated_at":"2025-10-21T00:29:10.689662-07:00","source_repo":"."} +{"id":"bd-71","content_hash":"ba38852c9db9215f42098085891353c53924807b3fa915d231432bd5b33f4c8a","title":"Implement reserved database name _.db","description":"Auto-detection now skips .beads/_.db to prevent pollution when beads dogfoods itself. This allows beads to use its own issue tracker without interfering with other projects using beads in the same directory tree. Implementation includes filtering in findDatabase(), stopping directory walk when .beads/ is found, and documentation in README.md and CLAUDE.md.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.547437-07:00","closed_at":"2025-10-14T02:51:52.199832-07:00","source_repo":"."} +{"id":"bd-710","content_hash":"13f4afc0707c4971875bcdc390b977eb6f490f0f6c402fd4103b6e19362843bf","title":"Agent 4 Issue 35","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.690131-07:00","updated_at":"2025-10-21T00:29:10.690131-07:00","source_repo":"."} +{"id":"bd-710a4916","content_hash":"f868eafd3460dccd57e0c50a27ad7fb273547d37dad7eb83efd3678106fad62a","title":"CRDT-based architecture for guaranteed convergence (v2.0)","description":"## Vision\nRedesign beads around Conflict-Free Replicated Data Types (CRDTs) to provide mathematical guarantees for N-way collision resolution at arbitrary scale.\n\n## Current Limitations\n- Content-hash based collision resolution fails at 5+ clones\n- Non-deterministic convergence in multi-round scenarios\n- UNIQUE constraint violations during rename operations\n- No formal proof of convergence properties\n\n## CRDT Benefits\n- Provably convergent (Strong Eventual Consistency)\n- Commutative/Associative/Idempotent operations\n- No coordination required between clones\n- Scales to 100+ concurrent workers\n- Well-understood mathematical foundations\n\n## Proposed Architecture\n\n### 1. UUID-Based IDs\nReplace sequential IDs with UUIDs:\n- Current: bd-1c63eb84, bd-9063acda, bd-4d80b7b1\n- CRDT: bd-a1b2c3d4-e5f6-7890-abcd-ef1234567890\n- Human aliases maintained separately: #42 maps to UUID\n\n### 2. Last-Write-Wins (LWW) Elements\nEach field becomes an LWW register:\n- title: (timestamp, clone_id, value)\n- status: (timestamp, clone_id, value)\n- Deterministic conflict resolution via Lamport timestamp + clone_id tiebreaker\n\n### 3. Operation Log\nTrack all operations as CRDT ops:\n- CREATE(uuid, timestamp, clone_id, fields)\n- UPDATE(uuid, field, timestamp, clone_id, value)\n- DELETE(uuid, timestamp, clone_id) - tombstone, not hard delete\n\n### 4. Sync as Merge\nSyncing becomes merging two CRDT states:\n- No merge conflicts possible\n- Deterministic merge function\n- Guaranteed convergence\n\n## Implementation Phases\n\n### Phase 1: Research \u0026 Design (4 weeks)\n- Study existing CRDT implementations (Automerge, Yjs, Loro)\n- Design schema for CRDT-based issue tracking\n- Prototype LWW-based Issue CRDT\n- Benchmark performance vs current system\n\n### Phase 2: Parallel Implementation (6 weeks)\n- Implement CRDT storage layer alongside SQLite\n- Build conversion tools: SQLite ↔ CRDT\n- Maintain backward compatibility with v1.x format\n- Migration path for existing databases\n\n### Phase 3: Testing \u0026 Validation (4 weeks)\n- Formal verification of convergence properties\n- Stress testing with 100+ clone scenario\n- Performance profiling and optimization\n- Documentation and examples\n\n### Phase 4: Migration \u0026 Rollout (4 weeks)\n- Release v2.0-beta with CRDT backend\n- Gradual migration from v1.x\n- Monitoring and bug fixes\n- Final v2.0 release\n\n## Risks \u0026 Mitigations\n\n**Risk 1: Performance overhead**\n- Mitigation: Benchmark early, optimize hot paths\n- CRDTs can be slower than append-only logs\n- May need compaction strategy\n\n**Risk 2: Storage bloat**\n- Mitigation: Implement operation log compaction\n- Tombstone garbage collection for deleted issues\n- Periodic snapshots to reduce log size\n\n**Risk 3: Breaking changes**\n- Mitigation: Maintain v1.x compatibility layer\n- Gradual migration tools\n- Dual-mode operation during transition\n\n**Risk 4: Complexity**\n- Mitigation: Use battle-tested CRDT libraries\n- Comprehensive documentation\n- Clear migration guide\n\n## Success Criteria\n- 100-clone collision test passes without failures\n- Formal proof of convergence properties\n- Performance within 2x of current system\n- Zero manual conflict resolution required\n- Backward compatible with v1.x databases\n\n## Timeline\n18-20 weeks total (4-5 months)\n\n## References\n- Automerge: https://automerge.org\n- Yjs: https://docs.yjs.dev\n- Loro: https://loro.dev\n- CRDT theory: Shapiro et al, A comprehensive study of CRDTs\n- Related issues: bd-e6d71828, bd-7a2b58fc,-1","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-10-29T10:23:57.978339-07:00","updated_at":"2025-11-08T01:49:23.457916-08:00","closed_at":"2025-11-08T00:54:51.171319-08:00","source_repo":"."} +{"id":"bd-711","content_hash":"e841260e9606040bfaa88286977a020f659fedb4bcc647b6ce8c5ea75c1dbbec","title":"Agent 4 Issue 36","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.690553-07:00","updated_at":"2025-10-21T00:29:10.690553-07:00","source_repo":"."} {"id":"bd-71107098","content_hash":"9feb9a8dc8ae2dc65b11edeff37cf5ce48d8f28e1ced45d64ac0176937610296","title":"Make two-clone workflow actually work (no hacks)","description":"TestTwoCloneCollision proves beads CANNOT handle two independent clones filing issues simultaneously. This is the basic collaborative workflow and it must work cleanly.\n\nTest location: beads_twoclone_test.go\n\nThe test creates two git clones, both file issues with same ID (test-1), --resolve-collisions remaps clone B's to test-2, but after sync:\n- Clone A has test-1=\"Issue from clone A\", test-2=\"Issue from clone B\" \n- Clone B has test-1=\"Issue from clone B\", test-2=\"Issue from clone A\"\n\nThe TITLES are swapped! Both clones have 2 issues but with opposite title assignments.\n\nWe've tried many fixes (per-project daemons, auto-sync, lamport hashing, precommit hooks) but nothing has made the test pass.\n\nGoal: Make the test pass WITHOUT hacks. The two clones should converge to identical state after sync.","acceptance_criteria":"1. TestTwoCloneCollision passes without EXPECTED FAILURE\n2. Both clones converge to identical issue database\n3. No manual conflict resolution required\n4. Git status clean in both clones\n5. bd ready output identical in both clones","notes":"**Major progress achieved!** The two-clone workflow now converges correctly.\n\n**What was fixed:**\n--3d844c58: Implemented content-hash based rename detection\n- bd-64c05d00.1: Fixed test to compare content not timestamps\n- Both clones now converge to identical issue databases\n- test-1 and test-2 have correct titles in both clones\n- No more title swapping!\n\n**Current status (VERIFIED):**\n✅ Acceptance criteria 1: TestTwoCloneCollision passes (confirmed Oct 28)\n✅ Acceptance criteria 2: Both clones converge to identical issue database (content matches)\n✅ Acceptance criteria 3: No manual conflict resolution required (automatic)\n✅ Acceptance criteria 4: Git status clean\n✅ Acceptance criteria 5: bd ready output identical (timestamps are expected difference)\n\n**ALL ACCEPTANCE CRITERIA MET!** This issue is complete and can be closed.","status":"closed","priority":0,"issue_type":"epic","created_at":"2025-10-28T16:34:53.278793-07:00","updated_at":"2025-10-31T19:38:09.206303-07:00","closed_at":"2025-10-28T19:20:04.143242-07:00","source_repo":"."} +{"id":"bd-712","content_hash":"5d9e399961cecb0ad84ae9022e99cd66c8c867053167ad452faa8ee15bd52311","title":"Agent 4 Issue 37","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.690988-07:00","updated_at":"2025-10-21T00:29:10.690988-07:00","source_repo":"."} +{"id":"bd-713","content_hash":"c30035d934c2e4edb23744b9f6810192c765d267aa68b89766051ae88d8d99c8","title":"Agent 4 Issue 38","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.691393-07:00","updated_at":"2025-10-21T00:29:10.691393-07:00","source_repo":"."} +{"id":"bd-714","content_hash":"09d5ea90f3660f2c16dcf6ead29f73e9bb9e8bdfe0aa7846726c690df9a2c9ff","title":"Agent 4 Issue 39","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.691797-07:00","updated_at":"2025-10-21T00:29:10.691797-07:00","source_repo":"."} +{"id":"bd-715","content_hash":"308d851dc18ecb9b6150313344a0f73a52b70631f9922ab12c6549a04f83390a","title":"Agent 4 Issue 40","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.692315-07:00","updated_at":"2025-10-21T00:29:10.692315-07:00","source_repo":"."} +{"id":"bd-716","content_hash":"4f3d161512ae4b7230c206db577095f0297d2e1e7b082557c5c3c909cbcdf72c","title":"Agent 4 Issue 41","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.692747-07:00","updated_at":"2025-10-21T00:29:10.692747-07:00","source_repo":"."} +{"id":"bd-717","content_hash":"4e96266b40008d67053589c429b340a4cf48312af05bf33b1bf00e1a14eaedf6","title":"Agent 4 Issue 42","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.693168-07:00","updated_at":"2025-10-21T00:29:10.693168-07:00","source_repo":"."} +{"id":"bd-718","content_hash":"d6bca1d7f3543c975fb45dce7fdfc171fe445879b468d36f8984f355d1cab7ef","title":"Agent 4 Issue 43","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.69358-07:00","updated_at":"2025-10-21T00:29:10.69358-07:00","source_repo":"."} +{"id":"bd-719","content_hash":"6b23d632fb6fcf02aca1e5314a7cd1fb4258632dd660c915ae8adaa0b3b5583d","title":"Agent 4 Issue 44","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.693985-07:00","updated_at":"2025-10-21T00:29:10.693985-07:00","source_repo":"."} {"id":"bd-71ky","content_hash":"83942b83e4bdf8446d1fa2309145e6469d80e3992ab4fdc9eea704fa3920afac","title":"Fix bd --version and bd completion to work without database","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-08T02:06:00.78393-08:00","updated_at":"2025-11-08T02:06:11.452474-08:00","closed_at":"2025-11-08T02:06:11.452474-08:00","source_repo":"."} +{"id":"bd-72","content_hash":"10177e5d5991de1dcfc1e767fc0d5747e9b088ee4dbe72cce491a19823fd7c5f","title":"Epic test","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.547638-07:00","closed_at":"2025-10-16T10:07:34.128633-07:00","source_repo":"."} +{"id":"bd-720","content_hash":"fefb4253c8637007e4d5bb4c18591f593fc409ebad10195034453fb97f4b20de","title":"Agent 4 Issue 45","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.69439-07:00","updated_at":"2025-10-21T00:29:10.69439-07:00","source_repo":"."} +{"id":"bd-721","content_hash":"2ffaf37606c0250b258958fc92620054cbc79b6ca64963de8adbf4d20b3e2d39","title":"Agent 4 Issue 46","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.694828-07:00","updated_at":"2025-10-21T00:29:10.694828-07:00","source_repo":"."} +{"id":"bd-722","content_hash":"974ae6612d7c57e3a49ca1350c37cf9a60185324f990403e8f03a301d17136b5","title":"Agent 4 Issue 47","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.695245-07:00","updated_at":"2025-10-21T00:29:10.695245-07:00","source_repo":"."} +{"id":"bd-723","content_hash":"769c4fe9390427bbaf7da65732c0953fc6958d371a742ea24041eda3bbb19c7e","title":"Agent 4 Issue 48","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.69568-07:00","updated_at":"2025-10-21T00:29:10.69568-07:00","source_repo":"."} +{"id":"bd-724","content_hash":"74a9f5a6426d70d045babf856b77b3fe8f85357b2f83be285d412fa6eb1fc5df","title":"Agent 4 Issue 49","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.696112-07:00","updated_at":"2025-10-21T00:29:10.696112-07:00","source_repo":"."} +{"id":"bd-725","content_hash":"b32cb234812997031eef1193acd891915a0436781312e3ca294175175896c0a3","title":"Agent 4 Issue 50","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.696543-07:00","updated_at":"2025-10-21T00:29:10.696543-07:00","source_repo":"."} +{"id":"bd-726","content_hash":"1cd8b2e0c7acdbc20b11f1af6aacee40397631a45649c826befcd61967a5deee","title":"Agent 4 Issue 51","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.697007-07:00","updated_at":"2025-10-21T00:29:10.697007-07:00","source_repo":"."} +{"id":"bd-727","content_hash":"2f897689ccc77dbab7343ac9dd9dfddaa14be1dc343eed3b6f58ee7f3138c605","title":"Agent 4 Issue 52","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.697472-07:00","updated_at":"2025-10-21T00:29:10.697472-07:00","source_repo":"."} +{"id":"bd-728","content_hash":"1a6495792bc29992959e5d198f7121c1366a3362c07ef03209e97b1e357703bd","title":"Agent 4 Issue 53","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.697907-07:00","updated_at":"2025-10-21T00:29:10.697907-07:00","source_repo":"."} +{"id":"bd-729","content_hash":"01b89e3859f9fff05c565c1825f2620e5cac8615af2d2171d3ea40fa82891b80","title":"Agent 4 Issue 54","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.698332-07:00","updated_at":"2025-10-21T00:29:10.698332-07:00","source_repo":"."} {"id":"bd-72w","content_hash":"55110afd5c4cd8e94796fe61fada9e32351e76f7fca57ce15e52fe6443e6e117","title":"Q4 Platform Improvements","description":"## Overview\n\n[Describe the high-level goal and scope of this epic]\n\n## Success Criteria\n\n- [ ] Criteria 1\n- [ ] Criteria 2\n- [ ] Criteria 3\n\n## Background\n\n[Provide context and motivation]\n\n## Scope\n\n**In Scope:**\n- Item 1\n- Item 2\n\n**Out of Scope:**\n- Item 1\n- Item 2\n","design":"## Architecture\n\n[Describe the overall architecture and approach]\n\n## Components\n\n- Component 1: [description]\n- Component 2: [description]\n\n## Dependencies\n\n[List external dependencies or constraints]\n","acceptance_criteria":"- [ ] All child issues are completed\n- [ ] Integration tests pass\n- [ ] Documentation is updated\n- [ ] Code review completed\n","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-03T19:54:03.794244-08:00","updated_at":"2025-11-05T00:25:06.51152-08:00","closed_at":"2025-11-05T00:25:06.51152-08:00","source_repo":".","labels":["epic"]} +{"id":"bd-73","content_hash":"539bea5ad0e880f5424b381c1cf368de95d9a6b9042e5c3caa98920af741a2c0","title":"Add test for deep hierarchy blocking (50+ levels)","description":"Current tests verify 2-level depth (grandparent → parent → child). The depth limit is hardcoded to 50 in the recursive CTE, but we don't test edge cases near that limit.\n\n**Test cases needed:**\n1. Verify 50-level deep hierarchy works correctly\n2. Verify depth limit prevents runaway recursion\n3. Measure performance impact of deep hierarchies\n4. Consider if 50 is the right limit (why not 100? why not 20?)\n\n**Rationale:**\n- Most hierarchies are 2-5 levels deep\n- But pathological cases (malicious or accidental) could create 50+ level nesting\n- Need to ensure graceful degradation, not catastrophic failure\n\n**Implementation:**\nAdd TestDeepHierarchyBlocking to ready_test.go","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.547807-07:00","closed_at":"2025-10-18T16:47:05.347564-07:00","source_repo":"."} +{"id":"bd-730","content_hash":"0a28257f4805b214eafa943b854462918dc8d4dd3974369648b15b7fc33f9e75","title":"Agent 4 Issue 55","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.698772-07:00","updated_at":"2025-10-21T00:29:10.698772-07:00","source_repo":"."} +{"id":"bd-731","content_hash":"88801b52a6549eac481e20b1c207c8734e98e3964aa2bda167b136b6182a438e","title":"Agent 4 Issue 56","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.69919-07:00","updated_at":"2025-10-21T00:29:10.69919-07:00","source_repo":"."} {"id":"bd-7315","content_hash":"81137222aba60b33d3bcd7637891cf94547b5c876a1608e3e3370a578ba165f3","title":"Add validation for duplicate external_ref in batch imports","description":"Currently, if a batch import contains multiple issues with the same external_ref, the behavior is undefined. We should detect and handle this case.\n\nCurrent behavior:\n- No validation for duplicate external_ref within a batch\n- Last-write-wins or non-deterministic behavior\n\nProposed solution:\n- Detect duplicate external_ref values in incoming batch\n- Fail with clear error message OR\n- Merge duplicates intelligently (use newest timestamp)\n- Add test case for this scenario\n\nRelated: bd-1022","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-02T15:31:55.85634-08:00","updated_at":"2025-11-02T16:03:50.374552-08:00","closed_at":"2025-11-02T16:03:50.374552-08:00","source_repo":"."} +{"id":"bd-732","content_hash":"960bc89cadef8e89ef16a69ceaf633629ee25ba2e52b81cd2be02e2437af02b7","title":"Agent 4 Issue 57","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.699595-07:00","updated_at":"2025-10-21T00:29:10.699595-07:00","source_repo":"."} {"id":"bd-7324","content_hash":"639f5eef2922178daae7416831b850bf58ebeb39b8b91e7124387e0b6dfea33c","title":"Add is_tombstone flag to schema","description":"Optionally add is_tombstone boolean field to issues table. Marks resurrected parents that were deleted. Allows distinguishing tombstones from normal deleted issues. Update schema.go and create migration.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-04T12:31:59.745076-08:00","updated_at":"2025-11-05T00:44:27.947578-08:00","closed_at":"2025-11-05T00:44:27.947584-08:00","source_repo":"."} +{"id":"bd-733","content_hash":"404315f31a2e5938847206ad047e580b0140bb66010f20643c07575a1c82e619","title":"Agent 4 Issue 58","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.700011-07:00","updated_at":"2025-10-21T00:29:10.700011-07:00","source_repo":"."} +{"id":"bd-734","content_hash":"27778aaba50361fb08d63276459b8597b3fb0c9d9a5d7c0c403ffe148b6b3845","title":"Agent 4 Issue 59","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.700428-07:00","updated_at":"2025-10-21T00:29:10.700428-07:00","source_repo":"."} +{"id":"bd-735","content_hash":"be0dc22d52245a7dfb76d920705f249f14ce8be88875a1c8f16f9d9128c0d716","title":"Agent 4 Issue 60","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.70084-07:00","updated_at":"2025-10-21T00:29:10.70084-07:00","source_repo":"."} +{"id":"bd-736","content_hash":"5c5ea0068d8b86a9a3262cc5ed23f1552fc48f149fd18c872443a35adb6b76d3","title":"Agent 4 Issue 61","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.701255-07:00","updated_at":"2025-10-21T00:29:10.701255-07:00","source_repo":"."} {"id":"bd-736d","content_hash":"4743b1f41ff07fee3daa63240f0d5f7ac3f876e928b22c4ce0bee2cdf544e53a","title":"Refactor path canonicalization into helper function","description":"The path canonicalization logic (filepath.Abs + EvalSymlinks) is duplicated in 3 places:\n- beads.go:131-137 (BEADS_DIR handling)\n- cmd/bd/main.go:446-451 (--no-db cleanup)\n- cmd/bd/nodb.go:26-31 (--no-db initialization)\n\nRefactoring suggestion:\nExtract to a helper function like:\n func canonicalizePath(path string) string\n\nThis would:\n- Reduce code duplication\n- Make the logic easier to maintain\n- Ensure consistent behavior across all path handling\n\nRelated to bd-e16b implementation.","status":"open","priority":3,"issue_type":"chore","created_at":"2025-11-02T18:33:47.727443-08:00","updated_at":"2025-11-02T18:33:47.727443-08:00","source_repo":"."} +{"id":"bd-737","content_hash":"85b4644e883131836754792e3ac7c9c3605da79938d527ca77da7c50053e0e0f","title":"Agent 4 Issue 62","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.701655-07:00","updated_at":"2025-10-21T00:29:10.701655-07:00","source_repo":"."} +{"id":"bd-738","content_hash":"3e34370323c24eebaf078617dfc52dccac535bbfd54210b09775379d2a75e509","title":"Agent 4 Issue 63","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.702088-07:00","updated_at":"2025-10-21T00:29:10.702088-07:00","source_repo":"."} +{"id":"bd-739","content_hash":"52d23cf64914dc84559fb76a5cc6f9b352681a40c2dbb77000c42c7e3327dc77","title":"Agent 4 Issue 64","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.702513-07:00","updated_at":"2025-10-21T00:29:10.702513-07:00","source_repo":"."} {"id":"bd-73iz","content_hash":"6003ff8e78d951d6a708f6aac6bcf841637977cab4f4a93a80b3dc2bab3287cb","title":"Test issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T19:04:17.430269-08:00","updated_at":"2025-11-07T22:07:17.344468-08:00","closed_at":"2025-11-07T21:55:09.427697-08:00","source_repo":"."} -{"id":"bd-73n8","content_hash":"f42a4eaf47ce49450fb5e2cce3ec53bff3c38ec7a0585ea06b4b31d7dfe05393","title":"Blocking issue","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T19:06:46.156536-08:00","updated_at":"2025-11-08T00:20:30.481078-08:00","closed_at":"2025-11-08T00:20:30.481078-08:00","source_repo":"."} +{"id":"bd-73n8","content_hash":"d8808071441c4faaa429c2100b421348df1750118ac618c6d68437064eb060c5","title":"Blocking issue","description":"","status":"open","priority":1,"issue_type":"task","created_at":"2025-11-07T19:06:46.156536-08:00","updated_at":"2025-11-07T19:06:46.156536-08:00","source_repo":"."} +{"id":"bd-74","content_hash":"38d6d05a643a215d9ec8a1e82843d9662d776648a0844fd72cf8d4fce66a80d1","title":"Task B under epic","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.547969-07:00","closed_at":"2025-10-16T10:07:34.129768-07:00","source_repo":"."} +{"id":"bd-740","content_hash":"8a011a5117852e9310bccc4f71a65a232bce7bf8173c19c4c052ae2c45d08192","title":"Agent 4 Issue 65","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.702946-07:00","updated_at":"2025-10-21T00:29:10.702946-07:00","source_repo":"."} +{"id":"bd-741","content_hash":"ae1589bb2198e4279d9b21af9b5efb655be7ca4185ee558675745ba15d82730d","title":"Agent 4 Issue 66","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.703377-07:00","updated_at":"2025-10-21T00:29:10.703377-07:00","source_repo":"."} +{"id":"bd-742","content_hash":"52dc9e29f954acf223437e7818c257bc0db5053258bfdec7c760a74b691cbd8c","title":"Agent 4 Issue 67","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.703786-07:00","updated_at":"2025-10-21T00:29:10.703786-07:00","source_repo":"."} +{"id":"bd-743","content_hash":"8060a475c56f9994dc3881e79cd79b7481246e258e08d7f4bd8e40f437be7847","title":"Agent 4 Issue 68","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.704203-07:00","updated_at":"2025-10-21T00:29:10.704203-07:00","source_repo":"."} +{"id":"bd-744","content_hash":"d55afb97dbc77c38fe53409fbbd0458d0718e8f474371673dc0665bf97fa8b6f","title":"Agent 4 Issue 69","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.704845-07:00","updated_at":"2025-10-21T00:29:10.704845-07:00","source_repo":"."} +{"id":"bd-745","content_hash":"b7848ee42354f091f99d7284fc0e4b6bc88edf5806fff74a5d2619ae4abfc87b","title":"Agent 4 Issue 70","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.705278-07:00","updated_at":"2025-10-21T00:29:10.705278-07:00","source_repo":"."} +{"id":"bd-746","content_hash":"1b9df1c02b16eea542d2dee3674f9c4ccde5ec08469b2c294d2eddf57682fed2","title":"Agent 4 Issue 71","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.705683-07:00","updated_at":"2025-10-21T00:29:10.705683-07:00","source_repo":"."} +{"id":"bd-747","content_hash":"e66ca8b23fe5ca6d393c8ac76fe4bfe8aa6a6b97b201e5ce1e813e4ffd1d640b","title":"Agent 4 Issue 72","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.706095-07:00","updated_at":"2025-10-21T00:29:10.706095-07:00","source_repo":"."} +{"id":"bd-748","content_hash":"d13d26e67b12dc3ee2da07139aebec0c0140de841ec3d857c4c995599082ccee","title":"Agent 4 Issue 73","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.706517-07:00","updated_at":"2025-10-21T00:29:10.706517-07:00","source_repo":"."} +{"id":"bd-749","content_hash":"7f402dc19aa9917721b08035413a5f931e008d1cfb9cb3d039ca49b4011907b4","title":"Agent 4 Issue 74","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.706923-07:00","updated_at":"2025-10-21T00:29:10.706923-07:00","source_repo":"."} {"id":"bd-74ee","content_hash":"476deaacd64c91c96e5c9aca9ba0640dcf0f3854f9f11bbaa25a8ae80af3adf3","title":"Frontend task","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-03T19:11:59.358631-08:00","updated_at":"2025-11-05T00:25:06.457813-08:00","closed_at":"2025-11-05T00:25:06.457813-08:00","source_repo":".","labels":["frontend","week1"]} -{"id":"bd-74q9","content_hash":"426f1e44ca47486e2fa5b97832a635612ac9fcb98064f00559c8833480f11bd6","title":"Issue to reopen with reason","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-07T19:04:20.855594-08:00","updated_at":"2025-11-09T16:13:23.938511-08:00","closed_at":"2025-11-09T16:13:23.938513-08:00","source_repo":"."} +{"id":"bd-74q9","content_hash":"426f1e44ca47486e2fa5b97832a635612ac9fcb98064f00559c8833480f11bd6","title":"Issue to reopen with reason","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-20T19:11:50.950742-05:00","updated_at":"2025-11-20T19:11:50.950742-05:00","closed_at":"2025-11-09T16:13:23.938513-08:00","source_repo":"."} +{"id":"bd-75","content_hash":"dc7a96adc5012e90eaa3becbdc873d42c5813d0d6fa37b2fd62d3a006be86446","title":"Test issue with explicit ID","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.548133-07:00","closed_at":"2025-10-16T10:07:34.124331-07:00","source_repo":"."} +{"id":"bd-750","content_hash":"2ad9417c9fc0c51607a1e26f96c0a2231a2259487ef0dc5936c98b8d75ae000d","title":"Agent 4 Issue 75","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.707338-07:00","updated_at":"2025-10-21T00:29:10.707338-07:00","source_repo":"."} +{"id":"bd-751","content_hash":"7fb7c5508eb3fd200ff0498543ac9c918ef596dff5293852e14f70abdc987b58","title":"Agent 4 Issue 76","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.707752-07:00","updated_at":"2025-10-21T00:29:10.707752-07:00","source_repo":"."} +{"id":"bd-752","content_hash":"187d72a6dd116915d38788099eba81b6748f5104a17075f71aaa0bcfb52c15f9","title":"Agent 4 Issue 77","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.708192-07:00","updated_at":"2025-10-21T00:29:10.708192-07:00","source_repo":"."} +{"id":"bd-753","content_hash":"4222096135de2cb7c1e3e72f5a0dd2b9e1330fa38959d1a2e0933240cc65deb7","title":"Agent 4 Issue 78","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.708608-07:00","updated_at":"2025-10-21T00:29:10.708608-07:00","source_repo":"."} +{"id":"bd-754","content_hash":"ebac45363644df7a84dd03a31b453a4e0972253d1aaa7fdeec8916c1c4ce197c","title":"Agent 4 Issue 79","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.709021-07:00","updated_at":"2025-10-21T00:29:10.709021-07:00","source_repo":"."} +{"id":"bd-755","content_hash":"2f520c6c7ba19ebb780ea83313709723bca5b7cc9d7ed0db9fa8dfca18a3278d","title":"Agent 4 Issue 80","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.709449-07:00","updated_at":"2025-10-21T00:29:10.709449-07:00","source_repo":"."} +{"id":"bd-756","content_hash":"84748c7eec71bf551fc337f7b7501083b8f0d8614bf1f66b7a4712ced8c333aa","title":"Agent 4 Issue 81","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.709879-07:00","updated_at":"2025-10-21T00:29:10.709879-07:00","source_repo":"."} +{"id":"bd-757","content_hash":"87fc1c2b44d35d7da508ea2631efa9c707c72a65258c014502f99c323933e37f","title":"Agent 4 Issue 82","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.710301-07:00","updated_at":"2025-10-21T00:29:10.710301-07:00","source_repo":"."} +{"id":"bd-758","content_hash":"3d4754648f53d341765a442523718343210cda3ad537cf7f29f7a8692eb2cf9f","title":"Agent 4 Issue 83","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.710719-07:00","updated_at":"2025-10-21T00:29:10.710719-07:00","source_repo":"."} +{"id":"bd-759","content_hash":"7f5516b62b0904d8843e97c29731a014fef05f2b3d329e74c850bbf2d9fad4ee","title":"Agent 4 Issue 84","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.711151-07:00","updated_at":"2025-10-21T00:29:10.711151-07:00","source_repo":"."} +{"id":"bd-76","content_hash":"f1c910f4d5aef1eec3bc1d71d18ddd28b82a1efc7d6f552d0b21cde40d34c373","title":"Sub-task under B","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.548293-07:00","closed_at":"2025-10-16T10:07:34.130241-07:00","source_repo":"."} +{"id":"bd-760","content_hash":"c1d96f4bd43dfa32e6c9bffeb7952636b594f5ce45513a41d386b11849237103","title":"Agent 4 Issue 85","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.711584-07:00","updated_at":"2025-10-21T00:29:10.711584-07:00","source_repo":"."} +{"id":"bd-761","content_hash":"db45b7511f83f4d404fc392c264b85c48aa1cb25d0a55e3e091540d2f8a86e13","title":"Agent 4 Issue 86","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.71201-07:00","updated_at":"2025-10-21T00:29:10.71201-07:00","source_repo":"."} +{"id":"bd-762","content_hash":"7a498e5d33c0b59348d553dfc8702df0fc2e9b72cf85f99a563a7ba894c14f10","title":"Agent 4 Issue 87","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.712422-07:00","updated_at":"2025-10-21T00:29:10.712422-07:00","source_repo":"."} +{"id":"bd-763","content_hash":"ba21233b7d215af0456d5323ff92138595f07faa077322411e61e1ec1b25e0c9","title":"Agent 4 Issue 88","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.712853-07:00","updated_at":"2025-10-21T00:29:10.712853-07:00","source_repo":"."} {"id":"bd-763c","content_hash":"31265106d3d8856bdda09f00708f6efdda862abc97a14f8e2bcacc8535870099","title":"~/src/beads daemon has 'sql: database is closed' errors - zombie daemon","description":"","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-31T21:08:03.388007-07:00","updated_at":"2025-10-31T21:52:04.214274-07:00","closed_at":"2025-10-31T21:52:04.214274-07:00","source_repo":".","dependencies":[{"issue_id":"bd-763c","depends_on_id":"bd-2752a7a2","type":"discovered-from","created_at":"2025-10-31T21:08:03.388716-07:00","created_by":"stevey"}]} -{"id":"bd-76cu","content_hash":"e51879f43e91439ca39c20e52a66874f482445009a713639fe3298cb497d4016","title":"Issue 2","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T19:04:21.562329-08:00","updated_at":"2025-11-08T00:20:30.366892-08:00","closed_at":"2025-11-08T00:20:30.366892-08:00","source_repo":"."} +{"id":"bd-764","content_hash":"9a7e27ab343c6453c31a92daa6a53171e6f029a74702c84e7453f6282eacbd2b","title":"Agent 4 Issue 89","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.713279-07:00","updated_at":"2025-10-21T00:29:10.713279-07:00","source_repo":"."} +{"id":"bd-765","content_hash":"c7e88cf25e88666e1c255c3c24c5b1439b514a2d0a26278146ed57624ef35e57","title":"Agent 4 Issue 90","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.713712-07:00","updated_at":"2025-10-21T00:29:10.713712-07:00","source_repo":"."} +{"id":"bd-766","content_hash":"ca3b9d2f8149f122127aef6eb9a4d4f2aeb81c290acbe1d67342ec711dae2146","title":"Agent 4 Issue 91","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.714133-07:00","updated_at":"2025-10-21T00:29:10.714133-07:00","source_repo":"."} +{"id":"bd-767","content_hash":"ee98d83b62a2122f7bea741746d973c211c826290dc5403d30857aa37ffb9428","title":"Agent 4 Issue 92","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.714544-07:00","updated_at":"2025-10-21T00:29:10.714544-07:00","source_repo":"."} +{"id":"bd-768","content_hash":"551a14ffd0ed3db2f1d479d4b97b2f674ace4ccf436af29d96e8a5cb3058fa0a","title":"Agent 4 Issue 93","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.71498-07:00","updated_at":"2025-10-21T00:29:10.71498-07:00","source_repo":"."} +{"id":"bd-769","content_hash":"3ecb1603e1822b3c63846d0aecf77a1aefc154529feea43a590a4d91e6398a1e","title":"Agent 4 Issue 94","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.715397-07:00","updated_at":"2025-10-21T00:29:10.715397-07:00","source_repo":"."} +{"id":"bd-76cu","content_hash":"2236f911e6f321a74aa61bdf702d24949e44a68ed511d12dd011aa4103c89230","title":"Issue 2","description":"","status":"open","priority":1,"issue_type":"task","created_at":"2025-11-07T19:04:21.562329-08:00","updated_at":"2025-11-07T19:04:21.562329-08:00","source_repo":"."} +{"id":"bd-77","content_hash":"ea462c841c76e346eabcb3e78f1f6fab9307e1d1d73175fc0306b6e9e185cb70","title":"Auto-flush JSONL on CRUD operations with 5-second debounce","description":"Implemented automatic write-through from SQLite to JSONL with 5-second debouncing. After any CRUD operation (create, update, close, dep add/remove), changes are scheduled to flush to JSONL after 5 seconds of inactivity. On process exit, any pending changes are flushed immediately. This prevents .db and .jsonl from getting out of sync, solving the workflow gap where agents forget to run 'bd export'. Can be disabled with --no-auto-flush flag. Addresses bd-48.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.548459-07:00","closed_at":"2025-10-16T10:07:22.493112-07:00","source_repo":"."} +{"id":"bd-770","content_hash":"1a13edcd95ef0f68d3efe453b3aafbc8b49ac2881c8a0c9bce567eded8643724","title":"Agent 4 Issue 95","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.715821-07:00","updated_at":"2025-10-21T00:29:10.715821-07:00","source_repo":"."} +{"id":"bd-771","content_hash":"f0caafab6a0cde3bd0cddd8aadcb0a18a9c98dd749419d5848d3cdf26b63d507","title":"Agent 4 Issue 96","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.716248-07:00","updated_at":"2025-10-21T00:29:10.716248-07:00","source_repo":"."} +{"id":"bd-772","content_hash":"1bc1dd4a253ae961bd57f4fbfba48a9d405e50f537803edfe2c3f3b4b4ce104a","title":"Agent 4 Issue 97","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.716691-07:00","updated_at":"2025-10-21T00:29:10.716691-07:00","source_repo":"."} +{"id":"bd-773","content_hash":"2adeeb6f30c5a7d4904ba0ead994a1be0047a0b0da3837bdee5e7b3bfb8a2bc1","title":"Agent 4 Issue 98","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.717127-07:00","updated_at":"2025-10-21T00:29:10.717127-07:00","source_repo":"."} +{"id":"bd-774","content_hash":"9bc5714ccf37750869e97f76766369fddcd8eb96e21e9118f79a3ee9be50a6db","title":"Agent 4 Issue 99","description":"Created by agent 4","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.71759-07:00","updated_at":"2025-10-21T00:29:10.71759-07:00","source_repo":"."} +{"id":"bd-775","content_hash":"4af25800bcafbe8e1ec74a3a9f487a099621f22a377106c81b12ef07fec1df67","title":"Agent 2 Issue 76","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.675372-07:00","updated_at":"2025-10-21T00:29:10.675372-07:00","source_repo":"."} +{"id":"bd-776","content_hash":"224665c1a9c2135e3f1e1de100cfb2bd9266b2bbfdd5ab40dc56b2de0c59f315","title":"Agent 2 Issue 77","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.718564-07:00","updated_at":"2025-10-21T00:29:10.718564-07:00","source_repo":"."} +{"id":"bd-777","content_hash":"2ad84c1fad12eb1691874cd9b2909040417b88c1f885342c6801464a8b89441d","title":"Agent 2 Issue 78","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.719044-07:00","updated_at":"2025-10-21T00:29:10.719044-07:00","source_repo":"."} +{"id":"bd-778","content_hash":"4aa3d96ff184793e66915ec40563cd69181c6313cb70ad5b6f825294250e806a","title":"Agent 2 Issue 79","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.71947-07:00","updated_at":"2025-10-21T00:29:10.71947-07:00","source_repo":"."} +{"id":"bd-779","content_hash":"9ee997171b3bb37beb67a03b5389783b3e77f7cd23c33b965957837236503ef5","title":"Agent 2 Issue 80","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.719924-07:00","updated_at":"2025-10-21T00:29:10.719924-07:00","source_repo":"."} {"id":"bd-77gm","content_hash":"b227320f0cf0c889a1e0d617922c572a48eee563c9afb1662b44a22e183c0c80","title":"Import reports misleading '0 created, 0 updated' when actually importing all issues","description":"When running 'bd import' on a fresh database (no existing issues), the command reports 'Import complete: 0 created, 0 updated' even though it successfully imported all issues from the JSONL file.\n\n**Steps to reproduce:**\n1. Delete .beads/beads.db\n2. Run: bd import .beads/issues.jsonl\n3. Observe output: 'Import complete: 0 created, 0 updated'\n4. Run: bd list\n5. Confirm: All issues are actually present in the database\n\n**Expected behavior:**\nReport the actual number of issues imported, e.g., 'Import complete: 523 created, 0 updated'\n\n**Actual behavior:**\n'Import complete: 0 created, 0 updated' (misleading - makes user think import failed)\n\n**Impact:**\n- Users think import failed when it succeeded\n- Confusing during database sync operations (e.g., after git pull)\n- Makes debugging harder (can't tell if import actually worked)\n\n**Context:**\nDiscovered during VC session when syncing database after git pull. The misleading message caused confusion about whether the database was properly synced with the canonical JSONL file.","acceptance_criteria":"- Import command reports accurate count of created/updated issues\n- Fresh database import shows 'N created' where N is the actual number\n- Update operations show 'N updated' where N is the actual number changed\n- Message clearly indicates success vs failure","status":"open","priority":2,"issue_type":"bug","created_at":"2025-11-09T16:20:13.191156-08:00","updated_at":"2025-11-09T16:20:13.191156-08:00","source_repo":"."} +{"id":"bd-78","content_hash":"4537352d3f6b8d7fccde1ca3327f9665782811cc3d248884f16b6fcda7c4d494","title":"Final test","description":"Testing with new binary","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.548613-07:00","closed_at":"2025-10-16T10:07:22.488597-07:00","source_repo":"."} +{"id":"bd-780","content_hash":"857423a5b67b34ed3e0b267ff77688feff6ad655224449f6e8962ba33304aa9e","title":"Agent 2 Issue 81","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.720355-07:00","updated_at":"2025-10-21T00:29:10.720355-07:00","source_repo":"."} +{"id":"bd-781","content_hash":"c991b80d2c10c1dfb57e10da68b6b814f563b18ca25d59b4fe28ea8e146b6165","title":"Agent 2 Issue 82","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.721005-07:00","updated_at":"2025-10-21T00:29:10.721005-07:00","source_repo":"."} +{"id":"bd-782","content_hash":"e98086e9c97e80fa41a9deb9de79d28bfeca948a5c6687b58859c9951831bed0","title":"Agent 2 Issue 83","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.721459-07:00","updated_at":"2025-10-21T00:29:10.721459-07:00","source_repo":"."} +{"id":"bd-783","content_hash":"4f8bbbb8c85b4b06947f3d63ff5935dfcd7454582e069b18b6edea86bcd4c7ef","title":"Agent 2 Issue 84","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.721877-07:00","updated_at":"2025-10-21T00:29:10.721877-07:00","source_repo":"."} +{"id":"bd-784","content_hash":"ac94b7f494bd9dcc9e45aed724d72a0084e17c22bef55d4b68aae1e5e9504172","title":"Agent 2 Issue 85","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.722297-07:00","updated_at":"2025-10-21T00:29:10.722297-07:00","source_repo":"."} +{"id":"bd-785","content_hash":"9c1d94aa16c1e3d80f1cfdcf542d57bc48a4e57aa5b6305a042209d2b6f1bfd1","title":"Agent 2 Issue 86","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.722733-07:00","updated_at":"2025-10-21T00:29:10.722733-07:00","source_repo":"."} +{"id":"bd-786","content_hash":"97a72ac73904a94b624ffcb551954df16f1244f8de8f92e4ec3d1449c002d053","title":"Agent 2 Issue 87","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.723148-07:00","updated_at":"2025-10-21T00:29:10.723148-07:00","source_repo":"."} +{"id":"bd-787","content_hash":"b9ae5ff7ff53e87e02a66d305bed7b146699ec754c85caad607640caa4517d15","title":"Agent 2 Issue 88","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.723627-07:00","updated_at":"2025-10-21T00:29:10.723627-07:00","source_repo":"."} +{"id":"bd-788","content_hash":"8d7d603474694e52712f2f93640ea4c508235a263d1e0bd2aa13462d837a92c1","title":"Agent 2 Issue 89","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.724062-07:00","updated_at":"2025-10-21T00:29:10.724062-07:00","source_repo":"."} +{"id":"bd-789","content_hash":"895c8301328a2a1d15f72cb0abb4d9e8270353ac20800eeab987ac9721655664","title":"Agent 2 Issue 90","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.724477-07:00","updated_at":"2025-10-21T00:29:10.724477-07:00","source_repo":"."} {"id":"bd-78w","content_hash":"dd79ef79bf68b3a87f3a5b8d50fdfba9d6c6f7e6d728713e37dd34cf9fff835e","title":"Test Epic 2","description":"## Overview\n\n[Describe the high-level goal and scope of this epic]\n\n## Success Criteria\n\n- [ ] Criteria 1\n- [ ] Criteria 2\n- [ ] Criteria 3\n\n## Background\n\n[Provide context and motivation]\n\n## Scope\n\n**In Scope:**\n- Item 1\n- Item 2\n\n**Out of Scope:**\n- Item 1\n- Item 2\n","design":"## Architecture\n\n[Describe the overall architecture and approach]\n\n## Components\n\n- Component 1: [description]\n- Component 2: [description]\n\n## Dependencies\n\n[List external dependencies or constraints]\n","acceptance_criteria":"- [ ] All child issues are completed\n- [ ] Integration tests pass\n- [ ] Documentation is updated\n- [ ] Code review completed\n","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-03T20:15:03.878216-08:00","updated_at":"2025-11-05T00:25:06.566242-08:00","closed_at":"2025-11-05T00:25:06.566242-08:00","source_repo":".","labels":["epic"]} -{"id":"bd-7a00c94e","content_hash":"5ea01765a9fdf5c4c75f485b1db26c942eaaa762f1cdcb497306a78c65132721","title":"Rapid 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-29T19:11:57.430725-07:00","updated_at":"2025-11-07T23:21:44.923877-08:00","closed_at":"2025-11-07T23:18:52.352188-08:00","source_repo":"."} +{"id":"bd-79","content_hash":"9f6ba28ffe402e2eed9ef46c22a663dcc8b88d0e514ec4d2830b80b98e52d206","title":"Fix renumbering temp ID collision bug","description":"bd renumber --force fails with UNIQUE constraint error when trying to assign temp IDs:\n\nError: failed to rename bd-59 to temp ID: failed to update issue ID: constraint failed: UNIQUE constraint failed: issues.id (1555)\n\nThe temp ID generation logic in renumber.go doesn't guarantee unique IDs. Need to:\n1. Use a temp ID strategy that can't collide (e.g., prefix with 'temp-', use UUIDs, or use high numbers like 999999+)\n2. Verify temp IDs don't exist before using them\n3. Add test case for renumbering with various ID gaps\n\nReproduced when renumbering 107 issues with gaps (IDs 1-344 compacting to 1-107).","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-16T21:13:38.519915-07:00","updated_at":"2025-10-21T00:25:40.548762-07:00","closed_at":"2025-10-16T21:19:18.49592-07:00","source_repo":"."} +{"id":"bd-790","content_hash":"b28b99911771024fec1e1a74ad6b91697d0c35901ca84d92cde5ec6c5aee2daf","title":"Agent 2 Issue 91","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.724913-07:00","updated_at":"2025-10-21T00:29:10.724913-07:00","source_repo":"."} +{"id":"bd-791","content_hash":"44f182ff0abe47bc7af3e0326a158daeec41091a2df61ff91f4ab9e4d12bcb95","title":"Agent 2 Issue 92","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.725345-07:00","updated_at":"2025-10-21T00:29:10.725345-07:00","source_repo":"."} +{"id":"bd-792","content_hash":"67f13c3faee184617f5d676d58a209e87011c0438e2fcfb1f45d502d0e812e83","title":"Agent 2 Issue 93","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.725774-07:00","updated_at":"2025-10-21T00:29:10.725774-07:00","source_repo":"."} +{"id":"bd-793","content_hash":"efa84ef3177914d976c46f5c117b2b24963482739b21ca41e11aa27c5da0ddf3","title":"Agent 2 Issue 94","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.726217-07:00","updated_at":"2025-10-21T00:29:10.726217-07:00","source_repo":"."} +{"id":"bd-794","content_hash":"5bfa1f618ba42c2225b68db0031de0f6ee091e4b48760e17139bbc4f2155d8f8","title":"Agent 2 Issue 95","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.726648-07:00","updated_at":"2025-10-21T00:29:10.726648-07:00","source_repo":"."} +{"id":"bd-795","content_hash":"107653ff8315d33d39a48289f9163dd340cadcc468e1e1d2cf6ae7274ca8e406","title":"Agent 2 Issue 96","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.727084-07:00","updated_at":"2025-10-21T00:29:10.727084-07:00","source_repo":"."} +{"id":"bd-796","content_hash":"06c6cf5ddfe9d40c00c257556c4ac433350c00b05f765b5c757e3505ec42d00f","title":"Agent 2 Issue 97","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.727539-07:00","updated_at":"2025-10-21T00:29:10.727539-07:00","source_repo":"."} +{"id":"bd-797","content_hash":"83eeb06202e620e941ffb95571da900867323f03894df08c98c83a81bc9e6ee4","title":"Agent 2 Issue 98","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.727992-07:00","updated_at":"2025-10-21T00:29:10.727992-07:00","source_repo":"."} +{"id":"bd-798","content_hash":"aafae077d745ce0898aa910fd3fb5d9e34861953a793ca71f87ad9be03c14b61","title":"Agent 2 Issue 99","description":"Created by agent 2","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.728438-07:00","updated_at":"2025-10-21T00:29:10.728438-07:00","source_repo":"."} +{"id":"bd-799","content_hash":"49df6edc0ced37621a1a85e29fdc288c5df13c79dcb96100a6a72508b0e9a1e1","title":"Agent 6 Issue 0","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.465469-07:00","updated_at":"2025-10-21T00:29:10.465469-07:00","source_repo":"."} +{"id":"bd-7a00c94e","content_hash":"5ea01765a9fdf5c4c75f485b1db26c942eaaa762f1cdcb497306a78c65132721","title":"Rapid 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-29T19:11:57.430725-07:00","updated_at":"2025-11-08T01:49:23.458912-08:00","closed_at":"2025-11-07T23:18:52.352188-08:00","source_repo":"."} {"id":"bd-7a2b58fc","content_hash":"02b9e5c0f7a58576876637f09cf67a97d180686a216d53b15351ca2c099c8e5f","title":"Implement clone-scoped ID allocation to prevent N-way collisions","description":"## Problem\nCurrent ID allocation uses per-clone atomic counters (issue_counters table) that sync based on local database state. In N-way collision scenarios:\n- Clone B sees {test-1} locally, allocates test-2\n- Clone D sees {test-1, test-2, test-3} locally, allocates test-4\n- When same content gets assigned test-2 and test-4, convergence fails\n\nRoot cause: Each clone independently allocates IDs without global coordination, leading to overlapping assignments for the same content.\n\n## Solution\nAdd clone UUID to ID allocation to make every ID globally unique:\n\n**Current format:** `test-1`, `test-2`, `test-3`\n**New format:** `test-1-a7b3`, `test-2-a7b3`, `test-3-c4d9`\n\nWhere suffix is first 4 chars of clone UUID.\n\n## Implementation\n\n### 1. Add clone_identity table\n```sql\nCREATE TABLE clone_identity (\n clone_uuid TEXT PRIMARY KEY,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n);\n```\n\n### 2. Modify getNextIDForPrefix()\n```go\nfunc (s *SQLiteStorage) getNextIDForPrefix(ctx context.Context, prefix string) (string, error) {\n cloneUUID := s.getOrCreateCloneUUID(ctx)\n shortUUID := cloneUUID[:4]\n \n nextNum := s.getNextCounterForPrefix(ctx, prefix)\n return fmt.Sprintf(\"%s-%d-%s\", prefix, nextNum, shortUUID), nil\n}\n```\n\n### 3. Update ID parsing logic\nAll places that parse IDs (utils.ExtractIssueNumber, etc.) need to handle new format.\n\n### 4. Migration strategy\n- Existing IDs remain unchanged (no suffix)\n- New IDs get clone suffix automatically\n- Display layer can hide suffix in UI: `bd-cb64c226.3-a7b3` → `#42`\n\n## Benefits\n- **Zero collision risk**: Same content in different clones gets different IDs\n- **Maintains readability**: Still sequential numbering within clone\n- **No coordination needed**: Works offline, no central authority\n- **Scales to 100+ clones**: 4-char hex = 65,536 unique clones\n\n## Concerns\n- ID format change may break existing integrations\n- Need migration path for existing databases\n- Display logic needs update to hide/show suffixes appropriately\n\n## Success Criteria\n- 10+ clone collision test passes without failures\n- Existing issues continue to work (backward compatibility)\n- Documentation updated with new ID format\n- Migration guide for v1.x → v2.x\n\n## Timeline\nMedium-term (v1.1-v1.2), 2-3 weeks implementation\n\n## References\n- Related to bd-0dcea000 (immediate fix)\n- See beads_nway_test.go for failing N-way tests","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-29T20:02:47.952447-07:00","updated_at":"2025-11-06T19:36:13.971527-08:00","closed_at":"2025-11-06T19:27:29.41629-08:00","source_repo":"."} {"id":"bd-7bbc4e6a","content_hash":"22e1c05b37a94f72f0734c62fac64f56de9b2304fac262148923f6b0059bf783","title":"Add MCP server functions for repair commands","description":"Expose new repair commands via MCP server for agent access:\n\nFunctions to add:\n- beads_repair_deps()\n- beads_detect_pollution()\n- beads_validate()\n- beads_resolve_conflicts() (when implemented)\n\nUpdate integrations/beads-mcp/src/beads_mcp/server.py\n\nSee repair_commands.md lines 803-884 for design.","notes":"Implemented all three MCP server functions:\n\n1. **repair_deps(fix=False)** - Find/fix orphaned dependencies\n2. **detect_pollution(clean=False)** - Detect/clean test issues \n3. **validate(checks=None, fix_all=False)** - Run comprehensive health checks\n\nChanges:\n- Added abstract methods to BdClientBase\n- Implemented in BdCliClient (CLI execution)\n- Added NotImplementedError stubs in BdDaemonClient (falls back to CLI)\n- Created wrapper functions in tools.py\n- Registered @mcp.tool decorators in server.py\n\nAll commands tested and working with --no-daemon flag.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-07T09:49:06.993201-08:00","updated_at":"2025-11-07T21:02:55.469601-08:00","closed_at":"2025-11-07T19:38:12.152437-08:00","source_repo":"."} {"id":"bd-7bd2","content_hash":"3e2921e120a51c2ed88f11db427d6620b0c12ba5526c0023ce96b3abf3ece0f3","title":"Complete remaining sync branch daemon tests","description":"4 remaining test scenarios in daemon_sync_branch_test.go need completion:\n\n⚠️ MINOR FIXES (apply same pattern as TestSyncBranchCommitAndPush_Success):\n1. TestSyncBranchCommitAndPush_NoChanges\n - Reorder: call initMainBranch() BEFORE creating JSONL\n - Pattern: init branch → create issue → export JSONL → test\n\n2. TestSyncBranchCommitAndPush_WorktreeHealthCheck\n - Same reordering needed\n - Verify worktree corruption detection and auto-repair\n\n🔧 MORE WORK NEEDED (remote branch setup):\n3. TestSyncBranchPull_Success\n - Issue: remote doesn't have sync branch after push\n - Need to verify branch is pushed to remote correctly\n - Then test pull from clone2\n\n4. TestSyncBranchIntegration_EndToEnd\n - Full workflow: Agent A commits → Agent B pulls → Agent B commits → Agent A pulls\n - Same remote branch issue\n\nPattern to apply (from TestSyncBranchCommitAndPush_Success):\n- Call initMainBranch(t, dir) BEFORE creating issues/JSONL\n- This ensures sync branch worktree has changes to commit\n\nAcceptance:\n- All 7 tests pass\n- go test -v -run TestSyncBranch ./cmd/bd/ succeeds","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-02T16:29:29.044162-08:00","updated_at":"2025-11-02T16:39:53.277529-08:00","closed_at":"2025-11-02T16:39:53.277529-08:00","source_repo":".","dependencies":[{"issue_id":"bd-7bd2","depends_on_id":"bd-502e","type":"discovered-from","created_at":"2025-11-02T16:29:29.045104-08:00","created_by":"stevey"}]} @@ -211,24 +2450,134 @@ {"id":"bd-7e7ddffa.1","content_hash":"df6de1f6a58a995d979a7be59c2fb38800e81b96e8fa0bd39980f8bf9f1a4f37","title":"bd resolve-conflicts - Git merge conflict resolver","description":"Automatically resolve JSONL merge conflicts.\n\nModes:\n- Mechanical: ID remapping (no AI)\n- AI-assisted: Smart merge/keep decisions\n- Interactive: Review each conflict\n\nHandles \u003c\u003c\u003c\u003c\u003c\u003c\u003c conflict markers in .beads/beads.jsonl\n\nFiles: cmd/bd/resolve_conflicts.go (new)","status":"open","priority":1,"issue_type":"task","created_at":"2025-10-28T14:48:30.083642-07:00","updated_at":"2025-10-30T17:12:58.220145-07:00","source_repo":".","dependencies":[{"issue_id":"bd-7e7ddffa.1","depends_on_id":"bd-7e7ddffa","type":"parent-child","created_at":"2025-10-29T19:58:28.847736-07:00","created_by":"stevey"}]} {"id":"bd-7eed","content_hash":"38bc75490042cd3b3dea4dd9c7fd0ce576212b2c31ccf3d51992d1dc73b0fbd9","title":"Remove obsolete stale.go command (executor tables never implemented)","description":"","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-10-31T21:27:05.555369-07:00","updated_at":"2025-10-31T21:27:11.427631-07:00","closed_at":"2025-10-31T21:27:11.427631-07:00","source_repo":"."} {"id":"bd-7fe8","content_hash":"106aa3a1717d3c2a6ff518a8881976fd70911b006714b04f47327959d7ca1444","title":"Fix linting error in migrate.go","description":"Linter reports error:\n```\ncmd/bd/migrate.go:647:37: cleanupWALFiles - result 0 (error) is always nil (unparam)\n```\n\nThe `cleanupWALFiles` function always returns nil, so the error return type should be removed or the function should actually return errors when appropriate.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-11-02T09:29:37.279747-08:00","updated_at":"2025-11-02T09:46:52.18793-08:00","closed_at":"2025-11-02T09:46:52.18793-08:00","source_repo":".","dependencies":[{"issue_id":"bd-7fe8","depends_on_id":"bd-1231","type":"blocks","created_at":"2025-11-02T09:29:37.280881-08:00","created_by":"stevey"}]} -{"id":"bd-7kua","content_hash":"3eced3edc7bf75e6a01bac566adf0d0f020dcfd8220fe56baf26419e0ffa6c4b","title":"Reduce sync rounds in multiclone tests","description":"Analyze and reduce the number of sync rounds in hash multiclone tests.\n\nCurrent state:\n- TestHashIDs_MultiCloneConverge: 1 round of syncs across 3 clones\n- TestHashIDs_IdenticalContentDedup: 2 rounds across 2 clones\n\nInvestigation needed:\n- Profile to see how much time each sync takes\n- Determine minimum rounds needed for convergence\n- Consider making rounds configurable via env var\n\nFile: beads_hash_multiclone_test.go:70, :132","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-04T01:24:18.405038-08:00","updated_at":"2025-11-04T10:26:34.449434-08:00","closed_at":"2025-11-04T10:26:34.449434-08:00","source_repo":".","dependencies":[{"issue_id":"bd-7kua","depends_on_id":"bd-l5gq","type":"blocks","created_at":"2025-11-04T01:24:18.405883-08:00","created_by":"daemon"}]} -{"id":"bd-7so1","content_hash":"2f63a89a752e2cf59ebdbd58b2a5aca9f6b7bac5c4e5f05656c7bbe2485f92e2","title":"Issue 1 to reopen","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T19:04:20.12433-08:00","updated_at":"2025-11-08T00:20:30.159616-08:00","closed_at":"2025-11-08T00:20:30.159616-08:00","source_repo":"."} +{"id":"bd-7kua","content_hash":"2dedc0d0d5444db45ab146cc59f3c51bc4bfc3c864da43d3c086a9153613c29f","title":"Reduce sync rounds in multiclone tests","description":"Analyze and reduce the number of sync rounds in hash multiclone tests.\n\nCurrent state:\n- TestHashIDs_MultiCloneConverge: 1 round of syncs across 3 clones\n- TestHashIDs_IdenticalContentDedup: 2 rounds across 2 clones\n\nInvestigation needed:\n- Profile to see how much time each sync takes\n- Determine minimum rounds needed for convergence\n- Consider making rounds configurable via env var\n\nFile: beads_hash_multiclone_test.go:70, :132","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-04T01:24:18.405038-08:00","updated_at":"2025-11-04T10:26:34.449434-08:00","closed_at":"2025-11-04T10:26:34.449434-08:00","source_repo":".","dependencies":[{"issue_id":"bd-7kua","depends_on_id":"bd-l5gq","type":"blocks","created_at":"2025-11-04T01:24:18.405883-08:00","created_by":"daemon"}]} +{"id":"bd-7so1","content_hash":"65e5dcb12407f83aad0c37c06127fcf76cf00bf581adab726b221da75c6c7f74","title":"Issue 1 to reopen","description":"","status":"open","priority":1,"issue_type":"task","created_at":"2025-11-07T19:04:20.12433-08:00","updated_at":"2025-11-07T19:04:20.224399-08:00","source_repo":"."} +{"id":"bd-8","content_hash":"f8001fe0ae589b40c335a9a083d09e33bcce9298596065825094f4aa23eee5b2","title":"Simplify getNextID SQL query parameters","description":"Query passes prefix four times to same SQL query. Works but fragile if query changes. Consider simplifying SQL to require fewer parameters. Location: internal/storage/sqlite/sqlite.go:73-78","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.548923-07:00","closed_at":"2025-10-16T10:07:34.038708-07:00","source_repo":"."} +{"id":"bd-80","content_hash":"e7d1543fb4458c206a0fe633a1f017281646ee982da63799c59004ebe0b7f0cd","title":"Implement daemon architecture for concurrent access","description":"Multiple AI agents running concurrently cause database corruption, git lock contention, and data loss. Implement a daemon-based architecture where bd daemon owns SQLite (single writer) and all bd commands become RPC clients when daemon is running. Batches git operations to prevent index.lock contention. Maintains backward compatibility with graceful fallback to direct mode. See DAEMON_DESIGN.md for full details.","design":"Architecture: Unix socket RPC with JSON payloads. bd commands auto-detect daemon socket, fall back to direct mode if not present. Daemon serializes all SQLite writes and batches git exports every 5 seconds. Per-repo daemon using .beads/bd.sock location.\n\nImplementation phases:\n1. RPC protocol infrastructure (protocol.go, server.go, client.go)\n2. Client auto-detection and fallback\n3. Daemon SQLite ownership and git batching\n4. Atomic operations and transactions","acceptance_criteria":"- 4 concurrent agents can run without errors\n- No UNIQUE constraint failures on ID generation\n- No git index.lock errors \n- SQLite counter stays in sync with actual issues\n- Graceful fallback when daemon not running\n- All existing tests pass\n- Documentation updated","status":"closed","priority":0,"issue_type":"epic","created_at":"2025-10-16T21:54:48.794119-07:00","updated_at":"2025-10-21T00:25:40.549073-07:00","closed_at":"2025-10-16T23:45:02.505335-07:00","source_repo":"."} +{"id":"bd-800","content_hash":"d58a832162cd303300a09c8e4aad8dbc5a87e8bc698e817eb683a79aeb63781c","title":"Agent 6 Issue 1","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.729436-07:00","updated_at":"2025-10-21T00:29:10.729436-07:00","source_repo":"."} +{"id":"bd-801","content_hash":"10022e0a919674bf8ad763754c55fc6856873d2ceb6067ad2c648e9d3a4ecb31","title":"Agent 6 Issue 2","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.729905-07:00","updated_at":"2025-10-21T00:29:10.729905-07:00","source_repo":"."} +{"id":"bd-802","content_hash":"0858997f9cdd0967bc75ab7de0949372fd0cd6ecd8ac84cc5e5561dad0b22dd9","title":"Agent 6 Issue 3","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.730376-07:00","updated_at":"2025-10-21T00:29:10.730376-07:00","source_repo":"."} +{"id":"bd-803","content_hash":"0d5d0d8f311a29a6ec794f8a61b88388d0203f577be150329056dda63caa36dc","title":"Agent 6 Issue 4","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.730859-07:00","updated_at":"2025-10-21T00:29:10.730859-07:00","source_repo":"."} +{"id":"bd-804","content_hash":"005ee0688fffdb4273b04c2f4818fa033845ae1da82f57bceca8f38537644791","title":"Agent 6 Issue 5","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.731311-07:00","updated_at":"2025-10-21T00:29:10.731311-07:00","source_repo":"."} +{"id":"bd-805","content_hash":"3e4961a5511982c73aa54bbee670fc8ad000d7c1a1c0dfb3cf6a27ad99b22d57","title":"Agent 6 Issue 6","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.731768-07:00","updated_at":"2025-10-21T00:29:10.731768-07:00","source_repo":"."} +{"id":"bd-806","content_hash":"6f89b881583c3cd919ff835a1c2c732661cd2d99978c8869b3058e6f2f9e7720","title":"Agent 6 Issue 7","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.732228-07:00","updated_at":"2025-10-21T00:29:10.732228-07:00","source_repo":"."} +{"id":"bd-807","content_hash":"2e1e301947f39d3f87d389bcbd4754a1b1e391b923814540ec74c8857d22e9e7","title":"Agent 6 Issue 8","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.732686-07:00","updated_at":"2025-10-21T00:29:10.732686-07:00","source_repo":"."} {"id":"bd-8072","content_hash":"32bd0e33433bbf535cb56eb47828ac80ebecc57512e9039420a39cd2342790d2","title":"Add import.orphan_handling config option","description":"Add configuration option to control orphan handling behavior: 'strict' (fail on missing parent, current behavior), 'resurrect' (auto-resurrect from JSONL, recommended default), 'skip' (skip orphaned issues with warning), 'allow' (import orphans without validation). Update CONFIG.md documentation.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-04T12:32:08.569239-08:00","updated_at":"2025-11-05T00:44:27.948157-08:00","closed_at":"2025-11-05T00:44:27.94816-08:00","source_repo":"."} +{"id":"bd-808","content_hash":"2a1efb866f86e37fa3553d3e886c3b5bb19df2a5705019fc8f2b6644a6cf77d7","title":"Agent 6 Issue 9","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.733142-07:00","updated_at":"2025-10-21T00:29:10.733142-07:00","source_repo":"."} +{"id":"bd-809","content_hash":"7cf68bf2a3b72428424e130737b224f9afe03d1d6428e3292de5b51ed8ca506d","title":"Agent 6 Issue 10","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.733609-07:00","updated_at":"2025-10-21T00:29:10.733609-07:00","source_repo":"."} +{"id":"bd-81","content_hash":"b493890746f60057e5920b842ef0528e052d365eb729fea09ae60e7338c18d1c","title":"Phase 1: Implement RPC protocol infrastructure","description":"Create the foundation for daemon-client communication using Unix sockets and JSON.\n\nNew files to create:\n- internal/rpc/protocol.go - Request/response types, operations enum\n- internal/rpc/server.go - Unix socket server that daemon runs\n- internal/rpc/client.go - Client library for bd commands to use\n\nSocket location: .beads/bd.sock (per-repo)\n\nOperations to support initially: create, update, list, show, close, ready, stats","design":"protocol.go defines:\n- Request struct with Operation string and Args json.RawMessage\n- Response struct with Success bool, Data json.RawMessage, Error string\n- Operation constants for all bd commands\n\nserver.go implements:\n- Unix socket listener on .beads/bd.sock\n- Request handler that dispatches to storage layer\n- Graceful shutdown on signals\n\nclient.go implements:\n- TryConnect() to detect running daemon\n- Execute(operation, args) to send RPC request\n- Connection pooling/reuse for performance","acceptance_criteria":"- internal/rpc package compiles without errors\n- Server can accept and respond to simple ping request\n- Client can connect to socket and receive response\n- Unit tests for protocol serialization/deserialization\n- Socket cleanup on server shutdown","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-16T21:54:48.83081-07:00","updated_at":"2025-10-21T00:25:40.54924-07:00","closed_at":"2025-10-16T22:02:40.675096-07:00","source_repo":"."} +{"id":"bd-810","content_hash":"f1067b7ce6c8010bf82d14f35d904ec69ac69ca1083958686b997e9e070466c3","title":"Agent 6 Issue 11","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.734341-07:00","updated_at":"2025-10-21T00:29:10.734341-07:00","source_repo":"."} +{"id":"bd-811","content_hash":"6a6499ac9b1da23f50cae96691714afe7ac5e171b1a4d0c7a924fc3208df985f","title":"Agent 6 Issue 12","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.734809-07:00","updated_at":"2025-10-21T00:29:10.734809-07:00","source_repo":"."} +{"id":"bd-812","content_hash":"e50536fc48a0e7d8422593be25e52387ff3526765f6e90a64cea81900b9bf2e0","title":"Agent 6 Issue 13","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.735266-07:00","updated_at":"2025-10-21T00:29:10.735266-07:00","source_repo":"."} {"id":"bd-812a","content_hash":"0d802dec82dff53e88e68bb4f1fef75754165a590996ff8b1578ff93e781622d","title":"Add unit tests for import ordering","description":"Test topological sort: import [child, parent] should succeed, import [parent.1.2, parent, parent.1] should sort correctly. Verify depth-based batching works. Test max depth limits.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-04T12:32:21.278448-08:00","updated_at":"2025-11-05T00:08:42.812949-08:00","closed_at":"2025-11-05T00:08:42.812952-08:00","source_repo":"."} +{"id":"bd-813","content_hash":"b6ea21e53acf1e02f8622c15f864bd969f163278151e549d6df01ef960051457","title":"Agent 6 Issue 14","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.735697-07:00","updated_at":"2025-10-21T00:29:10.735697-07:00","source_repo":"."} +{"id":"bd-814","content_hash":"4d0750b3d0ba518a5f92fa03d16b91256b9219acae7c098ec81e499fa1a19b99","title":"Agent 6 Issue 15","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.736116-07:00","updated_at":"2025-10-21T00:29:10.736116-07:00","source_repo":"."} +{"id":"bd-815","content_hash":"68fb2c5a06ba51a57789e24f3986f53d8c3a1ded9596c8798ae98b7af38f3a7a","title":"Agent 6 Issue 16","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.73654-07:00","updated_at":"2025-10-21T00:29:10.73654-07:00","source_repo":"."} +{"id":"bd-816","content_hash":"874b0a579e11428bcd824138416ede56fde511bbc8396294c1ac17603cf93ea2","title":"Agent 6 Issue 17","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.736969-07:00","updated_at":"2025-10-21T00:29:10.736969-07:00","source_repo":"."} +{"id":"bd-817","content_hash":"4f20ce86adad309d670216fbed2cecf28a113da67821103baad14858d6826872","title":"Agent 6 Issue 18","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.737427-07:00","updated_at":"2025-10-21T00:29:10.737427-07:00","source_repo":"."} +{"id":"bd-818","content_hash":"711239fc47a24a3c60f5f890a70163e2e7e11be25213c810c6d8b5e2574e3269","title":"Agent 6 Issue 19","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.73787-07:00","updated_at":"2025-10-21T00:29:10.73787-07:00","source_repo":"."} +{"id":"bd-819","content_hash":"1c102656dbeff8213db50c0947e1a67770b915a15871657785b205e1df09727b","title":"Agent 6 Issue 20","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.73832-07:00","updated_at":"2025-10-21T00:29:10.73832-07:00","source_repo":"."} {"id":"bd-81a","content_hash":"0f43da9e36bc3c5db20f302b82021377685a9425f519a36bab5a2cf1b85f13d8","title":"Add programmatic tip injection API","description":"Allow tips to be programmatically injected at runtime based on detected conditions. This enables dynamic tips (not just pre-defined ones) to be shown with custom priority and frequency.","design":"## API Design\n\nAdd to `cmd/bd/tips.go`:\n\n```go\n// InjectTip adds a dynamic tip to the registry at runtime\nfunc InjectTip(id, message string, priority int, frequency time.Duration, probability float64, condition func() bool) {\n tipsMutex.Lock()\n defer tipsMutex.Unlock()\n \n tips = append(tips, Tip{\n ID: id,\n Condition: condition,\n Message: message,\n Frequency: frequency,\n Priority: priority,\n Probability: probability,\n })\n}\n\n// RemoveTip removes a tip from the registry\nfunc RemoveTip(id string) {\n tipsMutex.Lock()\n defer tipsMutex.Unlock()\n \n for i, tip := range tips {\n if tip.ID == id {\n tips = append(tips[:i], tips[i+1:]...)\n return\n }\n }\n}\n```\n\n## Use Cases\n\n### Example 1: Critical Security Update\n```go\n// In bd version check code\nif criticalSecurityUpdate {\n InjectTip(\n \"security_update\",\n fmt.Sprintf(\"CRITICAL: Security update available (bd %s). Update immediately!\", remoteVersion),\n 100, // Highest priority\n 0, // No frequency limit\n 1.0, // Always show (100% probability)\n func() bool { return true },\n )\n}\n```\n\n### Example 2: New Version Available\n```go\n// In bd version check code\nif remoteVersion \u003e currentVersion {\n InjectTip(\n \"upgrade_available\",\n fmt.Sprintf(\"New bd version %s available (you have %s). Run: go install github.com/steveyegge/beads/cmd/bd@latest\", remoteVersion, currentVersion),\n 90, // High priority\n 7 * 24 * time.Hour, // Weekly\n 0.8, // 80% probability (frequent but not always)\n func() bool { return true },\n )\n}\n```\n\n### Example 3: Large Issue Count Suggestion\n```go\n// In bd list code\nif issueCount \u003e 100 {\n InjectTip(\n \"use_filters\",\n \"You have many issues. Use filters: 'bd list --status=open --priority=1'\",\n 50, // Medium priority\n 14 * 24 * time.Hour, // Bi-weekly\n 0.4, // 40% probability (occasional suggestion)\n func() bool { return true },\n )\n}\n```\n\n### Example 4: No Dependencies Used\n```go\n// After analyzing project\nif hasIssues \u0026\u0026 noDependenciesCreated {\n InjectTip(\n \"try_dependencies\",\n \"Try using dependencies: 'bd dep \u003cissue\u003e \u003cblocks-issue\u003e' to track blockers\",\n 30, // Low priority\n 30 * 24 * time.Hour, // Monthly\n 0.3, // 30% probability (low-key suggestion)\n func() bool { return true },\n )\n}\n```\n\n## Probability Guidelines\n\n- **1.0 (100%)**: Critical security, breaking changes, data loss prevention\n- **0.7-0.9 (70-90%)**: Important updates, major new features\n- **0.4-0.6 (40-60%)**: General tips, workflow improvements, feature discovery\n- **0.1-0.3 (10-30%)**: Nice-to-know features, advanced tips, optional optimizations\n\n## Thread Safety\n- Use mutex to protect tip registry\n- Safe for concurrent command execution\n- Deterministic testing via BEADS_TIP_SEED env var","acceptance_criteria":"- InjectTip() API exists and is documented\n- RemoveTip() API exists\n- Thread-safe with mutex protection\n- Can inject tips from any command\n- Injected tips participate in priority/frequency rotation\n- Unit tests for injection API\n- Example usage in code comments","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-11T23:29:46.645583-08:00","updated_at":"2025-11-11T23:50:12.209135-08:00","source_repo":".","dependencies":[{"issue_id":"bd-81a","depends_on_id":"bd-d4i","type":"blocks","created_at":"2025-11-11T23:29:46.646327-08:00","created_by":"daemon"}]} {"id":"bd-81abb639","content_hash":"ddf6496e654e8cd8e69620a08e2d607d8c8bda152a8dc884908e29747d39376d","title":"Investigate jujutsu VCS as potential solution for conflict-free merging","description":"## Context\nCurrent N-way collision resolution struggles with Git line-based merge model. When 5+ clones create issues with same ID, Git merge conflicts require manual resolution, and our collision resolver can fail during convergence rounds.\n\n## Research Question\nCould jujutsu (jj) provide better conflict handling for JSONL files?\n\n## Jujutsu Overview\n- Next-gen VCS built on libgit2\n- Designed to handle conflicts as first-class citizens\n- Supports conflict-free replicated data types (CRDTs) in some scenarios\n- Better handling of concurrent edits\n- Can work with Git repos (compatible with existing infrastructure)\n\n## Investigation Tasks\n1. JSONL Merge Behavior - How does jj handle line-by-line JSONL conflicts?\n2. Integration Feasibility - Can beads use jj as backend while maintaining Git compatibility?\n3. Conflict Resolution Model - Does jj conflict model map to our collision resolution?\n4. Operational Transform Support - Does jj implement operational transforms?\n\n## Deliverables\n1. Technical report on jj merge algorithm for JSONL\n2. Proof-of-concept: 5-clone collision test using jj instead of Git\n3. Performance comparison: Git vs jj for beads workload\n4. Recommendation: Adopt, experiment further, or abandon\n\n## References\n- https://github.com/martinvonz/jj\n- Related to bd-e6d71828, bd-7a2b58fc","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T20:02:47.953008-07:00","updated_at":"2025-10-30T17:12:58.19464-07:00","closed_at":"2025-10-29T20:47:52.910985-07:00","source_repo":"."} -{"id":"bd-824","content_hash":"685ecf3e0547bc2b108df592408e8b77d5e436543d4e5a1a3f2c767f1758ae53","title":"Add migration guide for library consumers","description":"The contributor-workflow-analysis.md has excellent migration examples for CLI users (lines 508-549) but lacks examples for library consumers like VC that use beadsLib in Go/TypeScript code.\n\nLibrary consumers need to know:\n- Whether their existing code continues to work unchanged (backward compatibility)\n- How config.toml is automatically read (transparent hydration)\n- When and how to use explicit multi-repo configuration\n- What happens if config.toml doesn't exist (defaults)\n\nExample needed:\n```go\n// Before (v0.17.3)\nstore, err := beadsLib.NewSQLiteStorage(\".beads/vc.db\")\n\n// After (v0.18.0 with multi-repo) - still works!\nstore, err := beadsLib.NewSQLiteStorage(\".beads/vc.db\")\n// Automatically reads .beads/config.toml if present\n\n// Explicit multi-repo (if needed)\ncfg := beadsLib.Config{\n Primary: \".beads/vc.db\",\n Additional: []string{\"~/.beads-planning\"},\n}\nstore, err := beadsLib.NewStorageWithConfig(cfg)\n```","acceptance_criteria":"- Section added to contributor-workflow-analysis.md for library consumers\n- Code examples showing backward compatibility\n- Code examples showing explicit multi-repo configuration\n- Guidance on when library consumers should use multi-repo vs single-repo","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:17.748337-08:00","updated_at":"2025-11-05T14:15:44.154675-08:00","closed_at":"2025-11-05T14:15:44.154675-08:00","source_repo":"."} +{"id":"bd-82","content_hash":"42d10b6fa6b4a6577976b4e742f59c22df6f759b6017deb3a991a04530944f48","title":"Phase 2: Add client auto-detection in bd commands","description":"Modify all bd commands to detect if daemon is running and route through RPC client if available, otherwise fall back to direct storage access.\n\nChanges needed:\n- Update cmd/bd/main.go to check for daemon socket on startup\n- Wrap storage calls with TryConnect logic\n- Ensure all commands work identically in both modes\n- Add --no-daemon flag to force direct mode\n\nThis maintains backward compatibility while enabling daemon mode.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-16T22:47:36.185502-07:00","updated_at":"2025-10-21T00:25:40.54941-07:00","closed_at":"2025-10-16T23:05:11.299018-07:00","source_repo":"."} +{"id":"bd-820","content_hash":"99bcbab7414880957487946c6a48988d42627240ee4a46739265c008bc3d6c5e","title":"Agent 6 Issue 21","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.738744-07:00","updated_at":"2025-10-21T00:29:10.738744-07:00","source_repo":"."} +{"id":"bd-821","content_hash":"a49b46c61e22e58e62467de363935d6aa11f2afc7f826780cf37ce1f6d215bf4","title":"Agent 6 Issue 22","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.739181-07:00","updated_at":"2025-10-21T00:29:10.739181-07:00","source_repo":"."} +{"id":"bd-822","content_hash":"e7fc8930a990d491d3eb99a177e595047f9bcdd1067388bd9de5ae46927f27ae","title":"Agent 6 Issue 23","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.739624-07:00","updated_at":"2025-10-21T00:29:10.739624-07:00","source_repo":"."} +{"id":"bd-823","content_hash":"ca70bd9db4f3a09691ff4612a1a090e20b3ef5916ab853ce9f3e840579499f3f","title":"Agent 6 Issue 24","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.740049-07:00","updated_at":"2025-10-21T00:29:10.740049-07:00","source_repo":"."} +{"id":"bd-824","content_hash":"ba893642ee6145900797db1937943f5dc38e848ed85e74307bcfa0352c2130a6","title":"Add migration guide for library consumers","description":"The contributor-workflow-analysis.md has excellent migration examples for CLI users (lines 508-549) but lacks examples for library consumers like VC that use beadsLib in Go/TypeScript code.\n\nLibrary consumers need to know:\n- Whether their existing code continues to work unchanged (backward compatibility)\n- How config.toml is automatically read (transparent hydration)\n- When and how to use explicit multi-repo configuration\n- What happens if config.toml doesn't exist (defaults)\n\nExample needed:\n```go\n// Before (v0.17.3)\nstore, err := beadsLib.NewSQLiteStorage(\".beads/vc.db\")\n\n// After (v0.18.0 with multi-repo) - still works!\nstore, err := beadsLib.NewSQLiteStorage(\".beads/vc.db\")\n// Automatically reads .beads/config.toml if present\n\n// Explicit multi-repo (if needed)\ncfg := beadsLib.Config{\n Primary: \".beads/vc.db\",\n Additional: []string{\"~/.beads-planning\"},\n}\nstore, err := beadsLib.NewStorageWithConfig(cfg)\n```","acceptance_criteria":"- Section added to contributor-workflow-analysis.md for library consumers\n- Code examples showing backward compatibility\n- Code examples showing explicit multi-repo configuration\n- Guidance on when library consumers should use multi-repo vs single-repo","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.740511-07:00","updated_at":"2025-11-12T10:57:44.253014-08:00","closed_at":"2025-11-05T14:15:44.154675-08:00","source_repo":"."} +{"id":"bd-825","content_hash":"ea384c1774b69ac4251b958c7f7da66e36d6fdc2e5b37dbd39bb81f1e1871fda","title":"Agent 6 Issue 26","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.740985-07:00","updated_at":"2025-10-21T00:29:10.740985-07:00","source_repo":"."} +{"id":"bd-826","content_hash":"edd219fadc5590be468ec86072089ff56b40a5bf343ef9736a2c170dbe1acdca","title":"Agent 6 Issue 27","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.741443-07:00","updated_at":"2025-10-21T00:29:10.741443-07:00","source_repo":"."} +{"id":"bd-827","content_hash":"adcf0e04f9b8c7136fe4be3505f623043e3ec30c2fd79664d451a1d67f65e84d","title":"Agent 6 Issue 28","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.741928-07:00","updated_at":"2025-10-21T00:29:10.741928-07:00","source_repo":"."} +{"id":"bd-828","content_hash":"e61b17244ad0da586572aa40fa0433c46f709b842194d78d56f732ea4f27e18b","title":"Agent 6 Issue 29","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.74238-07:00","updated_at":"2025-10-21T00:29:10.74238-07:00","source_repo":"."} +{"id":"bd-829","content_hash":"3709342b25f08bffe7c29e6b4193376b44d02111fed73beb3f853ecc3913beeb","title":"Agent 6 Issue 30","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.742826-07:00","updated_at":"2025-10-21T00:29:10.742826-07:00","source_repo":"."} {"id":"bd-82dv","content_hash":"a5f24bc24c6b85c34577386af16ec2f20dc0b7816a91f484169e6e06bb46d1d3","title":"cmd/bd tests fail without -short flag (parallel test deadlock)","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-08T22:58:38.72748-08:00","updated_at":"2025-11-09T12:54:44.557562-08:00","closed_at":"2025-11-09T12:54:44.557562-08:00","source_repo":"."} -{"id":"bd-833559b3","content_hash":"9082c986207b9df7a7a4dc87a53007849e2b9f6e92f3bea41e22d6a14f1f6f42","title":"bd validate - Comprehensive health check","description":"Run all validation checks in one command.\n\nChecks:\n- Duplicates\n- Orphaned dependencies\n- Test pollution\n- Git conflicts\n\nSupports --fix-all for auto-repair.\n\nDepends on bd-cbed9619.1, bd-0dcea000, bd-2752a7a2, bd-9826b69a.\n\nFiles: cmd/bd/validate.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T20:02:47.957692-07:00","updated_at":"2025-11-05T00:16:42.294117-08:00","closed_at":"2025-11-05T00:16:42.294117-08:00","source_repo":"."} +{"id":"bd-83","content_hash":"dedcd44420320495c412a84b4627a6695e8fbeaeccb47e3164bf4bc8e8bc020b","title":"Phase 3: Implement daemon command with SQLite ownership","description":"Create 'bd daemon' command that starts the RPC server and owns the SQLite database.\n\nImplementation:\n- Add cmd/bd/daemon.go with start/stop/status subcommands\n- Daemon holds exclusive SQLite connection\n- Integrates git sync loop (batch exports every 5 seconds)\n- PID file management for daemon lifecycle\n- Logging for daemon operations\n\nSocket location: .beads/bd.sock per repository","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-16T22:47:42.86546-07:00","updated_at":"2025-10-21T00:25:40.549577-07:00","closed_at":"2025-10-16T23:18:57.600602-07:00","source_repo":"."} +{"id":"bd-830","content_hash":"8538a35f5b6d74ceaa9ab2ecfd6489e311a12914664a808597d8a6be78be3587","title":"Agent 6 Issue 31","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.743283-07:00","updated_at":"2025-10-21T00:29:10.743283-07:00","source_repo":"."} +{"id":"bd-831","content_hash":"a630f13a4c9e91b5f8416f9983931c0ae80fa1ce52beba858266fabeffb179ad","title":"Agent 6 Issue 32","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.743723-07:00","updated_at":"2025-10-21T00:29:10.743723-07:00","source_repo":"."} +{"id":"bd-832","content_hash":"1a9eb8ebfcb1e6fa278c4d17a16c16534df12700f83d6b386c48c9ba4ba0390f","title":"Agent 6 Issue 33","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.744163-07:00","updated_at":"2025-10-21T00:29:10.744163-07:00","source_repo":"."} +{"id":"bd-833","content_hash":"52dd11848400f34f6b4361a96763e282c52d97c000a764663c45aed114a8ab56","title":"Agent 6 Issue 34","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.744607-07:00","updated_at":"2025-10-21T00:29:10.744607-07:00","source_repo":"."} +{"id":"bd-833559b3","content_hash":"d4b0ded6c4696813257f7e3fa84913e3e159690b74f78c909e68debae8d1e727","title":"bd validate - Comprehensive health check","description":"Run all validation checks in one command.\n\nChecks:\n- Duplicates\n- Orphaned dependencies\n- Test pollution\n- Git conflicts\n\nSupports --fix-all for auto-repair.\n\nDepends on bd-cbed9619.1, bd-0dcea000, bd-2752a7a2, bd-9826b69a.\n\nFiles: cmd/bd/validate.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T20:02:47.957692-07:00","updated_at":"2025-11-05T00:16:42.294117-08:00","closed_at":"2025-11-05T00:16:42.294117-08:00","source_repo":"."} +{"id":"bd-834","content_hash":"bfc9b868b29a0751013e179876ac55997c958f8afbe91eedbbbf9ab926bdf430","title":"Agent 6 Issue 35","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.74506-07:00","updated_at":"2025-10-21T00:29:10.74506-07:00","source_repo":"."} +{"id":"bd-835","content_hash":"3dbf172b7e0441650721c14d91f4212be02990670f2cce43f9a892273a55fd4b","title":"Agent 6 Issue 36","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.745512-07:00","updated_at":"2025-10-21T00:29:10.745512-07:00","source_repo":"."} +{"id":"bd-836","content_hash":"d27caff0a5fd4afab7a1f4e6a76c2597639ba804a2301994c57219cadeaf27a9","title":"Agent 6 Issue 37","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.74596-07:00","updated_at":"2025-10-21T00:29:10.74596-07:00","source_repo":"."} +{"id":"bd-837","content_hash":"e5811ee12ed65350a3f5a40d82bf31e86ed8f1271f955f2813e8e451b63b68a1","title":"Agent 6 Issue 38","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.746434-07:00","updated_at":"2025-10-21T00:29:10.746434-07:00","source_repo":"."} +{"id":"bd-838","content_hash":"602cc1b56fb42cc736d50d2cebf35abfa2b8a91b54155b0e6e6fe5cb9de37820","title":"Agent 6 Issue 39","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.746921-07:00","updated_at":"2025-10-21T00:29:10.746921-07:00","source_repo":"."} +{"id":"bd-839","content_hash":"46c284ad90d80ffd9c5079dbc58b3bf83da6ccc9eafcf01f931de5285354276b","title":"Agent 6 Issue 40","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.747382-07:00","updated_at":"2025-10-21T00:29:10.747382-07:00","source_repo":"."} +{"id":"bd-84","content_hash":"bfde8b2c470cd0154c5dc5e84aa3e2f98078b3d218fcb01b635c96a4e7001a44","title":"Phase 4: Add atomic operations and stress testing","description":"Implement atomic multi-operation support and test under concurrent load.\n\nFeatures:\n- Batch/transaction API for multi-step operations\n- Request timeout and cancellation support\n- Connection pooling optimization\n- Stress tests with 4+ concurrent agents\n- Performance benchmarks vs direct mode\n- Documentation updates\n\nValidates all acceptance criteria for bd-80.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-16T22:47:49.785525-07:00","updated_at":"2025-10-21T00:25:40.549733-07:00","closed_at":"2025-10-16T23:40:29.95134-07:00","source_repo":"."} +{"id":"bd-840","content_hash":"d9de812eef08e7d239a4000a0efc96b84e6c9187279de4500e4c738ef07514ea","title":"Agent 6 Issue 41","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.747844-07:00","updated_at":"2025-10-21T00:29:10.747844-07:00","source_repo":"."} +{"id":"bd-841","content_hash":"0710f46c498faa0f41cd464008965cc32442e62ec02081b0be42fded6026291e","title":"Agent 6 Issue 42","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.748295-07:00","updated_at":"2025-10-21T00:29:10.748295-07:00","source_repo":"."} +{"id":"bd-842","content_hash":"cd7cf288c9f6965b0ba35079668bd62498bdf33adfbd0eceb158c4bb82bea335","title":"Agent 6 Issue 43","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.748742-07:00","updated_at":"2025-10-21T00:29:10.748742-07:00","source_repo":"."} +{"id":"bd-843","content_hash":"bbdf13f9ac29b4d83383dc606dd03c5231e42e4c09fa6020875faca7a1e7b1d6","title":"Agent 6 Issue 44","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.749216-07:00","updated_at":"2025-10-21T00:29:10.749216-07:00","source_repo":"."} +{"id":"bd-844","content_hash":"9df26fa24fa72a0f64a1ca4177260a9ffe92ceb8ccd3bc9aa14b3c6164de22b7","title":"Agent 6 Issue 45","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.749674-07:00","updated_at":"2025-10-21T00:29:10.749674-07:00","source_repo":"."} +{"id":"bd-845","content_hash":"a2ebbdfd192a395790fb6e0f7e5eda1bbd5f1099419ff9e0091961155e0478ec","title":"Agent 6 Issue 46","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.750161-07:00","updated_at":"2025-10-21T00:29:10.750161-07:00","source_repo":"."} +{"id":"bd-846","content_hash":"040cb657f99d61a4af2ff085590fe9f313603ef5ad0f5934dfee28b7b199c810","title":"Agent 6 Issue 47","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.750644-07:00","updated_at":"2025-10-21T00:29:10.750644-07:00","source_repo":"."} +{"id":"bd-847","content_hash":"b10bdddfb9d84ad1764fd1134a231aa5fe4999e722718643f73d8d413555cef3","title":"Agent 6 Issue 48","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.751101-07:00","updated_at":"2025-10-21T00:29:10.751101-07:00","source_repo":"."} +{"id":"bd-848","content_hash":"15b5288148edcd6bec5e71a307dd3decaa38f6d90abfbfb8e306e82dfb05d8ee","title":"Agent 6 Issue 49","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.751554-07:00","updated_at":"2025-10-21T00:29:10.751554-07:00","source_repo":"."} +{"id":"bd-849","content_hash":"81b346e0e97b611b7ecffd61ebc65ddd53e7049c8e744ec6ff888cd127049cde","title":"Agent 6 Issue 50","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.752016-07:00","updated_at":"2025-10-21T00:29:10.752016-07:00","source_repo":"."} +{"id":"bd-85","content_hash":"4fed9ae79f9c287b02e48ec5178add068b283c445b703983b956e8ad3bc6d944","title":"Add comprehensive daemon tests for RPC integration","description":"Add tests for:\n- RPC server integration (daemon accepts connections)\n- Concurrent client operations\n- Socket cleanup on shutdown\n- Server start failures (socket already exists)\n- Graceful shutdown verification\n\nThese tests were identified in bd-83 code review but not implemented yet.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-16T23:28:30.552132-07:00","updated_at":"2025-10-21T00:25:40.549901-07:00","closed_at":"2025-10-16T23:57:54.583646-07:00","source_repo":"."} +{"id":"bd-850","content_hash":"3228089d84567e6e59c2d66da0bb5ed0dbfc2226e9088d0fb35c25ce5c5b3c5d","title":"Agent 6 Issue 51","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.752465-07:00","updated_at":"2025-10-21T00:29:10.752465-07:00","source_repo":"."} {"id":"bd-8507","content_hash":"96a07fcf39392143fa9c75cbc96f54136809609f6ced80dd9581ec9144d54b1f","title":"Publish bd-wasm to npm","description":"Package and publish WASM build to npm. Child of epic bd-44d0.\n\n## Tasks\n- [ ] Optimize WASM bundle (compression)\n- [ ] Create README for npm package\n- [ ] Set up npm publishing workflow\n- [ ] Publish v0.1.0-alpha\n- [ ] Test installation in clean environment\n- [ ] Update beads AGENTS.md with installation instructions\n\n## Package Name\nbd-wasm (or @beads/wasm-cli)","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-02T18:33:31.371535-08:00","updated_at":"2025-11-05T00:55:48.757492-08:00","closed_at":"2025-11-05T00:55:48.757494-08:00","source_repo":".","dependencies":[{"issue_id":"bd-8507","depends_on_id":"bd-197b","type":"blocks","created_at":"2025-11-02T18:33:31.372224-08:00","created_by":"daemon"},{"issue_id":"bd-8507","depends_on_id":"bd-374e","type":"blocks","created_at":"2025-11-02T22:27:56.025207-08:00","created_by":"daemon"}]} +{"id":"bd-851","content_hash":"7ccb0dda5043cbfe932b1fd41efc4d2e449a8e4ff92f3cdd42af43e5cbb325a3","title":"Agent 6 Issue 52","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.752917-07:00","updated_at":"2025-10-21T00:29:10.752917-07:00","source_repo":"."} +{"id":"bd-852","content_hash":"91ef4dd663eacbb4d35ec9bd00f3c655ae74f9ef3f02210935fdb86cb636621d","title":"Agent 6 Issue 53","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.753393-07:00","updated_at":"2025-10-21T00:29:10.753393-07:00","source_repo":"."} +{"id":"bd-853","content_hash":"3b9ecfbfd4fbe33d22d41fdadb53fcc7260e9321f08802c34b888b80b37b12fc","title":"Agent 6 Issue 54","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.753844-07:00","updated_at":"2025-10-21T00:29:10.753844-07:00","source_repo":"."} {"id":"bd-8534","content_hash":"05b543a341ac0210f6025318e2eaead1da295b8d270fd17356fa3337c856607d","title":"Switch from modernc.org/sqlite to ncruces/go-sqlite3 for WASM support","description":"modernc.org/sqlite depends on modernc.org/libc which has no js/wasm support (platform-specific syscalls). Need to switch to ncruces/go-sqlite3 which wraps a WASM build of SQLite using wazero runtime.\n\nKey differences:\n- ncruces/go-sqlite3: Uses WASM build of SQLite + wazero runtime\n- modernc.org/sqlite: Pure Go translation, requires libc for syscalls\n\nThis is a prerequisite for bd-62a0 (WASM build infrastructure).","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T22:14:27.627154-08:00","updated_at":"2025-11-02T22:23:49.377223-08:00","closed_at":"2025-11-02T22:23:49.377223-08:00","source_repo":".","dependencies":[{"issue_id":"bd-8534","depends_on_id":"bd-44d0","type":"parent-child","created_at":"2025-11-02T22:23:49.555691-08:00","created_by":"stevey"}]} -{"id":"bd-85487065","content_hash":"f11f458db379288179b4c2434eacee8940eac910781a74c721c7e6e889f76bc1","title":"Add tests for internal/autoimport package","description":"Currently 0.0% coverage. Need tests for auto-import functionality that detects and imports updated JSONL files.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T14:06:18.154805-07:00","updated_at":"2025-11-08T22:42:08.862467-08:00","closed_at":"2025-11-08T18:06:25.811317-08:00","source_repo":"."} +{"id":"bd-854","content_hash":"bb9ea7996637a02e2c4b4c38854839981b51d7203545f89b4c6472b71febfe42","title":"Agent 6 Issue 55","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.754297-07:00","updated_at":"2025-10-21T00:29:10.754297-07:00","source_repo":"."} +{"id":"bd-85487065","content_hash":"f11f458db379288179b4c2434eacee8940eac910781a74c721c7e6e889f76bc1","title":"Add tests for internal/autoimport package","description":"Currently 0.0% coverage. Need tests for auto-import functionality that detects and imports updated JSONL files.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T14:06:18.154805-07:00","updated_at":"2025-11-08T18:06:25.811317-08:00","closed_at":"2025-11-08T18:06:25.811317-08:00","source_repo":"."} +{"id":"bd-855","content_hash":"11f583f0257f3385fbe8d59145c61c8fed354a3d2b0f85b3ab637be3441ada90","title":"Agent 6 Issue 56","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.754771-07:00","updated_at":"2025-10-21T00:29:10.754771-07:00","source_repo":"."} +{"id":"bd-856","content_hash":"3f3cfc2f08c51b1210f8da0d10c60687704891788e2afe33931815332adf78ae","title":"Agent 6 Issue 57","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.755226-07:00","updated_at":"2025-10-21T00:29:10.755226-07:00","source_repo":"."} +{"id":"bd-857","content_hash":"10dd9719181188198ccf5b315590137c1ce5cf128cfb42ba3a763135b584cde8","title":"Agent 6 Issue 58","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.755698-07:00","updated_at":"2025-10-21T00:29:10.755698-07:00","source_repo":"."} +{"id":"bd-858","content_hash":"54237420fb160aeff1fb3bc474315d0f1508fa35ceed36cc72724802b4360b61","title":"Agent 6 Issue 59","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.756153-07:00","updated_at":"2025-10-21T00:29:10.756153-07:00","source_repo":"."} +{"id":"bd-859","content_hash":"e4093a5cc8b3a5b27d3dabe57cdd3f5a6b81bc5767c8bc02d733b6a4fd4d9e25","title":"Agent 6 Issue 60","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.756605-07:00","updated_at":"2025-10-21T00:29:10.756605-07:00","source_repo":"."} {"id":"bd-85d1","content_hash":"a82c0064b840eacb4896f68e73650a3e99aaeaffbb2a7269a857b6c4245b5572","title":"Add integration tests for multi-repo sync","description":"Test: Clone A deletes issue, Clone B imports Clone A's JSONL. Verify Clone B handles deletion gracefully with resurrection. Test concurrent imports with same orphans (should be idempotent). Test round-trip fidelity (export→delete parent→import→verify structure).","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-04T12:32:21.410318-08:00","updated_at":"2025-11-05T00:44:27.948465-08:00","closed_at":"2025-11-05T00:44:27.948467-08:00","source_repo":"."} +{"id":"bd-86","content_hash":"b4ea5d4b3494fcf829bc73c21584dbf5c03d77878a7afcb9fd307149fe810284","title":"Investigate CWD propagation from Claude Code/Amp to MCP server","description":"","design":"## Problem\n\nMCP servers don't know which directory the user is working in within Claude Code or Amp. This causes database routing issues for beads because:\n\n1. MCP server process starts with its own CWD (wherever it was launched from)\n2. `bd` binary uses tree-walking to discover databases based on CWD\n3. Without correct CWD, `bd` discovers the wrong database or falls back to ~/.beads\n\n## Current Workaround\n\nWe're using explicit `BEADS_DB` environment variables in MCP server configuration:\n- One MCP server per repo with explicit database path\n- Works but doesn't scale (30+ repos with .beads/ directories)\n\n## Desired Solution\n\nMCP server should receive CWD context either:\n\n### Option A: Startup Time\n- Claude Code/Amp passes working directory when launching MCP server\n- MCP server uses that directory for all tool calls\n- **Question:** Is this supported in MCP protocol/implementations?\n\n### Option B: Tool Call Time \n- Each MCP tool call includes a `cwd` parameter\n- Tools use that CWD for subprocess execution\n- **Question:** Does MCP protocol support per-call context?\n\n### Option C: Hybrid\n- MCP server detects directory from Claude Code workspace/project\n- Tools accept optional `cwd` override parameter\n\n## Investigation Steps\n\n1. Review MCP protocol specification for context passing\n2. Check Claude Code MCP implementation for CWD handling\n3. Check Amp MCP implementation for CWD handling \n4. Test if PWD environment variable is set correctly by Claude Code\n5. Prototype dynamic CWD detection in beads-mcp\n6. Document findings and recommend approach\n\n## References\n\n- beads-mcp already has `BEADS_WORKING_DIR` config support\n- bd_client.py uses `cwd` parameter for subprocess calls\n- Current implementation: `os.environ.get('PWD', os.getcwd())`\n","acceptance_criteria":"- Documented investigation findings\n- Tested CWD propagation in both Claude Code and Amp\n- Recommended approach for solving multi-repo MCP database routing\n- Prototype or proof-of-concept if feasible","notes":"## Implementation Complete (2025-10-17)\n\nImplemented PATH 1 (Simple Context Management) from the recommended solutions.\n\n### What Was Built\n\nAdded two new MCP tools to beads-mcp:\n\n1. **set_context(workspace_root)** - Sets workspace root and discovers database\n - Resolves to git repo root automatically\n - Walks up tree to find `.beads/*.db`\n - Sets env vars: BEADS_WORKING_DIR, BEADS_DB, BEADS_CONTEXT_SET\n\n2. **where_am_i()** - Shows current context for debugging\n - Returns workspace root, database path, actor\n\n3. **@require_context decorator** - Guards all write operations\n - Only enforced when BEADS_REQUIRE_CONTEXT=1 env var is set\n - Ensures context is set before create/update/close/reopen/dep/init\n - Backward compatible (off by default)\n\n### Implementation Details\n\n- File: `integrations/beads-mcp/src/beads_mcp/server.py`\n- Tests: All existing tests pass (103/104)\n- Documentation: `integrations/beads-mcp/CONTEXT_MANAGEMENT.md`\n\n### Key Discovery: Environment Variable Limitation\n\n**FastMCP architectural constraint:** Environment variables don't persist between tool calls in the current MCP protocol/FastMCP implementation.\n\nThis means:\n- `set_context` works within its own tool call\n- Subsequent tools may not see the env vars\n- True session state would require MCP protocol changes\n\n### Current Status\n\n**Partial solution delivered:**\n✅ Tools exist and work correctly\n✅ Can be used for explicit context management\n✅ Provides visibility (where_am_i)\n✅ Guards against accidental misrouting (when enabled)\n⚠️ Limited by MCP protocol's stateless nature\n\n**For production use:** Continue with current workaround (explicit BEADS_DB per MCP server config) until:\n1. MCP protocol adds session state support, OR\n2. We implement daemon RPC with per-request cwd (PATH 1.5), OR\n3. Client implementations can pass context with every tool call\n\n### Next Steps\n\n**Immediate (keep current workaround):**\n- Use single MCP server with explicit BEADS_DB in config\n- Set BEADS_REQUIRE_CONTEXT=1 for safety\n- Call set_context at session start (even if env vars don't persist, it validates paths)\n\n**Medium-term (if needed):**\n- Implement PATH 1.5: Add cwd parameter to daemon RPC protocol\n- Update MCP server to use daemon client instead of direct CLI calls\n- Per-request context routing via daemon\n\n**Long-term (if \u003e50 repos):**\n- Implement PATH 2: Advanced routing daemon with repo→DB index\n\n## Original Notes\n[Previous investigation notes preserved above...]","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-17T02:06:09.737832-07:00","updated_at":"2025-10-21T00:25:40.550071-07:00","closed_at":"2025-10-17T16:54:35.196728-07:00","source_repo":"."} +{"id":"bd-860","content_hash":"262314a1ac586f1421bff2e138903927bacf1827f1f1aa4eb8826a227c37fd38","title":"Agent 6 Issue 61","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.757075-07:00","updated_at":"2025-10-21T00:29:10.757075-07:00","source_repo":"."} +{"id":"bd-861","content_hash":"394c6ccc6f087f720bfc482ba60d80ff20f8ce11db7d25e5bdfc38118b0ee5a0","title":"Agent 6 Issue 62","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.757533-07:00","updated_at":"2025-10-21T00:29:10.757533-07:00","source_repo":"."} +{"id":"bd-862","content_hash":"6e094acdf2e7e2b8a86911f90aa590fc10248b4a4d5ef2999419d47ebb5627e2","title":"Agent 6 Issue 63","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.758015-07:00","updated_at":"2025-10-21T00:29:10.758015-07:00","source_repo":"."} +{"id":"bd-863","content_hash":"e2e0083e116847847c270478e7d5e8dedbdabf112111f01c8e0b28db8d1d1df6","title":"Agent 6 Issue 64","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.758498-07:00","updated_at":"2025-10-21T00:29:10.758498-07:00","source_repo":"."} +{"id":"bd-864","content_hash":"0f2e990f9d0c3dc1f27c2beefadd123b217c0f5611ccc5c9aca6ca7585ede04a","title":"Agent 6 Issue 65","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.758985-07:00","updated_at":"2025-10-21T00:29:10.758985-07:00","source_repo":"."} +{"id":"bd-865","content_hash":"7f58d6652310fe1871bea405ec3d9f6bdd49e1e9fd5a3095b1029ba942c9cf68","title":"Agent 6 Issue 66","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.759472-07:00","updated_at":"2025-10-21T00:29:10.759472-07:00","source_repo":"."} +{"id":"bd-866","content_hash":"57bd3f3936274cd2a1f9668d5f6d85cb2b08dec3da9757ea28c64d0d74f7590d","title":"Agent 6 Issue 67","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.759939-07:00","updated_at":"2025-10-21T00:29:10.759939-07:00","source_repo":"."} +{"id":"bd-867","content_hash":"8152676dc2c10e4e62c0bc17122d65b8d5fa1344b75db2475fab14fb37860684","title":"Agent 6 Issue 68","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.760411-07:00","updated_at":"2025-10-21T00:29:10.760411-07:00","source_repo":"."} +{"id":"bd-868","content_hash":"1e29ce056883549c75f5da63a07400eb3064aa85a9c64c89018c7bf3b07b807f","title":"Agent 6 Issue 69","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.760879-07:00","updated_at":"2025-10-21T00:29:10.760879-07:00","source_repo":"."} +{"id":"bd-869","content_hash":"eb038f004f535b043c05851553164fc77157cb844181b2068c0b4a19355ddb46","title":"Agent 6 Issue 70","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.761345-07:00","updated_at":"2025-10-21T00:29:10.761345-07:00","source_repo":"."} +{"id":"bd-87","content_hash":"5872b98b532b3cd7d314cdf4b9208b6596031e8cf489a99157b1eee6d91becbe","title":"Test Epic for epic commands","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-10-17T12:07:19.224482-07:00","updated_at":"2025-10-21T00:25:40.550254-07:00","closed_at":"2025-10-17T12:07:59.213044-07:00","source_repo":"."} +{"id":"bd-870","content_hash":"7e674c9c847d52898cb7b1088b4b0ed230d6daa84486eb8a3c2c8227b592e76f","title":"Agent 6 Issue 71","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.761804-07:00","updated_at":"2025-10-21T00:29:10.761804-07:00","source_repo":"."} +{"id":"bd-871","content_hash":"5b4beeceaebb6cbd12f0eb08a10a8a857bd48f21e33870925216f112b5132892","title":"Agent 6 Issue 72","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.762261-07:00","updated_at":"2025-10-21T00:29:10.762261-07:00","source_repo":"."} +{"id":"bd-872","content_hash":"63d2300c5a7f1002c4b3d885c77241976a27f7f633d3da27e1fc9bb281d9dff4","title":"Agent 6 Issue 73","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.762719-07:00","updated_at":"2025-10-21T00:29:10.762719-07:00","source_repo":"."} +{"id":"bd-873","content_hash":"543444ac71a18ab02a76133ddf10026f5a7a1c48c704922bd7d984f4c14ee111","title":"Agent 6 Issue 74","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.763188-07:00","updated_at":"2025-10-21T00:29:10.763188-07:00","source_repo":"."} +{"id":"bd-874","content_hash":"2e57d5f3b34c5368216e6ccff79c5e6768c3eede8b8d29a43230d9961223786c","title":"Agent 6 Issue 75","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.76365-07:00","updated_at":"2025-10-21T00:29:10.76365-07:00","source_repo":"."} +{"id":"bd-875","content_hash":"886998f26563b24bf8b3799d304defb941b4ec8816283df4bd7d09d5461a7d57","title":"Agent 6 Issue 76","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.764124-07:00","updated_at":"2025-10-21T00:29:10.764124-07:00","source_repo":"."} +{"id":"bd-876","content_hash":"8b330eb4c09c2cf766f49bfa41b4ae4cde9ffc753c9eb0025680eb088832b54b","title":"Agent 6 Issue 77","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.764836-07:00","updated_at":"2025-10-21T00:29:10.764836-07:00","source_repo":"."} +{"id":"bd-877","content_hash":"95cbb542142a0e34f97a04139dfffbb7f69bdaea61c39e9e35e80bda364d381f","title":"Agent 6 Issue 78","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.765326-07:00","updated_at":"2025-10-21T00:29:10.765326-07:00","source_repo":"."} +{"id":"bd-878","content_hash":"93e4a40b616e2dc286ae5ea2468c142d53c808bdf952ced4252a4d7e7675ad8c","title":"Agent 6 Issue 79","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.765791-07:00","updated_at":"2025-10-21T00:29:10.765791-07:00","source_repo":"."} +{"id":"bd-879","content_hash":"75cae1c073a6ee762ac613177cce253ac5b5f2638ab949ff4ca849038a2c8460","title":"Agent 6 Issue 80","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.766249-07:00","updated_at":"2025-10-21T00:29:10.766249-07:00","source_repo":"."} {"id":"bd-879d","content_hash":"9716c230d9b2793bd1e51d9e3c380c06caf7b3e9a0dd20253764af19e3de7ac8","title":"Test issue 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-02T09:44:12.538697729Z","updated_at":"2025-11-02T09:45:20.76214671Z","closed_at":"2025-11-02T09:45:20.76214671Z","source_repo":".","dependencies":[{"issue_id":"bd-879d","depends_on_id":"bd-d3e5","type":"discovered-from","created_at":"2025-11-02T09:44:22.103468321Z","created_by":"mrdavidlaing"}]} -{"id":"bd-87a0","content_hash":"b6c322852ff360ade9f0d46bb2af29a7cf3d3acc8b7469dcbb5d98bf48050240","title":"Publish @beads/bd package to npm registry","description":"Publish the npm package to the public npm registry:\n\n## Prerequisites\n- npm account created\n- Organization @beads created (or use different namespace)\n- npm login completed locally\n- Package tested locally (bd-f282 completed)\n\n## Publishing steps\n1. Verify package.json version matches current bd version\n2. Run npm pack and inspect tarball contents\n3. Test installation from tarball one more time\n4. Run npm publish --access public\n5. Verify package appears on https://www.npmjs.com/package/@beads/bd\n6. Test installation from registry: npm install -g @beads/bd\n\n## Post-publish\n- Add npm badge to README.md\n- Update CHANGELOG.md with npm package release\n- Announce in release notes\n\n## Note\n- May need to choose different name if @beads namespace unavailable\n- Alternative: beads-cli, bd-cli, or unscoped beads-issue-tracker","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T23:40:25.263569-08:00","updated_at":"2025-11-03T10:39:41.772338-08:00","closed_at":"2025-11-03T10:39:41.772338-08:00","source_repo":".","dependencies":[{"issue_id":"bd-87a0","depends_on_id":"bd-febc","type":"parent-child","created_at":"2025-11-02T23:40:33.014043-08:00","created_by":"daemon"}],"comments":[{"id":10,"issue_id":"bd-87a0","author":"stevey","text":"Package is ready to publish. All code complete and tested locally. Next steps: 1) npm login, 2) create @beads org if needed, 3) npm publish --access public. See npm-package/PUBLISHING.md for complete instructions.","created_at":"2025-11-05T08:44:27Z"}]} +{"id":"bd-87a0","content_hash":"b6c322852ff360ade9f0d46bb2af29a7cf3d3acc8b7469dcbb5d98bf48050240","title":"Publish @beads/bd package to npm registry","description":"Publish the npm package to the public npm registry:\n\n## Prerequisites\n- npm account created\n- Organization @beads created (or use different namespace)\n- npm login completed locally\n- Package tested locally (bd-f282 completed)\n\n## Publishing steps\n1. Verify package.json version matches current bd version\n2. Run npm pack and inspect tarball contents\n3. Test installation from tarball one more time\n4. Run npm publish --access public\n5. Verify package appears on https://www.npmjs.com/package/@beads/bd\n6. Test installation from registry: npm install -g @beads/bd\n\n## Post-publish\n- Add npm badge to README.md\n- Update CHANGELOG.md with npm package release\n- Announce in release notes\n\n## Note\n- May need to choose different name if @beads namespace unavailable\n- Alternative: beads-cli, bd-cli, or unscoped beads-issue-tracker","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T23:40:25.263569-08:00","updated_at":"2025-11-03T10:39:41.772338-08:00","closed_at":"2025-11-03T10:39:41.772338-08:00","source_repo":".","dependencies":[{"issue_id":"bd-87a0","depends_on_id":"bd-febc","type":"parent-child","created_at":"2025-11-02T23:40:33.014043-08:00","created_by":"daemon"}],"comments":[{"id":6,"issue_id":"bd-87a0","author":"stevey","text":"Package is ready to publish. All code complete and tested locally. Next steps: 1) npm login, 2) create @beads org if needed, 3) npm publish --access public. See npm-package/PUBLISHING.md for complete instructions.","created_at":"2025-11-12T18:57:44Z"}]} +{"id":"bd-88","content_hash":"cf27316a5850911c4ae9bf264e4b1fde093a0991d3fcf2f91a2d333ead115265","title":"Another epic","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-10-17T12:08:10.396072-07:00","updated_at":"2025-10-21T00:25:40.550404-07:00","closed_at":"2025-10-17T12:10:06.062102-07:00","source_repo":"."} +{"id":"bd-880","content_hash":"4857ed345177dec6d8300db184e52d01adcac05683217a3b534f0e890071658e","title":"Agent 6 Issue 81","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.767053-07:00","updated_at":"2025-10-21T00:29:10.767053-07:00","source_repo":"."} +{"id":"bd-881","content_hash":"9cfa5cbb1356d73a2c9052247e85a8d41b57b30ecc40fe935129447bff4807be","title":"Agent 6 Issue 82","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.767556-07:00","updated_at":"2025-10-21T00:29:10.767556-07:00","source_repo":"."} +{"id":"bd-882","content_hash":"0516c1315ef15227645a3e06ea3e35f8533d554eb5242236d670acc00726c9e8","title":"Agent 6 Issue 83","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.768051-07:00","updated_at":"2025-10-21T00:29:10.768051-07:00","source_repo":"."} +{"id":"bd-883","content_hash":"04467b9c2741c615180fd140fc9999dd2b473d7cdabdbce226d314e5b89a81ba","title":"Agent 6 Issue 84","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.76852-07:00","updated_at":"2025-10-21T00:29:10.76852-07:00","source_repo":"."} +{"id":"bd-884","content_hash":"5809dad7ddca47b85a5f83c708bd3f4734d044c0a2bd666f03199ea6f73e8f76","title":"Agent 6 Issue 85","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.768991-07:00","updated_at":"2025-10-21T00:29:10.768991-07:00","source_repo":"."} +{"id":"bd-885","content_hash":"3b9a4d30723fe7d3523da9726679b5c62f8900ac1395d5acbed739270738298f","title":"Agent 6 Issue 86","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.769464-07:00","updated_at":"2025-10-21T00:29:10.769464-07:00","source_repo":"."} +{"id":"bd-886","content_hash":"70d40e6acc416e92848194c1f711ef31510dad3ee9127bf6e871a0d71ef00d93","title":"Agent 6 Issue 87","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.769937-07:00","updated_at":"2025-10-21T00:29:10.769937-07:00","source_repo":"."} +{"id":"bd-887","content_hash":"bf3b3822b78b5b1f93924e43cf78ab286e22f0f1f3e60f172ccf37a18d7636ef","title":"Agent 6 Issue 88","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.770737-07:00","updated_at":"2025-10-21T00:29:10.770737-07:00","source_repo":"."} +{"id":"bd-888","content_hash":"3e7dc565ab119cefb2621c139e74755091398bad27a61ed4169067c453fc1b81","title":"Agent 6 Issue 89","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.771213-07:00","updated_at":"2025-10-21T00:29:10.771213-07:00","source_repo":"."} +{"id":"bd-889","content_hash":"53629fb9f076b3760cf29bb52031d3687ddda63daaab255966ef7542911ba859","title":"Agent 6 Issue 90","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.771662-07:00","updated_at":"2025-10-21T00:29:10.771662-07:00","source_repo":"."} +{"id":"bd-89","content_hash":"5cd9986753e32df58263a57610e8c2a616b0d020e786c54f1d1271f7a6da5888","title":"Test epic 2","description":"","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-10-17T12:09:59.880202-07:00","updated_at":"2025-10-21T00:25:40.550555-07:00","closed_at":"2025-10-17T12:10:06.063293-07:00","source_repo":"."} +{"id":"bd-890","content_hash":"8395c0825517ae791b1338ce4f27f161a7d1969d36ccc192c826b2a731b0d87c","title":"Agent 6 Issue 91","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.772124-07:00","updated_at":"2025-10-21T00:29:10.772124-07:00","source_repo":"."} {"id":"bd-8900f145","content_hash":"4a07f36a9e5d24aaffb092c89e2273cb58f9de357d24eeb01fcde6a4079ba775","title":"Testing event-driven mode!","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T15:28:33.564871-07:00","updated_at":"2025-10-30T17:12:58.186325-07:00","closed_at":"2025-10-29T19:12:54.43368-07:00","source_repo":"."} +{"id":"bd-891","content_hash":"6ddf3daf90a40c823e27031abc1509d9e0cbc77f2fb14a5160efdcb7ceacd18a","title":"Agent 6 Issue 92","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.772568-07:00","updated_at":"2025-10-21T00:29:10.772568-07:00","source_repo":"."} +{"id":"bd-892","content_hash":"fd756455faa74b9a77aa3ad68c9fadeaf4ccc629d270739fea7d6ba3ec4a83f1","title":"Agent 6 Issue 93","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.773012-07:00","updated_at":"2025-10-21T00:29:10.773012-07:00","source_repo":"."} +{"id":"bd-893","content_hash":"a529661653bbfe0818d9ee6e2072b3f3bdc3400a197a5de543c9302819fdf34a","title":"Agent 6 Issue 94","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.773503-07:00","updated_at":"2025-10-21T00:29:10.773503-07:00","source_repo":"."} {"id":"bd-8931","content_hash":"409c16d9e6c83c2bf6cccfa6ee6cb18e1e1eee032b522fb99500bb40f2a05649","title":"Daemon gets stuck when auto-import blocked by git conflicts","description":"CRITICAL: The daemon enters a corrupt state that breaks RPC commands when auto-import is triggered but git pull fails due to uncommitted changes.\n\nImpact: This is a data integrity and usability issue that could cause users to lose trust in Beads. The daemon silently fails for certain commands while appearing healthy.\n\nReproduction:\n1. Make local changes to issues (creates uncommitted .beads/beads.jsonl)\n2. Remote has updates (JSONL newer, triggers auto-import)\n3. Daemon tries to pull but fails: 'cannot pull with rebase: You have unstaged changes'\n4. Daemon enters bad state - 'bd show' and other commands return EOF\n5. 'bd list' still works, daemon process is running, no errors logged\n\nTechnical details:\n- Auto-import check runs in handleRequest() before processing RPC commands\n- When import is blocked, it appears to corrupt daemon state\n- Likely: deadlock, unclosed transaction, or storage handle corruption\n- Panic recovery (server_lifecycle_conn.go:183) didn't catch anything - not a panic\n\nRequired fix:\n- Auto-import must not block RPC command execution\n- Handle git pull failures gracefully without corrupting state\n- Consider: skip auto-import if git is dirty, queue import for later, or use separate goroutine\n- Add timeout/circuit breaker for import operations\n- Log clear warnings when auto-import is skipped\n\nWithout this fix, users in collaborative environments will frequently encounter mysterious EOF errors that require daemon restarts.","design":"Options to fix:\n\n1. Skip auto-import when git is dirty (safest, simplest)\n - Check git status before pull\n - Log warning and continue without import\n - User must manually import after cleaning git state\n\n2. Async import with timeout (better UX)\n - Run auto-import in background goroutine\n - Don't block RPC command execution\n - Timeout after 5s, log error if stuck\n - Use sync.Once or similar to prevent concurrent imports\n\n3. Transactional import with rollback\n - Wrap import in database transaction\n - Rollback if git operations fail\n - Ensure storage is never left in bad state\n\nRecommended: Combine #1 and #2\n- Check git status first, skip if dirty\n- If clean, do async import with timeout\n- Add metrics to track import success/failure rates","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-02T17:15:25.181425-08:00","updated_at":"2025-11-03T12:08:12.949061-08:00","closed_at":"2025-11-03T12:08:12.949064-08:00","source_repo":".","dependencies":[{"issue_id":"bd-8931","depends_on_id":"bd-1048","type":"blocks","created_at":"2025-11-02T17:15:25.181857-08:00","created_by":"stevey"}]} +{"id":"bd-894","content_hash":"b27010fccb841555ad10aba9089fc2216e5913aa6365dbd5234e6f09f4569f0e","title":"Agent 6 Issue 95","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.774006-07:00","updated_at":"2025-10-21T00:29:10.774006-07:00","source_repo":"."} +{"id":"bd-895","content_hash":"3bcf98cca7c072ecfc1cad79c0371232992f947e68314658f6d62e16ca9aae2a","title":"Agent 6 Issue 96","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.774481-07:00","updated_at":"2025-10-21T00:29:10.774481-07:00","source_repo":"."} +{"id":"bd-896","content_hash":"a40bd9068ac6d45f6aa4c46d1133f65042515f2971df4fa9d815037bac3a17f1","title":"Agent 6 Issue 97","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.774949-07:00","updated_at":"2025-10-21T00:29:10.774949-07:00","source_repo":"."} +{"id":"bd-897","content_hash":"cc5950a32f216543210949b1721a8bb8c975c280d00b801ad5e3973a5386c3df","title":"Agent 6 Issue 98","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.775448-07:00","updated_at":"2025-10-21T00:29:10.775448-07:00","source_repo":"."} {"id":"bd-897a","content_hash":"ae488407bf5e71242535f4c35b59b0981d2b8b338d1701f19acba2c8e93049f0","title":"Add UNIQUE constraint on external_ref column","description":"The external_ref column should have a UNIQUE constraint to prevent multiple issues from having the same external reference. This ensures data integrity when syncing from external systems (Jira, GitHub, Linear).\n\nCurrent behavior:\n- Multiple issues can have the same external_ref\n- GetIssueByExternalRef returns first match (non-deterministic with duplicates)\n\nProposed solution:\n- Add UNIQUE constraint to external_ref column\n- Add migration to check for and resolve existing duplicates\n- Update tests to verify constraint enforcement\n\nRelated: bd-1022","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-02T15:31:54.718005-08:00","updated_at":"2025-11-02T16:01:45.742666-08:00","closed_at":"2025-11-02T16:01:45.742666-08:00","source_repo":"."} +{"id":"bd-898","content_hash":"7b0a6734f0344673b1771a7523b16e9009b701800d5596a00d3a02555a8b826f","title":"Agent 6 Issue 99","description":"Created by agent 6","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.775934-07:00","updated_at":"2025-10-21T00:29:10.775934-07:00","source_repo":"."} +{"id":"bd-899","content_hash":"4bd790b298b1c36cf835618e9339ed45cd8842295459b530a5fa47a50bdfada7","title":"Agent 7 Issue 0","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.465814-07:00","updated_at":"2025-10-21T00:29:10.465814-07:00","source_repo":"."} {"id":"bd-89e2","content_hash":"c7da1d6c0d28b2fe9a5a1166a7b6712a870b5271fdf21558e4ef639e2675f92f","title":"Daemon race condition: stale export overwrites recent DB changes","description":"**Symptom:**\nMerged bd-fc2d into bd-fb05 in ~/src/beads (commit ce4d756), pushed to remote. The ~/src/fred/beads daemon then exported its stale DB state and committed (8cc1bb4), reverting bd-fc2d back to \"open\" status.\n\n**Timeline:**\n1. 21:45:12 - Merge committed from ~/src/beads (ce4d756): bd-fc2d closed\n2. 21:49:42 - Daemon in ~/src/fred/beads exported stale state (8cc1bb4): bd-fc2d open again\n\n**Root cause:**\nThe fred/beads daemon had a stale database (bd-fc2d still open) and didn't auto-import the newer JSONL before exporting. When it exported, it overwrote the merge with its stale state.\n\n**Expected behavior:**\nDaemon should detect that JSONL is newer than its last export and import before exporting.\n\n**Actual behavior:**\nDaemon exported stale DB state, creating a conflicting commit that reverted upstream changes.\n\n**Impact:**\nMulti-workspace setups with daemons can silently lose changes if one daemon has stale state and exports.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-01T21:53:07.930819-07:00","updated_at":"2025-11-01T22:01:25.54126-07:00","closed_at":"2025-11-01T22:01:25.54126-07:00","source_repo":"."} {"id":"bd-89f89fc0","content_hash":"404b82a19dde2fdece7eb6bb3b816db7906e81a03a5a05341ed631af7a2a8e87","title":"Remove unreachable RPC methods","description":"Several RPC server and client methods are unreachable and should be removed:\n\nServer methods (internal/rpc/server.go):\n- `Server.GetLastImportTime` (line 2116)\n- `Server.SetLastImportTime` (line 2123)\n- `Server.findJSONLPath` (line 2255)\n\nClient methods (internal/rpc/client.go):\n- `Client.Import` (line 311) - RPC import not used (daemon uses autoimport)\n\nEvidence:\n```bash\ngo run golang.org/x/tools/cmd/deadcode@latest -test ./...\n```\n\nImpact: Removes ~80 LOC of unused RPC code","acceptance_criteria":"- Remove the 4 unreachable methods (~80 LOC total)\n- Verify no callers: `grep -r \"GetLastImportTime\\|SetLastImportTime\\|findJSONLPath\" .`\n- All tests pass: `go test ./internal/rpc/...`\n- Daemon functionality works: test daemon start/stop/operations","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-28T16:20:02.432202-07:00","updated_at":"2025-11-06T19:36:13.971809-08:00","closed_at":"2025-11-06T19:30:50.92317-08:00","source_repo":"."} {"id":"bd-8a39","content_hash":"cf11bd12f8906b73236f46998076d6111d69f05e76198e9823a8f10f3e03112b","title":"Fix Windows-specific test failures in CI","description":"Several tests are failing on Windows but passing on Linux:\n\n**Failing tests:**\n- TestFindDatabasePathEnvVar\n- TestHashIDs_MultiCloneConverge\n- TestHashIDs_IdenticalContentDedup\n- TestDatabaseReinitialization (all 5 subtests):\n - fresh_clone_auto_import\n - database_removal_scenario\n - legacy_filename_support\n - precedence_test\n - init_safety_check\n- TestFindBeadsDir_NotFound\n- TestMetricsSnapshot/uptime (in internal/rpc)\n\n**CI Run:** https://github.com/steveyegge/beads/actions/runs/19015638968\n\nThese are likely path separator or filesystem behavior differences between Windows and Linux.","notes":"Fixed all Windows path issues:\n1. TestFindDatabasePathEnvVar - expects canonicalized paths ✅\n2. TestHashIDs tests - use platform-specific bd.exe command ✅ \n3. TestMetricsSnapshot/uptime - enforce minimum 1 second uptime ✅\n4. TestFindBeadsDir_NotFound - allow finding .beads in parent dirs ✅\n5. TestDatabaseReinitialization - fix git path conversion on Windows (git returns /c/Users/... but filepath needs C:\\Users\\...) ✅\n\nCI run in progress to verify all fixes.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-02T09:29:37.274103-08:00","updated_at":"2025-11-02T12:32:00.158713-08:00","closed_at":"2025-11-02T12:32:00.158716-08:00","source_repo":".","dependencies":[{"issue_id":"bd-8a39","depends_on_id":"bd-1231","type":"blocks","created_at":"2025-11-02T09:29:37.276579-08:00","created_by":"stevey"}]} @@ -236,55 +2585,166 @@ {"id":"bd-8b65","content_hash":"8675dbc7a679f06245ad85c184730d7bc495559d934ba4081886b576ed628d38","title":"Add depth-based batch creation in upsertIssues","description":"Replace single batch creation with depth-level batching (max depth 3). Create issues at depth 0, then 1, then 2, then 3. Prevents parent validation errors when importing hierarchical issues in same batch. File: internal/importer/importer.go:534-546","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-04T12:31:42.267746-08:00","updated_at":"2025-11-05T00:08:42.813239-08:00","closed_at":"2025-11-05T00:08:42.813246-08:00","source_repo":"."} {"id":"bd-8f8b","content_hash":"ed8fd55f5795bd49d6640e567bbf3e8d8f00ccc35ad785f0b6c23dbb3aafc19c","title":"Test update","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T12:59:13.608216-08:00","updated_at":"2025-11-05T12:59:20.120052-08:00","closed_at":"2025-11-05T12:59:20.120052-08:00","source_repo":"."} {"id":"bd-8hf","content_hash":"ec57c5cb45f0afdbccf3c0b9e383f5ff8023f853393f8afda09189edc63ddd95","title":"Auto-routing and maintainer detection","description":"Implement intelligent routing to automatically send new issues to correct repo based on user's maintainer vs contributor status, with discovered issues inheriting parent's source_repo.","design":"Features:\n- Detect maintainer vs contributor (git config, permissions)\n- Config-based routing rules (no schema changes)\n- Auto-route 'bd add' to primary or planning repo\n- Discovered issues inherit parent's source_repo\n- Explicit override via --repo flag\n\nConfig schema:\n[routing]\nmode = \"auto\" # auto | explicit\ndefault = \"~/.beads-planning\"\n[routing.auto]\nmaintainer = \".\"\ncontributor = \"~/.beads-planning\"","acceptance_criteria":"1. Auto-detect maintainer vs contributor status\n2. Route bd add to correct repo automatically\n3. Discovered issues inherit parent's source_repo\n4. --repo flag overrides auto-routing\n5. Config allows explicit routing rules\n6. Works without breaking single-repo workflows","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-04T11:21:50.961196-08:00","updated_at":"2025-11-05T00:08:42.813482-08:00","closed_at":"2025-11-05T00:08:42.813484-08:00","source_repo":".","dependencies":[{"issue_id":"bd-8hf","depends_on_id":"bd-4ms","type":"parent-child","created_at":"2025-11-04T11:22:24.262815-08:00","created_by":"daemon"}]} -{"id":"bd-8ift","content_hash":"6799411d3e9bf01a850b91c74e1e1c84affcc4a569ade2c3f56e39ba2fbeb142","title":"Debug test","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-08T00:04:35.254385-08:00","updated_at":"2025-11-08T00:06:46.179396-08:00","closed_at":"2025-11-08T00:06:46.179396-08:00","source_repo":"."} +{"id":"bd-8ift","content_hash":"5a9f0416216cad6d0a611c790cab9cb47a2d4c0e2afa6fea024218d1bc4326a9","title":"Debug test","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-08T00:04:35.254385-08:00","updated_at":"2025-11-08T00:06:46.179396-08:00","closed_at":"2025-11-08T00:06:46.179396-08:00","source_repo":"."} {"id":"bd-8kde","content_hash":"2bc64e3d456f5490598f8d49e65a870d5b9b6c1579046a80f616a12d98908fc9","title":"bd delete bulk operations fight with auto-import/daemon causing data resurrection","description":"When bulk deleting issues (e.g., 244 closed issues older than 24h), the process fights with auto-import and daemon infrastructure:\n\n**Expected behavior:**\n- Delete 244 issues from 468-issue database\n- Export to JSONL (224 lines)\n- Commit and push\n- Result: 224 issues\n\n**Actual behavior:**\n- Delete 244 issues \n- Import runs (from stale git JSONL with 468 issues)\n- Resurrects deleted issues back into database\n- Export writes 356 lines (not 224)\n- Math: 468 - 244 = 224, but got 356 (132 issues resurrected)\n\n**Root cause:**\nAuto-import keeps re-importing from git during the delete operation, before the new JSONL is committed. The workflow is:\n1. Delete from DB\n2. Auto-import runs (reads old JSONL from git with deleted issues still present)\n3. Issues come back\n4. Export writes partially-deleted state\n\n**Solution options:**\n1. Add `--no-auto-import` flag to bulk delete operations\n2. Atomic delete-export-commit operation that suppresses imports\n3. Dedicated `bd prune` command that handles this correctly\n4. Lock file to prevent auto-import during bulk mutations\n\n**Impact:**\n- Bulk cleanup operations don't work reliably\n- Makes it nearly impossible to prune old closed issues\n- Confusing UX (delete 244, but only 112 actually removed)","notes":"**FIXED**: Auto-import now skips during delete operations to prevent resurrection.\n\n**Root cause confirmed**: Auto-import was running in PersistentPreRun before delete executed, causing it to re-import stale JSONL from git and resurrect deleted issues.\n\n**Solution implemented**:\n1. Added delete to skip list in main.go PersistentPreRun (alongside import and sync --dry-run)\n2. Delete operations now complete atomically without auto-import interference\n3. Added comprehensive test (TestBulkDeleteNoResurrection) to prevent regression\n\n**Test verification**:\n- Creates 20 issues, deletes 10\n- Verifies no resurrection after delete\n- Confirms JSONL has correct count (10 remaining)\n- All existing tests still pass","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-08T03:01:09.796852-08:00","updated_at":"2025-11-08T03:06:04.416994-08:00","closed_at":"2025-11-08T03:06:04.416994-08:00","source_repo":"."} -{"id":"bd-8mfn","content_hash":"40fc504b7678a47bb6b7ba24758638232940f7d8c44c2ed38536a30f30149870","title":"bd message: Implement full message reading functionality","description":"The `bd message read` command is incomplete and doesn't actually fetch or display message content.\n\n**Location:** cmd/bd/message.go:413-441\n\n**Current Behavior:**\n- Only marks message as read\n- Prints placeholder text\n- Doesn't fetch message body\n\n**Expected:**\n- Fetch full message from Agent Mail resource API\n- Display sender, subject, timestamp, body\n- Consider markdown rendering\n\n**Blocker:** Core feature for message system MVP","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-08T12:54:24.018957-08:00","updated_at":"2025-11-08T12:57:32.91854-08:00","closed_at":"2025-11-08T12:57:32.91854-08:00","source_repo":".","dependencies":[{"issue_id":"bd-8mfn","depends_on_id":"bd-6uix","type":"parent-child","created_at":"2025-11-08T12:55:54.811368-08:00","created_by":"daemon"}]} -{"id":"bd-8ph6","content_hash":"278b6e7ebe89d87de0a48bb3c3a2bd2a7813f0552f8ad45cc1901bd284ce8be3","title":"Support Ubuntu 20.04 LTS (glibc compatibility issue)","description":"Starting at v0.22, precompiled binaries require GLIBC 2.32+ which is not available on Ubuntu 20.04 LTS (Focal Fossa). Ubuntu 20.04 has GLIBC 2.31.\n\nError:\n```\nbd: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by bd)\nbd: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by bd)\n```\n\nCurrent workarounds:\n1. Upgrade to Ubuntu 22.04+\n2. Build from source: `go build -o bd ./cmd/bd/`\n\nRoot cause: Go 1.24+ runtime requires newer glibc. CGO is already disabled in .goreleaser.yml.\n\nPossible solutions:\n- Pin Go version to 1.21 or 1.22 for releases\n- Use Docker/cross-compile with older build environment\n- Provide separate build for older distros\n- Document minimum requirements clearly","notes":"Decision: Document minimum requirements in README instead of pinning Go version.\n\nRationale:\n- Ubuntu 20.04 LTS standard support ended April 2025 (already EOL)\n- Pinning Go prevents security fixes, performance improvements, and new features\n- Users on EOL distros can upgrade OS or build from source\n- Added Requirements section to README with clear glibc 2.32+ requirement","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-07T14:25:47.055357-08:00","updated_at":"2025-11-07T14:30:15.755733-08:00","closed_at":"2025-11-07T14:30:15.755733-08:00","source_repo":"."} +{"id":"bd-8mfn","content_hash":"866a8afcdadb8e4e015aab6ab0b8882f48ae9856098181205013b992d2aa08f3","title":"bd message: Implement full message reading functionality","description":"The `bd message read` command is incomplete and doesn't actually fetch or display message content.\n\n**Location:** cmd/bd/message.go:413-441\n\n**Current Behavior:**\n- Only marks message as read\n- Prints placeholder text\n- Doesn't fetch message body\n\n**Expected:**\n- Fetch full message from Agent Mail resource API\n- Display sender, subject, timestamp, body\n- Consider markdown rendering\n\n**Blocker:** Core feature for message system MVP","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-08T12:54:24.018957-08:00","updated_at":"2025-11-08T12:57:32.91854-08:00","closed_at":"2025-11-08T12:57:32.91854-08:00","source_repo":".","dependencies":[{"issue_id":"bd-8mfn","depends_on_id":"bd-6uix","type":"parent-child","created_at":"2025-11-08T12:55:54.811368-08:00","created_by":"daemon"}]} +{"id":"bd-8ph6","content_hash":"c64a644d8f2ea530109e7e6ef569ebd18b553a793cce5a4bd657581d75304167","title":"Support Ubuntu 20.04 LTS (glibc compatibility issue)","description":"Starting at v0.22, precompiled binaries require GLIBC 2.32+ which is not available on Ubuntu 20.04 LTS (Focal Fossa). Ubuntu 20.04 has GLIBC 2.31.\n\nError:\n```\nbd: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by bd)\nbd: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by bd)\n```\n\nCurrent workarounds:\n1. Upgrade to Ubuntu 22.04+\n2. Build from source: `go build -o bd ./cmd/bd/`\n\nRoot cause: Go 1.24+ runtime requires newer glibc. CGO is already disabled in .goreleaser.yml.\n\nPossible solutions:\n- Pin Go version to 1.21 or 1.22 for releases\n- Use Docker/cross-compile with older build environment\n- Provide separate build for older distros\n- Document minimum requirements clearly","notes":"Decision: Document minimum requirements in README instead of pinning Go version.\n\nRationale:\n- Ubuntu 20.04 LTS standard support ended April 2025 (already EOL)\n- Pinning Go prevents security fixes, performance improvements, and new features\n- Users on EOL distros can upgrade OS or build from source\n- Added Requirements section to README with clear glibc 2.32+ requirement","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-07T14:25:47.055357-08:00","updated_at":"2025-11-07T14:30:15.755733-08:00","closed_at":"2025-11-07T14:30:15.755733-08:00","source_repo":"."} {"id":"bd-8rd","content_hash":"e5845f6bda21414b3715f9589c76f8a02594f4cb8691939ced6765329346e411","title":"Migration and onboarding for multi-repo","description":"Create migration tools, wizards, and documentation to help users adopt multi-repo workflow, with special focus on OSS contributor onboarding and team adoption scenarios.","design":"Components:\n- Migration guide documentation\n- bd migrate command to move issues between repos\n- bd init --contributor wizard for OSS setup\n- bd init --team wizard for team setup\n- Auto-detect scenarios and prompt users\n- Examples for common workflows (OSS, multi-phase, personas)\n\nScenarios:\n1. OSS contributor (fork workflow)\n2. Team member (branch workflow)\n3. Multi-phase development\n4. Multiple personas (architect/implementer)","acceptance_criteria":"1. Migration guide covers all scenarios\n2. bd migrate moves issues with filtering\n3. Init wizards guide common setups\n4. Examples demonstrate key workflows\n5. Auto-detection prompts users when appropriate\n6. Docs updated with multi-repo patterns\n7. Backward compatibility clearly documented","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-11-04T11:22:13.491033-08:00","updated_at":"2025-11-07T16:08:24.951261-08:00","closed_at":"2025-11-07T16:03:09.75064-08:00","source_repo":".","dependencies":[{"issue_id":"bd-8rd","depends_on_id":"bd-4ms","type":"parent-child","created_at":"2025-11-04T11:22:21.858002-08:00","created_by":"daemon"}]} -{"id":"bd-8v37","content_hash":"4fc8548205ad0fa0e5c45dfd4945fcf74e3e51dbf668bbf0a7602c56cf17da02","title":"BG's issue to reopen","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-07T19:04:19.450509-08:00","updated_at":"2025-11-08T00:20:30.05489-08:00","closed_at":"2025-11-08T00:20:30.05489-08:00","source_repo":"."} -{"id":"bd-8zf2","content_hash":"206a043c20b3ec3a6fd3ef1e4d402d9d5df2e011e0f14c6c02815e2916f2e44a","title":"MCP server loses workspace context after Amp restart - causes silent failures","description":"**CRITICAL BUG**: The beads MCP server loses workspace context when Amp restarts, leading to silent failures and potential data corruption.\n\n## Reproduction\n1. Start Amp with beads MCP server configured\n2. Call `mcp__beads__set_context(workspace_root=\"/path/to/project\")`\n3. Use MCP tools successfully (e.g., `mcp__beads__show`, `mcp__beads__list`)\n4. Restart Amp (new thread/session)\n5. Try to use MCP tools without calling `set_context` again\n6. **Result**: \"Not connected\" or \"No workspace set\" errors\n\n## Impact\n- Amp agents silently fail when trying to read/update beads issues\n- May attempt to create duplicate issues because they can't see existing ones\n- Potential for data corruption if operating on wrong database\n- Breaks multi-session workflows\n- Creates confusion: CLI works (`./bd`) but MCP tools don't\n\n## Current Workaround\nManually call `mcp__beads__set_context()` at start of every Amp session.\n\n## Root Cause\nMCP server is stateful and doesn't persist workspace context across restarts.\n\n## Proposed Fix\n**Option 1 (Best)**: Auto-detect workspace from current working directory\n- Match behavior of CLI `./bd` commands\n- Check for `.beads/` directory in current dir or parents\n- No manual context setting needed\n\n**Option 2**: Persist context in MCP server state file\n- Save last workspace_root to `~/.config/beads/mcp_context.json`\n- Restore on server startup\n\n**Option 3**: Require explicit context in every MCP call\n- Add optional `workspace_root` parameter to all MCP tools\n- Fall back to saved context if not provided\n\nAcceptance:\n- MCP tools work across Amp restarts without manual set_context()\n- Auto-detection matches CLI behavior (walks up from CWD)\n- Clear error message when no workspace found\n- set_context() still works for explicit override\n- BEADS_WORKING_DIR env var support\n- Integration test validates restart behavior","design":"**Recommended Implementation: Option 1 (Auto-detect)**\n\n1. Workspace Discovery Algorithm (same as CLI):\n - Start from CWD or provided directory\n - Walk up directory tree looking for .beads/beads.db\n - Cache result for performance\n\n2. MCP Tool Wrapper Changes:\n - Before each MCP tool execution, check if workspace is set\n - If not set, try auto-detection from CWD\n - If found, auto-connect and cache\n - If not found, return clear error with instructions\n\n3. Fallback Behavior:\n - Auto-detect from CWD first\n - Check BEADS_WORKING_DIR env var\n - Check ~/.config/beads/last_workspace (persisted)\n - Return actionable error if all fail\n\n4. Backwards Compatibility:\n - Keep set_context() working for explicit control\n - Auto-detect is always tried first if no explicit context\n - set_context() takes precedence over auto-detect","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-07T23:50:52.083111-08:00","updated_at":"2025-11-07T23:58:44.397502-08:00","closed_at":"2025-11-07T23:58:44.397502-08:00","source_repo":"."} +{"id":"bd-8v37","content_hash":"74aa57ab28e70fb995a1e154379a17a211bc10ffae8e5901213661b154941981","title":"BG's issue to reopen","description":"","status":"open","priority":1,"issue_type":"bug","created_at":"2025-11-07T19:04:19.450509-08:00","updated_at":"2025-11-07T19:04:19.49687-08:00","source_repo":"."} +{"id":"bd-8zf2","content_hash":"6aaca1fd593b88220f2d8e41f7af9b0cbce6d9152ac4d0b9d2ffe3b8f464adc5","title":"MCP server loses workspace context after Amp restart - causes silent failures","description":"**CRITICAL BUG**: The beads MCP server loses workspace context when Amp restarts, leading to silent failures and potential data corruption.\n\n## Reproduction\n1. Start Amp with beads MCP server configured\n2. Call `mcp__beads__set_context(workspace_root=\"/path/to/project\")`\n3. Use MCP tools successfully (e.g., `mcp__beads__show`, `mcp__beads__list`)\n4. Restart Amp (new thread/session)\n5. Try to use MCP tools without calling `set_context` again\n6. **Result**: \"Not connected\" or \"No workspace set\" errors\n\n## Impact\n- Amp agents silently fail when trying to read/update beads issues\n- May attempt to create duplicate issues because they can't see existing ones\n- Potential for data corruption if operating on wrong database\n- Breaks multi-session workflows\n- Creates confusion: CLI works (`./bd`) but MCP tools don't\n\n## Current Workaround\nManually call `mcp__beads__set_context()` at start of every Amp session.\n\n## Root Cause\nMCP server is stateful and doesn't persist workspace context across restarts.\n\n## Proposed Fix\n**Option 1 (Best)**: Auto-detect workspace from current working directory\n- Match behavior of CLI `./bd` commands\n- Check for `.beads/` directory in current dir or parents\n- No manual context setting needed\n\n**Option 2**: Persist context in MCP server state file\n- Save last workspace_root to `~/.config/beads/mcp_context.json`\n- Restore on server startup\n\n**Option 3**: Require explicit context in every MCP call\n- Add optional `workspace_root` parameter to all MCP tools\n- Fall back to saved context if not provided\n\nAcceptance:\n- MCP tools work across Amp restarts without manual set_context()\n- Auto-detection matches CLI behavior (walks up from CWD)\n- Clear error message when no workspace found\n- set_context() still works for explicit override\n- BEADS_WORKING_DIR env var support\n- Integration test validates restart behavior","design":"**Recommended Implementation: Option 1 (Auto-detect)**\n\n1. Workspace Discovery Algorithm (same as CLI):\n - Start from CWD or provided directory\n - Walk up directory tree looking for .beads/beads.db\n - Cache result for performance\n\n2. MCP Tool Wrapper Changes:\n - Before each MCP tool execution, check if workspace is set\n - If not set, try auto-detection from CWD\n - If found, auto-connect and cache\n - If not found, return clear error with instructions\n\n3. Fallback Behavior:\n - Auto-detect from CWD first\n - Check BEADS_WORKING_DIR env var\n - Check ~/.config/beads/last_workspace (persisted)\n - Return actionable error if all fail\n\n4. Backwards Compatibility:\n - Keep set_context() working for explicit control\n - Auto-detect is always tried first if no explicit context\n - set_context() takes precedence over auto-detect","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-07T23:50:52.083111-08:00","updated_at":"2025-11-07T23:58:44.397502-08:00","closed_at":"2025-11-07T23:58:44.397502-08:00","source_repo":"."} {"id":"bd-8zpg","content_hash":"31c8e1312c7d75e9c17f9557f86bc642ca47e5c9a39d4f7e76429cc61bc9793d","title":"Add tests for bd init --contributor wizard","description":"Write integration tests for the contributor wizard:\n- Test fork detection logic\n- Test planning repo creation\n- Test config setup\n- Test with/without upstream remote\n- Test with SSH vs HTTPS origins","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T18:58:18.171851-08:00","updated_at":"2025-11-06T18:19:16.232739-08:00","closed_at":"2025-11-06T16:14:06.341689-08:00","source_repo":"."} +{"id":"bd-9","content_hash":"4743831760ddb3f01ae4531dcd70a1e7907aeea76ded3cc4cbd69acf72ebd7ed","title":"Add validation/warning for malformed issue IDs","description":"getNextID silently ignores non-numeric ID suffixes (e.g., bd-foo). CAST returns NULL for invalid strings. Consider detecting and warning about malformed IDs in database. Location: internal/storage/sqlite/sqlite.go:79-82","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-21T00:25:40.55077-07:00","closed_at":"2025-10-14T02:51:52.198988-07:00","source_repo":"."} +{"id":"bd-90","content_hash":"977c8e1c682595d7d73781ead119e346c34cf90d012dfac0c9a9cddaecb7d776","title":"Auto-close or warn about epics when all children complete","description":"","design":"See epic.go for implementation. Commands: bd epic status, bd epic close-eligible. Stats integration added.","acceptance_criteria":"Commands work, tests pass, addresses GitHub issue #62","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-17T13:47:42.9642-07:00","updated_at":"2025-10-21T00:25:40.551116-07:00","closed_at":"2025-10-17T13:47:48.136662-07:00","external_ref":"gh-62","source_repo":"."} +{"id":"bd-900","content_hash":"e427945dff6af0e80ebbe8241ff24138856bc0710fb28cc05eecd8046e05804f","title":"Agent 7 Issue 1","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.779921-07:00","updated_at":"2025-10-21T00:29:10.779921-07:00","source_repo":"."} +{"id":"bd-901","content_hash":"60610a4fe4ef5131d65cbe5e554b5b5138e548fea0f513ce1d325e5b5d95acbd","title":"Agent 7 Issue 2","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.780467-07:00","updated_at":"2025-10-21T00:29:10.780467-07:00","source_repo":"."} +{"id":"bd-902","content_hash":"4c1abe0d543c3638eaecc7e09169307445f833ccf8da943243455c70f54f6beb","title":"Agent 7 Issue 3","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.780943-07:00","updated_at":"2025-10-21T00:29:10.780943-07:00","source_repo":"."} +{"id":"bd-903","content_hash":"59fedbbd33c57af51b70179f188f1e23cd33dca2e42c13435998eb376eac0de0","title":"Agent 7 Issue 4","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.781401-07:00","updated_at":"2025-10-21T00:29:10.781401-07:00","source_repo":"."} +{"id":"bd-904","content_hash":"a30cfe3a0dbbb659620748ba39bc4c085228cae101bf5fd48af8a23f1adb6d04","title":"Agent 7 Issue 5","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.781926-07:00","updated_at":"2025-10-21T00:29:10.781926-07:00","source_repo":"."} +{"id":"bd-905","content_hash":"41fb5139d7e90d1c29fe4e11c7b3671db8d2ba79974275c6e36e3634950259dc","title":"Agent 7 Issue 6","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.782384-07:00","updated_at":"2025-10-21T00:29:10.782384-07:00","source_repo":"."} +{"id":"bd-906","content_hash":"b4b24a9de706f16dd1fd2add38cf169538231aa49f59d106648b79c74707d998","title":"Agent 7 Issue 7","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.782889-07:00","updated_at":"2025-10-21T00:29:10.782889-07:00","source_repo":"."} {"id":"bd-9063acda","content_hash":"0ea4606188e376705c46a14e5d64da1b706aad47a39054a732c21330db601960","title":"Clean up linter errors (914 total issues)","description":"The codebase has 914 linter issues reported by golangci-lint. While many are documented as baseline in LINTING.md, we should clean these up systematically to improve code quality and maintainability.","design":"Break down by linter category, prioritizing high-impact issues:\n1. dupl (7) - Code duplication\n2. goconst (12) - Repeated strings\n3. gocyclo (11) - High complexity functions\n4. revive (78) - Style issues\n5. gosec (102) - Security warnings\n6. errcheck (683) - Unchecked errors (many in tests)","acceptance_criteria":"All linter categories reduced to acceptable levels, with remaining baseline documented in LINTING.md","notes":"Reduced from 56 to 41 issues locally, then to 0 issues.\n\n**Fixed in commits:**\n- c2c7eda: Fixed 15 actual errors (dupl, gosec, revive, staticcheck, unparam)\n- 963181d: Configured exclusions to get to 0 issues locally\n\n**Current status:**\n- ✅ Local: golangci-lint reports 0 issues\n- ❌ CI: Still failing (see [deleted:bd-cb64c226.1])\n\n**Problem:**\nConfig v2 format or golangci-lint-action@v8 compatibility issue causing CI to fail despite local success.\n\n**Next:** Debug [deleted:bd-cb64c226.1] to fix CI/local discrepancy","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-10-24T01:01:12.997982-07:00","updated_at":"2025-11-04T11:10:23.532431-08:00","closed_at":"2025-11-04T11:10:23.532433-08:00","source_repo":"."} -{"id":"bd-908z","content_hash":"b5db340fcb20ee717ee899f65baa3bec25eff344523516e8db08796170f3accf","title":"Add bd hooks install command to embed git hooks in binary","description":"Currently git hooks are installed via `examples/git-hooks/install.sh`, which only exists in the beads source repo. Users who install bd via installer/homebrew/npm can't easily install hooks.\n\n**Proposal:**\nAdd `bd hooks install` command that:\n- Embeds hook scripts in the bd binary (using go:embed)\n- Installs them to .git/hooks/ in current repo\n- Backs up existing hooks\n- Makes them executable\n\n**Commands:**\n- `bd hooks install` - Install all hooks\n- `bd hooks uninstall` - Remove hooks\n- `bd hooks list` - Show installed hooks status\n\n**Benefits:**\n- Works for all bd users, not just source repo users\n- More discoverable (shows in bd --help)\n- Consistent with bd workflow\n- Can version hooks with bd releases","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-08T01:23:24.362827-08:00","updated_at":"2025-11-08T01:28:08.842516-08:00","closed_at":"2025-11-08T01:28:08.842516-08:00","source_repo":"."} +{"id":"bd-907","content_hash":"38fc1849b62406ce99d56821e9f30c7bec22f74649170944efeb4c803ab21566","title":"Agent 7 Issue 8","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.783407-07:00","updated_at":"2025-10-21T00:29:10.783407-07:00","source_repo":"."} +{"id":"bd-908","content_hash":"1aafa59c7364cc37c004eda950c0e89417f262eaf30258593707bead76edb911","title":"Agent 7 Issue 9","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.783946-07:00","updated_at":"2025-10-21T00:29:10.783946-07:00","source_repo":"."} +{"id":"bd-908z","content_hash":"261f49a328da20d0a18a6a1f56010de9ac6034e989c686b61f12e1d85af41500","title":"Add bd hooks install command to embed git hooks in binary","description":"Currently git hooks are installed via `examples/git-hooks/install.sh`, which only exists in the beads source repo. Users who install bd via installer/homebrew/npm can't easily install hooks.\n\n**Proposal:**\nAdd `bd hooks install` command that:\n- Embeds hook scripts in the bd binary (using go:embed)\n- Installs them to .git/hooks/ in current repo\n- Backs up existing hooks\n- Makes them executable\n\n**Commands:**\n- `bd hooks install` - Install all hooks\n- `bd hooks uninstall` - Remove hooks\n- `bd hooks list` - Show installed hooks status\n\n**Benefits:**\n- Works for all bd users, not just source repo users\n- More discoverable (shows in bd --help)\n- Consistent with bd workflow\n- Can version hooks with bd releases","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-08T01:23:24.362827-08:00","updated_at":"2025-11-08T01:28:08.842516-08:00","closed_at":"2025-11-08T01:28:08.842516-08:00","source_repo":"."} +{"id":"bd-909","content_hash":"b4714e62e218a12275b1e45f0adb27521fc0f18ec5e640818f0facea8bfd491d","title":"Agent 7 Issue 10","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.784439-07:00","updated_at":"2025-10-21T00:29:10.784439-07:00","source_repo":"."} {"id":"bd-90a5","content_hash":"e54904609d3be88a50850d032fbbc1729a48d79436ff0ab5204d1cc044b93c47","title":"Extract hash ID generation functions to hash_ids.go","description":"Move generateHashID, getNextChildNumber, GetNextChildID to hash_ids.go","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-01T19:28:54.890883-07:00","updated_at":"2025-11-02T12:32:00.159056-08:00","closed_at":"2025-11-02T12:32:00.159058-08:00","source_repo":"."} {"id":"bd-90v","content_hash":"9863bc4154603ebc58c4649f8a74b5508f8b30aae6db360e84485e2d7f19fb30","title":"bd prime: AI context loading and Claude Code integration","description":"Implement `bd prime` command and Claude Code hooks for context recovery. Hooks work with BOTH MCP server and CLI approaches - they solve the context memory problem (keeping bd workflow fresh after compaction) not the tool access problem (MCP vs CLI).","design":"## Epic Scope\n\nThis epic covers:\n1. Core `bd prime` command implementation with MCP-aware output\n2. Claude Code hooks via `bd setup claude` (works with MCP OR CLI)\n3. Automatic context recovery via SessionStart/PreCompact hooks\n4. `bd doctor` verification for Claude setup\n5. Documentation updates\n\n## Goals\n- Keep bd workflow fresh in agent context (prevent markdown TODO reversion)\n- Enable automatic context recovery after compaction/clear\n- Adapt to user's workflow preference (MCP vs CLI) automatically\n- Support multi-user projects (mixed Claude/non-Claude teams)\n- Verify setup with `bd doctor`\n\n## Architecture Understanding\n\n**MCP vs CLI is a user preference (not project-level):**\n- User installs MCP server globally → gets native bd tools\n- User doesn't install MCP → uses CLI via Bash tool\n- `bd prime` auto-detects which mode and adapts output\n- Same hooks work for all users regardless of preference\n\n**Hooks complement both approaches:**\n- **With MCP**: Hooks output workflow reminders (~500 tokens) - prevents forgetting to use MCP tools\n- **Without MCP**: Hooks output full CLI reference (~1-2k tokens) - provides command syntax\n- **Both cases**: Prevents markdown TODO reversion after compaction\n\n**Why hooks matter even with MCP:**\n- MCP tools can be forgotten after compaction\n- Hooks refresh \"use bd, not markdown\" reminder\n- PreCompact keeps bd workflow fresh in memory\n- Works in both MCP and CLI scenarios\n\n## Token Optimization\n\n**MCP mode** (~500 tokens):\n- Workflow reminders only\n- No CLI syntax (user has native tools)\n- References to MCP tool names\n\n**Non-MCP mode** (~1-2k tokens):\n- Full workflow rules\n- Complete CLI command reference\n- Examples and common patterns\n\n**Why adaptive output matters:**\n- MCP users waste tokens on CLI docs they don't need\n- Non-MCP users need full command reference\n- Same hook works for everyone, adapts automatically\n- Multi-user projects: each dev gets appropriate output for their setup\n\n## Out of Scope\n- Tip system infrastructure (separate epic)\n- Cursor/Windsurf integration (separate issues)\n- MCP server modifications","acceptance_criteria":"- `bd prime` command exists and outputs AI-optimized markdown\n- `bd setup claude` installs hooks and slash commands\n- Hooks auto-call `bd prime` when .beads/ detected\n- `bd doctor` verifies Claude integration\n- Documentation complete in AGENTS.md, README.md, QUICKSTART.md\n- All child issues closed","status":"open","priority":2,"issue_type":"epic","created_at":"2025-11-11T23:31:12.119012-08:00","updated_at":"2025-11-12T00:11:07.743189-08:00","source_repo":"."} -{"id":"bd-942469b8","content_hash":"32c69c723ebb79b1bb948fe0391906b0c81426c473adccf13fdb47dd40ca774b","title":"Rapid 5","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-29T19:11:57.508166-07:00","updated_at":"2025-11-07T23:21:44.924708-08:00","closed_at":"2025-11-07T23:18:52.298739-08:00","source_repo":"."} +{"id":"bd-91","content_hash":"52dca07bae5f882523f0dabd406261c3ccd91b28d7958cfb4a26975945d98db0","title":"Agents confused by multiple MCP beads servers - use wrong database","description":"When multiple beads MCP servers are configured (e.g., beads-wyvern, beads-adar), agents may use the wrong server and create issues in wrong database. In this session, created wy-22 (wyvern) when working in beads repo. Root cause: All MCP servers available simultaneously with different BEADS_WORKING_DIR/BEADS_DB env vars. Agent must manually choose correct server or use direct bd commands.","design":"## This is a SYMPTOM of bd-86\n\nThe multi-server approach was a workaround attempt that backfired. See bd-86 for comprehensive root cause analysis.\n\n## Original Solutions (superseded by bd-86 analysis)\n\nPossible solutions: 1) Context-aware MCP routing based on pwd, 2) Single MCP server that auto-detects context, 3) Better agent instructions about which server to use, 4) Naming convention that makes server purpose obvious (beads-wyvern vs beads-current)\n\n## Actual Solution (from bd-86)\n\nImplement PATH 1: Single MCP server with SetContext/WhereAmI tools. This issue will be resolved when bd-86 is implemented.","notes":"This issue is a SYMPTOM of bd-86 (missing CWD propagation). The multi-server workaround (beads-wyvern, beads-adar, etc.) doesn't solve the root cause and creates new problems (agent confusion about which server to use). See bd-86 for comprehensive analysis and architectural solutions. Should be resolved when bd-86 is fixed with Path 1 (SetContext/WhereAmI approach).","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-17T13:47:58.092565-07:00","updated_at":"2025-10-21T00:25:40.55129-07:00","closed_at":"2025-10-17T16:54:35.197351-07:00","source_repo":"."} +{"id":"bd-910","content_hash":"953d872d117936cb5ddcab3279dcff308916613ab0499af3464a85fd967cd0e3","title":"Agent 7 Issue 11","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.784928-07:00","updated_at":"2025-10-21T00:29:10.784928-07:00","source_repo":"."} +{"id":"bd-911","content_hash":"3c4a73ca6cfa0d3b5c424a99504eceb7f36ceb83599d859f704ee3f4dc90f59e","title":"Agent 7 Issue 12","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.785427-07:00","updated_at":"2025-10-21T00:29:10.785427-07:00","source_repo":"."} +{"id":"bd-912","content_hash":"9d02b203de2379f8997a0f72581fa0a6f743edb07ffb84ce506fcadd1c0ce67b","title":"Agent 7 Issue 13","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.785905-07:00","updated_at":"2025-10-21T00:29:10.785905-07:00","source_repo":"."} +{"id":"bd-913","content_hash":"3a42331e27fce838bf609b693d82d852ffdbf745342c67f831c84068430dbb22","title":"Agent 7 Issue 14","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.786364-07:00","updated_at":"2025-10-21T00:29:10.786364-07:00","source_repo":"."} +{"id":"bd-914","content_hash":"92304e53990f76a59f5a27a1bf6bf201b0e8c8674d8ff462a37d6b20386838ef","title":"Agent 7 Issue 15","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.786814-07:00","updated_at":"2025-10-21T00:29:10.786814-07:00","source_repo":"."} +{"id":"bd-915","content_hash":"a45d4eb409276b7a1349794c950afa7eefcf192da3ffab423d403a2a87ffe7bb","title":"Agent 7 Issue 16","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.787307-07:00","updated_at":"2025-10-21T00:29:10.787307-07:00","source_repo":"."} +{"id":"bd-916","content_hash":"b3db4c9ba321f619f027a23954d2adcb2edcfadd283be5c2a66f3d9b3c0012b4","title":"Agent 7 Issue 17","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.787785-07:00","updated_at":"2025-10-21T00:29:10.787785-07:00","source_repo":"."} +{"id":"bd-917","content_hash":"31b07bcbf0f8c9d385c9a4f45aaaae2ba9998fc4c8c20f77e46208b7681aff82","title":"Agent 7 Issue 18","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.788245-07:00","updated_at":"2025-10-21T00:29:10.788245-07:00","source_repo":"."} +{"id":"bd-918","content_hash":"03cc6962dfdd946ce40808008ed93905526a90aeaeb61bfd8faa9e92252ec702","title":"Agent 7 Issue 19","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.78873-07:00","updated_at":"2025-10-21T00:29:10.78873-07:00","source_repo":"."} +{"id":"bd-919","content_hash":"0641d31cbdf9000bffc355207712022dfe61f04edc1a40c2dd5db6f07d913835","title":"Agent 7 Issue 20","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.789206-07:00","updated_at":"2025-10-21T00:29:10.789206-07:00","source_repo":"."} +{"id":"bd-92","content_hash":"9a12857555f0ce85d84185f87b2c28c60e3496a5d4834fc4a8e530c7d725564d","title":"Implement daemon RPC with per-request context routing (PATH 1.5)","description":"Enable MCP server to use daemon with per-request context instead of shelling out to bd CLI. This solves multi-repo routing properly.","design":"## Goal\n\nMCP server → daemon RPC with `cwd` parameter → daemon routes to correct database per request\n\n## Architecture\n\n```\nAI Client (Claude/Amp)\n ↓\nMCP Server (set_context sets workspace_root)\n ↓\nDaemon Client Library (new)\n ↓ RPC with cwd field\nbeadsd Daemon\n ↓ tree-walking per request\nCorrect .beads/*.db\n```\n\n## Components\n\n### 1. Extend Daemon RPC Protocol\n**Files:** `internal/daemon/protocol.go`, daemon handlers\n\n- Add `Cwd string` field to all request types (CreateIssueRequest, UpdateIssueRequest, etc.)\n- Daemon does tree-walking to find `.beads/*.db` based on cwd\n- Each operation gets its own context (stateless per request)\n\n### 2. Create Daemon Client Library\n**New file:** `integrations/beads-mcp/src/beads_mcp/bd_daemon_client.py`\n\n- Python client for daemon RPC protocol\n- Methods matching current BdClient interface\n- Adds `cwd` parameter to all requests\n- Handles connection management, retries\n- Falls back to CLI if daemon unavailable\n\n### 3. Update MCP Server\n**File:** `integrations/beads-mcp/src/beads_mcp/server.py`\n\n- Store workspace_root from `set_context` \n- Use daemon client by default, fall back to CLI client\n- Pass workspace_root as cwd to all operations\n- Handle daemon not running gracefully\n\n### 4. Update bd_client.py\n**File:** `integrations/beads-mcp/src/beads_mcp/bd_client.py`\n\n- Make it an abstract interface/base class\n- Concrete implementations: BdCliClient, BdDaemonClient\n- Factory function to create appropriate client\n\n## Benefits\n\n- ✅ True multi-repo support (each request has context)\n- ✅ Better performance (no process spawning)\n- ✅ Concurrent access already solved (daemon exists)\n- ✅ Stateless per request (no env var persistence issues)\n- ✅ Falls back to CLI when daemon not running\n\n## Implementation Steps\n\n1. **Extend RPC protocol** (Go)\n - Add Cwd field to request structs\n - Update daemon handlers to use cwd for tree-walking\n \n2. **Create daemon client** (Python)\n - Implement RPC protocol in Python\n - Match BdClient interface\n \n3. **Refactor MCP server**\n - Abstract BdClient\n - Use daemon client when available\n \n4. **Test with multiple repos**\n - Concurrent operations\n - Context switching\n - Daemon restart handling\n\n## Related Issues\n\n- bd-86: Root cause investigation (this is PATH 1.5 solution)\n- bd-91: Multi-server confusion (will be resolved)\n- bd-80, bd-81, bd-82, bd-83: Daemon implementation (foundation)","acceptance_criteria":"- MCP server can use daemon RPC instead of CLI\n- Each operation includes cwd context\n- Daemon routes to correct database per request\n- Works with multiple repos simultaneously\n- Falls back to CLI gracefully if daemon unavailable\n- All existing MCP tests pass\n- New multi-repo integration tests pass","notes":"## Progress: Session 2 (2025-10-17 continued)\n\n### Completed\n1. ✅ Updated MCP server to use daemon client\n - Modified `tools.py` to use `create_bd_client()` factory\n - Passes `BEADS_WORKING_DIR` from environment\n - Uses daemon by default, falls back to CLI\n2. ✅ Added `BEADS_USE_DAEMON` environment variable\n - Default: `1` (enabled)\n - Set to `0` to force CLI mode\n3. ✅ Created multi-repo integration test (`test_multi_repo.py`)\n - Tests concurrent operations across two repos\n - Verifies proper database routing based on cwd\n - Validates issue prefix isolation (r1- vs r2-)\n - All tests pass! ✅\n4. ✅ Updated MCP README with daemon usage docs\n - Added BEADS_USE_DAEMON to environment variables\n - Added multi-repo test documentation\n\n### Test Results\n```\n=== All Tests Passed! ===\nSummary:\n ✅ Per-request context routing works\n ✅ Multiple repos are properly isolated\n ✅ Concurrent operations succeed\n ✅ Daemon handles rapid context switching\n```\n\n### Files Modified/Added (Session 2)\n- `integrations/beads-mcp/src/beads_mcp/tools.py` - uses daemon client ✅\n- `integrations/beads-mcp/test_multi_repo.py` - NEW integration test ✅\n- `integrations/beads-mcp/README.md` - daemon documentation ✅\n\n### Architecture Validated\n\n```\nAI Client (Claude/Amp)\n ↓\nMCP Server (workspace_root from set_context)\n ↓ create_bd_client(prefer_daemon=True, workspace_root)\nDaemon Client Library\n ↓ RPC with cwd field\nbeadsd Daemon\n ↓ per-request tree-walking\nCorrect .beads/*.db\n```\n\n### Ready to Close\nAll acceptance criteria met:\n- ✅ MCP server can use daemon RPC instead of CLI\n- ✅ Each operation includes cwd context\n- ✅ Daemon routes to correct database per request\n- ✅ Works with multiple repos simultaneously\n- ✅ Falls back to CLI gracefully if daemon unavailable\n- ✅ All existing MCP tests pass\n- ✅ New multi-repo integration tests pass","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-17T16:20:00.775954-07:00","updated_at":"2025-10-21T00:25:40.55148-07:00","closed_at":"2025-10-17T16:37:34.504057-07:00","source_repo":"."} +{"id":"bd-920","content_hash":"cfe30d21bdaf668789da9b6cc8a1afec1eb2bd3ec27b5e59369b376b2c1769c7","title":"Agent 7 Issue 21","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.789669-07:00","updated_at":"2025-10-21T00:29:10.789669-07:00","source_repo":"."} +{"id":"bd-921","content_hash":"50278fec60e0d3aca95cc4abe6413b2408f7f3177c8789df8769e05b8c847c01","title":"Agent 7 Issue 22","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.790185-07:00","updated_at":"2025-10-21T00:29:10.790185-07:00","source_repo":"."} +{"id":"bd-922","content_hash":"7991e8691af1ba3c7cdfdf3a5ed1adf1d490092ddbfcd6351898edee5512b082","title":"Agent 7 Issue 23","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.790669-07:00","updated_at":"2025-10-21T00:29:10.790669-07:00","source_repo":"."} +{"id":"bd-923","content_hash":"2d16afcf7a891cc5cd3a411765298ca148cf53975afaa8e3fb6dd9532d7e5dbf","title":"Agent 7 Issue 24","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.791161-07:00","updated_at":"2025-10-21T00:29:10.791161-07:00","source_repo":"."} +{"id":"bd-924","content_hash":"48cbe930af4ca6f633f2486f654bc89ee5c685c7d5b0bccfcf672cd9c2c7b8ef","title":"Agent 7 Issue 25","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.791628-07:00","updated_at":"2025-10-21T00:29:10.791628-07:00","source_repo":"."} +{"id":"bd-925","content_hash":"98025dd4adcfd6abcdc8c28e51292c17554217204108992babb8de844074168b","title":"Agent 7 Issue 26","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.792125-07:00","updated_at":"2025-10-21T00:29:10.792125-07:00","source_repo":"."} +{"id":"bd-926","content_hash":"285b6c7ab70099ccd585a5e095a65953f4335715547e89cb580b4871220139aa","title":"Agent 7 Issue 27","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.792593-07:00","updated_at":"2025-10-21T00:29:10.792593-07:00","source_repo":"."} +{"id":"bd-927","content_hash":"f8603e96606715b8723ce338cb19296dca1c2cd49a54e7b57e07536937e86733","title":"Agent 7 Issue 28","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.793061-07:00","updated_at":"2025-10-21T00:29:10.793061-07:00","source_repo":"."} +{"id":"bd-928","content_hash":"1838348cdbfdb4441578e15c242a8af77afbd61b79a23c69b7a20492b60b625f","title":"Agent 7 Issue 29","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.793526-07:00","updated_at":"2025-10-21T00:29:10.793526-07:00","source_repo":"."} +{"id":"bd-929","content_hash":"5ccd42277eea34b10a622f3b1ccd3a287893711ee28a98823a34ea98803ffce6","title":"Agent 7 Issue 30","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.79401-07:00","updated_at":"2025-10-21T00:29:10.79401-07:00","source_repo":"."} +{"id":"bd-93","content_hash":"5db8f042ea26c32d45459d4eb8b3503747c8dc91b10734428e3d25d194e1dbac","title":"Issue in repo1","description":"This should go to repo1 database","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-17T16:34:10.054141-07:00","updated_at":"2025-10-21T00:25:40.551683-07:00","closed_at":"2025-10-17T18:13:19.394378-07:00","source_repo":"."} +{"id":"bd-930","content_hash":"a06342d1980660168565cb8d95349073c9c57d577e868e42c9aa26f26bfbe39f","title":"Agent 7 Issue 31","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.794473-07:00","updated_at":"2025-10-21T00:29:10.794473-07:00","source_repo":"."} +{"id":"bd-931","content_hash":"2487a2d9268ede172a4d7ef4299d07b03638c15dfdff05efbf521e6a7ee641fc","title":"Agent 7 Issue 32","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.794935-07:00","updated_at":"2025-10-21T00:29:10.794935-07:00","source_repo":"."} +{"id":"bd-932","content_hash":"fe9d2345e1042c24b9c4f2d1c826bf6f6ea938d255d72ccd11afccbd412ccde9","title":"Agent 7 Issue 33","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.795413-07:00","updated_at":"2025-10-21T00:29:10.795413-07:00","source_repo":"."} +{"id":"bd-933","content_hash":"08622504040aca37ac8ac57ada59a030270dd745d35dd508aa9d47ca4c97c02f","title":"Agent 7 Issue 34","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.795883-07:00","updated_at":"2025-10-21T00:29:10.795883-07:00","source_repo":"."} +{"id":"bd-934","content_hash":"03aedb6e13a419d434a3ec244d6ef20bc9f0de7a90f27f079a9727eff8f4147f","title":"Agent 7 Issue 35","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.796346-07:00","updated_at":"2025-10-21T00:29:10.796346-07:00","source_repo":"."} +{"id":"bd-935","content_hash":"8a7ebbe5a432e8925179e53c3d5d2d22ee4530df902799b810464768404f613c","title":"Agent 7 Issue 36","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.796825-07:00","updated_at":"2025-10-21T00:29:10.796825-07:00","source_repo":"."} +{"id":"bd-936","content_hash":"216ffd4d0b351c847eb023019a348b6c8aee9b65e98a934c6c37f46d73db7ac2","title":"Agent 7 Issue 37","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.797332-07:00","updated_at":"2025-10-21T00:29:10.797332-07:00","source_repo":"."} +{"id":"bd-937","content_hash":"9fcb8b818346228c3ef73943078609cc475241aec0d5ac367b60ed74914c55dc","title":"Agent 7 Issue 38","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.797819-07:00","updated_at":"2025-10-21T00:29:10.797819-07:00","source_repo":"."} +{"id":"bd-938","content_hash":"b0f03a2459dbacca1f7aef782de63c10a448e8aeed28cd31824e7ddbc6073c4d","title":"Agent 7 Issue 39","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.798347-07:00","updated_at":"2025-10-21T00:29:10.798347-07:00","source_repo":"."} +{"id":"bd-939","content_hash":"abdfe125fdd486bc92a18af16deaa7aa3e317d79657bb69d2de71deca62976fb","title":"Agent 7 Issue 40","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.798828-07:00","updated_at":"2025-10-21T00:29:10.798828-07:00","source_repo":"."} +{"id":"bd-94","content_hash":"fc9dc3900cd925e0d4da6b73ef092a6ed5677445438d78a2a6da69673d03aad1","title":"Issue in repo2","description":"This should go to repo2 database","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-17T16:34:10.054592-07:00","updated_at":"2025-10-21T00:25:40.551838-07:00","closed_at":"2025-10-17T18:13:19.394268-07:00","source_repo":"."} +{"id":"bd-940","content_hash":"0111457da2ba371293d96e9ca7db338f63d40ae112d481562558fe212cc6fd51","title":"Agent 7 Issue 41","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.799292-07:00","updated_at":"2025-10-21T00:29:10.799292-07:00","source_repo":"."} +{"id":"bd-941","content_hash":"7bd292854e60ff74236ebcfce6033ecb74048076718a3bc7b468aa32e9b63039","title":"Agent 7 Issue 42","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.799759-07:00","updated_at":"2025-10-21T00:29:10.799759-07:00","source_repo":"."} +{"id":"bd-942","content_hash":"a966ce13b2624eb0ef043e8194a9f4a7a17a41d82aea19a5e8be5be0036d67f2","title":"Agent 7 Issue 43","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.800586-07:00","updated_at":"2025-10-21T00:29:10.800586-07:00","source_repo":"."} +{"id":"bd-942469b8","content_hash":"32c69c723ebb79b1bb948fe0391906b0c81426c473adccf13fdb47dd40ca774b","title":"Rapid 5","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-29T19:11:57.508166-07:00","updated_at":"2025-11-08T01:49:23.459773-08:00","closed_at":"2025-11-07T23:18:52.298739-08:00","source_repo":"."} +{"id":"bd-943","content_hash":"7d7fbe7a6cf41b34555df9dceebfae5381d1daa0ce7d0463d2b40a654520140d","title":"Agent 7 Issue 44","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.801108-07:00","updated_at":"2025-10-21T00:29:10.801108-07:00","source_repo":"."} +{"id":"bd-944","content_hash":"f44e3261a39d78ab27ac74be09b4f63106dad87f95e4c53f80e32f7f816aaa82","title":"Agent 7 Issue 45","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.801588-07:00","updated_at":"2025-10-21T00:29:10.801588-07:00","source_repo":"."} +{"id":"bd-945","content_hash":"b5893e172adaaffd8c4ee0ddc6836381c7a888b98643ff9d2d015f1ffce32407","title":"Agent 7 Issue 46","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.802094-07:00","updated_at":"2025-10-21T00:29:10.802094-07:00","source_repo":"."} +{"id":"bd-946","content_hash":"1bed2704d766515dbcea5032baf2466f64cca930b02fc0c79cbd885cba958ad3","title":"Agent 7 Issue 47","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.802592-07:00","updated_at":"2025-10-21T00:29:10.802592-07:00","source_repo":"."} +{"id":"bd-947","content_hash":"e9cf8bd9c650417b3ef4b66debae54899477c2120c363514bb64b5d5be28a1f6","title":"Agent 7 Issue 48","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.803044-07:00","updated_at":"2025-10-21T00:29:10.803044-07:00","source_repo":"."} +{"id":"bd-948","content_hash":"58c121da14a6971da44a0da2a3a0b21a4241179890e0472b69ebc1a1490778c2","title":"Agent 7 Issue 49","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.803579-07:00","updated_at":"2025-10-21T00:29:10.803579-07:00","source_repo":"."} +{"id":"bd-949","content_hash":"031397153adba482f2786352a5c3265d97590f1f4690c74fa8eb85c7c71c1382","title":"Agent 7 Issue 50","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.80435-07:00","updated_at":"2025-10-21T00:29:10.80435-07:00","source_repo":"."} +{"id":"bd-95","content_hash":"fc9dc3900cd925e0d4da6b73ef092a6ed5677445438d78a2a6da69673d03aad1","title":"Issue in repo2","description":"This should go to repo2 database","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-17T16:35:02.535522-07:00","updated_at":"2025-10-21T00:25:40.551988-07:00","closed_at":"2025-10-17T18:13:19.394252-07:00","source_repo":"."} +{"id":"bd-950","content_hash":"f8662412918d40a3fda596dacab5ccc46e009e19a84e850833e78dc0515ca00d","title":"Agent 7 Issue 51","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.804913-07:00","updated_at":"2025-10-21T00:29:10.804913-07:00","source_repo":"."} +{"id":"bd-951","content_hash":"b729fcc423752ee2545915aed3eb7ea5cd32151bf5c2fa11681529479f6809ed","title":"Agent 7 Issue 52","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.805468-07:00","updated_at":"2025-10-21T00:29:10.805468-07:00","source_repo":"."} +{"id":"bd-952","content_hash":"a93db280f635fb0ca9579c436c145c4a532127c9fae913e0678b3946e56631ff","title":"Agent 7 Issue 53","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.805986-07:00","updated_at":"2025-10-21T00:29:10.805986-07:00","source_repo":"."} +{"id":"bd-953","content_hash":"bc1e62fc07fa76fe994acbe19146e6aae9cfbfd4b5420b6092db97ef46b3810d","title":"Agent 7 Issue 54","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.806525-07:00","updated_at":"2025-10-21T00:29:10.806525-07:00","source_repo":"."} +{"id":"bd-954","content_hash":"4c04e9f2b1df9b8b22dd334c63c48a6b35b6bcd681836bd28d18854437debfa8","title":"Agent 7 Issue 55","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.807055-07:00","updated_at":"2025-10-21T00:29:10.807055-07:00","source_repo":"."} +{"id":"bd-955","content_hash":"1406fdd4509a0d6b6470c49bd687fe31270f12250db5783dd64b2f11c8961a0a","title":"Agent 7 Issue 56","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.807596-07:00","updated_at":"2025-10-21T00:29:10.807596-07:00","source_repo":"."} +{"id":"bd-956","content_hash":"2bd2dcdaf26ce8431eba4cffa1e39fa3de1a9dc3fd46d99c8aa5673ceb5f8936","title":"Agent 7 Issue 57","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.808205-07:00","updated_at":"2025-10-21T00:29:10.808205-07:00","source_repo":"."} +{"id":"bd-957","content_hash":"3866d545078afa6b23baa9fd16d4ddc293fb3329ce3b1994b08cc03b6893d3b0","title":"Agent 7 Issue 58","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.808843-07:00","updated_at":"2025-10-21T00:29:10.808843-07:00","source_repo":"."} +{"id":"bd-958","content_hash":"05b2ded2d714b6c38a1ec943c4fa05eb9fa4c196ab3f55cc89e85a1c8710951c","title":"Agent 7 Issue 59","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.809379-07:00","updated_at":"2025-10-21T00:29:10.809379-07:00","source_repo":"."} +{"id":"bd-959","content_hash":"43ed29d0f0277847b626a73bbf59bd987dfcd21e4f45e1f5febdf112f19092e8","title":"Agent 7 Issue 60","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.809902-07:00","updated_at":"2025-10-21T00:29:10.809902-07:00","source_repo":"."} +{"id":"bd-96","content_hash":"5db8f042ea26c32d45459d4eb8b3503747c8dc91b10734428e3d25d194e1dbac","title":"Issue in repo1","description":"This should go to repo1 database","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-17T16:35:02.535742-07:00","updated_at":"2025-10-21T00:25:40.552142-07:00","closed_at":"2025-10-17T18:13:19.394276-07:00","source_repo":"."} +{"id":"bd-960","content_hash":"2c1e146b53c99f664a2cd4bf418de96b14ace9c4c0a9f1a9ced1e8a263b894d7","title":"Agent 7 Issue 61","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.810409-07:00","updated_at":"2025-10-21T00:29:10.810409-07:00","source_repo":"."} +{"id":"bd-961","content_hash":"754dcf849d2f9f855de2447fe591eae4cca279442c77e9856a128fe87f2dc398","title":"Agent 7 Issue 62","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.810932-07:00","updated_at":"2025-10-21T00:29:10.810932-07:00","source_repo":"."} {"id":"bd-96142dec","content_hash":"721a9407dc1f092be7fa260c390100f76d2e095e487e514f937a5a396b5620f7","title":"Add fallback to polling on watcher failure","description":"Detect fsnotify.NewWatcher() errors and log warning. Auto-switch to polling mode with 5s ticker. Add BEADS_WATCHER_FALLBACK env var to control behavior.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-28T16:20:02.428439-07:00","updated_at":"2025-10-30T17:12:58.220378-07:00","closed_at":"2025-10-28T19:23:43.595916-07:00","source_repo":"."} +{"id":"bd-962","content_hash":"7bc019c995e0047eafb2161e259973d3771cefc98039bc2ba0e16384069af400","title":"Agent 7 Issue 63","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.811473-07:00","updated_at":"2025-10-21T00:29:10.811473-07:00","source_repo":"."} +{"id":"bd-963","content_hash":"84771c44990f75d86d1510fe23df373257c4a631d45e0a56e7752a01af0a4d3f","title":"Agent 7 Issue 64","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.811964-07:00","updated_at":"2025-10-21T00:29:10.811964-07:00","source_repo":"."} +{"id":"bd-964","content_hash":"95a2abe182e7013dad793e264d07cf528323d5b9a0976671a4474cda236ccf45","title":"Agent 7 Issue 65","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.812488-07:00","updated_at":"2025-10-21T00:29:10.812488-07:00","source_repo":"."} +{"id":"bd-965","content_hash":"696ef6a43032d8af3f566e61a6980e176e81d39e1cb8df577d60d3fd47e83f5f","title":"Agent 7 Issue 66","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.813005-07:00","updated_at":"2025-10-21T00:29:10.813005-07:00","source_repo":"."} +{"id":"bd-966","content_hash":"1e595eb709ad30d20cedc2d3b8c70073ff573a7755138d5a0049210243f75759","title":"Agent 7 Issue 67","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.813517-07:00","updated_at":"2025-10-21T00:29:10.813517-07:00","source_repo":"."} +{"id":"bd-967","content_hash":"3cfdb320f49a7d3e715bef7c4ec912562ca2f5477afd8c14259311bf9d5e3a8d","title":"Agent 7 Issue 68","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.813998-07:00","updated_at":"2025-10-21T00:29:10.813998-07:00","source_repo":"."} +{"id":"bd-968","content_hash":"1ee23f9fb62e7ec01772f28e348d342560bd2006c90460edc85a0ff4e41c233f","title":"Agent 7 Issue 69","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.814515-07:00","updated_at":"2025-10-21T00:29:10.814515-07:00","source_repo":"."} {"id":"bd-968f","content_hash":"41376d2927c9107898e7cb72aaa17a76d8b44692a78aa201123e8b2a0404ce34","title":"Add unit tests for config modes","description":"Test all four orphan_handling modes: strict (fails), resurrect (creates tombstone), skip (logs warning), allow (imports orphan). Verify error messages and logging output for each mode.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-04T12:32:21.367129-08:00","updated_at":"2025-11-05T00:44:27.948775-08:00","closed_at":"2025-11-05T00:44:27.948777-08:00","source_repo":"."} +{"id":"bd-969","content_hash":"1063cf7529b2b2a3604f54a9dfada412871707e4eef9aab7dfc139bd29782c25","title":"Agent 7 Issue 70","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.814995-07:00","updated_at":"2025-10-21T00:29:10.814995-07:00","source_repo":"."} +{"id":"bd-97","content_hash":"a054a21d51074b32a2a98314f3a01c9c9eb4472a6725856ae7f8941914f23c4a","title":"Fix nil pointer crash in bd export command","description":"When running `bd export -o .beads/issues.jsonl`, the command crashes with a nil pointer dereference.\n\n## Error\n```\npanic: runtime error: invalid memory address or nil pointer dereference\n[signal SIGSEGV: segmentation violation code=0x2 addr=0x108 pc=0x1034456fc]\n\ngoroutine 1 [running]:\nmain.init.func14(0x103c24380, {0x1034a9695?, 0x4?, 0x1034a95c9?})\n /Users/stevey/src/vc/adar/beads/cmd/bd/export.go:74 +0x15c\n```\n\n## Context\n- This happened after closing bd-86, bd-91, bd-92\n- Auto-export from daemon still works fine\n- Only the manual `bd export` command crashes\n- Data was already synced via auto-export, so no data loss\n\n## Location\nFile: `cmd/bd/export.go` line 74","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-17T17:34:05.014619-07:00","updated_at":"2025-10-21T00:25:40.5523-07:00","closed_at":"2025-10-17T17:35:41.414218-07:00","source_repo":"."} +{"id":"bd-970","content_hash":"3e3482150ad88631c133aec55cbc78ef1cc1b48cf8d75882be64e27ac2a21699","title":"Agent 7 Issue 71","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.81547-07:00","updated_at":"2025-10-21T00:29:10.81547-07:00","source_repo":"."} +{"id":"bd-971","content_hash":"50af39236c72d35867ff304de2191e695063cc0aff5054393850796bfe36751e","title":"Agent 7 Issue 72","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.815951-07:00","updated_at":"2025-10-21T00:29:10.815951-07:00","source_repo":"."} +{"id":"bd-972","content_hash":"cbc621b491f2c514a90c7a9c21efe07bed3d542481a025dd74d28f92462aa462","title":"Agent 7 Issue 73","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.816441-07:00","updated_at":"2025-10-21T00:29:10.816441-07:00","source_repo":"."} +{"id":"bd-973","content_hash":"f06f25838762147e45965956cdc1df0165e2e18665b2824d03681445ad04f48a","title":"Agent 7 Issue 74","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.816914-07:00","updated_at":"2025-10-21T00:29:10.816914-07:00","source_repo":"."} +{"id":"bd-974","content_hash":"96d6feea985497ffd9ef1638d4141829bc3cc3c9d3e4dea634c40e037a44bcc5","title":"Agent 7 Issue 75","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.817398-07:00","updated_at":"2025-10-21T00:29:10.817398-07:00","source_repo":"."} +{"id":"bd-975","content_hash":"5cfdd258f25496faab4677e9d1de5c4257deb44eebc65a745543dbc6292d2879","title":"Agent 7 Issue 76","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.817889-07:00","updated_at":"2025-10-21T00:29:10.817889-07:00","source_repo":"."} +{"id":"bd-976","content_hash":"bd5bcd379b8544b86b2306f8a220f6cc0e5b9155a405001abd4397c1ee892780","title":"Agent 7 Issue 77","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.818373-07:00","updated_at":"2025-10-21T00:29:10.818373-07:00","source_repo":"."} +{"id":"bd-977","content_hash":"83cd0faf3b9047b5f2629e92b178b5887051f260efc8590d637cc96736e7f31a","title":"Agent 7 Issue 78","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.818866-07:00","updated_at":"2025-10-21T00:29:10.818866-07:00","source_repo":"."} +{"id":"bd-978","content_hash":"b7653eee3abf28dec9081ad9fcfb0ae9667956a327333cb8fc18bcfb08699eeb","title":"Agent 7 Issue 79","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.819391-07:00","updated_at":"2025-10-21T00:29:10.819391-07:00","source_repo":"."} +{"id":"bd-979","content_hash":"ea1c5574f66a89cdfd85e4627c5f9d2d67cd8338133c7bd27562576e12453fba","title":"Agent 7 Issue 80","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.819904-07:00","updated_at":"2025-10-21T00:29:10.819904-07:00","source_repo":"."} +{"id":"bd-98","content_hash":"b179d8e084ac86a97ddb6f1a556963fe832b4da257cd91240d21e826a00f3480","title":"Add --global flag to daemon for multi-repo support","description":"Currently daemon creates socket at .beads/bd.sock in each repo. For multi-repo support, add --global flag to create socket in ~/.beads/bd.sock that can serve requests from any repository.\n\nImplementation:\n- Add --global flag to daemon command\n- When --global is set, use ~/.beads/bd.sock instead of ./.beads/bd.sock \n- Don't require being in a git repo when --global is used\n- Update daemon discovery logic to check ~/.beads/bd.sock as fallback\n- Document that global daemon can serve multiple repos simultaneously\n\nBenefits:\n- Single daemon serves all repos on the system\n- No need to start daemon per-repo\n- Better resource usage\n- Enables system-wide task tracking\n\nContext: Per-request context routing (bd-92) already implemented - daemon can handle multiple repos. This issue is about making the UX better.\n\nRelated: bd-43 (parent issue for multi-repo support)","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-17T20:43:47.080685-07:00","updated_at":"2025-10-21T00:25:40.552466-07:00","closed_at":"2025-10-17T22:45:42.411986-07:00","source_repo":"."} +{"id":"bd-980","content_hash":"a8f79395f809a951606ad6a69ef45225845225a1539f95e6ebf0ca273458bf1f","title":"Agent 7 Issue 81","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.820445-07:00","updated_at":"2025-10-21T00:29:10.820445-07:00","source_repo":"."} +{"id":"bd-981","content_hash":"fdec77ec39de6a19b77dcdf8725709147409798beea4239eb840231f122a86ed","title":"Agent 7 Issue 82","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.820962-07:00","updated_at":"2025-10-21T00:29:10.820962-07:00","source_repo":"."} +{"id":"bd-982","content_hash":"aeff2a80c66ccb88a83ae2772c9842c3f45cbb9be2c4e545e3c1900a47174943","title":"Agent 7 Issue 83","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.821489-07:00","updated_at":"2025-10-21T00:29:10.821489-07:00","source_repo":"."} {"id":"bd-9826b69a","content_hash":"66b54987232cdf53d3b69004af2488330023ed8adb576257750a52550aa5ee59","title":"CRDT-based architecture for guaranteed convergence (v2.0)","description":"## Vision\nRedesign beads around Conflict-Free Replicated Data Types (CRDTs) to provide mathematical guarantees for N-way collision resolution at arbitrary scale.\n\n## Current Limitations\n- Content-hash based collision resolution fails at 5+ clones\n- Non-deterministic convergence in multi-round scenarios\n- UNIQUE constraint violations during rename operations\n- No formal proof of convergence properties\n\n## CRDT Benefits\n- Provably convergent (Strong Eventual Consistency)\n- Commutative/Associative/Idempotent operations\n- No coordination required between clones\n- Scales to 100+ concurrent workers\n- Well-understood mathematical foundations\n\n## Proposed Architecture\n\n### 1. UUID-Based IDs\nReplace sequential IDs with UUIDs:\n- Current: bd-1c63eb84, bd-9063acda, bd-4d80b7b1\n- CRDT: bd-a1b2c3d4-e5f6-7890-abcd-ef1234567890\n- Human aliases maintained separately: #42 maps to UUID\n\n### 2. Last-Write-Wins (LWW) Elements\nEach field becomes an LWW register:\n- title: (timestamp, clone_id, value)\n- status: (timestamp, clone_id, value)\n- Deterministic conflict resolution via Lamport timestamp + clone_id tiebreaker\n\n### 3. Operation Log\nTrack all operations as CRDT ops:\n- CREATE(uuid, timestamp, clone_id, fields)\n- UPDATE(uuid, field, timestamp, clone_id, value)\n- DELETE(uuid, timestamp, clone_id) - tombstone, not hard delete\n\n### 4. Sync as Merge\nSyncing becomes merging two CRDT states:\n- No merge conflicts possible\n- Deterministic merge function\n- Guaranteed convergence\n\n## Implementation Phases\n\n### Phase 1: Research \u0026 Design (4 weeks)\n- Study existing CRDT implementations (Automerge, Yjs, Loro)\n- Design schema for CRDT-based issue tracking\n- Prototype LWW-based Issue CRDT\n- Benchmark performance vs current system\n\n### Phase 2: Parallel Implementation (6 weeks)\n- Implement CRDT storage layer alongside SQLite\n- Build conversion tools: SQLite ↔ CRDT\n- Maintain backward compatibility with v1.x format\n- Migration path for existing databases\n\n### Phase 3: Testing \u0026 Validation (4 weeks)\n- Formal verification of convergence properties\n- Stress testing with 100+ clone scenario\n- Performance profiling and optimization\n- Documentation and examples\n\n### Phase 4: Migration \u0026 Rollout (4 weeks)\n- Release v2.0-beta with CRDT backend\n- Gradual migration from v1.x\n- Monitoring and bug fixes\n- Final v2.0 release\n\n## Risks \u0026 Mitigations\n\n**Risk 1: Performance overhead**\n- Mitigation: Benchmark early, optimize hot paths\n- CRDTs can be slower than append-only logs\n- May need compaction strategy\n\n**Risk 2: Storage bloat**\n- Mitigation: Implement operation log compaction\n- Tombstone garbage collection for deleted issues\n- Periodic snapshots to reduce log size\n\n**Risk 3: Breaking changes**\n- Mitigation: Maintain v1.x compatibility layer\n- Gradual migration tools\n- Dual-mode operation during transition\n\n**Risk 4: Complexity**\n- Mitigation: Use battle-tested CRDT libraries\n- Comprehensive documentation\n- Clear migration guide\n\n## Success Criteria\n- 100-clone collision test passes without failures\n- Formal proof of convergence properties\n- Performance within 2x of current system\n- Zero manual conflict resolution required\n- Backward compatible with v1.x databases\n\n## Timeline\n18-20 weeks total (4-5 months)\n\n## References\n- Automerge: https://automerge.org\n- Yjs: https://docs.yjs.dev\n- Loro: https://loro.dev\n- CRDT theory: Shapiro et al, A comprehensive study of CRDTs\n- Related issues: bd-0dcea000, bd-4d7fca8a, bd-6221bdcd","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-10-29T20:48:00.267736-07:00","updated_at":"2025-10-31T20:06:44.60536-07:00","closed_at":"2025-10-31T20:06:44.60536-07:00","source_repo":"."} +{"id":"bd-983","content_hash":"30dd70c93158a0e75e19a3318e3f0e63416325d7471584e212f58c1dd5d9c84e","title":"Agent 7 Issue 84","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.822013-07:00","updated_at":"2025-10-21T00:29:10.822013-07:00","source_repo":"."} +{"id":"bd-984","content_hash":"7b0148474560a59ab2bedae021eb5cdd580fed14ab1118cdca768bb18b9482ff","title":"Agent 7 Issue 85","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.822517-07:00","updated_at":"2025-10-21T00:29:10.822517-07:00","source_repo":"."} +{"id":"bd-985","content_hash":"04e3b3ad341f1c5a13f1703021f83151f363c3a49155776b4e9bca098d623835","title":"Agent 7 Issue 86","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.823002-07:00","updated_at":"2025-10-21T00:29:10.823002-07:00","source_repo":"."} +{"id":"bd-986","content_hash":"9eebbaa6ec374cdb1d9cdb5b361d2ad0310f254a6b068d50f6e235c8c736c22a","title":"Agent 7 Issue 87","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.82352-07:00","updated_at":"2025-10-21T00:29:10.82352-07:00","source_repo":"."} +{"id":"bd-987","content_hash":"1c1ccb777e86a9d13046f3174f17b3419daef3efadf18edc4c2456a1c6c13133","title":"Agent 7 Issue 88","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.824013-07:00","updated_at":"2025-10-21T00:29:10.824013-07:00","source_repo":"."} +{"id":"bd-988","content_hash":"7d42fd338d4e78ec8aaef75bbfa3c3c77d38f7b37862e29cacd5f38bdb4abc2c","title":"Agent 7 Issue 89","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.824503-07:00","updated_at":"2025-10-21T00:29:10.824503-07:00","source_repo":"."} +{"id":"bd-989","content_hash":"3fcfc529e69dc9413bcb32e5ba6b1aa9816eb3ac7b05d26231446e76511bce4b","title":"Agent 7 Issue 90","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.825004-07:00","updated_at":"2025-10-21T00:29:10.825004-07:00","source_repo":"."} {"id":"bd-98c4e1fa","content_hash":"24b80fab2399079003fd39235e3c7992d404577f8794cc367552340244308636","title":"Event-driven daemon architecture","description":"Replace 5-second polling sync loop with event-driven architecture that reacts instantly to changes. Eliminates stale data issues while reducing CPU ~60%. Key components: FileWatcher (fsnotify), Debouncer (500ms), RPC mutation events, optional git hooks. Target latency: \u003c500ms (vs 5000ms). See event_driven_daemon.md for full design.","notes":"## Implementation Progress\n\n**Completed:**\n1. ✅ Mutation events infrastructure (bd-143 equivalent)\n - MutationEvent channel in RPC server\n - Events emitted for all write operations: create, update, close, label add/remove, dep add/remove, comment add\n - Non-blocking emission with dropped event counter\n\n2. ✅ FileWatcher with fsnotify (bd-b0c7f7ef related)\n - Watches .beads/issues.jsonl and .git/refs/heads\n - 500ms debounce\n - Polling fallback if fsnotify unavailable\n\n3. ✅ Debouncer (bd-144 equivalent)\n - 500ms debounce for both export and import triggers\n - Thread-safe trigger/cancel\n\n4. ✅ Separate export-only and import-only functions\n - createExportFunc(): exports + optional commit/push (no pull/import)\n - createAutoImportFunc(): pull + import (no export)\n - Target latency \u003c500ms achieved by avoiding full sync\n\n5. ✅ Dropped events safety net (bd-eef03e0a related)\n - Atomic counter tracks dropped mutation events\n - 60-second health check triggers export if events were dropped\n - Prevents silent data loss from event storms\n\n**Still Needed:**\n- Platform-specific tests (bd-69bce74a)\n- Integration test for mutation→export latency (bd-140)\n- Unit tests for FileWatcher (bd-b0c7f7ef)\n- Unit tests for Debouncer (bd-144)\n- Event storm stress test (bd-eef03e0a)\n- Documentation update (bd-142)\n\n**Next Steps:**\nAdd comprehensive test coverage before enabling events mode by default.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-10-29T21:19:36.203436-07:00","updated_at":"2025-10-30T17:12:58.197875-07:00","closed_at":"2025-10-29T15:53:34.022335-07:00","source_repo":"."} {"id":"bd-98c4e1fa.1","content_hash":"6440d1ece0a91c8f49adc09aafa7a998b049bcd51f257125ad8bc0b7b03e317b","title":"Update AGENTS.md with event-driven mode","description":"Document BEADS_DAEMON_MODE env var. Explain opt-in during Phase 1. Add troubleshooting for watcher failures.","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-29T23:05:13.986452-07:00","updated_at":"2025-10-31T20:36:49.381832-07:00","source_repo":".","dependencies":[{"issue_id":"bd-98c4e1fa.1","depends_on_id":"bd-98c4e1fa","type":"parent-child","created_at":"2025-10-29T21:19:36.206187-07:00","created_by":"import-remap"},{"issue_id":"bd-98c4e1fa.1","depends_on_id":"bd-0e1f2b1b","type":"parent-child","created_at":"2025-10-31T19:38:09.131439-07:00","created_by":"stevey"}]} -{"id":"bd-9ae788be","content_hash":"22ad341d54105f9b2e9b7fecbafbca94100ea270b9ff8588e1fea6cf72603968","title":"Implement clone-scoped ID allocation to prevent N-way collisions","description":"## Problem\nCurrent ID allocation uses per-clone atomic counters (issue_counters table) that sync based on local database state. In N-way collision scenarios:\n- Clone B sees {test-1} locally, allocates test-2\n- Clone D sees {test-1, test-2, test-3} locally, allocates test-4\n- When same content gets assigned test-2 and test-4, convergence fails\n\nRoot cause: Each clone independently allocates IDs without global coordination, leading to overlapping assignments for the same content.\n\n## Solution\nAdd clone UUID to ID allocation to make every ID globally unique:\n\n**Current format:** `test-1`, `test-2`, `test-3`\n**New format:** `test-1-a7b3`, `test-2-a7b3`, `test-3-c4d9`\n\nWhere suffix is first 4 chars of clone UUID.\n\n## Implementation\n\n### 1. Add clone_identity table\n```sql\nCREATE TABLE clone_identity (\n clone_uuid TEXT PRIMARY KEY,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n);\n```\n\n### 2. Modify getNextIDForPrefix()\n```go\nfunc (s *SQLiteStorage) getNextIDForPrefix(ctx context.Context, prefix string) (string, error) {\n cloneUUID := s.getOrCreateCloneUUID(ctx)\n shortUUID := cloneUUID[:4]\n \n nextNum := s.getNextCounterForPrefix(ctx, prefix)\n return fmt.Sprintf(\"%s-%d-%s\", prefix, nextNum, shortUUID), nil\n}\n```\n\n### 3. Update ID parsing logic\nAll places that parse IDs (utils.ExtractIssueNumber, etc.) need to handle new format.\n\n### 4. Migration strategy\n- Existing IDs remain unchanged (no suffix)\n- New IDs get clone suffix automatically\n- Display layer can hide suffix in UI: `bd-cb64c226.3-a7b3` → `#42`\n\n## Benefits\n- **Zero collision risk**: Same content in different clones gets different IDs\n- **Maintains readability**: Still sequential numbering within clone\n- **No coordination needed**: Works offline, no central authority\n- **Scales to 100+ clones**: 4-char hex = 65,536 unique clones\n\n## Concerns\n- ID format change may break existing integrations\n- Need migration path for existing databases\n- Display logic needs update to hide/show suffixes appropriately\n\n## Success Criteria\n- 10+ clone collision test passes without failures\n- Existing issues continue to work (backward compatibility)\n- Documentation updated with new ID format\n- Migration guide for v1.x → v2.x\n\n## Timeline\nMedium-term (v1.1-v1.2), 2-3 weeks implementation\n\n## References\n- Related to bd-e6d71828 (immediate fix)\n- See beads_nway_test.go for failing N-way tests","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-29T10:22:52.260524-07:00","updated_at":"2025-11-08T01:58:15.281403-08:00","closed_at":"2025-11-08T00:36:58.134558-08:00","source_repo":"."} +{"id":"bd-99","content_hash":"5a995824d58e9df527ab3e44f14ca2e59356356da0dc606d1c8aa4bafcaecf82","title":"Document multi-repo workflow with daemon","description":"The daemon already supports multi-repo via per-request context routing (bd-92), but this isn't documented. Users need to know how to use beads across multiple projects.\n\nAdd documentation for:\n1. How daemon serves multiple repos simultaneously\n2. Starting daemon in one repo, using from others\n3. MCP server multi-repo configuration\n4. Example: tracking work across a dozen projects\n5. Comparison to workspace/global instance approaches\n\nDocumentation locations:\n- README.md (Multi-repo section)\n- AGENTS.md (MCP multi-repo config)\n- integrations/beads-mcp/README.md (working_dir parameter)\n\nInclude:\n- Architecture diagram showing one daemon, many repos\n- Example MCP config with BEADS_WORKING_DIR\n- CLI workflow example\n- Reference to test_multi_repo.py as proof of concept\n\nContext: Feature already works (proven by test_multi_repo.py), just needs user-facing docs.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-17T20:43:48.91315-07:00","updated_at":"2025-10-21T00:25:40.552635-07:00","closed_at":"2025-10-17T22:49:32.514372-07:00","source_repo":"."} +{"id":"bd-990","content_hash":"dcd11054cc0a44b7e995beaa3bc3f5b367db6c351dab4adf2ad0a9917bb93795","title":"Agent 7 Issue 91","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.825492-07:00","updated_at":"2025-10-21T00:29:10.825492-07:00","source_repo":"."} +{"id":"bd-991","content_hash":"d40b34f27dc8d1413946fe8714335bb48d9f938383995ce5584fd8157a5e1fe7","title":"Agent 7 Issue 92","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.825996-07:00","updated_at":"2025-10-21T00:29:10.825996-07:00","source_repo":"."} +{"id":"bd-992","content_hash":"ccfc6203538196961b38306835749c3cc716d0b2e971eb0febaa30883883fbb1","title":"Agent 7 Issue 93","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.8265-07:00","updated_at":"2025-10-21T00:29:10.8265-07:00","source_repo":"."} +{"id":"bd-993","content_hash":"ab22f4cb64b2737cb93273186a35b87036b188fe3d1d9d5c3cac7e895f1ff547","title":"Agent 7 Issue 94","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.827034-07:00","updated_at":"2025-10-21T00:29:10.827034-07:00","source_repo":"."} +{"id":"bd-994","content_hash":"e4a7f3286c19108d0d9df822602e7276535a4edca0f72eb0a598ab138b9e4396","title":"Agent 7 Issue 95","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.827521-07:00","updated_at":"2025-10-21T00:29:10.827521-07:00","source_repo":"."} +{"id":"bd-995","content_hash":"d03939510eefaf8eff3d56bbba5bdfa078a2679f00e16704ba54e78d9d4cf9fd","title":"Agent 7 Issue 96","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.828216-07:00","updated_at":"2025-10-21T00:29:10.828216-07:00","source_repo":"."} +{"id":"bd-996","content_hash":"2fb7171db999317cd88cc9a730d47a6d897e1664b0287066560d9206aff23446","title":"Agent 7 Issue 97","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.828873-07:00","updated_at":"2025-10-21T00:29:10.828873-07:00","source_repo":"."} +{"id":"bd-997","content_hash":"7442c7bcb0b853f5dee357b35fa1dd68b46e752d44bb398c2cbea0e7adc4f2ee","title":"Agent 7 Issue 98","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.829359-07:00","updated_at":"2025-10-21T00:29:10.829359-07:00","source_repo":"."} +{"id":"bd-998","content_hash":"1392ced2ea829a7826754d577ef028bec48705e0b57935bf0cdf4657edff4471","title":"Agent 7 Issue 99","description":"Created by agent 7","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-21T00:29:10.829853-07:00","updated_at":"2025-10-21T00:29:10.829853-07:00","source_repo":"."} +{"id":"bd-999","content_hash":"fd79070926e2ef392dcb5992a7546e0c5e5b951ba1fd1a0b4c08f89b794f5ff7","title":"Batch Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-21T00:29:10.944351-07:00","updated_at":"2025-11-20T12:29:30.583248-05:00","closed_at":"2025-11-20T12:29:30.583248-05:00","source_repo":"."} +{"id":"bd-9ae788be","content_hash":"22ad341d54105f9b2e9b7fecbafbca94100ea270b9ff8588e1fea6cf72603968","title":"Implement clone-scoped ID allocation to prevent N-way collisions","description":"## Problem\nCurrent ID allocation uses per-clone atomic counters (issue_counters table) that sync based on local database state. In N-way collision scenarios:\n- Clone B sees {test-1} locally, allocates test-2\n- Clone D sees {test-1, test-2, test-3} locally, allocates test-4\n- When same content gets assigned test-2 and test-4, convergence fails\n\nRoot cause: Each clone independently allocates IDs without global coordination, leading to overlapping assignments for the same content.\n\n## Solution\nAdd clone UUID to ID allocation to make every ID globally unique:\n\n**Current format:** `test-1`, `test-2`, `test-3`\n**New format:** `test-1-a7b3`, `test-2-a7b3`, `test-3-c4d9`\n\nWhere suffix is first 4 chars of clone UUID.\n\n## Implementation\n\n### 1. Add clone_identity table\n```sql\nCREATE TABLE clone_identity (\n clone_uuid TEXT PRIMARY KEY,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n);\n```\n\n### 2. Modify getNextIDForPrefix()\n```go\nfunc (s *SQLiteStorage) getNextIDForPrefix(ctx context.Context, prefix string) (string, error) {\n cloneUUID := s.getOrCreateCloneUUID(ctx)\n shortUUID := cloneUUID[:4]\n \n nextNum := s.getNextCounterForPrefix(ctx, prefix)\n return fmt.Sprintf(\"%s-%d-%s\", prefix, nextNum, shortUUID), nil\n}\n```\n\n### 3. Update ID parsing logic\nAll places that parse IDs (utils.ExtractIssueNumber, etc.) need to handle new format.\n\n### 4. Migration strategy\n- Existing IDs remain unchanged (no suffix)\n- New IDs get clone suffix automatically\n- Display layer can hide suffix in UI: `bd-cb64c226.3-a7b3` → `#42`\n\n## Benefits\n- **Zero collision risk**: Same content in different clones gets different IDs\n- **Maintains readability**: Still sequential numbering within clone\n- **No coordination needed**: Works offline, no central authority\n- **Scales to 100+ clones**: 4-char hex = 65,536 unique clones\n\n## Concerns\n- ID format change may break existing integrations\n- Need migration path for existing databases\n- Display logic needs update to hide/show suffixes appropriately\n\n## Success Criteria\n- 10+ clone collision test passes without failures\n- Existing issues continue to work (backward compatibility)\n- Documentation updated with new ID format\n- Migration guide for v1.x → v2.x\n\n## Timeline\nMedium-term (v1.1-v1.2), 2-3 weeks implementation\n\n## References\n- Related to bd-e6d71828 (immediate fix)\n- See beads_nway_test.go for failing N-way tests","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-10-29T10:22:52.260524-07:00","updated_at":"2025-11-08T01:49:23.460028-08:00","closed_at":"2025-11-08T00:36:58.134558-08:00","source_repo":"."} {"id":"bd-9b13","content_hash":"9a17da93fb23cdcfcc294d2e7e00239973530ab8c5cc08f110112c9924ca94e1","title":"Backend task","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-03T19:11:59.359262-08:00","updated_at":"2025-11-05T00:25:06.484312-08:00","closed_at":"2025-11-05T00:25:06.484312-08:00","source_repo":".","labels":["backend","week1"]} -{"id":"bd-9bsx","content_hash":"5d365892fb98497db22b6d6c07bc412c0a9b09d017b3cb6b9eb75eeed19c874b","title":"Recurring dirty state after merge conflicts - bd sync keeps failing","description":"## Problem\n\n`bd sync` consistently fails with merge conflicts in `.beads/beads.jsonl`, creating a loop:\n1. User runs `bd sync`\n2. Git merge conflict occurs\n3. User resolves with `git checkout --theirs` (takes remote)\n4. Daemon auto-exports database state (which has local changes)\n5. JSONL becomes dirty again immediately\n6. Repeat\n\nThis has been happening for **weeks** and is extremely frustrating.\n\n## Root Cause\n\nThe recommended conflict resolution (`git checkout --theirs`) throws away local database state (comments, dependencies, closed issues). The daemon then immediately re-exports, creating a dirty state.\n\n## Current Workaround\n\nManual `bd export -o .beads/beads.jsonl \u0026\u0026 git add \u0026\u0026 git commit \u0026\u0026 git push` after every failed sync.\n\n## Example Session\n\n```bash\n$ bd sync\nCONFLICT (content): Merge conflict in .beads/beads.jsonl\n\n$ git checkout --theirs .beads/beads.jsonl \u0026\u0026 bd import \u0026\u0026 git add \u0026\u0026 git commit \u0026\u0026 git push\n# Pushed successfully\n\n$ git status\nmodified: .beads/beads.jsonl # DIRTY AGAIN!\n```\n\n## Lost Data in Recent Session\n\n- bd-ry1u closure (lost in merge)\n- Comments on bd-08fd, bd-23a8, bd-6049, bd-87a0 (lost)\n- Dependencies that existed only in local DB\n\n## Potential Solutions\n\n1. **Use beads-merge tool** - Implement proper 3-way JSONL merge (bd-bzfy)\n2. **Smarter conflict resolution** - Detect when `--theirs` will lose data, warn user\n3. **Sync validation** - Check if JSONL == DB after merge, re-export if needed\n4. **Daemon awareness** - Pause auto-export during merge resolution\n5. **Transaction log** - Replay local changes after merge instead of losing them\n\n## Related Issues\n\n- bd-bzfy (beads-merge integration)\n- Possibly related to daemon auto-export behavior","notes":"## Solution Implemented\n\nFixed the recurring dirty state after merge conflicts by adding **sync validation** before re-exporting.\n\n### Root Cause\nLines 217-237 in `sync.go` unconditionally re-exported DB to JSONL after every import, even when they were already in sync. This created an infinite loop:\n1. User runs `bd sync` which pulls and imports remote JSONL\n2. Sync unconditionally re-exports DB (which has local changes)\n3. JSONL becomes dirty immediately\n4. Repeat\n\n### Fix\nAdded `dbNeedsExport()` function in `integrity.go` that checks:\n- If JSONL exists\n- If DB modification time is newer than JSONL\n- If DB and JSONL issue counts match\n\nNow `bd sync` only re-exports if DB actually has changes that differ from JSONL.\n\n### Changes\n- Added `dbNeedsExport()` in `cmd/bd/integrity.go` (lines 228-271)\n- Updated `sync.go` lines 217-251 to check before re-exporting\n- Added comprehensive tests in `cmd/bd/sync_merge_test.go`\n\n### Testing\nAll tests pass including 4 new tests:\n- `TestDBNeedsExport_InSync` - Verifies no export when synced\n- `TestDBNeedsExport_DBNewer` - Detects DB modifications\n- `TestDBNeedsExport_CountMismatch` - Catches divergence\n- `TestDBNeedsExport_NoJSONL` - Handles missing JSONL\n\nThis prevents the weeks-long frustration of merge conflicts causing infinite dirty loops.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-05T17:52:14.776063-08:00","updated_at":"2025-11-05T17:58:35.611942-08:00","closed_at":"2025-11-05T17:58:35.611942-08:00","source_repo":"."} +{"id":"bd-9bsx","content_hash":"f84ca8560b9f09a14af959b4f567647aec050faaa9348775aa08955d913fe9e1","title":"Recurring dirty state after merge conflicts - bd sync keeps failing","description":"## Problem\n\n`bd sync` consistently fails with merge conflicts in `.beads/beads.jsonl`, creating a loop:\n1. User runs `bd sync`\n2. Git merge conflict occurs\n3. User resolves with `git checkout --theirs` (takes remote)\n4. Daemon auto-exports database state (which has local changes)\n5. JSONL becomes dirty again immediately\n6. Repeat\n\nThis has been happening for **weeks** and is extremely frustrating.\n\n## Root Cause\n\nThe recommended conflict resolution (`git checkout --theirs`) throws away local database state (comments, dependencies, closed issues). The daemon then immediately re-exports, creating a dirty state.\n\n## Current Workaround\n\nManual `bd export -o .beads/beads.jsonl \u0026\u0026 git add \u0026\u0026 git commit \u0026\u0026 git push` after every failed sync.\n\n## Example Session\n\n```bash\n$ bd sync\nCONFLICT (content): Merge conflict in .beads/beads.jsonl\n\n$ git checkout --theirs .beads/beads.jsonl \u0026\u0026 bd import \u0026\u0026 git add \u0026\u0026 git commit \u0026\u0026 git push\n# Pushed successfully\n\n$ git status\nmodified: .beads/beads.jsonl # DIRTY AGAIN!\n```\n\n## Lost Data in Recent Session\n\n- bd-ry1u closure (lost in merge)\n- Comments on bd-08fd, bd-23a8, bd-6049, bd-87a0 (lost)\n- Dependencies that existed only in local DB\n\n## Potential Solutions\n\n1. **Use beads-merge tool** - Implement proper 3-way JSONL merge (bd-bzfy)\n2. **Smarter conflict resolution** - Detect when `--theirs` will lose data, warn user\n3. **Sync validation** - Check if JSONL == DB after merge, re-export if needed\n4. **Daemon awareness** - Pause auto-export during merge resolution\n5. **Transaction log** - Replay local changes after merge instead of losing them\n\n## Related Issues\n\n- bd-bzfy (beads-merge integration)\n- Possibly related to daemon auto-export behavior","notes":"## Solution Implemented\n\nFixed the recurring dirty state after merge conflicts by adding **sync validation** before re-exporting.\n\n### Root Cause\nLines 217-237 in `sync.go` unconditionally re-exported DB to JSONL after every import, even when they were already in sync. This created an infinite loop:\n1. User runs `bd sync` which pulls and imports remote JSONL\n2. Sync unconditionally re-exports DB (which has local changes)\n3. JSONL becomes dirty immediately\n4. Repeat\n\n### Fix\nAdded `dbNeedsExport()` function in `integrity.go` that checks:\n- If JSONL exists\n- If DB modification time is newer than JSONL\n- If DB and JSONL issue counts match\n\nNow `bd sync` only re-exports if DB actually has changes that differ from JSONL.\n\n### Changes\n- Added `dbNeedsExport()` in `cmd/bd/integrity.go` (lines 228-271)\n- Updated `sync.go` lines 217-251 to check before re-exporting\n- Added comprehensive tests in `cmd/bd/sync_merge_test.go`\n\n### Testing\nAll tests pass including 4 new tests:\n- `TestDBNeedsExport_InSync` - Verifies no export when synced\n- `TestDBNeedsExport_DBNewer` - Detects DB modifications\n- `TestDBNeedsExport_CountMismatch` - Catches divergence\n- `TestDBNeedsExport_NoJSONL` - Handles missing JSONL\n\nThis prevents the weeks-long frustration of merge conflicts causing infinite dirty loops.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-05T17:52:14.776063-08:00","updated_at":"2025-11-05T17:58:35.611942-08:00","closed_at":"2025-11-05T17:58:35.611942-08:00","source_repo":"."} {"id":"bd-9cdc","content_hash":"8fcd4366fd76c0db14c73d0c2623abae40ad4c31a2ca663c15f8d3d52ee572d0","title":"Update docs for import bug fix","description":"Update AGENTS.md, README.md, TROUBLESHOOTING.md with import.orphan_handling config documentation. Document resurrection behavior, tombstones, config modes. Add troubleshooting section for import failures with deleted parents.","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-04T12:32:30.770415-08:00","updated_at":"2025-11-04T12:32:30.770415-08:00","source_repo":"."} {"id":"bd-9e23","content_hash":"fa94af8126d5d8c816a6f83d5ad191ebdb954687abb87ce30e4f67eee4f1a9ce","title":"Optimize Memory backend GetIssueByExternalRef with index","description":"Currently GetIssueByExternalRef in Memory storage uses O(n) linear search through all issues.\n\nCurrent code (memory.go:282-308):\nfor _, issue := range m.issues {\n if issue.ExternalRef != nil \u0026\u0026 *issue.ExternalRef == externalRef {\n return \u0026issueCopy, nil\n }\n}\n\nProposed optimization:\n- Add externalRefToID map[string]string to MemoryStorage\n- Maintain it in CreateIssue, UpdateIssue, DeleteIssue\n- Achieve O(1) lookup like SQLite's index\n\nImpact: Low (--no-db mode typically has smaller datasets)\nRelated: bd-1022","status":"open","priority":4,"issue_type":"chore","created_at":"2025-11-02T15:32:30.242357-08:00","updated_at":"2025-11-02T15:32:30.242357-08:00","source_repo":"."} {"id":"bd-9e8d","content_hash":"bde8f3625189415e8f00b06acf530454bec619cabee1332132836d45b26771ed","title":"Test Issue","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-31T21:41:11.107393-07:00","updated_at":"2025-11-01T20:02:28.292279-07:00","closed_at":"2025-11-01T20:02:28.292279-07:00","source_repo":"."} {"id":"bd-9f1fce5d","content_hash":"06b6c591090df9e565a67086b354875c5029fce5b60245bce97af7bd63d26166","title":"Add internal/ai package for LLM integration","description":"Shared AI client for repair commands.\n\nProviders:\n- Anthropic (Claude)\n- OpenAI (GPT)\n- Ollama (local)\n\nEnv vars:\n- BEADS_AI_PROVIDER\n- BEADS_AI_API_KEY\n- BEADS_AI_MODEL\n\nFiles: internal/ai/client.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-28T14:48:29.072473-07:00","updated_at":"2025-11-06T19:36:13.972045-08:00","closed_at":"2025-11-06T19:27:19.128093-08:00","source_repo":"."} {"id":"bd-9f20","content_hash":"fd9e463ab1b81e62f5ae1441e8c3a661361031a30e6a95502152bb4d7eecf7b2","title":"DetectCycles SQL query has bug preventing cycle detection","description":"The DetectCycles function's SQL query has a bug in the LIKE filter that prevents it from detecting cycles.\n\nCurrent code (line 571):\n```sql\nAND p.path NOT LIKE '%' || d.depends_on_id || '→%'\n```\n\nThis prevents ANY revisit to nodes, including returning to the start node to complete a cycle.\n\nFix:\n```sql\nAND (d.depends_on_id = p.start_id OR p.path NOT LIKE '%' || d.depends_on_id || '→%')\n```\n\nThis allows revisiting the start node (to detect the cycle) while still preventing intermediate node revisits.\n\nImpact: Currently DetectCycles cannot detect any cycles, but this hasn't been noticed because AddDependency prevents cycles from being created. The function would only matter if cycles were manually inserted into the database.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-11-01T22:50:32.552763-07:00","updated_at":"2025-11-01T22:52:02.247443-07:00","closed_at":"2025-11-01T22:52:02.247443-07:00","source_repo":"."} -{"id":"bd-9f4a","content_hash":"f7fc76124f76636ef40af114a47509885fa9e5af9d2fddaf8820a46542086e42","title":"Document external_ref in content hash behavior","description":"The content hash includes external_ref, which has implications that should be documented.\n\nCurrent behavior:\n- external_ref is included in content hash calculation (collision.go:158-160)\n- Changing external_ref changes content hash\n- This means: local issue → add external_ref → different hash\n\nImplications:\n- Local issue + external_ref addition = looks like 'new content'\n- May not match by content hash in some scenarios\n- Generally correct behavior, but subtle\n\nAction items:\n- Document in code comments\n- Add to ARCHITECTURE.md or similar\n- Add test demonstrating this behavior\n- Consider if this is desired long-term\n\nRelated: bd-1022\nFiles: internal/storage/sqlite/collision.go:158-160","status":"closed","priority":4,"issue_type":"task","created_at":"2025-11-02T15:32:47.715458-08:00","updated_at":"2025-11-08T02:24:24.685778-08:00","closed_at":"2025-11-08T02:20:01.004638-08:00","source_repo":"."} +{"id":"bd-9f4a","content_hash":"f7fc76124f76636ef40af114a47509885fa9e5af9d2fddaf8820a46542086e42","title":"Document external_ref in content hash behavior","description":"The content hash includes external_ref, which has implications that should be documented.\n\nCurrent behavior:\n- external_ref is included in content hash calculation (collision.go:158-160)\n- Changing external_ref changes content hash\n- This means: local issue → add external_ref → different hash\n\nImplications:\n- Local issue + external_ref addition = looks like 'new content'\n- May not match by content hash in some scenarios\n- Generally correct behavior, but subtle\n\nAction items:\n- Document in code comments\n- Add to ARCHITECTURE.md or similar\n- Add test demonstrating this behavior\n- Consider if this is desired long-term\n\nRelated: bd-1022\nFiles: internal/storage/sqlite/collision.go:158-160","status":"closed","priority":4,"issue_type":"task","created_at":"2025-11-02T15:32:47.715458-08:00","updated_at":"2025-11-08T03:54:04.854833-08:00","closed_at":"2025-11-08T02:20:01.004638-08:00","source_repo":"."} {"id":"bd-9li4","content_hash":"7ae7b885e82a2de333584c01f690dbc3ecb924603f18e316f5c91cc44e2256f8","title":"Create Docker image for Agent Mail","description":"Containerize Agent Mail server for easy deployment.\n\nAcceptance Criteria:\n- Dockerfile with Python 3.14\n- Health check endpoint\n- Volume mount for storage\n- Environment variable configuration\n- Multi-arch builds (amd64, arm64)\n\nFile: deployment/agent-mail/Dockerfile","status":"open","priority":3,"issue_type":"task","created_at":"2025-11-07T22:43:43.231964-08:00","updated_at":"2025-11-07T22:43:43.231964-08:00","source_repo":"."} -{"id":"bd-9mnw","content_hash":"349a819f81aad88dffd0c5bd232d2d2e6a43710d1207aa200fb0e1555b10af3e","title":"Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T19:07:16.329643-08:00","updated_at":"2025-11-08T00:20:30.589211-08:00","closed_at":"2025-11-08T00:20:30.589211-08:00","source_repo":"."} +{"id":"bd-9mnw","content_hash":"942bdfde12b32d268a7643fb64e4f92fa466cb6564434283a38378f1ce44973e","title":"Issue 1","description":"","status":"open","priority":1,"issue_type":"task","created_at":"2025-11-07T19:07:16.329643-08:00","updated_at":"2025-11-07T19:07:16.329643-08:00","source_repo":"."} {"id":"bd-9msn","content_hash":"69ef2ebc5a847eb407c37e9039391d8ebc761a4cee3b60537de4f5a12011bec3","title":"Add monitoring and alerting","description":"Observability for production Agent Mail server.\n\nAcceptance Criteria:\n- Health check endpoint (/health)\n- Prometheus metrics export\n- Grafana dashboard\n- Alerts for server downtime\n- Alerts for high error rate\n- Log aggregation config\n\nFile: deployment/agent-mail/monitoring/","status":"open","priority":3,"issue_type":"task","created_at":"2025-11-07T22:43:43.354117-08:00","updated_at":"2025-11-07T22:43:43.354117-08:00","source_repo":".","dependencies":[{"issue_id":"bd-9msn","depends_on_id":"bd-z3s3","type":"blocks","created_at":"2025-11-07T23:04:28.050074-08:00","created_by":"daemon"}]} {"id":"bd-9rw1","content_hash":"17ad82d17e34ca2bfab2fa7240517520e3c42953a780282664f50cf038c97688","title":"Support P-prefix priority format (P0-P4) in create and update commands","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-05T13:56:04.796826-08:00","updated_at":"2025-11-05T13:56:08.157061-08:00","closed_at":"2025-11-05T13:56:08.157061-08:00","source_repo":"."} -{"id":"bd-9v7l","content_hash":"c2c43176aa30346f4ce595f1d94c0c7d1c6fbcaae3e82752bd82d3004a28fc74","title":"bd status \"Recent Activity\" is misleading - should use git history","description":"## Problem\n\n`bd status` shows \"Recent Activity (last 7 days)\" but the numbers are wrong. It only looks at database timestamps, not git history. Says \"141 issues closed in last 7 days\" when thousands have actually come and go.\n\n## Issues\n\n1. Only queries database timestamps, not git history\n2. 7 days is too long a window\n3. Numbers don't reflect actual activity in JSONL git history\n\n## Proposed Fix\n\nEither:\n- Query git history of `.beads/beads.jsonl` to get actual activity (last 24-48 hours)\n- Remove \"Recent Activity\" section entirely if not useful\n- Make time window configurable and default to 24h\n\n## Example Output (Current)\n```\nRecent Activity (last 7 days):\nIssues Created: 174\nIssues Closed: 141\nIssues Updated: 37\n```\nThis is misleading when thousands of issues have actually cycled through.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-05T01:03:00.234813-08:00","updated_at":"2025-11-06T18:47:42.682987-08:00","closed_at":"2025-11-06T18:47:42.682987-08:00","source_repo":"."} -{"id":"bd-a03d5e36","content_hash":"f63ec5a25a14c9b01ca8b97ea14d0b00c42e8d6fe3b39f6e261411134a024de8","title":"Improve integration test coverage for stateful features","description":"","design":"## Context\n\nbd-70419816 revealed a critical gap: the export deduplication feature had unit tests but no integration tests simulating real-world git operations. This led to silent data loss in production.\n\n## Root Cause\n- Unit tests only tested functions in isolation\n- No integration tests for git operations (pull, reset, checkout) modifying JSONL\n- No tests validating export_hashes and JSONL stay in sync\n- Missing tests for stateful distributed system interactions (DB + JSONL + git)\n\n## Completed (bd-70419816)\n✓ TestJSONLIntegrityValidation - unit tests for validation logic\n✓ TestImportClearsExportHashes - tests import clears hashes\n✓ TestExportIntegrityAfterJSONLTruncation - simulates git reset (would have caught bd-70419816)\n✓ TestExportIntegrityAfterJSONLDeletion - tests recovery from file deletion\n✓ TestMultipleExportsStayConsistent - tests repeated exports\n\n## Still Needed (High Priority)\n1. Multi-repo sync test - two clones staying in sync after push/pull\n2. Auto-flush integration test - JSONL integrity preserved during auto-flush\n3. Daemon auto-sync integration test - complex state management\n4. Import after corruption test - recovery from partial data loss\n\n## Medium Priority\n- Partial export failure handling (disk full, network interruption)\n- Concurrent export/import race conditions\n- Large dataset performance tests (1000+ issues)\n- Export hash migration tests (version upgrades)\n\n## Testing Principles\n1. Test real-world scenarios: git ops, user errors, system failures, concurrent ops\n2. Integration tests for stateful systems (DB + files + git)\n3. Regression test for every bug fix\n4. Test invariants: JSONL count == DB count, hash consistency, etc.\n\n## Key Lesson\nStateful distributed systems need integration tests, not just unit tests.","acceptance_criteria":"- [ ] Multi-repo sync test implemented\n- [ ] Auto-flush integration test implemented \n- [ ] Daemon auto-sync integration test implemented\n- [ ] Testing guidelines added to CONTRIBUTING.md\n- [ ] CI runs integration tests\n- [ ] All critical workflows have integration test coverage","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-10-29T21:53:15.397137-07:00","updated_at":"2025-11-08T01:58:15.281757-08:00","closed_at":"2025-11-08T00:36:59.02371-08:00","source_repo":"."} -{"id":"bd-a101","content_hash":"805d60a6f4d9205a7e0498f63e9c0bd98a36eb86800304a123cd9122f694b5ab","title":"Support separate branch for beads commits","description":"Allow beads to commit to a separate branch (e.g., beads-metadata) using git worktrees to support protected main branch workflows.\n\nSolves GitHub Issue #205 - Users need to protect main branch while maintaining beads workflow.\n\nKey advantages:\n- Works on any git platform\n- Main branch stays protected \n- No disruption to user's working directory\n- Backward compatible (opt-in via config)\n- Minimal disk overhead (sparse checkout)\n\nTotal estimate: 17-24 days (4-6 weeks with parallel work)","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-02T15:21:20.098247-08:00","updated_at":"2025-11-04T12:36:53.772727-08:00","closed_at":"2025-11-04T12:36:53.772727-08:00","external_ref":"GH-205","source_repo":"."} +{"id":"bd-9v7l","content_hash":"10b1c2ca4d67587bdf220cf7ae04253eb01edca8a59756431bc3d453cbb85008","title":"bd status \"Recent Activity\" is misleading - should use git history","description":"## Problem\n\n`bd status` shows \"Recent Activity (last 7 days)\" but the numbers are wrong. It only looks at database timestamps, not git history. Says \"141 issues closed in last 7 days\" when thousands have actually come and go.\n\n## Issues\n\n1. Only queries database timestamps, not git history\n2. 7 days is too long a window\n3. Numbers don't reflect actual activity in JSONL git history\n\n## Proposed Fix\n\nEither:\n- Query git history of `.beads/beads.jsonl` to get actual activity (last 24-48 hours)\n- Remove \"Recent Activity\" section entirely if not useful\n- Make time window configurable and default to 24h\n\n## Example Output (Current)\n```\nRecent Activity (last 7 days):\nIssues Created: 174\nIssues Closed: 141\nIssues Updated: 37\n```\nThis is misleading when thousands of issues have actually cycled through.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-05T01:03:00.234813-08:00","updated_at":"2025-11-06T18:47:42.682987-08:00","closed_at":"2025-11-06T18:47:42.682987-08:00","source_repo":"."} +{"id":"bd-a03d5e36","content_hash":"d23244d54e0a07cad0467f63f103bbf0d9bf04ef804b7d411a196d580f7ae7d3","title":"Improve integration test coverage for stateful features","description":"","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-10-29T21:53:15.397137-07:00","updated_at":"2025-11-20T12:25:55.957846-05:00","closed_at":"2025-11-08T00:36:59.02371-08:00","source_repo":"."} +{"id":"bd-a101","content_hash":"9c8ac3184d936a5483d307ea72e34fa6308e99416b27c930c1b7b05660173f47","title":"Support separate branch for beads commits","description":"Allow beads to commit to a separate branch (e.g., beads-metadata) using git worktrees to support protected main branch workflows.\n\nSolves GitHub Issue #205 - Users need to protect main branch while maintaining beads workflow.\n\nKey advantages:\n- Works on any git platform\n- Main branch stays protected \n- No disruption to user's working directory\n- Backward compatible (opt-in via config)\n- Minimal disk overhead (sparse checkout)\n\nTotal estimate: 17-24 days (4-6 weeks with parallel work)","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-02T15:21:20.098247-08:00","updated_at":"2025-11-04T12:36:53.772727-08:00","closed_at":"2025-11-04T12:36:53.772727-08:00","external_ref":"GH-205","source_repo":"."} {"id":"bd-a1691807","content_hash":"52a3da17d0db9e7998b77b4962c00eeb866ca1eb3581d362863b68788b162582","title":"Integration test: mutation to export latency","description":"Measure time from bd create to JSONL update. Verify \u003c500ms latency. Test with multiple rapid mutations to verify batching.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T20:49:49.105247-07:00","updated_at":"2025-10-31T12:00:43.198883-07:00","closed_at":"2025-10-31T12:00:43.198883-07:00","source_repo":"."} -{"id":"bd-a40f374f","content_hash":"a9385e9f00bc41e5e2258fdfccd9f2cbd5a702764b5f1d036274e6026f8c3e38","title":"bd validate - Comprehensive health check","description":"Run all validation checks in one command.\n\nChecks:\n- Duplicates\n- Orphaned dependencies\n- Test pollution\n- Git conflicts\n\nSupports --fix-all for auto-repair.\n\nDepends on bd-cbed9619.1, bd-0dcea000, bd-31aab707, bd-9826b69a.\n\nFiles: cmd/bd/validate.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-20T12:40:11.708313-05:00","updated_at":"2025-11-20T12:40:11.708313-05:00","closed_at":"2025-10-29T20:02:15.318966-07:00","source_repo":"."} +{"id":"bd-a40f374f","content_hash":"a9385e9f00bc41e5e2258fdfccd9f2cbd5a702764b5f1d036274e6026f8c3e38","title":"bd validate - Comprehensive health check","description":"Run all validation checks in one command.\n\nChecks:\n- Duplicates\n- Orphaned dependencies\n- Test pollution\n- Git conflicts\n\nSupports --fix-all for auto-repair.\n\nDepends on bd-cbed9619.1, bd-0dcea000, bd-31aab707, bd-9826b69a.\n\nFiles: cmd/bd/validate.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-20T12:05:34.822639-05:00","updated_at":"2025-11-20T12:05:34.822639-05:00","closed_at":"2025-10-29T20:02:15.318966-07:00","source_repo":"."} {"id":"bd-a4b5","content_hash":"3966f6f9ab3202fe740f2936c7743f679ea42b75803c99465176ccf69ffd9dd7","title":"Implement git worktree management","description":"Create git worktree lifecycle management for separate beads branch.\n\nTasks:\n- Create internal/git/worktree.go\n- Implement CreateBeadsWorktree(branch, path)\n- Implement RemoveBeadsWorktree(path)\n- Implement CheckWorktreeHealth(path)\n- Configure sparse checkout (only .beads/)\n- Implement SyncJSONLToWorktree()\n- Handle worktree errors gracefully\n- Auto-cleanup on config change\n\nEstimated effort: 3-4 days","acceptance_criteria":"- Worktree created successfully on first use\n- Sparse checkout limits to .beads/ only\n- Health check detects and fixes broken worktrees\n- JSONL synced correctly before commits\n- Cleanup removes worktree completely","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T15:22:35.56423-08:00","updated_at":"2025-11-04T11:10:23.533053-08:00","closed_at":"2025-11-04T11:10:23.533055-08:00","source_repo":".","dependencies":[{"issue_id":"bd-a4b5","depends_on_id":"bd-a101","type":"parent-child","created_at":"2025-11-02T15:22:48.359843-08:00","created_by":"stevey"}]} {"id":"bd-a5251b1a","content_hash":"71a54f24d3d1c9eba8bf185c273ab6624815eb1299a8718aa0199c97f518008c","title":"Test RPC mutation event","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T19:08:03.315443-07:00","updated_at":"2025-10-31T12:00:43.177494-07:00","closed_at":"2025-10-31T12:00:43.177494-07:00","source_repo":"."} -{"id":"bd-a557","content_hash":"35b394c75f08f60e3a8bf4cb5f837fd7644ae1bbc7a050d0f4b78d01c9e7a33e","title":"Issue 1 to reopen","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-08T02:53:09.974717-08:00","updated_at":"2025-11-08T02:53:09.974717-08:00","closed_at":"2025-11-07T21:57:59.910467-08:00","source_repo":"."} -{"id":"bd-a9699011","content_hash":"5c0f39c01f3aa92d6407ef3128f4c8acb44b177f55f5d3906b5e83af5c0a3472","title":"GH#146: No color showing in terminal for some users","description":"User reports color not working in macOS (Taho 26.0.1) with iTerm 3.6.4 and Terminal.app, despite color working elsewhere in terminal. Python rich and printf escape codes work.\n\nNeed to investigate:\n- Is NO_COLOR env var set?\n- Terminal type detection?\n- fatih/color library configuration\n- Does bd list show colors? bd ready? bd init?\n- What's the output of: echo $TERM, echo $NO_COLOR","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-10-24T22:26:36.22163-07:00","updated_at":"2025-11-08T01:58:15.282138-08:00","closed_at":"2025-11-08T00:54:40.47956-08:00","external_ref":"github:146","source_repo":"."} +{"id":"bd-a557","content_hash":"35b394c75f08f60e3a8bf4cb5f837fd7644ae1bbc7a050d0f4b78d01c9e7a33e","title":"Issue 1 to reopen","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-20T19:11:50.951453-05:00","updated_at":"2025-11-20T19:11:50.951453-05:00","closed_at":"2025-11-07T21:57:59.910467-08:00","source_repo":"."} +{"id":"bd-a9699011","content_hash":"d41ab7095cae7a4b3ef956080f77bf0fcf6575039e5369800ec3f1e73b608ea6","title":"GH#146: No color showing in terminal for some users","description":"User reports color not working in macOS (Taho 26.0.1) with iTerm 3.6.4 and Terminal.app, despite color working elsewhere in terminal. Python rich and printf escape codes work.\n\nNeed to investigate:\n- Is NO_COLOR env var set?\n- Terminal type detection?\n- fatih/color library configuration\n- Does bd list show colors? bd ready? bd init?\n- What's the output of: echo $TERM, echo $NO_COLOR","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-10-24T22:26:36.22163-07:00","updated_at":"2025-11-20T12:25:55.955087-05:00","closed_at":"2025-11-08T00:54:40.47956-08:00","source_repo":"."} {"id":"bd-ad5e","content_hash":"67fdba1ba5b838384b16b82ff45e200cb5fd4960795bb5ae29d6fdec549170ca","title":"Add AI planning docs management guidance to bd onboard (GH-196)","description":"Enhanced bd onboard command to provide guidance for managing AI-generated planning documents (Claude slop).\n\nAddresses GitHub issue #196: https://github.com/steveyegge/beads/issues/196\n\nChanges:\n- Added Managing AI-Generated Planning Documents section to bd onboard\n- Recommends using history/ directory for ephemeral planning files\n- Updated AGENTS.md to demonstrate the pattern\n- Added comprehensive tests\n\nCommit: d46177d","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-02T17:11:33.183636-08:00","updated_at":"2025-11-02T17:12:05.599633-08:00","closed_at":"2025-11-02T17:12:05.599633-08:00","source_repo":"."} {"id":"bd-aec5439f","content_hash":"1b42289a0cb1da0626a69c6f004bf62fc9ba6e3a0f8eb70159c5f1446497020b","title":"Update LINTING.md with current baseline","description":"After cleanup, document the remaining acceptable baseline in LINTING.md so we can track regression.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-27T18:53:10.38679-07:00","updated_at":"2025-11-06T20:06:49.218701-08:00","closed_at":"2025-11-06T19:41:08.661851-08:00","source_repo":"."} {"id":"bd-aewm","content_hash":"b9f0ebb0c99a35c39c918250a1220f74bfcd77905b85c66715b36d1df9c5ec4b","title":"bd-hv01: Missing cleanup of .merged temp file on failure","description":"Problem: deletion_tracking.go:49 creates tmpMerged file but does not clean up on failure, causing disk space leak and potential interference with subsequent syncs.\n\nFix: Add defer os.Remove(tmpMerged) after creating temp file path.\n\nFiles: cmd/bd/deletion_tracking.go:38-89","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-06T18:16:24.326719-08:00","updated_at":"2025-11-06T18:46:55.924379-08:00","closed_at":"2025-11-06T18:46:55.924379-08:00","source_repo":".","dependencies":[{"issue_id":"bd-aewm","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T18:19:15.061462-08:00","created_by":"daemon"}]} -{"id":"bd-auf1","content_hash":"14ed8fa0f3ade91c28fcc79ba1f3d24be5ccff43afba9c2f39fb06aa9c3f5e7f","title":"Clean up snapshot files after successful merge","description":"After a successful 3-way merge and import during 'bd sync', the snapshot files (beads.base.jsonl, beads.left.jsonl, and their .meta.json files) are left in the .beads/ directory indefinitely.\n\nThese files are only needed temporarily during the merge process:\n- beads.base.jsonl: snapshot from last successful import\n- beads.left.jsonl: snapshot before git pull\n\nOnce the merge succeeds and the new JSONL is imported, these files serve no purpose and should be cleaned up.\n\nCurrent behavior:\n- sync.go:269 calls updateBaseSnapshot() after successful import\n- UpdateBase() updates beads.base.jsonl to the new state\n- beads.left.jsonl is never removed\n- Both files accumulate in .beads/ directory\n\nExpected behavior:\n- After successful merge and import, clean up both snapshot files\n- Only retain snapshots between sync operations (create on export, use during merge, clean up after import)\n\nThe cleanup logic exists (SnapshotManager.Cleanup()) but is only called on validation failures (deletion_tracking.go:48), not on success.\n\nDiscovered in vc project where stale snapshot files from Nov 8 merge were still present.","acceptance_criteria":"- Snapshot files are removed after successful merge and import\n- Files are created fresh on next 'bd sync' export step\n- Validation failure path still cleans up (existing behavior)\n- Tests verify cleanup happens in success path","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-08T22:39:56.460778-08:00","updated_at":"2025-11-08T22:45:40.5809-08:00","closed_at":"2025-11-08T22:45:40.5809-08:00","source_repo":"."} +{"id":"bd-auf1","content_hash":"0e60a1a40065ce53b0adcbd9863b45694a94ccc455ce7020154ce10b2c5d4b03","title":"Clean up snapshot files after successful merge","description":"After a successful 3-way merge and import during 'bd sync', the snapshot files (beads.base.jsonl, beads.left.jsonl, and their .meta.json files) are left in the .beads/ directory indefinitely.\n\nThese files are only needed temporarily during the merge process:\n- beads.base.jsonl: snapshot from last successful import\n- beads.left.jsonl: snapshot before git pull\n\nOnce the merge succeeds and the new JSONL is imported, these files serve no purpose and should be cleaned up.\n\nCurrent behavior:\n- sync.go:269 calls updateBaseSnapshot() after successful import\n- UpdateBase() updates beads.base.jsonl to the new state\n- beads.left.jsonl is never removed\n- Both files accumulate in .beads/ directory\n\nExpected behavior:\n- After successful merge and import, clean up both snapshot files\n- Only retain snapshots between sync operations (create on export, use during merge, clean up after import)\n\nThe cleanup logic exists (SnapshotManager.Cleanup()) but is only called on validation failures (deletion_tracking.go:48), not on success.\n\nDiscovered in vc project where stale snapshot files from Nov 8 merge were still present.","acceptance_criteria":"- Snapshot files are removed after successful merge and import\n- Files are created fresh on next 'bd sync' export step\n- Validation failure path still cleans up (existing behavior)\n- Tests verify cleanup happens in success path","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-08T22:39:56.460778-08:00","updated_at":"2025-11-08T22:47:51.96296-08:00","closed_at":"2025-11-08T22:47:51.96296-08:00","source_repo":"."} {"id":"bd-aysr","content_hash":"f8ff127568f471cc42391b1287cce69b376fb1b49bbef20a24d3394f57fba066","title":"Test numeric 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T12:58:41.498034-08:00","updated_at":"2025-11-05T12:58:44.73082-08:00","closed_at":"2025-11-05T12:58:44.73082-08:00","source_repo":"."} -{"id":"bd-az0m","content_hash":"91dd58e84b57c84ae065004ef4c15d0b5330935a5fde35eed489a93452feb2e9","title":"Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-08T02:53:09.975377-08:00","updated_at":"2025-11-08T02:53:09.975377-08:00","closed_at":"2025-11-07T21:55:09.42865-08:00","source_repo":".","dependencies":[{"issue_id":"bd-az0m","depends_on_id":"bd-bvo2","type":"related","created_at":"2025-11-07T19:07:21.069031-08:00","created_by":"daemon"}]} +{"id":"bd-az0m","content_hash":"91dd58e84b57c84ae065004ef4c15d0b5330935a5fde35eed489a93452feb2e9","title":"Issue 1","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-20T19:11:50.952127-05:00","updated_at":"2025-11-20T19:11:50.952127-05:00","closed_at":"2025-11-07T21:55:09.42865-08:00","source_repo":".","dependencies":[{"issue_id":"bd-az0m","depends_on_id":"bd-bvo2","type":"related","created_at":"2025-11-07T19:07:21.069031-08:00","created_by":"daemon"}]} {"id":"bd-azqv","content_hash":"b4e68adcec7b19f567ebee47f505ca6b529c17b4c4b885282cfc564e8a874f9f","title":"Ready issue","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T19:04:22.247039-08:00","updated_at":"2025-11-07T22:07:17.344986-08:00","closed_at":"2025-11-07T21:55:09.429024-08:00","source_repo":"."} {"id":"bd-b121","content_hash":"5d71e793a6de110be977bf87cfd25c3b461f452a1e8e44633452de1f8343a098","title":"Fix :memory: database connection pool issue causing \"no such table\" errors","description":"Critical bug in v0.21.6 where :memory: databases with cache=shared create multiple connections in the pool, causing intermittent \"no such table\" errors. SQLite's shared cache for in-memory databases only works reliably with a single connection.\n\nRoot cause: Missing db.SetMaxOpenConns(1) after sql.Open() for :memory: databases.\n\nImpact: 37 test failures in VC project, affects all consumers using :memory: for testing.","acceptance_criteria":"- Add db.SetMaxOpenConns(1) for :memory: databases only\n- Verify VC test suite passes (37 previously failing tests)\n- Add a test in Beads that reproduces the issue\n- Document the pool limitation in code comments\n- Release as Beads v0.21.7","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-04T00:52:56.318619-08:00","updated_at":"2025-11-05T11:31:27.50439-08:00","closed_at":"2025-11-05T00:50:00.558124-08:00","source_repo":"."} -{"id":"bd-b134","content_hash":"d291c43cce23793342ead99e03001af26af559f589be271dfb2723c9a077bb97","title":"Add tests for Integration Layer Implementation","description":"While implementing bd-wfmw, noticed missing tests","notes":"Reviewed existing coverage:\n- Basic test coverage exists in lib/test_beads_mail_adapter.py\n- Integration tests cover failure scenarios in tests/integration/test_mail_failures.py\n- Good coverage of: enabled/disabled modes, graceful degradation, 409 conflicts, HTTP errors, config\n- Missing: authorization headers detail, request body structure validation, concurrent reservation timing, TTL edge cases","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-08T00:20:30.804172-08:00","updated_at":"2025-11-08T02:17:04.046571-08:00","closed_at":"2025-11-08T02:17:04.046571-08:00","source_repo":".","dependencies":[{"issue_id":"bd-b134","depends_on_id":"bd-wfmw","type":"discovered-from","created_at":"2025-11-08T00:20:30.850776-08:00","created_by":"daemon"}]} +{"id":"bd-b134","content_hash":"455202a74224066aca5a1e300d045ae99e5c4ba5c306c043fd4c4c70c4aea058","title":"Add tests for Integration Layer Implementation","description":"While implementing bd-wfmw, noticed missing tests","notes":"Reviewed existing coverage:\n- Basic test coverage exists in lib/test_beads_mail_adapter.py\n- Integration tests cover failure scenarios in tests/integration/test_mail_failures.py\n- Good coverage of: enabled/disabled modes, graceful degradation, 409 conflicts, HTTP errors, config\n- Missing: authorization headers detail, request body structure validation, concurrent reservation timing, TTL edge cases","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-08T00:20:30.804172-08:00","updated_at":"2025-11-08T02:20:46.950501-08:00","closed_at":"2025-11-08T02:17:04.046571-08:00","source_repo":".","dependencies":[{"issue_id":"bd-b134","depends_on_id":"bd-wfmw","type":"discovered-from","created_at":"2025-11-08T00:20:30.850776-08:00","created_by":"daemon"}]} {"id":"bd-b245","content_hash":"5ad06a3b7126d4a4eb779cd01319cc4541869f4295afcf6f91cf7d6d36078cb0","title":"Add migration registry and simplify New()","description":"Create migrations.go with Migration type and registry. Change New() to: openDB -\u003e initSchema -\u003e RunMigrations(db). This removes 8+ separate migrate functions from New().","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-01T11:41:14.862623-07:00","updated_at":"2025-11-02T12:55:59.954845-08:00","closed_at":"2025-11-02T12:55:59.954854-08:00","source_repo":"."} {"id":"bd-b47c034e","content_hash":"1e8e5ae6388d6546f55421886bd88e7acd2fdade1052d2d7d1b193276777c05d","title":"Address gosec security warnings (102 issues)","description":"Security linter warnings: file permissions (0755 should be 0750), G304 file inclusion via variable, G204 subprocess launches. Many are false positives but should be reviewed.","design":"Review each gosec warning. Add exclusions for legitimate cases to .golangci.yml. Fix real security issues (overly permissive file modes).","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-25T13:47:10.719134-07:00","updated_at":"2025-11-04T11:10:23.533333-08:00","closed_at":"2025-11-04T11:10:23.533338-08:00","source_repo":"."} {"id":"bd-b4b0","content_hash":"ab3833b7a2cd79e39cbf6e41e35da88c8c45581dff3862bad2b8476b37c3b494","title":"Implement fs bridge layer for WASM (Go syscall/js to Node.js fs)","description":"Go's os package in WASM returns 'not implemented on js' for mkdir and other file operations. Need to create a bridge layer that:\n\n1. Detects WASM environment (GOOS=js)\n2. Uses syscall/js to call Node.js fs module functions\n3. Implements wrappers for:\n - os.MkdirAll\n - os.ReadFile / os.WriteFile\n - os.Open / os.Create\n - os.Stat / os.Lstat\n - filepath operations\n \nApproach:\n- Create internal/wasm/fs_bridge.go with //go:build js \u0026\u0026 wasm\n- Export Node.js fs functions to Go using global.readFileSync, global.writeFileSync, etc.\n- Wrap in Go API that matches os package signatures\n- Update beads.go and storage layer to use bridge when in WASM\n\nThis unblocks bd-4462 (basic WASM testing) and [deleted:bd-5bbf] (feature parity testing).","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T22:22:42.796412-08:00","updated_at":"2025-11-03T22:16:38.855334-08:00","closed_at":"2025-11-02T22:47:49.586218-08:00","source_repo":".","dependencies":[{"issue_id":"bd-b4b0","depends_on_id":"bd-44d0","type":"parent-child","created_at":"2025-11-02T22:23:49.585675-08:00","created_by":"stevey"}]} @@ -297,16 +2757,16 @@ {"id":"bd-b92a","content_hash":"01d8b852f1d9936835a253f6b9576c401cbd143772302b25ac859db79b6be76a","title":"Wire config to import pipeline","description":"Connect import.orphan_handling config to importer.go and sqlite validation functions. Pass mode flag through call chain. Implement all four modes (strict/resurrect/skip/allow) with proper error messages and logging.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-04T12:32:08.612142-08:00","updated_at":"2025-11-05T00:44:27.949021-08:00","closed_at":"2025-11-05T00:44:27.949024-08:00","source_repo":"."} {"id":"bd-bb08","content_hash":"df5b8f359f459b9fc8a24e089878e65222f4b7ba541e829ebb1d34e5beb3a9fc","title":"Add ON DELETE CASCADE to child_counters schema","description":"Update schema.go child_counters table foreign key with ON DELETE CASCADE. When parent deleted, child counter should also be deleted. If parent is resurrected, counter gets recreated from scratch. Add migration for existing databases.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-04T12:32:30.681452-08:00","updated_at":"2025-11-05T11:31:27.505024-08:00","closed_at":"2025-11-05T00:55:12.427194-08:00","source_repo":"."} {"id":"bd-bc2c6191","content_hash":"46ab7e965823421a1cc06fdbb3a1faa8ef31f0c46487cd05a4cec8127af8e480","title":"Audit Current Cache Usage","description":"Understand exactly what code depends on the storage cache","acceptance_criteria":"- Document showing all cache dependencies\n- Confirmation that removing cache won't break MCP\n- List of tests that need updating\n\nFiles to examine:\n- internal/rpc/server_cache_storage.go (cache implementation)\n- internal/rpc/client.go (how req.Cwd is set)\n- internal/rpc/server_*.go (all getStorageForRequest calls)\n- integrations/beads-mcp/ (MCP multi-repo logic)\n\nTasks:\n- Document all callers of getStorageForRequest()\n- Verify req.Cwd is only set by RPC client for database discovery\n- Confirm MCP server doesn't rely on multi-repo cache behavior\n- Check if any tests assume multi-repo routing\n- Review environment variables: BEADS_DAEMON_MAX_CACHE_SIZE, BEADS_DAEMON_CACHE_TTL, BEADS_DAEMON_MEMORY_THRESHOLD_MB","notes":"Audit complete. See CACHE_AUDIT.md for full findings.\n\nSummary:\n- Cache was already removed in commit 322ab63 (2025-10-28)\n- server_cache_storage.go deleted (~286 lines)\n- All getStorageForRequest calls replaced with s.storage\n- All environment variables removed\n- MCP multi-repo works via per-project daemon architecture\n- All tests updated and passing\n- Only stale comment in server.go needed fixing","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-27T23:02:43.506373-07:00","updated_at":"2025-11-06T20:06:49.218998-08:00","closed_at":"2025-11-06T19:48:30.520616-08:00","source_repo":"."} -{"id":"bd-bc7l","content_hash":"bc091a6fed46130e6cb791c4d58c777b904e22f92cc6921d231053abf48c3c4b","title":"Issue 2 to reopen","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-08T02:53:09.975911-08:00","updated_at":"2025-11-08T02:53:09.975911-08:00","closed_at":"2025-11-07T21:57:59.91095-08:00","source_repo":"."} +{"id":"bd-bc7l","content_hash":"bc091a6fed46130e6cb791c4d58c777b904e22f92cc6921d231053abf48c3c4b","title":"Issue 2 to reopen","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-20T19:11:50.952868-05:00","updated_at":"2025-11-20T19:11:50.952868-05:00","closed_at":"2025-11-07T21:57:59.91095-08:00","source_repo":"."} {"id":"bd-bdaf24d5","content_hash":"64067e38421a77f1b54fca73e6b98923d15aca0933463a1fa6862270c3102566","title":"Final validation test","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-27T18:27:28.310533-07:00","updated_at":"2025-10-31T12:00:43.184995-07:00","closed_at":"2025-10-31T12:00:43.184995-07:00","source_repo":"."} -{"id":"bd-bdhn","content_hash":"701cd890155ff91816d0c41cdc72b29c7f399aa20bac7e738279b821142fccf1","title":"bd message: Add input validation for --importance flag","description":"The --importance flag accepts any string without validation, leading to confusing server errors.\n\n**Location:** cmd/bd/message.go:256-258\n\n**Fix:**\n- Add flag validation for: low, normal, high, urgent\n- Add shell completion support\n- Validate in runMessageSend before sending\n\n**Impact:** Better UX, prevents confusing errors","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-08T12:54:26.43027-08:00","updated_at":"2025-11-08T12:57:59.65367-08:00","closed_at":"2025-11-08T12:57:59.65367-08:00","source_repo":".","dependencies":[{"issue_id":"bd-bdhn","depends_on_id":"bd-6uix","type":"parent-child","created_at":"2025-11-08T12:55:54.910841-08:00","created_by":"daemon"}]} +{"id":"bd-bdhn","content_hash":"ddbc003327e0492285b53fd765e90a816b9cea1e4cf9fc8797e8a465a1e834bd","title":"bd message: Add input validation for --importance flag","description":"The --importance flag accepts any string without validation, leading to confusing server errors.\n\n**Location:** cmd/bd/message.go:256-258\n\n**Fix:**\n- Add flag validation for: low, normal, high, urgent\n- Add shell completion support\n- Validate in runMessageSend before sending\n\n**Impact:** Better UX, prevents confusing errors","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-08T12:54:26.43027-08:00","updated_at":"2025-11-08T12:57:59.65367-08:00","closed_at":"2025-11-08T12:57:59.65367-08:00","source_repo":".","dependencies":[{"issue_id":"bd-bdhn","depends_on_id":"bd-6uix","type":"parent-child","created_at":"2025-11-08T12:55:54.910841-08:00","created_by":"daemon"}]} {"id":"bd-be7a","content_hash":"d9043a7a49f8e42dc88c3c01aaa178c1560b67c1637c3373b39c387272e8b725","title":"Create npm package structure with package.json","description":"Set up initial npm package structure for @beads/bd:\n\n## Files to create\n- npm/package.json - Package metadata, dependencies, scripts\n- npm/bin/bd - CLI wrapper script that invokes native binary\n- npm/.gitignore - Ignore downloaded binaries\n- npm/README.md - Installation and usage instructions\n\n## package.json structure\n- Name: @beads/bd (scoped package)\n- Main: index.js (exports binary path)\n- Bin: bin/bd (CLI entry point)\n- Scripts: postinstall (download binary)\n- Keywords: issue-tracker, cli, beads, bd\n- License: MIT\n\n## Bin wrapper\nSimple Node.js script that:\n- Spawns native binary with child_process.spawn\n- Passes through all arguments and stdio\n- Exits with binary's exit code","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T23:39:47.416779-08:00","updated_at":"2025-11-03T10:31:45.381258-08:00","closed_at":"2025-11-03T10:31:45.381258-08:00","source_repo":".","dependencies":[{"issue_id":"bd-be7a","depends_on_id":"bd-febc","type":"parent-child","created_at":"2025-11-02T23:40:32.923859-08:00","created_by":"daemon"}]} -{"id":"bd-bgca","content_hash":"eaf260976156d4aa03681369efec757f8119f9d5ec75703d54b0f1359e5acb25","title":"Latency test manual","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-08T00:04:25.028223-08:00","updated_at":"2025-11-08T00:06:46.169654-08:00","closed_at":"2025-11-08T00:06:46.169654-08:00","source_repo":"."} +{"id":"bd-bgca","content_hash":"c617d03baef137f2425cea14eb5346012e556b35e9048f0601fe8d719b5b705f","title":"Latency test manual","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-08T00:04:25.028223-08:00","updated_at":"2025-11-08T00:06:46.169654-08:00","closed_at":"2025-11-08T00:06:46.169654-08:00","source_repo":"."} {"id":"bd-biwp","content_hash":"0e10fbd7c9acb4a476010f29f0669b76613acb8b05302657e894f9a255aa3cc7","title":"Support local-only git repos without remote origin","description":"Daemon crashes when working with local git repos that don't have origin remote configured. Should gracefully degrade to local-only mode: skip git pull/push operations but maintain daemon features (RPC server, auto-flush, JSONL export).","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-09T16:09:50.677769-08:00","updated_at":"2025-11-09T16:16:56.588548-08:00","closed_at":"2025-11-09T16:16:56.588548-08:00","external_ref":"gh#279","source_repo":"."} {"id":"bd-br8","content_hash":"3f7413965cebb0a08803c601413ce62ea82af565c63b1747da623ca42a791316","title":"Implement `bd setup claude` command for Claude Code integration","description":"Create a `bd setup claude` command that installs Claude Code integration files (slash commands and hooks). This is idempotent and safe to run multiple times.","design":"## Implementation\n\nCreate `cmd/bd/setup.go` with subcommand `claude` that installs hooks via **JSON configuration** (Claude Code's native hook system).\n\n### Command Interface\n```bash\nbd setup claude # Install globally (default)\nbd setup claude --project # Install for this project only\nbd setup claude --check # Verify installation\nbd setup claude --remove # Remove bd hooks\n```\n\n### Claude Code Hook Architecture\n\n**Claude Code uses JSON configuration, NOT file discovery:**\n- Hooks defined in `settings.json` as arrays\n- Multiple tools coexist natively (parallel execution)\n- Configuration-based, not directory-based\n\n**Configuration files:**\n- Global: `~/.claude/settings.json`\n- Project: `./.claude/settings.json` or `./.claude/settings.local.json`\n\n### What Gets Installed\n\n**settings.json configuration only** (no script files needed):\n```json\n{\n \"hooks\": {\n \"SessionStart\": [\n {\n \"matcher\": \"\",\n \"hooks\": [\n {\n \"type\": \"command\",\n \"command\": \"bd prime\"\n }\n ]\n }\n ],\n \"PreCompact\": [\n {\n \"matcher\": \"\",\n \"hooks\": [\n {\n \"type\": \"command\",\n \"command\": \"bd prime\"\n }\n ]\n }\n ]\n }\n}\n```\n\n**Why no script files:**\n- `bd prime` is cross-platform (no shell syntax needed)\n- `bd prime` always exits 0 (no `|| true` needed)\n- `bd prime` never writes to stderr (no `2\u003e/dev/null` needed)\n- Simpler: one file to manage (settings.json), not two\n- More portable: no file permissions, no path dependencies\n\n### Installation Logic\n\n```go\nfunc setupClaude(global bool) error {\n var settingsPath string\n \n if global {\n home, _ := os.UserHomeDir()\n settingsPath = filepath.Join(home, \".claude/settings.json\")\n } else {\n settingsPath = \".claude/settings.local.json\"\n }\n \n // Update settings.json (merge with existing)\n return updateSettingsJSON(settingsPath, addBeadsHooks)\n}\n\nfunc updateSettingsJSON(path string, updateFn func(map[string]interface{})) error {\n // Create parent directory if needed\n os.MkdirAll(filepath.Dir(path), 0755)\n \n // Read existing settings (or create empty)\n var settings map[string]interface{}\n if data, err := os.ReadFile(path); err == nil {\n json.Unmarshal(data, \u0026settings)\n } else {\n settings = make(map[string]interface{})\n }\n \n // Apply updates\n updateFn(settings)\n \n // Write back atomically\n data, _ := json.MarshalIndent(settings, \"\", \" \")\n return atomicWriteFile(path, data, 0644)\n}\n\nfunc addBeadsHooks(settings map[string]interface{}) {\n hooks, _ := settings[\"hooks\"].(map[string]interface{})\n if hooks == nil {\n hooks = make(map[string]interface{})\n settings[\"hooks\"] = hooks\n }\n \n // Add SessionStart hook if not present\n addHookCommand(hooks, \"SessionStart\", \"bd prime\")\n \n // Add PreCompact hook if not present\n addHookCommand(hooks, \"PreCompact\", \"bd prime\")\n}\n\nfunc addHookCommand(hooks map[string]interface{}, event, command string) {\n // Get or create event array\n eventHooks, _ := hooks[event].([]interface{})\n if eventHooks == nil {\n eventHooks = []interface{}{}\n }\n \n // Check if bd hook already registered\n for _, hook := range eventHooks {\n hookMap, _ := hook.(map[string]interface{})\n commands, _ := hookMap[\"hooks\"].([]interface{})\n for _, cmd := range commands {\n cmdMap, _ := cmd.(map[string]interface{})\n if cmdMap[\"command\"] == command {\n fmt.Println(\"✓ Hook already registered:\", event)\n return // Already present\n }\n }\n }\n \n // Add bd hook to array\n newHook := map[string]interface{}{\n \"matcher\": \"\",\n \"hooks\": []interface{}{\n map[string]interface{}{\n \"type\": \"command\",\n \"command\": command,\n },\n },\n }\n \n eventHooks = append(eventHooks, newHook)\n hooks[event] = eventHooks\n fmt.Println(\"✓ Registered hook:\", event)\n}\n```\n\n### Slash Command (Optional)\n\n**`.claude/commands/prime_beads.md`:**\n```markdown\n---\ndescription: Load Beads workflow context\n---\n\nRun `bd prime` to refresh bd workflow understanding.\n```\n\n### Integration with `bd init`\n\nAfter git hooks:\n```go\nif isClaudeDetected() \u0026\u0026 !quietMode {\n fmt.Println(\"\\nClaude Code Integration:\")\n fmt.Println(\" Install hooks to prevent agent from forgetting bd workflow?\")\n fmt.Println(\" (Works with MCP server or CLI approach)\")\n \n choice := promptYesNo(\"Install Claude hooks globally?\")\n if choice {\n setupClaude(true) // global=true\n }\n}\n```\n\n### Safe Multi-Tool Coexistence\n\n**Why this approach is safe:**\n- JSON arrays support multiple tools natively\n- Each tool gets its own array entry\n- Parallel execution (no conflicts)\n- Removal only touches bd entries\n- No file overwriting needed\n\n### Removal\n\n```go\nfunc removeBeadsHooks(settings map[string]interface{}) {\n hooks, _ := settings[\"hooks\"].(map[string]interface{})\n if hooks == nil {\n return\n }\n \n // Remove bd prime hooks from each event\n for _, event := range []string{\"SessionStart\", \"PreCompact\"} {\n removeHookCommand(hooks, event, \"bd prime\")\n }\n}\n\nfunc removeHookCommand(hooks map[string]interface{}, event, command string) {\n eventHooks, _ := hooks[event].([]interface{})\n if eventHooks == nil {\n return\n }\n \n // Filter out bd prime hooks\n var filtered []interface{}\n for _, hook := range eventHooks {\n hookMap, _ := hook.(map[string]interface{})\n commands, _ := hookMap[\"hooks\"].([]interface{})\n \n keepHook := true\n for _, cmd := range commands {\n cmdMap, _ := cmd.(map[string]interface{})\n if cmdMap[\"command\"] == command {\n keepHook = false\n break\n }\n }\n \n if keepHook {\n filtered = append(filtered, hook)\n }\n }\n \n hooks[event] = filtered\n}\n```\n\n### Files to Create\n- `cmd/bd/setup.go` - Setup command with JSON merging logic\n- `cmd/bd/setup_test.go` - Tests for JSON manipulation\n- No hook script files needed (bd prime is self-contained)","acceptance_criteria":"- `bd setup claude` installs .claude/ files\n- Idempotent (can run multiple times safely)\n- Backs up existing files\n- `bd setup claude --check` verifies installation\n- Works when .claude/ doesn't exist (skip with message)\n- Unit tests cover installation logic","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-11T23:28:59.374019-08:00","updated_at":"2025-11-12T08:51:23.281292-08:00","closed_at":"2025-11-12T08:51:23.281292-08:00","source_repo":".","dependencies":[{"issue_id":"bd-br8","depends_on_id":"bd-rpn","type":"blocks","created_at":"2025-11-11T23:28:59.375616-08:00","created_by":"daemon"},{"issue_id":"bd-br8","depends_on_id":"bd-90v","type":"parent-child","created_at":"2025-11-11T23:31:23.762685-08:00","created_by":"daemon"}]} {"id":"bd-bt6y","content_hash":"462f08aa379cf2f196b4c0ca096271fa47ab5e1a18c5663c28d2d86fd02115cf","title":"Improve compact/daemon/merge documentation and UX","description":"Multiple documentation and UX issues encountered:\n1. \"bd compact --analyze\" fails with misleading \"requires SQLite storage\" error when daemon is running. Needs --no-daemon or better error.\n2. \"bd merge\" help text is outdated (refers to 3-way merge instead of issue merging).\n3. Daemon mode purpose isn't clear to local-only users.\n4. Compact/cleanup commands are hard to discover.\n\nProposed fixes:\n- Fix compact+daemon interaction or error message.\n- Update \"bd merge\" help text.\n- Add \"when to use daemon\" section to docs.\n- Add maintenance section to quickstart.\n","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-20T18:55:43.637047-05:00","updated_at":"2025-11-20T18:55:43.637047-05:00","source_repo":"."} -{"id":"bd-buol","content_hash":"020dc9dbbd7f3e2b40c35f01bf8a65cf32ab419c188081493ea4e541bad1442e","title":"Invert control for compact: provide tools for agent-driven compaction","description":"Currently compact requires Anthropic API key because bd calls the AI directly. This is backwards - we should provide tools (like all other bd commands) that let an AI agent perform the compaction. The agent decides what to keep/merge, not bd. Related to GH #243 complaint about API key requirement.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-07T00:27:28.498069-08:00","updated_at":"2025-11-07T23:18:08.38606-08:00","closed_at":"2025-11-07T23:08:51.67473-08:00","source_repo":"."} -{"id":"bd-bvo2","content_hash":"66fd2d53d97eb8dcb3231e82702ca7eb0f1887dc9b3ee2b2865e0d5158ca7311","title":"Issue 2","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-08T02:53:09.976484-08:00","updated_at":"2025-11-08T02:53:09.976484-08:00","closed_at":"2025-11-07T21:55:09.429328-08:00","source_repo":"."} +{"id":"bd-buol","content_hash":"020dc9dbbd7f3e2b40c35f01bf8a65cf32ab419c188081493ea4e541bad1442e","title":"Invert control for compact: provide tools for agent-driven compaction","description":"Currently compact requires Anthropic API key because bd calls the AI directly. This is backwards - we should provide tools (like all other bd commands) that let an AI agent perform the compaction. The agent decides what to keep/merge, not bd. Related to GH #243 complaint about API key requirement.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-07T00:27:28.498069-08:00","updated_at":"2025-11-08T01:49:23.46152-08:00","closed_at":"2025-11-07T23:08:51.67473-08:00","source_repo":"."} +{"id":"bd-bvo2","content_hash":"66fd2d53d97eb8dcb3231e82702ca7eb0f1887dc9b3ee2b2865e0d5158ca7311","title":"Issue 2","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-20T19:11:50.953574-05:00","updated_at":"2025-11-20T19:11:50.953574-05:00","closed_at":"2025-11-07T21:55:09.429328-08:00","source_repo":"."} {"id":"bd-bwk2","content_hash":"b69758a5dd9ce7605a61dc6e1fe3e753b87dfc6824c248d6ad56e038d47e77e7","title":"Centralize error handling patterns in storage layer","description":"80+ instances of inconsistent error handling across sqlite.go with mix of %w, %v, and no wrapping.\n\nLocation: internal/storage/sqlite/sqlite.go (throughout)\n\nProblem:\n- Some use fmt.Errorf(\"op failed: %w\", err) - correct wrapping\n- Some use fmt.Errorf(\"op failed: %v\", err) - loses error chain\n- Some return err directly - no context\n- Hard to debug production issues\n- Can't distinguish error types\n\nSolution: Create internal/storage/sqlite/errors.go:\n- Define sentinel errors (ErrNotFound, ErrInvalidID, etc.)\n- Create wrapDBError(op string, err error) helper\n- Convert sql.ErrNoRows to ErrNotFound\n- Always wrap with operation context\n\nImpact: Lost error context; inconsistent messages; hard to debug\n\nEffort: 5-7 hours","status":"open","priority":1,"issue_type":"task","created_at":"2025-11-16T14:51:54.974909-08:00","updated_at":"2025-11-16T14:51:54.974909-08:00","source_repo":"."} {"id":"bd-by3x","content_hash":"80149be1ddf4ef26d5d56c444895be01ec8b59492c258c2365fa1c2619061bbd","title":"Windows binaries lack SQLite support (GH #253)","description":"Windows users installing via install.ps1 get \"sql: unknown driver sqlite\" error. Root cause: GoReleaser was building with CGO_ENABLED=0, which excludes SQLite driver.\n\nFixed by:\n1. Enabling CGO in .goreleaser.yml\n2. Installing MinGW cross-compiler in release workflow\n3. Splitting builds per platform to set correct CC for Windows\n\nNeeds new release to fix for users.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-07T15:54:13.134815-08:00","updated_at":"2025-11-07T15:55:07.024156-08:00","closed_at":"2025-11-07T15:55:07.024156-08:00","source_repo":"."} {"id":"bd-bzfy","content_hash":"90bbde4d90d68728a9377d5d966682dc836740f1be43a0cf80d3cc69002a560b","title":"Integrate beads-merge tool by @neongreen","description":"**Context**: @neongreen built a production-ready 3-way merge tool for JSONL files that works with both Git and Jujutsu. This is superior to our planned bd resolve-conflicts because it prevents conflicts proactively instead of resolving them after the fact.\n\n**Tool**: https://github.com/neongreen/mono/tree/main/beads-merge\n\n**What it does**:\n- 3-way merge of JSONL files (base, left, right)\n- Field-level merging (titles, status, priority, etc.)\n- Smart dependency merging (union + dedup)\n- Conflict markers for unresolvable conflicts\n- Exit code 1 for conflicts (standard)\n\n**Integration options**:\n\n1. **Recommend (minimal effort)** - Document in AGENTS.md + TROUBLESHOOTING.md\n2. **Bundle binary** - Include in releases (cross-platform builds)\n3. **Port to Go** - Reimplement in bd codebase\n4. **Auto-install hook** - During bd init, offer to install merge driver\n\n**Recommendation**: Start with option 1 (document), then option 2 (bundle) once proven.\n\n**Related**: bd-5f483051 (bd resolve-conflicts - can close as superseded)","notes":"Created GitHub issue to discuss integration approach with @neongreen: https://github.com/neongreen/mono/issues/240\n\nAwaiting their preference on:\n1. Vendor with attribution (fastest)\n2. Extract as importable module (best long-term)\n3. Keep as separate tool (current state)\n\nNext: Wait for response before proceeding with integration.\n\nUPDATE 2025-11-06: @neongreen gave permission to vendor! Quote: \"I switched from beads to my own thing (tk) so I'm very happy to give beads-merge away — feel free to move it into the beads repo and I will point mono's readme to beads\"\n\nNext: Vendor beads-merge with full attribution","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-05T11:31:44.906652-08:00","updated_at":"2025-11-06T18:19:16.233387-08:00","closed_at":"2025-11-06T15:38:37.052274-08:00","source_repo":"."} @@ -317,10 +2777,10 @@ {"id":"bd-c77d","content_hash":"204eed7c89bcda47198a774340985706baf139c9e1a9f1311d7340dac2b64ec7","title":"Test SQLite WASM compatibility","description":"Verify modernc.org/sqlite works in WASM target. Child of epic bd-44d0.\n\n## Tasks\n- [ ] Compile minimal SQLite test to WASM\n- [ ] Test database create/open operations\n- [ ] Test query execution\n- [ ] Test JSONL import/export\n- [ ] Benchmark performance vs native\n\n## Decision Point\nIf modernc.org/sqlite issues, evaluate ncruces/go-sqlite3 alternative.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-02T18:33:31.247537-08:00","updated_at":"2025-11-05T00:55:48.757762-08:00","closed_at":"2025-11-05T00:55:48.75777-08:00","source_repo":".","dependencies":[{"issue_id":"bd-c77d","depends_on_id":"bd-197b","type":"blocks","created_at":"2025-11-02T18:33:31.248112-08:00","created_by":"daemon"}]} {"id":"bd-c796","content_hash":"7231785c8ce4d15ce296f7e2d22d03b9d6610ed73dcc5501773f86782ffeaf03","title":"Extract batch operations to batch_ops.go","description":"Move validateBatchIssues, generateBatchIDs, bulkInsertIssues, bulkRecordEvents, bulkMarkDirty, CreateIssues to batch_ops.go","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-01T19:28:54.887487-07:00","updated_at":"2025-11-02T08:09:51.579971-08:00","closed_at":"2025-11-02T08:09:51.579978-08:00","source_repo":"."} {"id":"bd-c7eb","content_hash":"8f98709ed61066b4e51c2f26d16c22278846cab66c7597df2bc892172b9a6ad6","title":"Research Go WASM compilation and modernc.org/sqlite WASM support","description":"Investigate technical requirements for compiling bd to WASM:\n- Verify modernc.org/sqlite has working js/wasm support\n- Identify Go stdlib limitations in WASM (syscalls, file I/O, etc.)\n- Research wasm_exec.js runtime and Node.js integration\n- Document any API differences between native and WASM builds","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T21:58:07.284264-08:00","updated_at":"2025-11-02T22:23:49.375941-08:00","closed_at":"2025-11-02T22:23:49.375941-08:00","source_repo":".","dependencies":[{"issue_id":"bd-c7eb","depends_on_id":"bd-44d0","type":"parent-child","created_at":"2025-11-02T22:23:49.378673-08:00","created_by":"stevey"}]} -{"id":"bd-c825f867","content_hash":"e2925468dd33e89b5930382acb9a0ef9c48a3570d376068f9e3a39bb245f0c9d","title":"Add docs/architecture/event_driven.md","description":"Copy event_driven_daemon.md into docs/ folder. Add to documentation index.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-28T16:20:02.431399-07:00","updated_at":"2025-11-08T01:58:15.282811-08:00","closed_at":"2025-11-08T00:51:06.826771-08:00","source_repo":"."} +{"id":"bd-c825f867","content_hash":"e2925468dd33e89b5930382acb9a0ef9c48a3570d376068f9e3a39bb245f0c9d","title":"Add docs/architecture/event_driven.md","description":"Copy event_driven_daemon.md into docs/ folder. Add to documentation index.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-28T16:20:02.431399-07:00","updated_at":"2025-11-08T01:49:23.461825-08:00","closed_at":"2025-11-08T00:51:06.826771-08:00","source_repo":"."} {"id":"bd-c947dd1b","content_hash":"79bd51b46b28bc16cfc19cd19a4dd4f57f45cd1e902b682788d355b03ec00b2a","title":"Remove Daemon Storage Cache","description":"The daemon's multi-repo storage cache is the root cause of stale data bugs. Since global daemon is deprecated, we only ever serve one repository, making the cache unnecessary complexity. This epic removes the cache entirely for simpler, more reliable direct storage access.","design":"For local daemon (single repository), eliminate the cache entirely:\n- Use s.storage field directly (opened at daemon startup)\n- Remove getStorageForRequest() routing logic\n- Remove server_cache_storage.go entirely (~300 lines)\n- Remove cache-related tests\n- Simplify Server struct\n\nBenefits:\n✅ No staleness bugs: Always using live SQLite connection\n✅ Simpler code: Remove ~300 lines of cache management\n✅ Easier debugging: Direct storage access, no cache indirection\n✅ Same performance: Cache was always 1 entry for local daemon anyway","acceptance_criteria":"- Daemon has no storage cache code\n- All tests pass\n- MCP integration works\n- No stale data bugs\n- Documentation updated\n- Performance validated","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-10-28T10:50:15.126939-07:00","updated_at":"2025-10-30T17:12:58.21743-07:00","closed_at":"2025-10-28T10:49:53.612049-07:00","source_repo":"."} {"id":"bd-c9a482db","content_hash":"f939b9e15e7143d89626757438a69530fa9165a2f66588fd55f2e6146c20d646","title":"Add internal/ai package for AI-assisted repairs","description":"Add AI integration package to support AI-powered repair commands.\n\nProviders:\n- Anthropic (Claude)\n- OpenAI\n- Ollama (local)\n\nFeatures:\n- Conflict resolution analysis\n- Duplicate detection via embeddings\n- Configuration via env vars (BEADS_AI_PROVIDER, BEADS_AI_API_KEY, etc.)\n\nSee repair_commands.md lines 357-425 for design.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-28T19:37:55.722841-07:00","updated_at":"2025-11-06T19:36:13.972304-08:00","closed_at":"2025-11-06T19:27:19.150657-08:00","source_repo":"."} -{"id":"bd-caa9","content_hash":"aa97994c8474a1380ff7f9c9db681c6d6dda62839b1ddc13312a6813029b6404","title":"Migration tool for existing users","description":"Ensure smooth migration for existing users to separate branch workflow.\n\nTasks:\n- Add bd migrate --separate-branch command\n- Detect existing repos, migrate cleanly\n- Preserve git history\n- Add rollback mechanism\n- Test migration on beads' own repo (dogfooding)\n- Communication plan (GitHub discussion, docs)\n- Version compatibility checks\n\nEstimated effort: 2-3 days","acceptance_criteria":"- Existing users can migrate without data loss\n- Rollback works if migration fails\n- Clear communication about breaking changes (if any)\n- beads project itself migrated successfully (dogfooding)\n- Migration tested on 5+ real-world repos","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T15:22:35.627388-08:00","updated_at":"2025-11-04T12:36:53.789201-08:00","closed_at":"2025-11-04T12:36:53.789201-08:00","source_repo":".","dependencies":[{"issue_id":"bd-caa9","depends_on_id":"bd-a101","type":"parent-child","created_at":"2025-11-02T15:22:48.382619-08:00","created_by":"stevey"}]} +{"id":"bd-caa9","content_hash":"6e8d4006d4f9b265e63fad9e30f24c6ab29fbf79ef47ec90a7e1225b5d662b67","title":"Migration tool for existing users","description":"Ensure smooth migration for existing users to separate branch workflow.\n\nTasks:\n- Add bd migrate --separate-branch command\n- Detect existing repos, migrate cleanly\n- Preserve git history\n- Add rollback mechanism\n- Test migration on beads' own repo (dogfooding)\n- Communication plan (GitHub discussion, docs)\n- Version compatibility checks\n\nEstimated effort: 2-3 days","acceptance_criteria":"- Existing users can migrate without data loss\n- Rollback works if migration fails\n- Clear communication about breaking changes (if any)\n- beads project itself migrated successfully (dogfooding)\n- Migration tested on 5+ real-world repos","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T15:22:35.627388-08:00","updated_at":"2025-11-04T12:36:53.789201-08:00","closed_at":"2025-11-04T12:36:53.789201-08:00","source_repo":".","dependencies":[{"issue_id":"bd-caa9","depends_on_id":"bd-a101","type":"parent-child","created_at":"2025-11-02T15:22:48.382619-08:00","created_by":"stevey"}]} {"id":"bd-cb2f","content_hash":"99b9c1c19d5e9f38308d78f09763426777797f133d4c86edd579419e7ba4043f","title":"Week 1 task","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-03T19:11:59.358093-08:00","updated_at":"2025-11-03T19:11:59.358093-08:00","source_repo":".","labels":["frontend","week2"]} {"id":"bd-cb64c226.1","content_hash":"0bfd0735c8985d3b3e4906e44f22b06fb24758c6d795188226e920bd8b3e7cf8","title":"Performance Validation","description":"Confirm no performance regression from cache removal","acceptance_criteria":"- Benchmarks show no significant regression\n- Document performance characteristics\n- Confirm single SQLite connection is reused\n\nBenchmarks: go test -bench=. -benchmem ./internal/rpc/...\n\nMetrics to track:\n- Request latency (p50, p99)\n- Throughput (requests/sec)\n- Memory usage\n- SQLite connection overhead\n\nExpected results:\n- Latency: Same or better (no cache overhead)\n- Throughput: Same (cache was always 1 entry)\n- Memory: Lower (no cache structs)\n- Connection overhead: Zero (single connection reused)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-28T10:50:15.126019-07:00","updated_at":"2025-10-30T17:12:58.216721-07:00","closed_at":"2025-10-28T10:49:45.021037-07:00","source_repo":"."} {"id":"bd-cb64c226.10","content_hash":"2dbe416cf266952236a03ed414e5f7f9eb5526d69b70d0821ca0d59b2bc22305","title":"Delete server_cache_storage.go","description":"Remove the entire cache implementation file (~286 lines)","acceptance_criteria":"- File deleted from repository\n- No compilation errors\n- No references to deleted functions\n\nFunctions being removed:\n- StorageCacheEntry struct\n- evictStaleStorage() - LRU eviction\n- evictCacheBasedOnMemory() - memory pressure eviction\n- getStorageForRequest() - cache lookup and routing\n- findDatabaseForCwd() - database discovery\n- evictStorageForRequest() - manual eviction","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-27T22:55:38.729299-07:00","updated_at":"2025-10-30T17:12:58.212391-07:00","closed_at":"2025-10-28T14:08:38.064592-07:00","source_repo":"."} @@ -340,34 +2800,35 @@ {"id":"bd-ce37850f","content_hash":"c31f96602e91797883758c5a5b778a148257959256605fca6378bbbc22c54ccc","title":"Add embedding generation for duplicate detection","description":"Use embeddings for scalable duplicate detection.\n\nModel: text-embedding-3-small (OpenAI) or all-MiniLM-L6-v2 (local)\nStorage: SQLite vector extension or in-memory\nCost: ~/bin/bash.0002 per 100 issues\n\nMuch cheaper than LLM comparisons for large databases.\n\nFiles: internal/embeddings/ (new package)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-28T14:48:29.072913-07:00","updated_at":"2025-11-06T19:36:13.972562-08:00","closed_at":"2025-11-06T19:27:25.234801-08:00","source_repo":"."} {"id":"bd-ce75","content_hash":"025d43c12e9cc08c6d1db0b4a97f7a086a1a9f24f07769d48a7e2666d04ea217","title":"Test parent issue","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-07T16:08:24.952167-08:00","updated_at":"2025-11-07T22:07:17.343848-08:00","closed_at":"2025-11-07T22:07:17.34385-08:00","source_repo":"."} {"id":"bd-chsc","content_hash":"ea167029efad3c506e42dfc20748a6ada0914aa93cb04caa14a48ca223386365","title":"Test lowercase p0","description":"","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-05T12:58:41.457875-08:00","updated_at":"2025-11-05T12:58:44.721486-08:00","closed_at":"2025-11-05T12:58:44.721486-08:00","source_repo":"."} +{"id":"bd-cif2h","content_hash":"e761aecd96a49a0827c637f92591e2b6f6df3e89bb1e33bd327469ceb33b45b3","title":"TestRoutingIntegration failing: maintainer_with_SSH_remote","description":"TestRoutingIntegration/maintainer_with_SSH_remote fails with:\nrouting_integration_test.go:69: expected role maintainer, got contributor\nrouting_integration_test.go:84: expected target repo \".\", got \"~/.beads-planning\"\n\nThis needs investigation as it might indicate a regression in routing logic or test flakiness.","status":"open","priority":0,"issue_type":"bug","created_at":"2025-11-20T12:45:38.773442-05:00","updated_at":"2025-11-20T12:45:38.773442-05:00","source_repo":"."} {"id":"bd-cjxp","content_hash":"2a2c0aa49be01be64c5e0a6bd24ebd7b762846d31a06fd8e9360672fb476b879","title":"Bug P0","description":"","status":"closed","priority":0,"issue_type":"bug","assignee":"alice","created_at":"2025-11-07T19:00:22.536449-08:00","updated_at":"2025-11-07T22:07:17.345535-08:00","closed_at":"2025-11-07T21:55:09.429643-08:00","source_repo":"."} {"id":"bd-ckvw","content_hash":"a4b27c0e21e3ae0a1e8fb9f64913c286164ff6746c657d70bb7cbbdbf2e365c9","title":"Add schema compatibility probe to prevent silent migration failures","description":"Issue #262 revealed a serious bug: migrations may fail silently, causing UNIQUE constraint errors later.\n\nRoot cause:\n- sqlite.New() runs migrations once on open\n- checkVersionMismatch() prints 'database will be upgraded automatically' but only updates metadata\n- If migrations fail or daemon runs older version, queries expecting new columns fail with 'no such column'\n- Import logic misinterprets this as 'not found' and tries INSERT on existing ID\n- Result: UNIQUE constraint failed: issues.id\n\nFix strategy (minimal):\n1. Add schema probe in sqlite.New() after RunMigrations\n - SELECT all expected columns from all tables with LIMIT 0\n - If fails, retry RunMigrations and probe again\n - If still fails, return fatal error with clear message\n2. Fix checkVersionMismatch to not claim 'will upgrade' unless probe passes\n3. Only update bd_version after successful migration probe\n4. Add schema verification before import operations\n5. Map 'no such column' errors to clear actionable message\n\nRelated: #262","design":"Minimal path (now includes daemon gating):\n\n1. Schema probe in sqlite.New()\n - After RunMigrations, verify all expected columns exist\n - SELECT id, title, description, created_at, updated_at, closed_at, content_hash, external_ref, source_repo, compacted_at, compacted_at_commit FROM issues LIMIT 0\n - Also probe: dependencies, labels, events, dirty_issues, export_hashes, snapshots, child_counters\n - If probe fails: retry RunMigrations once, probe again\n - If still fails: return fatal error with missing columns/tables\n\n2. Fix checkVersionMismatch()\n - Don't claim 'will be upgraded automatically' unless probe verified\n - Only update bd_version after successful probe\n\n3. Better error surfacing\n - Wrap storage errors: if 'no such column/table', return ErrSchemaIncompatible\n - Actionable message: 'Database schema is incompatible. Run bd doctor to diagnose.'\n\n4. Add 'bd doctor' command\n - Runs migrations + probe\n - Reports missing columns/tables\n - Suggests fixes (upgrade daemon, run migrations manually, etc.)\n - Exit 1 if incompatible\n\n5. Daemon version gating (REQUIRED - prevents future schema bugs)\n - On RPC connect, client/daemon exchange semver\n - If client.minor \u003e daemon.minor: refuse RPC, print 'Client vX.Y requires daemon upgrade. Run: bd daemons killall'\n - Forces users to restart daemon when bd binary is upgraded\n - Prevents stale daemon serving requests with old schema assumptions\n - Already documented best practice, now enforced\n\nEstimated effort: M-L (3-5h with daemon gating + bd doctor)","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-08T13:23:26.934246-08:00","updated_at":"2025-11-08T13:53:29.219542-08:00","closed_at":"2025-11-08T13:53:29.219542-08:00","source_repo":"."} {"id":"bd-csvy","content_hash":"88e2ed15c2fe9d9622b16daa530907af7069ef69e621c74dc2a2fafa1da4ac8c","title":"Add tests for merge driver auto-config in bd init","description":"Add comprehensive tests for the merge driver auto-configuration functionality in `bd init`.\n\n**Test cases needed:**\n- Auto-install in quiet mode\n- Skip with --skip-merge-driver flag\n- Detect already-installed merge driver\n- Append to existing .gitattributes\n- Interactive prompt behavior (if feasible)\n\n**File:** `cmd/bd/init_test.go`","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T19:27:04.133078-08:00","updated_at":"2025-11-06T18:19:16.233673-08:00","closed_at":"2025-11-06T15:56:36.014814-08:00","source_repo":".","dependencies":[{"issue_id":"bd-csvy","depends_on_id":"bd-32nm","type":"discovered-from","created_at":"2025-11-05T19:27:04.134299-08:00","created_by":"daemon"}]} {"id":"bd-d19a","content_hash":"5ff9ba5e70c3e3eeaff40887421797e30dfb75e56e97fcaaf3f3d32332f22aa2","title":"Fix import failure on missing parent issues","description":"Import process fails atomically when JSONL references deleted parent issues. Implement hybrid solution: topological sorting + parent resurrection to handle deleted parents gracefully while maintaining referential integrity. See docs/import-bug-analysis-bd-3xq.md for full analysis.","status":"closed","priority":0,"issue_type":"epic","created_at":"2025-11-04T12:31:30.994759-08:00","updated_at":"2025-11-05T00:08:42.814239-08:00","closed_at":"2025-11-05T00:08:42.814243-08:00","source_repo":"."} {"id":"bd-d33c","content_hash":"d0820d5dd6ea4ab198e013861d3d7d01da701daa8ab8ec59ad5ef855e6f83b2b","title":"Separate process/lock/PID concerns into process.go","description":"Create internal/daemonrunner/process.go with: acquireDaemonLock, PID file read/write, stopDaemon, isDaemonRunning, getPIDFilePath, socket path helpers, version check.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-01T11:41:14.871122-07:00","updated_at":"2025-11-01T23:43:55.66159-07:00","closed_at":"2025-11-01T23:43:55.66159-07:00","source_repo":"."} -{"id":"bd-d355a07d","content_hash":"e5e88defa034e6758f63ac603963209245ab74f531510366b25ebbf7b4be36b3","title":"Import validation falsely reports data loss on collision resolution","description":"## Problem\n\nPost-import validation reports 'data loss detected!' when import count reduces due to legitimate collision resolution.\n\n## Example\n\n```\nImport complete: 1 created, 8 updated, 142 unchanged, 19 skipped, 1 issues remapped\nPost-import validation failed: import reduced issue count: 165 → 164 (data loss detected!)\n```\n\nThis was actually successful collision resolution (bd-70419816 duplicated → remapped to-70419816), not data loss.\n\n## Impact\n\n- False alarms waste investigation time\n- Undermines confidence in import validation\n- Confuses users/agents about sync health\n\n## Solution\n\nImprove validation to distinguish:\n- Collision-resolution merges (expected count reduction)\n- Actual data loss (unexpected disappearance)\n\nTrack remapped issue count and adjust expected post-import count accordingly.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-10-29T23:15:00.815227-07:00","updated_at":"2025-11-08T01:58:15.283088-08:00","closed_at":"2025-11-08T00:33:04.659308-08:00","source_repo":"."} -{"id":"bd-d3e5","content_hash":"2eaf57cb617922924aadb6b04366a3ef058d386752c65e8471f2704b512ea30a","title":"Test issue 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-02T09:44:17.116768539Z","updated_at":"2025-11-08T03:09:48.249933-08:00","closed_at":"2025-11-08T03:09:48.249936-08:00","source_repo":"."} +{"id":"bd-d355a07d","content_hash":"e5e88defa034e6758f63ac603963209245ab74f531510366b25ebbf7b4be36b3","title":"Import validation falsely reports data loss on collision resolution","description":"## Problem\n\nPost-import validation reports 'data loss detected!' when import count reduces due to legitimate collision resolution.\n\n## Example\n\n```\nImport complete: 1 created, 8 updated, 142 unchanged, 19 skipped, 1 issues remapped\nPost-import validation failed: import reduced issue count: 165 → 164 (data loss detected!)\n```\n\nThis was actually successful collision resolution (bd-70419816 duplicated → remapped to-70419816), not data loss.\n\n## Impact\n\n- False alarms waste investigation time\n- Undermines confidence in import validation\n- Confuses users/agents about sync health\n\n## Solution\n\nImprove validation to distinguish:\n- Collision-resolution merges (expected count reduction)\n- Actual data loss (unexpected disappearance)\n\nTrack remapped issue count and adjust expected post-import count accordingly.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-10-29T23:15:00.815227-07:00","updated_at":"2025-11-08T01:49:23.462086-08:00","closed_at":"2025-11-08T00:33:04.659308-08:00","source_repo":"."} +{"id":"bd-d3e5","content_hash":"2eaf57cb617922924aadb6b04366a3ef058d386752c65e8471f2704b512ea30a","title":"Test issue 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-02T09:44:17.116768539Z","updated_at":"2025-11-07T22:07:17.342522-08:00","closed_at":"2025-11-07T22:07:17.342528-08:00","source_repo":"."} {"id":"bd-d3f0","content_hash":"d759327f1a1e4817d3e8ec212fd6af2607d0bb5e654201a6fc3640ad0a3b18fd","title":"Add 'bd comment' as alias for 'bd comments add'","description":"The command 'bd comments add' is verbose and unintuitive. Add 'bd comment' as a shorter alias that works the same way.\n\n## Rationale\n- More natural: 'bd comment \u003cissue-id\u003e \u003ctext\u003e' reads better than 'bd comments add \u003cissue-id\u003e \u003ctext\u003e'\n- Matches user expectations: users naturally try 'bd comment' first\n- Follows convention: other commands like 'bd create', 'bd show', 'bd close' are verbs\n\n## Implementation\nCould be implemented as:\n1. A new command that wraps bd comments add\n2. An alias registered in cobra\n3. Keep 'bd comments add' for backwards compatibility\n\n## Examples\n```bash\nbd comment bd-1234 'This is a comment'\nbd comment bd-1234 'Multi-line comment' --body 'Additional details here'\n```","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-02T17:13:18.82563-08:00","updated_at":"2025-11-03T22:20:30.223939-08:00","closed_at":"2025-11-03T22:20:30.223939-08:00","source_repo":"."} {"id":"bd-d4ec5a82","content_hash":"e0f9aa493571fdb0b5fd578993165042ad224bb2c00186564337732e6221d529","title":"Add MCP functions for repair commands","description":"Add repair commands to beads-mcp for agent access:\n- beads_resolve_conflicts()\n- beads_find_duplicates()\n- beads_detect_pollution()\n- beads_validate()\n\nFiles: integrations/beads-mcp/src/beads_mcp/server.py","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-28T14:48:29.071495-07:00","updated_at":"2025-11-06T19:36:13.972786-08:00","closed_at":"2025-11-06T19:27:19.170894-08:00","source_repo":"."} {"id":"bd-d4i","content_hash":"41cafb4bfa5377a84005b08cddd3e703c1317e98ef32b050ddaabf1bdc7718c9","title":"Create tip system infrastructure for contextual hints","description":"Implement a tip/hint system that shows helpful contextual messages after successful commands. This is different from the existing error-path \"Hint:\" messages - tips appear on success paths to educate users about features they might not know about.","design":"## Implementation\n\nCreate `cmd/bd/tips.go` with:\n\n### Core Infrastructure\n```go\ntype Tip struct {\n ID string\n Condition func() bool // Should this tip be eligible?\n Message string\n Frequency time.Duration // Minimum gap between showings\n Priority int // Higher = shown first when eligible\n Probability float64 // 0.0 to 1.0 - chance of showing\n}\n\nfunc maybeShowTip(store storage.Storage) {\n if jsonOutput || quietMode {\n return // Respect output flags\n }\n \n tip := selectNextTip(store)\n if tip != nil {\n fmt.Fprintf(os.Stdout, \"\\n💡 Tip: %s\\n\", tip.Message)\n recordTipShown(store, tip.ID)\n }\n}\n\nfunc selectNextTip(store storage.Storage) *Tip {\n now := time.Now()\n var eligibleTips []Tip\n \n // Filter to eligible tips (condition + frequency check)\n for _, tip := range tips {\n if !tip.Condition() {\n continue\n }\n \n lastShown := getLastShown(store, tip.ID)\n if !lastShown.IsZero() \u0026\u0026 now.Sub(lastShown) \u003c tip.Frequency {\n continue\n }\n \n eligibleTips = append(eligibleTips, tip)\n }\n \n if len(eligibleTips) == 0 {\n return nil\n }\n \n // Sort by priority (highest first)\n sort.Slice(eligibleTips, func(i, j int) bool {\n return eligibleTips[i].Priority \u003e eligibleTips[j].Priority\n })\n \n // Apply probability roll (in priority order)\n for _, tip := range eligibleTips {\n if rand.Float64() \u003c tip.Probability {\n return \u0026tip\n }\n }\n \n return nil // No tips won probability roll\n}\n```\n\n### Probability Examples\n\n```go\n// High priority, high probability = shows often\n{Priority: 90, Probability: 0.8} // 80% chance when eligible\n\n// High priority, medium probability = important but not spammy\n{Priority: 100, Probability: 0.6} // 60% chance\n\n// Low priority, low probability = rare suggestion\n{Priority: 30, Probability: 0.3} // 30% chance\n```\n\n### Metadata Storage\nUse existing metadata table to track:\n- `tip_{id}_last_shown` - Timestamp of last display (RFC3339 format)\n- `tip_{id}_dismissed` - User permanently dismissed (future feature)\n\n### Integration Points\nCall `maybeShowTip()` at end of:\n- `bd list` - After showing issues\n- `bd ready` - After showing ready work\n- `bd create` - After creating issue\n- `bd show` - After showing issue details\n\n## Design Decisions\n- Tips shown on stdout (informational, not errors)\n- Respects `--json` and `--quiet` flags\n- Frequency enforces minimum gap between showings\n- Priority determines evaluation order\n- Probability reduces spam (not every eligible tip shows)\n- Store state in metadata table (no new files)\n- Deterministic seed for testing (optional BEADS_TIP_SEED env var)","acceptance_criteria":"- Tip infrastructure exists in cmd/bd/tips.go\n- Tips respect --json and --quiet flags\n- Frequency tracking works (no spam)\n- Metadata table stores tip state\n- Unit tests for tip selection logic\n- Documentation in code comments","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-11T23:29:15.693956-08:00","updated_at":"2025-11-11T23:49:50.812933-08:00","source_repo":"."} {"id":"bd-d68f","content_hash":"1c806ae9c39bb28faaa8730350ce6b20bc25821e33583f537db1567b183bce6d","title":"Add tests for Comments API (AddIssueComment, GetIssueComments)","description":"Comments API currently has 0% coverage. Need tests for:\n- AddIssueComment - adding comments to issues\n- GetIssueComments - retrieving comments\n- Comment ordering and pagination\n- Edge cases (non-existent issues, empty comments)","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-01T22:40:58.980688-07:00","updated_at":"2025-11-01T22:53:42.124391-07:00","closed_at":"2025-11-01T22:53:42.124391-07:00","source_repo":"."} -{"id":"bd-d6aq","content_hash":"c513a7dc97f078c4785f828ec1f35a8f268265d8722c31603d169c9e80c9257b","title":"Test reservation expiration and renewal","description":"Verify TTL-based reservation expiration works correctly.\n\nAcceptance Criteria:\n- Reserve with short TTL (30s)\n- Verify other agents can't claim\n- Wait for expiration\n- Verify reservation auto-released\n- Other agent can now claim\n- Test renewal/heartbeat mechanism\n\nFile: tests/integration/test_reservation_ttl.py","notes":"Implemented comprehensive TTL/expiration test suite in tests/integration/test_reservation_ttl.py\n\nTest Coverage:\n✅ Short TTL reservations (30s) - verifies TTL is properly set\n✅ Reservation blocking - confirms agent2 cannot claim while agent1 holds reservation\n✅ Auto-release after expiration - validates expired reservations are auto-cleaned and become available\n✅ Renewal/heartbeat - tests that re-reserving extends expiration time\n\nAll 4 tests passing in 56.9s total (including 30s+ wait time for expiration tests).\n\nMock server implements full TTL management:\n- Reservation class with expiration tracking\n- Auto-cleanup of expired reservations on each request\n- Renewal support (same agent re-reserving)\n- 409 conflict for cross-agent reservation attempts","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-07T22:43:21.547821-08:00","updated_at":"2025-11-08T02:24:30.296982-08:00","closed_at":"2025-11-08T02:24:30.296982-08:00","source_repo":".","dependencies":[{"issue_id":"bd-d6aq","depends_on_id":"bd-m9th","type":"blocks","created_at":"2025-11-07T22:43:21.548731-08:00","created_by":"daemon"}]} +{"id":"bd-d6aq","content_hash":"45a169a72749bb3bc93190bb3e5891950409f264baeac4394cd1a3ad5a75c0f2","title":"Test reservation expiration and renewal","description":"Verify TTL-based reservation expiration works correctly.\n\nAcceptance Criteria:\n- Reserve with short TTL (30s)\n- Verify other agents can't claim\n- Wait for expiration\n- Verify reservation auto-released\n- Other agent can now claim\n- Test renewal/heartbeat mechanism\n\nFile: tests/integration/test_reservation_ttl.py","notes":"Implemented comprehensive TTL/expiration test suite in tests/integration/test_reservation_ttl.py\n\nTest Coverage:\n✅ Short TTL reservations (30s) - verifies TTL is properly set\n✅ Reservation blocking - confirms agent2 cannot claim while agent1 holds reservation\n✅ Auto-release after expiration - validates expired reservations are auto-cleaned and become available\n✅ Renewal/heartbeat - tests that re-reserving extends expiration time\n\nAll 4 tests passing in 56.9s total (including 30s+ wait time for expiration tests).\n\nMock server implements full TTL management:\n- Reservation class with expiration tracking\n- Auto-cleanup of expired reservations on each request\n- Renewal support (same agent re-reserving)\n- 409 conflict for cross-agent reservation attempts","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-07T22:43:21.547821-08:00","updated_at":"2025-11-08T03:54:04.855132-08:00","closed_at":"2025-11-08T02:24:30.296982-08:00","source_repo":".","dependencies":[{"issue_id":"bd-d6aq","depends_on_id":"bd-m9th","type":"blocks","created_at":"2025-11-07T22:43:21.548731-08:00","created_by":"daemon"}]} {"id":"bd-d76d","content_hash":"b65da5fe9f89a98f1e6fad6ee32d463126ef72785fec4d6dfa5a4774c6a8a393","title":"Modify EnsureIDs to support parent resurrection","description":"Update internal/storage/sqlite/ids.go:189-202 to call TryResurrectParent before failing on missing parent. Add resurrection mode flag, log resurrected parents for transparency. Maintain backwards compatibility with strict validation mode.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-04T12:31:59.659507-08:00","updated_at":"2025-11-05T00:08:42.814463-08:00","closed_at":"2025-11-05T00:08:42.814466-08:00","source_repo":"."} -{"id":"bd-d7e88238","content_hash":"ff14f04a04bf89f52bda3d584933df6b09b554cce8665f47f429f1ac52dafb94","title":"Rapid 3","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-29T19:11:57.459655-07:00","updated_at":"2025-11-07T23:21:44.925275-08:00","closed_at":"2025-11-07T23:18:52.333825-08:00","source_repo":"."} +{"id":"bd-d7e88238","content_hash":"ff14f04a04bf89f52bda3d584933df6b09b554cce8665f47f429f1ac52dafb94","title":"Rapid 3","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-29T19:11:57.459655-07:00","updated_at":"2025-11-08T01:49:23.462353-08:00","closed_at":"2025-11-07T23:18:52.333825-08:00","source_repo":"."} {"id":"bd-d84j","content_hash":"72866210b9be677fae063d331cfffcdfe6a1243fd069c80b72c34b719aba7361","title":"Fix PR #319: Performance Improvements - CI failures and lint errors","description":"PR #319 (Performance Improvements) has excellent performance optimizations but is blocked by CI failures.\n\n## The PR\n- URL: https://github.com/steveyegge/beads/pull/319\n- Author: @rsnodgrass (Ryan)\n- Claimed improvements: bd ready 20.5x faster (752ms → 36.6ms), startup 10.5x faster\n\n## CI Failures\n\n### Lint Errors (8 total)\n1. cmd/bd/deletion_tracking.go:57 - unchecked os.Remove\n2. cmd/bd/import.go:548 - unchecked os.RemoveAll\n3. cmd/bd/message.go:205 - unchecked resp.Body.Close\n4. cmd/bd/migrate_issues.go:633 - unchecked fmt.Scanln\n5. cmd/bd/migrate_issues.go:701 - unchecked MarkFlagRequired\n6. cmd/bd/migrate_issues.go:702 - unchecked MarkFlagRequired\n7. cmd/bd/show.go:610 - gosec G104 unhandled error\n8. cmd/bd/show.go:614 - gosec G104 unhandled error\n\n### Test Failures\nAll syncbranch_test.go tests failing with:\n\"migration external_ref_column failed: failed to create index on external_ref: sqlite3: SQL logic error: no such table: main.issues\"\n\nThis suggests the PR branch needs rebasing on current main.\n\n## Required Work\n\n### 1. Fix Lint Errors\nAdd proper error handling for all 8 flagged locations. Most can use _ = or log warnings.\n\n### 2. Rebase on Current Main\nThe migration test failures indicate the branch is out of sync. Need to:\n- git fetch upstream\n- git rebase upstream/main\n- Resolve any conflicts\n- Verify tests pass locally\n\n### 3. Verify CI Passes\n- All lint checks green\n- All tests pass (Linux, Windows, Nix)\n\n## Optional Improvements\n- Consider splitting into smaller PRs (core index, WASM cache, testing infra)\n- Add documentation for benchmark usage\n- Extract helper functions in doctor/perf.go for better testability\n\n## Value\nThis PR delivers real performance improvements. The index optimization alone is worth merging quickly once CI is fixed.","design":"Workflow:\n1. Checkout PR branch locally\n2. Rebase on current main\n3. Fix all 8 lint errors\n4. Run full test suite locally\n5. Push updated branch\n6. Verify CI passes\n7. Request re-review from maintainers","acceptance_criteria":"- All lint errors fixed\n- All tests passing on all platforms\n- PR rebased on current main\n- CI checks all green","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-15T12:24:34.50322-08:00","updated_at":"2025-11-15T12:43:11.49933-08:00","closed_at":"2025-11-15T12:43:11.49933-08:00","source_repo":"."} {"id":"bd-d9e0","content_hash":"de4e01414f8863b63cb693a709048b85c3f4417f03e7d7b2528560076be0e1f7","title":"Extract validation functions to validators.go","description":"Move validatePriority, validateStatus, validateIssueType, validateTitle, validateEstimatedMinutes, validateFieldUpdate to validators.go","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-01T19:28:54.915909-07:00","updated_at":"2025-11-02T12:32:00.159298-08:00","closed_at":"2025-11-02T12:32:00.1593-08:00","source_repo":"."} {"id":"bd-dcd6f14b","content_hash":"c07a4b8a39e6e81513278ee335fe14aa767cbcba72e3b511cfd95705053483b1","title":"Batch test 4","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T15:29:02.053523-07:00","updated_at":"2025-10-31T12:00:43.182861-07:00","closed_at":"2025-10-31T12:00:43.182861-07:00","source_repo":"."} -{"id":"bd-dd6f6d26","content_hash":"dbcecb8b95f9f2939d97c61bd8cbe331bea866f47600bded213d3122e311c356","title":"Fix autoimport tests for content-hash collision scoring","description":"## Overview\nThree autoimport tests are failing after bd-cbed9619.4 because they expect behavior based on the old reference-counting collision resolution, but the system now uses deterministic content-hash scoring.\n\n## Failing Tests\n1. `TestAutoImportMultipleCollisionsRemapped` - expects local versions preserved\n2. `TestAutoImportAllCollisionsRemapped` - expects local versions preserved \n3. `TestAutoImportCollisionRemapMultipleFields` - expects specific collision resolution behavior\n\n## Root Cause\nThese tests were written when ScoreCollisions used reference counting to determine which version to keep. Now it uses content-hash comparison (introduced in commit 2e87329), which produces different but deterministic results.\n\n## Example\nOld behavior: Issue with more references would be kept\nNew behavior: Issue with lexicographically lower content hash is kept\n\n## Solution\nUpdate each test to:\n1. Verify the new content-hash based behavior is correct\n2. Check that the remapped issue (not necessarily local/remote) has the expected content\n3. Ensure dependencies are preserved on the correct remapped issue\n\n## Acceptance Criteria\n- All three autoimport tests pass\n- Tests verify content-hash determinism (same collision always resolves the same way)\n- Tests check dependency preservation on remapped issues\n- Test documentation explains content-hash scoring expectations\n\n## Files to Modify\n- `cmd/bd/autoimport_collision_test.go`\n\n## Testing\nRun: `go test ./cmd/bd -run \"TestAutoImport.*Collision\" -v`","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-08T03:09:48.253086-08:00","updated_at":"2025-11-20T18:54:56.495023-05:00","closed_at":"2025-11-20T18:54:56.495026-05:00","source_repo":".","dependencies":[{"issue_id":"bd-dd6f6d26","depends_on_id":"bd-cbed9619.4","type":"discovered-from","created_at":"2025-10-28T19:12:56.345276-07:00","created_by":"daemon"}]} -{"id":"bd-de0h","content_hash":"9863fbd0ac36821d74a063289f71c2c5c27689ae7970d4283b0ae96804aeb4a2","title":"bd message: Add HTTP client timeout to prevent hangs","description":"HTTP client in `sendAgentMailRequest` uses default http.Post with no timeout.\n\n**Location:** cmd/bd/message.go:181\n\n**Problem:**\n- Can hang indefinitely if server is unresponsive\n- No way to cancel stuck requests\n- Poor UX in flaky networks\n\n**Fix:**\n```go\nclient := \u0026http.Client{Timeout: 30 * time.Second}\nresp, err := client.Post(url, \"application/json\", bytes.NewReader(reqBody))\n```\n\n**Impact:** Production reliability and security issue","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-08T12:54:24.942645-08:00","updated_at":"2025-11-08T12:56:59.948929-08:00","closed_at":"2025-11-08T12:56:59.948929-08:00","source_repo":".","dependencies":[{"issue_id":"bd-de0h","depends_on_id":"bd-6uix","type":"parent-child","created_at":"2025-11-08T12:55:54.860847-08:00","created_by":"daemon"}]} -{"id":"bd-df11","content_hash":"9d688c3fe5f4994ab29ed22c8c4ae467f2069c4cbb676a2168303b2ffcba48c4","title":"Add import metrics for external_ref matching statistics","description":"Add observability for external_ref matching behavior during imports to help debug and optimize import operations.\n\nMetrics to track:\n- Number of issues matched by external_ref\n- Number of issues matched by ID\n- Number of issues matched by content hash\n- Number of external_ref updates vs creates\n- Average import time with vs without external_ref\n\nOutput format:\n- Add to ImportResult struct\n- Include in import command output\n- Consider structured logging\n\nUse cases:\n- Debugging slow imports\n- Understanding match distribution\n- Optimizing import performance\n\nRelated: bd-1022","status":"closed","priority":4,"issue_type":"chore","created_at":"2025-11-02T15:32:46.157899-08:00","updated_at":"2025-11-08T02:24:24.686136-08:00","closed_at":"2025-11-08T02:20:01.01371-08:00","source_repo":"."} +{"id":"bd-dd6f6d26","content_hash":"dbcecb8b95f9f2939d97c61bd8cbe331bea866f47600bded213d3122e311c356","title":"Fix autoimport tests for content-hash collision scoring","description":"## Overview\nThree autoimport tests are failing after bd-cbed9619.4 because they expect behavior based on the old reference-counting collision resolution, but the system now uses deterministic content-hash scoring.\n\n## Failing Tests\n1. `TestAutoImportMultipleCollisionsRemapped` - expects local versions preserved\n2. `TestAutoImportAllCollisionsRemapped` - expects local versions preserved \n3. `TestAutoImportCollisionRemapMultipleFields` - expects specific collision resolution behavior\n\n## Root Cause\nThese tests were written when ScoreCollisions used reference counting to determine which version to keep. Now it uses content-hash comparison (introduced in commit 2e87329), which produces different but deterministic results.\n\n## Example\nOld behavior: Issue with more references would be kept\nNew behavior: Issue with lexicographically lower content hash is kept\n\n## Solution\nUpdate each test to:\n1. Verify the new content-hash based behavior is correct\n2. Check that the remapped issue (not necessarily local/remote) has the expected content\n3. Ensure dependencies are preserved on the correct remapped issue\n\n## Acceptance Criteria\n- All three autoimport tests pass\n- Tests verify content-hash determinism (same collision always resolves the same way)\n- Tests check dependency preservation on remapped issues\n- Test documentation explains content-hash scoring expectations\n\n## Files to Modify\n- `cmd/bd/autoimport_collision_test.go`\n\n## Testing\nRun: `go test ./cmd/bd -run \"TestAutoImport.*Collision\" -v`","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-20T12:17:55.846346-05:00","updated_at":"2025-11-20T12:17:55.846346-05:00","closed_at":"2025-11-08T22:42:08.862831-08:00","source_repo":".","dependencies":[{"issue_id":"bd-dd6f6d26","depends_on_id":"bd-cbed9619.4","type":"discovered-from","created_at":"2025-10-28T19:12:56.345276-07:00","created_by":"daemon"}]} +{"id":"bd-de0h","content_hash":"8b8b43683607e73012cf8bd7cf8631c6ae34498d0c93ca5b77d3f68944c8088d","title":"bd message: Add HTTP client timeout to prevent hangs","description":"HTTP client in `sendAgentMailRequest` uses default http.Post with no timeout.\n\n**Location:** cmd/bd/message.go:181\n\n**Problem:**\n- Can hang indefinitely if server is unresponsive\n- No way to cancel stuck requests\n- Poor UX in flaky networks\n\n**Fix:**\n```go\nclient := \u0026http.Client{Timeout: 30 * time.Second}\nresp, err := client.Post(url, \"application/json\", bytes.NewReader(reqBody))\n```\n\n**Impact:** Production reliability and security issue","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-08T12:54:24.942645-08:00","updated_at":"2025-11-08T12:56:59.948929-08:00","closed_at":"2025-11-08T12:56:59.948929-08:00","source_repo":".","dependencies":[{"issue_id":"bd-de0h","depends_on_id":"bd-6uix","type":"parent-child","created_at":"2025-11-08T12:55:54.860847-08:00","created_by":"daemon"}]} +{"id":"bd-df11","content_hash":"9d688c3fe5f4994ab29ed22c8c4ae467f2069c4cbb676a2168303b2ffcba48c4","title":"Add import metrics for external_ref matching statistics","description":"Add observability for external_ref matching behavior during imports to help debug and optimize import operations.\n\nMetrics to track:\n- Number of issues matched by external_ref\n- Number of issues matched by ID\n- Number of issues matched by content hash\n- Number of external_ref updates vs creates\n- Average import time with vs without external_ref\n\nOutput format:\n- Add to ImportResult struct\n- Include in import command output\n- Consider structured logging\n\nUse cases:\n- Debugging slow imports\n- Understanding match distribution\n- Optimizing import performance\n\nRelated: bd-1022","status":"closed","priority":4,"issue_type":"chore","created_at":"2025-11-02T15:32:46.157899-08:00","updated_at":"2025-11-08T03:54:04.856564-08:00","closed_at":"2025-11-08T02:20:01.01371-08:00","source_repo":"."} {"id":"bd-df190564","content_hash":"4966d22faf43b7de1b27315f85365d7ed896741e4e589ed01ee16f4c2f600a24","title":"bd repair-deps - Orphaned dependency cleaner","description":"Find and fix orphaned dependency references.\n\nImplementation:\n- Scan all issues for dependencies pointing to non-existent issues\n- Report orphaned refs\n- Auto-fix with --fix flag\n- Interactive mode with --interactive\n\nFiles: cmd/bd/repair_deps.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T19:42:29.852745-07:00","updated_at":"2025-10-31T18:24:19.418221-07:00","closed_at":"2025-10-31T18:24:19.418221-07:00","source_repo":"."} -{"id":"bd-dxdn","content_hash":"1ad5838334d77403d884787d2b5c99b88c6fa28fb08a16014246c8db0f9f4020","title":"bd ready taking 5 seconds with 132 issues (89 closed)","description":"User reports bd ready is annoyingly slow on M2 Mac - 5 seconds for 132 issues (89 closed). Started noticing after hash-based IDs update. Need to investigate performance regression. Reported in GH #243.","notes":"Root cause identified: Not a query performance issue, but stale daemon locks causing 5s timeout delays.\n\nFixed in bd-ndyz (closed) via 5 sub-issues:\n- bd-expt: Fast-fail socket checks (200ms timeout)\n- bd-wgu4: Lock probe before RPC attempts\n- bd-1mzt: Self-heal stale artifacts\n- bd-vcg5: Panic recovery + socket cleanup\n- bd-j7e2: RPC diagnostics (BD_RPC_DEBUG)\n\nAll fixes merged. Ready for v0.22.2 release.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-07T00:26:30.359512-08:00","updated_at":"2025-11-08T13:17:08.766029-08:00","closed_at":"2025-11-08T02:35:47.956638-08:00","source_repo":"."} +{"id":"bd-dxdn","content_hash":"1ad5838334d77403d884787d2b5c99b88c6fa28fb08a16014246c8db0f9f4020","title":"bd ready taking 5 seconds with 132 issues (89 closed)","description":"User reports bd ready is annoyingly slow on M2 Mac - 5 seconds for 132 issues (89 closed). Started noticing after hash-based IDs update. Need to investigate performance regression. Reported in GH #243.","notes":"Root cause identified: Not a query performance issue, but stale daemon locks causing 5s timeout delays.\n\nFixed in bd-ndyz (closed) via 5 sub-issues:\n- bd-expt: Fast-fail socket checks (200ms timeout)\n- bd-wgu4: Lock probe before RPC attempts\n- bd-1mzt: Self-heal stale artifacts\n- bd-vcg5: Panic recovery + socket cleanup\n- bd-j7e2: RPC diagnostics (BD_RPC_DEBUG)\n\nAll fixes merged. Ready for v0.22.2 release.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-07T00:26:30.359512-08:00","updated_at":"2025-11-08T02:35:47.956638-08:00","closed_at":"2025-11-08T02:35:47.956638-08:00","source_repo":"."} {"id":"bd-e044","content_hash":"8393c18d7f6edfed3d3e360a32a3075a9e0d9caa6f02d704774482aa1d9b0a7f","title":"Add mermaid output format for bd dep tree","description":"Add visual dependency graph output using Mermaid format for better visualization of issue relationships.\n\nExample usage:\n bd dep tree --format mermaid \u003cissue-id\u003e\n bd dep tree --format mermaid bd-42 \u003e graph.md\n\nThis would output Mermaid syntax that can be rendered in GitHub, documentation sites, or Mermaid live editor.\n\nImplementation notes:\n- Add --format flag to dep tree command\n- Support 'text' (default) and 'mermaid' formats\n- Mermaid graph should show issue IDs, titles, and dependency types\n- Consider using flowchart LR or graph TD syntax","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-03T18:10:18.978383-08:00","updated_at":"2025-11-03T20:55:06.696363-08:00","closed_at":"2025-11-03T20:55:06.69637-08:00","source_repo":"."} {"id":"bd-e05d","content_hash":"c2f4d60f5bd679d9bf609c35efc9c15e8dd52130fb9b68eacfe47bdda910ecd7","title":"Investigate and optimize test suite performance","description":"Test suite is taking very long to run (\u003e45s for cmd/bd tests, full suite timing unknown but was cancelled).\n\nThis impacts development velocity and CI/CD performance.\n\nInvestigation needed:\n- Profile which tests are slowest\n- Identify bottlenecks (disk I/O, network, excessive setup/teardown?)\n- Consider parallelization opportunities\n- Look for redundant test cases\n- Check if integration tests can be optimized","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-02T15:37:44.529955-08:00","updated_at":"2025-11-02T16:35:38.093133-08:00","closed_at":"2025-11-02T16:35:38.093137-08:00","source_repo":"."} {"id":"bd-e1085716","content_hash":"6b1f867ab07cbed86eae8ab342995691aac5b2bfe8fa6cdb869209e81f157d4e","title":"bd validate - Comprehensive health check","description":"Run all validation checks in one command.\n\nChecks:\n- Duplicates\n- Orphaned dependencies\n- Test pollution\n- Git conflicts\n\nSupports --fix-all for auto-repair.\n\nDepends on bd-cbed9619.1, bd-0dcea000, bd-31aab707, bd-9826b69a.\n\nFiles: cmd/bd/validate.go (new)","status":"open","priority":1,"issue_type":"task","created_at":"2025-10-29T23:05:13.980679-07:00","updated_at":"2025-10-30T17:12:58.19736-07:00","source_repo":"."} {"id":"bd-e166","content_hash":"000f4f9d069ffedceae13894d967ec30fa4a89e318bfcac4847f3c3b16d44a89","title":"Improve timestamp comparison readability in import","description":"The timestamp comparison logic uses double-negative which can be confusing:\n\nCurrent code:\nif !incoming.UpdatedAt.After(existing.UpdatedAt) {\n // skip update\n}\n\nMore readable:\nif incoming.UpdatedAt.After(existing.UpdatedAt) {\n // perform update\n} else {\n // skip (local is newer)\n}\n\nThis is a minor refactor for code clarity.\n\nRelated: bd-1022\nFiles: internal/importer/importer.go:411, 488","status":"open","priority":4,"issue_type":"chore","created_at":"2025-11-02T15:32:12.27108-08:00","updated_at":"2025-11-02T15:32:12.27108-08:00","source_repo":"."} {"id":"bd-e16b","content_hash":"969a580f09de305f494c160c21ad58b43e348320023eb990ecb8cf5395cccb6e","title":"Replace BEADS_DB with BEADS_DIR environment variable","description":"Implement BEADS_DIR as a replacement for BEADS_DB to point to the .beads directory instead of the database file directly.\n\nRationale:\n- With --no-db mode, there's no .db file to point to\n- The .beads directory is the logical unit (contains config.yaml, db files, jsonl files)\n- More intuitive: point to the beads directory not the database file\n\nImplementation:\n1. Add BEADS_DIR environment variable support\n2. Maintain backward compatibility with BEADS_DB\n3. Priority order: BEADS_DIR \u003e BEADS_DB \u003e auto-discovery\n4. If BEADS_DIR is set, look for config.yaml in that directory to find actual database path\n5. Update documentation and migration guide\n\nFiles to modify:\n- beads.go (FindDatabasePath function)\n- cmd/bd/main.go (initialization)\n- Documentation (CLI_REFERENCE.md, TROUBLESHOOTING.md, etc.)\n- MCP integration (integrations/beads-mcp/src/beads_mcp/config.py)\n\nTesting:\n- Ensure BEADS_DB still works (backward compatibility)\n- Test BEADS_DIR with both db and --no-db modes\n- Test priority order when both are set\n- Update integration tests\n\nRelated to GitHub issue #179","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-02T18:19:26.131948-08:00","updated_at":"2025-11-02T18:27:14.545162-08:00","closed_at":"2025-11-02T18:27:14.545162-08:00","source_repo":"."} -{"id":"bd-e1d645e8","content_hash":"2f5bc6f9e3cd91a8b5c9d8de92fa5342eb3d9d7a12371d316e54599348b504e4","title":"Rapid 4","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-29T19:11:57.484329-07:00","updated_at":"2025-11-07T23:21:44.925546-08:00","closed_at":"2025-11-07T23:18:52.316948-08:00","source_repo":"."} +{"id":"bd-e1d645e8","content_hash":"2f5bc6f9e3cd91a8b5c9d8de92fa5342eb3d9d7a12371d316e54599348b504e4","title":"Rapid 4","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-29T19:11:57.484329-07:00","updated_at":"2025-11-08T01:49:23.462615-08:00","closed_at":"2025-11-07T23:18:52.316948-08:00","source_repo":"."} {"id":"bd-e2e6","content_hash":"2f1cf4362e6a12a0e599efd7f13267a7a81a499f56e89a5e0bfe5efc67f213c0","title":"Implement postinstall script for binary download","description":"Create npm/scripts/postinstall.js that downloads platform-specific binaries:\n\n## Platform detection\n- Detect os.platform() and os.arch()\n- Map to GitHub release asset names:\n - linux-amd64 → bd-linux-amd64\n - linux-arm64 → bd-linux-arm64\n - darwin-amd64 → bd-darwin-amd64\n - darwin-arm64 → bd-darwin-arm64\n - win32-x64 → bd-windows-amd64.exe\n\n## Download logic\n- Fetch from GitHub releases: https://github.com/steveyegge/beads/releases/latest/download/${asset}\n- Save to npm/bin/bd (or bd.exe on Windows)\n- Set executable permissions (chmod +x)\n- Handle errors gracefully with helpful messages\n\n## Error handling\n- Check for unsupported platforms\n- Retry on network failures\n- Provide manual download instructions if automated fails\n- Skip download if binary already exists (for local development)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T23:39:56.652829-08:00","updated_at":"2025-11-03T10:31:45.382215-08:00","closed_at":"2025-11-03T10:31:45.382215-08:00","source_repo":".","dependencies":[{"issue_id":"bd-e2e6","depends_on_id":"bd-febc","type":"parent-child","created_at":"2025-11-02T23:40:32.94671-08:00","created_by":"daemon"}]} {"id":"bd-e55c","content_hash":"3cbbade2b125be0445a7654259edb8985dd82ee272f0a44366aa3f0564363eec","title":"Import overwrites newer local issues with older remote versions","description":"## Problem\n\nDuring git pull + import, local issues with newer updated_at timestamps get overwritten by older versions from remote JSONL.\n\n## What Happened\n\nTimeline:\n1. 17:52 - Closed bd-df190564 and bd-b501fcc1 locally (updated_at: 2025-10-31)\n2. 17:51 - Remote pushed same issues with status=open (updated_at: 2025-10-30)\n3. 17:52 - Local sync pulled remote commit and imported JSONL\n4. Result: Issues reverted to open despite local version being newer\n\n## Root Cause\n\nDetectCollisions (internal/storage/sqlite/collision.go:67-79) compares fields but doesn't check timestamps:\n\n```go\nconflictingFields := compareIssues(existing, incoming)\nif len(conflictingFields) == 0 {\n result.ExactMatches = append(result.ExactMatches, incoming.ID)\n} else {\n // Same ID, different content - treats as UPDATE\n result.Collisions = append(result.Collisions, \u0026CollisionDetail{...})\n}\n```\n\nImport applies incoming version regardless of which is newer.\n\n## Expected Behavior\n\nImport should:\n1. Compare updated_at timestamps when collision detected\n2. Skip update if local version is newer\n3. Apply update only if remote version is newer\n4. Warn on timestamp conflicts\n\n## Solution\n\nAdd timestamp checking to DetectCollisions or importIssues:\n\n```go\nif len(conflictingFields) \u003e 0 {\n // Check timestamps\n if !incoming.UpdatedAt.After(existing.UpdatedAt) {\n // Local is newer or same - skip update\n result.ExactMatches = append(result.ExactMatches, incoming.ID)\n continue\n }\n // Remote is newer - apply update\n result.Collisions = append(result.Collisions, \u0026CollisionDetail{...})\n}\n```\n\n## Files\n- internal/storage/sqlite/collision.go\n- internal/importer/importer.go\n\n## References\n- Discovered during bd-df190564, bd-b501fcc1 re-opening","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-31T17:56:43.919306-07:00","updated_at":"2025-10-31T18:05:55.521427-07:00","closed_at":"2025-10-31T18:05:55.521427-07:00","source_repo":"."} {"id":"bd-e652","content_hash":"6b95b33d0961d545d24063112c77f58dd09e7a6352c94525e2d3b3ed88b53b3e","title":"bd doctor doesn't detect version mismatches or stale daemons","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-10-31T21:07:56.957214-07:00","updated_at":"2025-11-01T17:05:36.615761-07:00","closed_at":"2025-11-01T17:05:36.615761-07:00","source_repo":".","dependencies":[{"issue_id":"bd-e652","depends_on_id":"bd-2752a7a2","type":"discovered-from","created_at":"2025-10-31T21:07:56.958708-07:00","created_by":"stevey"}]} @@ -378,11 +2839,11 @@ {"id":"bd-eef03e0a","content_hash":"a7dd31781359f078a172d6d34ceed26be83a3bc8159c05c2026c96717e98a314","title":"Stress test: event storm handling","description":"Simulate 100+ rapid JSONL writes. Verify debouncer batches to single import. Verify no data loss. Test daemon stability.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T20:49:49.138725-07:00","updated_at":"2025-10-31T19:18:50.682925-07:00","closed_at":"2025-10-31T19:18:50.682925-07:00","source_repo":"."} {"id":"bd-ef72b864","content_hash":"81f5c4fcc229c3ba653d29fc71c9ae3be75ed672296e3e790a88498ee2df3a64","title":"Add MCP server functions for repair commands","description":"Expose new repair commands via MCP server for agent access:\n\nFunctions to add:\n- beads_repair_deps()\n- beads_detect_pollution()\n- beads_validate()\n- beads_resolve_conflicts() (when implemented)\n\nUpdate integrations/beads-mcp/src/beads_mcp/server.py\n\nSee repair_commands.md lines 803-884 for design.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-28T19:38:02.227921-07:00","updated_at":"2025-10-30T17:12:58.180404-07:00","closed_at":"2025-10-29T23:14:44.187562-07:00","source_repo":"."} {"id":"bd-ef85","content_hash":"56b7e0c048938940053b127e4f9ed578e797b99dc93d010138ec823efbe7842c","title":"Add --json flags to all bd commands for agent-friendly output","description":"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-31T22:39:45.312496-07:00","updated_at":"2025-10-31T22:39:50.157022-07:00","closed_at":"2025-10-31T22:39:50.157022-07:00","source_repo":"."} -{"id":"bd-eimz","content_hash":"c2c2a4b9a7c9fe281e8b47abf088ae0fc5199177e2c3a5dcde62cd890985f796","title":"Add Agent Mail to QUICKSTART.md","description":"Mention Agent Mail as optional advanced feature in quickstart guide.\n\nFile: docs/QUICKSTART.md","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-07T22:42:51.357009-08:00","updated_at":"2025-11-08T01:07:11.598558-08:00","closed_at":"2025-11-08T01:07:11.598558-08:00","source_repo":".","dependencies":[{"issue_id":"bd-eimz","depends_on_id":"bd-xzrv","type":"blocks","created_at":"2025-11-07T23:04:09.841956-08:00","created_by":"daemon"}]} +{"id":"bd-eimz","content_hash":"03d818a0c6277838251b1bd67f3e88c1aedad81fa458291f27469a807a69fc13","title":"Add Agent Mail to QUICKSTART.md","description":"Mention Agent Mail as optional advanced feature in quickstart guide.\n\nFile: docs/QUICKSTART.md","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-07T22:42:51.357009-08:00","updated_at":"2025-11-08T01:51:40.35021-08:00","closed_at":"2025-11-08T01:07:11.598558-08:00","source_repo":".","dependencies":[{"issue_id":"bd-eimz","depends_on_id":"bd-xzrv","type":"blocks","created_at":"2025-11-07T23:04:09.841956-08:00","created_by":"daemon"}]} {"id":"bd-eiz9","content_hash":"0f1722abb1f24d08d2c643d9cd4109935325eb3ea994166ff88202d0a457b003","title":"Help agents understand version changes with bd info --whats-new","description":"**Problem** (from GH Discussion #239 by @maphew):\nWeekly major versions mean agents need to adapt workflows, but currently there's no efficient way to communicate \"what changed that affects you.\"\n\n**Proposed solutions:**\n\n1. **bd info --whats-new** - Show agent-actionable changes since last version\n ```\n Since v0.20.1:\n • Hash IDs eliminate collisions - remove ID coordination workarounds\n • Event-driven daemon (opt-in) - add BEADS_DAEMON_MODE=events\n • Merge driver auto-configured - conflicts rarer\n ```\n\n2. **Version-aware bd onboard** - Detect version changes and show diff of agent-relevant changes\n\n3. **AGENTS.md top section** - \"🆕 Recent Changes (Last 3 Versions)\" with workflow impacts\n\n**Why agents need this:**\n- Raw CHANGELOG is token-heavy and buried in release details\n- Full bd onboard re-run wasteful if only 2-3 things changed\n- Currently requires user to manually explain updates\n\n**Related:** https://github.com/steveyegge/beads/discussions/239","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-06T21:03:30.057576-08:00","updated_at":"2025-11-08T02:42:56.733731-08:00","closed_at":"2025-11-08T02:25:55.509249-08:00","source_repo":"."} -{"id":"bd-epvx","content_hash":"f0acf2bcec5857c61c542764f62c5f5a66cfa74cdafa941c1754db40dd173efc","title":"Create Go adapter library (optional)","description":"For agents written in Go, provide native adapter library instead of shelling out to curl.\n\nAcceptance Criteria:\n- agentmail.Client struct\n- HTTP client with timeout/retry logic\n- Same API as Python adapter\n- Example usage in examples/go-agent/\n- Unit tests\n\nFile: pkg/agentmail/client.go\n\nNote: Lower priority - can shell out to curl initially","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-07T22:42:28.781577-08:00","updated_at":"2025-11-08T15:58:37.146674-08:00","closed_at":"2025-11-08T15:48:57.83973-08:00","source_repo":".","dependencies":[{"issue_id":"bd-epvx","depends_on_id":"bd-m9th","type":"blocks","created_at":"2025-11-07T23:04:01.47471-08:00","created_by":"daemon"}]} +{"id":"bd-epvx","content_hash":"f0acf2bcec5857c61c542764f62c5f5a66cfa74cdafa941c1754db40dd173efc","title":"Create Go adapter library (optional)","description":"For agents written in Go, provide native adapter library instead of shelling out to curl.\n\nAcceptance Criteria:\n- agentmail.Client struct\n- HTTP client with timeout/retry logic\n- Same API as Python adapter\n- Example usage in examples/go-agent/\n- Unit tests\n\nFile: pkg/agentmail/client.go\n\nNote: Lower priority - can shell out to curl initially","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-07T22:42:28.781577-08:00","updated_at":"2025-11-08T15:48:57.83973-08:00","closed_at":"2025-11-08T15:48:57.83973-08:00","source_repo":".","dependencies":[{"issue_id":"bd-epvx","depends_on_id":"bd-m9th","type":"blocks","created_at":"2025-11-07T23:04:01.47471-08:00","created_by":"daemon"}]} {"id":"bd-eqjc","content_hash":"8acc3d91ca9f9bef36d19358cb7f24eac247583a0e6701036aaff92607474c21","title":"bd init creates nested .beads directories","description":"bd init sometimes creates .beads/.beads/ nested directories, which should never happen. This occurs fairly often and can cause confusion about which .beads directory is active. Need to add validation to detect if already inside a .beads directory and either error or use the parent .beads location.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-06T22:21:22.948727-08:00","updated_at":"2025-11-06T22:22:41.04958-08:00","closed_at":"2025-11-06T22:22:41.04958-08:00","source_repo":"."} -{"id":"bd-es19","content_hash":"5c5951971ed466f30fa12e1d7f73457ecc430464726516f069e6659f762687e6","title":"BG's issue to reopen","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-08T02:53:09.977366-08:00","updated_at":"2025-11-08T02:53:09.977366-08:00","closed_at":"2025-11-07T21:57:59.90981-08:00","source_repo":"."} +{"id":"bd-es19","content_hash":"5c5951971ed466f30fa12e1d7f73457ecc430464726516f069e6659f762687e6","title":"BG's issue to reopen","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-20T19:11:50.954286-05:00","updated_at":"2025-11-20T19:11:50.954286-05:00","closed_at":"2025-11-07T21:57:59.90981-08:00","source_repo":"."} {"id":"bd-expt","content_hash":"6e14db64fb24882e4cf544ec24eaa994aba970fd0ae31c72dda2d8ea88560753","title":"RPC fast-fail: stat socket before dial, cap timeouts to 200ms","description":"Eliminate 5s delay when daemon socket is missing by:\n1. Add os.Stat(socketPath) check before dialing in TryConnect\n2. Return (nil, nil) immediately if socket doesn't exist\n3. Set default dial timeout to 200ms in TryConnect\n4. Keep TryConnectWithTimeout for explicit health/status checks (1-2s)\n\nThis prevents clients from waiting through full timeout when no daemon is running.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-07T16:42:12.688526-08:00","updated_at":"2025-11-07T22:07:17.345918-08:00","closed_at":"2025-11-07T21:04:21.671436-08:00","source_repo":".","dependencies":[{"issue_id":"bd-expt","depends_on_id":"bd-ndyz","type":"discovered-from","created_at":"2025-11-07T16:42:12.689284-08:00","created_by":"daemon"}]} {"id":"bd-f0d9bcf2","content_hash":"00e0c7b440024e6257d1bac9c1d5af10f8a12ee1726478e4b5bab06e34bfb586","title":"Batch test 1","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-29T15:29:01.795728-07:00","updated_at":"2025-10-31T12:00:43.184078-07:00","closed_at":"2025-10-31T12:00:43.184078-07:00","source_repo":"."} {"id":"bd-f282","content_hash":"90043e5e39cbb062ce0ff6a323ce2d0a16465783742d06ac9da1df66d837e025","title":"Test npm package installation locally","description":"Verify npm package works before publishing:\n\n## Local testing\n- Run npm pack in npm/ directory\n- Install tarball globally: npm install -g beads-bd-0.21.5.tgz\n- Test basic commands:\n - bd --version\n - bd init --quiet --prefix test\n - bd create \"Test issue\" -p 1 --json\n - bd list --json\n - bd sync\n\n## Test environments\n- macOS (darwin-arm64 and darwin-amd64)\n- Linux (ubuntu docker container for linux-amd64)\n- Windows (optional, if available)\n\n## Validation\n- Binary downloads during postinstall\n- All bd commands work identically to native\n- No permission issues\n- Proper error messages on failure","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T23:40:05.71835-08:00","updated_at":"2025-11-03T10:31:45.382577-08:00","closed_at":"2025-11-03T10:31:45.382577-08:00","source_repo":".","dependencies":[{"issue_id":"bd-f282","depends_on_id":"bd-febc","type":"parent-child","created_at":"2025-11-02T23:40:32.968748-08:00","created_by":"daemon"}]} @@ -403,39 +2864,39 @@ {"id":"bd-f9a1","content_hash":"97f9387b20f741a9f71ee43b0671b5d970bd594098db299dc871d0b3074c5384","title":"Add index usage verification test for external_ref lookups","description":"Currently we test that idx_issues_external_ref index exists, but we don't verify that it's actually being used by the query planner.\n\nProposed solution:\n- Add test using EXPLAIN QUERY PLAN\n- Verify that 'SEARCH TABLE issues USING INDEX idx_issues_external_ref' appears in plan\n- Ensures O(1) lookup performance is maintained\n\nRelated: bd-1022\nFiles: internal/storage/sqlite/external_ref_test.go:260","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-02T15:32:09.85419-08:00","updated_at":"2025-11-02T16:04:47.221064-08:00","closed_at":"2025-11-02T16:04:47.221064-08:00","source_repo":"."} {"id":"bd-fasa","content_hash":"bc2c647cac7355a66fa4aefd116c82e01f536da4b4404e922b3307505413210f","title":"Prefix detection treats embedded hyphens as prefix delimiters","description":"The prefix detection logic in bd import incorrectly identifies issues like 'vc-baseline-test' and 'vc-92cl-gate-test' as having different prefixes ('vc-baseline-' and 'vc-92cl-gate-') instead of recognizing them as having the standard 'vc-' prefix with hyphenated suffixes.\n\nThis breaks import with error: 'prefix mismatch detected: database uses vc- but found issues with prefixes: [vc-92cl-gate- (1 issues) vc-baseline- (1 issues)]'\n\nThe prefix should be determined by the pattern: prefix is everything up to and including the first hyphen. The suffix can contain hyphens without being treated as part of the prefix.\n\nExample problematic IDs:\n- vc-baseline-test (detected as prefix: vc-baseline-)\n- vc-92cl-gate-test (detected as prefix: vc-92cl-gate-)\n- vc-test (correctly detected as prefix: vc-)\n\nImpact: Users cannot use descriptive multi-part IDs without triggering false prefix mismatch errors.","acceptance_criteria":"- Prefix detection only considers the first hyphen as prefix delimiter\n- IDs like 'vc-baseline-test' correctly identified as having prefix 'vc-'\n- Import succeeds without --rename-on-import for hyphenated suffixes\n- Tests added for multi-part ID suffix handling","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-09T14:27:19.046489-08:00","updated_at":"2025-11-09T14:53:53.22312-08:00","closed_at":"2025-11-09T14:53:53.22312-08:00","source_repo":"."} {"id":"bd-fb05","content_hash":"1d99061e4ac1564982acc5e141674adf3bb7db789d546c12deb9108435af6450","title":"Refactor sqlite.go into focused modules","description":"Split sqlite.go (2,298 lines) into focused modules: migrations.go, ids.go, issues.go, events.go, dirty.go, db.go. This will improve maintainability and reduce cognitive load.","design":"Files to create:\n- migrations.go: Migration registry + runner\n- ids.go: ID generation/validation \n- issues.go: CRUD helpers\n- events.go: Event helpers\n- dirty.go: dirty_issues helpers\n- db.go: New/open, DSN construction\n- tx.go: Transaction helper","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-01T11:41:14.805895-07:00","updated_at":"2025-11-01T22:30:09.833675-07:00","closed_at":"2025-11-01T22:30:09.833675-07:00","source_repo":"."} -{"id":"bd-fb95094c","content_hash":"d30f2a45055cdb28efd6b15f97880f3fd50bee024876308440acea3f279f8920","title":"Code Health \u0026 Technical Debt Cleanup","description":"Comprehensive codebase cleanup to remove dead code, refactor monolithic files, deduplicate utilities, and improve maintainability. Based on ultrathink code health analysis conducted 2025-10-27.\n\nGoals:\n- Remove ~1,500 LOC of dead/unreachable code\n- Split 2 monolithic files (server.go 2,273 LOC, sqlite.go 2,136 LOC) into focused modules\n- Deduplicate scattered utility functions (normalizeLabels, BD_DEBUG checks)\n- Consolidate test coverage (2,019 LOC of collision tests)\n- Improve code navigation and reduce merge conflicts\n\nImpact: Reduces codebase by ~6-8%, improves maintainability, faster CI/CD\n\nEstimated Effort: 11 days across 4 phases","acceptance_criteria":"- All unreachable code identified by `deadcode` analyzer is removed\n- RPC server split into \u003c500 LOC files with clear responsibilities\n- Duplicate utility functions centralized\n- Test coverage maintained or improved\n- All tests passing\n- Documentation updated","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-10-27T20:39:22.22227-07:00","updated_at":"2025-11-08T22:42:08.863126-08:00","closed_at":"2025-11-08T18:15:59.971899-08:00","source_repo":".","labels":["cleanup","epic"]} +{"id":"bd-fb95094c","content_hash":"6ed1829c3120d5469de6ca758ca40322d78de477d67892a51a77aedb26fffa0c","title":"Code Health \u0026 Technical Debt Cleanup","description":"Comprehensive codebase cleanup to remove dead code, refactor monolithic files, deduplicate utilities, and improve maintainability. Based on ultrathink code health analysis conducted 2025-10-27.\n\nGoals:\n- Remove ~1,500 LOC of dead/unreachable code\n- Split 2 monolithic files (server.go 2,273 LOC, sqlite.go 2,136 LOC) into focused modules\n- Deduplicate scattered utility functions (normalizeLabels, BD_DEBUG checks)\n- Consolidate test coverage (2,019 LOC of collision tests)\n- Improve code navigation and reduce merge conflicts\n\nImpact: Reduces codebase by ~6-8%, improves maintainability, faster CI/CD\n\nEstimated Effort: 11 days across 4 phases","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-10-27T20:39:22.22227-07:00","updated_at":"2025-11-20T12:25:55.956705-05:00","closed_at":"2025-11-08T18:15:59.971899-08:00","source_repo":".","labels":["cleanup","epic"]} {"id":"bd-fb95094c.1","content_hash":"8f7533da448dea49a01aa747892eab9f855127343ced4fbd6e17cb80d56419af","title":"Run final validation and cleanup checks","description":"Final validation pass to ensure all cleanup objectives met and no regressions introduced.\n\nValidation checklist:\n1. Dead code verification: `go run golang.org/x/tools/cmd/deadcode@latest -test ./...`\n2. Test coverage: `go test -cover ./...`\n3. Build verification: `go build ./cmd/bd/`\n4. Linting: `golangci-lint run`\n5. Integration tests\n6. Metrics verification\n7. Git clean check\n\nFinal metrics to report:\n- LOC removed: ~____\n- Files deleted: ____\n- Files created: ____\n- Test coverage: ____%\n- Build time: ____ (before/after)\n- Test run time: ____ (before/after)\n\nImpact: Confirms all cleanup objectives achieved successfully","acceptance_criteria":"- Zero unreachable functions per deadcode analyzer\n- All tests pass: `go test ./...`\n- Test coverage maintained or improved\n- Builds cleanly: `go build ./...`\n- Linting shows improvements\n- Integration tests all pass\n- LOC reduction target achieved (~2,500 LOC)\n- No unintended behavior changes\n- Git commit messages document all changes","notes":"Validation completed:\n- LOC: 52,372 lines total\n- Dead code: 4 functions in import_shared.go (tracked in bd-6fe4622f)\n- Build: ✓ Successful\n- Test coverage: ~20-82% across packages\n- Test failure: TestTwoCloneCollision (timeout issue)\n- Linting: errcheck warnings present (defer close, fmt errors)\n- Test time: ~20s\n\nIssues found:\n1. bd-6fe4622f: Remove unreachable import functions (renameImportedIssuePrefixes, etc)\n2. TestTwoCloneCollision: Daemon killall timeout causing test failure\n3. Linting: errcheck violations need fixing","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-27T20:32:00.14166-07:00","updated_at":"2025-10-30T17:12:58.209988-07:00","closed_at":"2025-10-28T14:11:25.218801-07:00","source_repo":".","labels":["phase-4","validation"],"dependencies":[{"issue_id":"bd-fb95094c.1","depends_on_id":"bd-fb95094c","type":"parent-child","created_at":"2025-10-27T20:32:00.144113-07:00","created_by":"daemon"}]} -{"id":"bd-fb95094c.10","content_hash":"072a2e76c3a9690c49c805351891235d488936d7a0e7b1d1334bd933f79de338","title":"Consider central serialization package for JSON handling","description":"Multiple parts of the codebase handle JSON serialization of issues with slightly different approaches. Consider creating a centralized serialization package to ensure consistency.\n\nCurrent serialization locations:\n- `cmd/bd/export.go` - JSONL export (issues to file)\n- `cmd/bd/import.go` - JSONL import (file to issues)\n- `internal/rpc/protocol.go` - RPC JSON marshaling\n- `internal/storage/memory/memory.go` - In-memory marshaling\n\nPotential benefits:\n- Single source of truth for JSON format\n- Consistent field naming\n- Easier to add new fields\n- Centralized validation\n\nNote: This is marked **optional** because:\n- Current serialization mostly works\n- May not provide enough benefit to justify refactor\n- Risk of breaking compatibility\n\nDecision point: Evaluate if benefits outweigh refactoring cost\n\nImpact: TBD based on investigation - may defer to future work","acceptance_criteria":"- Create serialization package with documented JSON format\n- Migrate export/import to use centralized serialization\n- All existing JSONL files can be read with new code\n- All tests pass: `go test ./...`\n- Export/import round-trip works perfectly\n- RPC protocol unchanged (or backwards compatible)","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-27T20:31:19.090608-07:00","updated_at":"2025-11-08T22:42:08.863677-08:00","closed_at":"2025-11-08T18:15:54.319047-08:00","source_repo":".","labels":["deduplication","optional","phase-3","refactor","serialization"],"dependencies":[{"issue_id":"bd-fb95094c.10","depends_on_id":"bd-fb95094c","type":"parent-child","created_at":"2025-10-27T20:31:19.092328-07:00","created_by":"daemon"}]} +{"id":"bd-fb95094c.10","content_hash":"61c66c65457e40c96e8d4192ae8f18c8145a516ef81f656f0535a4418d2dfeb5","title":"Consider central serialization package for JSON handling","description":"Multiple parts of the codebase handle JSON serialization of issues with slightly different approaches. Consider creating a centralized serialization package to ensure consistency.\n\nCurrent serialization locations:\n- `cmd/bd/export.go` - JSONL export (issues to file)\n- `cmd/bd/import.go` - JSONL import (file to issues)\n- `internal/rpc/protocol.go` - RPC JSON marshaling\n- `internal/storage/memory/memory.go` - In-memory marshaling\n\nPotential benefits:\n- Single source of truth for JSON format\n- Consistent field naming\n- Easier to add new fields\n- Centralized validation\n\nNote: This is marked **optional** because:\n- Current serialization mostly works\n- May not provide enough benefit to justify refactor\n- Risk of breaking compatibility\n\nDecision point: Evaluate if benefits outweigh refactoring cost\n\nImpact: TBD based on investigation - may defer to future work","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-27T20:31:19.090608-07:00","updated_at":"2025-11-20T12:25:55.958673-05:00","closed_at":"2025-11-08T18:15:54.319047-08:00","source_repo":".","labels":["deduplication","optional","phase-3","refactor","serialization"],"dependencies":[{"issue_id":"bd-fb95094c.10","depends_on_id":"bd-fb95094c","type":"parent-child","created_at":"2025-10-27T20:31:19.092328-07:00","created_by":"daemon"}]} {"id":"bd-fb95094c.2","content_hash":"685c91a6de8e1610feb5dbda18412f3eee178a37064d9ddf55511fb693dec9ba","title":"Delete skipped tests for \"old buggy behavior\"","description":"Three test functions are permanently skipped with comments indicating they test behavior that was fixed in GH#120. These tests will never run again and should be deleted.\n\nTest functions to remove:\n\n1. `cmd/bd/import_collision_test.go:228`\n ```go\n t.Skip(\"Test expects old buggy behavior - needs rewrite for GH#120 fix\")\n ```\n\n2. `cmd/bd/import_collision_test.go:505`\n ```go\n t.Skip(\"Test expects old buggy behavior - needs rewrite for GH#120 fix\")\n ```\n\n3. `internal/storage/sqlite/collision_test.go:919`\n ```go\n t.Skip(\"Test expects old buggy behavior - needs rewrite for GH#120 fix\")\n ```\n\nImpact: Removes ~150 LOC of permanently skipped tests","acceptance_criteria":"- Delete the 3 test functions entirely (~150 LOC total)\n- Update test file comments to reference GH#120 fix if needed\n- All remaining tests pass: `go test ./...`\n- No reduction in meaningful test coverage (these test fixed bugs)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-27T20:30:19.961185-07:00","updated_at":"2025-10-30T17:12:58.196387-07:00","closed_at":"2025-10-28T14:09:21.642632-07:00","source_repo":".","labels":["cleanup","dead-code","phase-1","test-cleanup"],"dependencies":[{"issue_id":"bd-fb95094c.2","depends_on_id":"bd-fb95094c","type":"parent-child","created_at":"2025-10-27T20:30:19.962815-07:00","created_by":"daemon"}]} -{"id":"bd-fb95094c.3","content_hash":"84783b0ba6c7fc6b75167935be981a0ae52069936137ec65d79b52b54cb43f2c","title":"Update documentation after code health cleanup","description":"Update all documentation to reflect code structure changes after cleanup phases complete.\n\nDocumentation to update:\n1. **AGENTS.md** - Update file structure references\n2. **CONTRIBUTING.md** (if exists) - Update build/test instructions\n3. **Code comments** - Update any outdated references\n4. **Package documentation** - Update godoc for reorganized packages\n\nNew documentation to add:\n1. **internal/util/README.md** - Document shared utilities\n2. **internal/debug/README.md** - Document debug logging\n3. **internal/rpc/README.md** - Document new file organization\n4. **internal/storage/sqlite/migrations/README.md** - Migration system docs\n\nImpact: Keeps documentation in sync with code","acceptance_criteria":"- All documentation references to deleted files removed\n- New package READMEs written\n- Code comments updated for reorganized code\n- Migration guide for developers (if needed)\n- Architecture diagrams updated (if they exist)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-27T20:32:00.141028-07:00","updated_at":"2025-11-08T22:42:08.86399-08:00","closed_at":"2025-11-08T18:15:48.644285-08:00","source_repo":".","labels":["documentation","phase-4"],"dependencies":[{"issue_id":"bd-fb95094c.3","depends_on_id":"bd-fb95094c","type":"parent-child","created_at":"2025-10-27T20:32:00.1423-07:00","created_by":"daemon"}]} -{"id":"bd-fb95094c.4","content_hash":"c2831a4b1f3847a8aff257d72eda7aa280b7f572a3e4e72d2283a9af367b52ea","title":"Audit and consolidate collision test coverage","description":"The codebase has 2,019 LOC of collision detection tests across 3 files. Run coverage analysis to identify redundant test cases and consolidate.\n\nTest files:\n- `cmd/bd/import_collision_test.go` - 974 LOC\n- `cmd/bd/autoimport_collision_test.go` - 750 LOC\n- `cmd/bd/import_collision_regression_test.go` - 295 LOC\n\nTotal: 2,019 LOC of collision tests\n\nAnalysis steps:\n1. Run coverage analysis\n2. Identify redundant tests\n3. Document findings\n\nConsolidation strategy:\n- Keep regression tests for critical bugs\n- Merge overlapping table-driven tests\n- Remove redundant edge case tests covered elsewhere\n- Ensure all collision scenarios still tested\n\nExpected outcome: Reduce to ~1,200 LOC (save ~800 lines) while maintaining coverage\n\nImpact: Faster test runs, easier maintenance, clearer test intent","acceptance_criteria":"- Coverage analysis completed and documented\n- Redundant tests identified (~800 LOC estimated)\n- Consolidated test suite maintains or improves coverage\n- All remaining tests pass: `go test ./cmd/bd/...`\n- Test run time unchanged or faster\n- Document which tests were removed and why\n- Coverage percentage maintained: `go test -cover ./cmd/bd/` shows same %","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-27T20:32:00.130855-07:00","updated_at":"2025-11-08T01:58:15.283373-08:00","closed_at":"2025-11-07T23:27:41.970013-08:00","source_repo":".","labels":["phase-4","test-cleanup"],"dependencies":[{"issue_id":"bd-fb95094c.4","depends_on_id":"bd-fb95094c","type":"parent-child","created_at":"2025-10-27T20:32:00.132251-07:00","created_by":"daemon"}]} +{"id":"bd-fb95094c.3","content_hash":"8288e825cb58ac818cc18c0b6a06addd1621a458d68431e4b1747953493f2cad","title":"Update documentation after code health cleanup","description":"Update all documentation to reflect code structure changes after cleanup phases complete.\n\nDocumentation to update:\n1. **AGENTS.md** - Update file structure references\n2. **CONTRIBUTING.md** (if exists) - Update build/test instructions\n3. **Code comments** - Update any outdated references\n4. **Package documentation** - Update godoc for reorganized packages\n\nNew documentation to add:\n1. **internal/util/README.md** - Document shared utilities\n2. **internal/debug/README.md** - Document debug logging\n3. **internal/rpc/README.md** - Document new file organization\n4. **internal/storage/sqlite/migrations/README.md** - Migration system docs\n\nImpact: Keeps documentation in sync with code","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-27T20:32:00.141028-07:00","updated_at":"2025-11-20T12:25:55.958206-05:00","closed_at":"2025-11-08T18:15:48.644285-08:00","source_repo":".","labels":["documentation","phase-4"],"dependencies":[{"issue_id":"bd-fb95094c.3","depends_on_id":"bd-fb95094c","type":"parent-child","created_at":"2025-10-27T20:32:00.1423-07:00","created_by":"daemon"}]} +{"id":"bd-fb95094c.4","content_hash":"e4ce4e814325dad9a93c2a090e30a04d62033e51ec45f0aba471bcd6bb420305","title":"Audit and consolidate collision test coverage","description":"The codebase has 2,019 LOC of collision detection tests across 3 files. Run coverage analysis to identify redundant test cases and consolidate.\n\nTest files:\n- `cmd/bd/import_collision_test.go` - 974 LOC\n- `cmd/bd/autoimport_collision_test.go` - 750 LOC\n- `cmd/bd/import_collision_regression_test.go` - 295 LOC\n\nTotal: 2,019 LOC of collision tests\n\nAnalysis steps:\n1. Run coverage analysis\n2. Identify redundant tests\n3. Document findings\n\nConsolidation strategy:\n- Keep regression tests for critical bugs\n- Merge overlapping table-driven tests\n- Remove redundant edge case tests covered elsewhere\n- Ensure all collision scenarios still tested\n\nExpected outcome: Reduce to ~1,200 LOC (save ~800 lines) while maintaining coverage\n\nImpact: Faster test runs, easier maintenance, clearer test intent","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-27T20:32:00.130855-07:00","updated_at":"2025-11-20T12:25:55.957439-05:00","closed_at":"2025-11-07T23:27:41.970013-08:00","source_repo":".","labels":["phase-4","test-cleanup"],"dependencies":[{"issue_id":"bd-fb95094c.4","depends_on_id":"bd-fb95094c","type":"parent-child","created_at":"2025-10-27T20:32:00.132251-07:00","created_by":"daemon"}]} {"id":"bd-fb95094c.5","content_hash":"11521fe159f640e2cefd3d138fbbbc3b8d2b4fda48c6542f39761d5a124d6154","title":"Centralize BD_DEBUG logging into debug package","description":"The codebase has 43 scattered instances of `if os.Getenv(\"BD_DEBUG\") != \"\"` debug checks across 6 files. Centralize into a debug logging package.\n\nCurrent locations:\n- `cmd/bd/main.go` - 15 checks\n- `cmd/bd/autoflush.go` - 6 checks\n- `cmd/bd/nodb.go` - 4 checks\n- `internal/rpc/server.go` - 2 checks\n- `internal/rpc/client.go` - 5 checks\n- `cmd/bd/daemon_autostart.go` - 11 checks\n\nTarget structure:\n```\ninternal/debug/\n└── debug.go\n```\n\nBenefits:\n- Centralized debug logging\n- Easier to add structured logging later\n- Testable (can mock debug output)\n- Consistent debug message format\n\nImpact: Removes 43 scattered checks, improves code clarity","acceptance_criteria":"- Create `internal/debug/debug.go` with `Enabled`, `Logf`, `Printf`\n- Add unit tests in `internal/debug/debug_test.go` (test with/without BD_DEBUG)\n- Replace all 43 instances of `os.Getenv(\"BD_DEBUG\")` checks with `debug.Logf()`\n- Verify debug output works: run with `BD_DEBUG=1 bd status`\n- All tests pass: `go test ./...`\n- No behavior change (output identical to before)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-27T20:31:19.089078-07:00","updated_at":"2025-11-07T00:28:01.781121-08:00","closed_at":"2025-11-06T20:13:09.412212-08:00","source_repo":".","labels":["deduplication","logging","phase-3","refactor"],"dependencies":[{"issue_id":"bd-fb95094c.5","depends_on_id":"bd-fb95094c","type":"parent-child","created_at":"2025-10-27T21:48:41.542395-07:00","created_by":"stevey"}]} {"id":"bd-fb95094c.6","content_hash":"a8fe5793d281df23eb2a4856cbc4fa3fecc0a12762e75f7b80601af7d76d06da","title":"Extract normalizeLabels to shared utility package","description":"The `normalizeLabels` function appears in multiple locations with identical implementation. Extract to a shared utility package.\n\nCurrent locations:\n- `internal/rpc/server.go:37` (53 lines) - full implementation\n- `cmd/bd/list.go:50-52` - uses the server version (needs to use new shared version)\n\nFunction purpose:\n- Trims whitespace from labels\n- Removes empty strings\n- Deduplicates labels\n- Preserves order\n\nTarget structure:\n```\ninternal/util/\n├── strings.go # String utilities\n └── NormalizeLabels([]string) []string\n```\n\nImpact: DRY principle, single source of truth, easier to test","acceptance_criteria":"- Create `internal/util/strings.go` with `NormalizeLabels`\n- Add comprehensive unit tests in `internal/util/strings_test.go`\n- Update `internal/rpc/server.go` to import and use `util.NormalizeLabels`\n- Update `cmd/bd/list.go` to import and use `util.NormalizeLabels`\n- Remove duplicate implementations\n- All tests pass: `go test ./...`\n- Verify label normalization works: test `bd list --label` commands","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-27T20:31:19.078622-07:00","updated_at":"2025-11-06T20:06:49.219555-08:00","closed_at":"2025-11-06T19:58:59.467567-08:00","source_repo":".","labels":["deduplication","phase-3","refactor"],"dependencies":[{"issue_id":"bd-fb95094c.6","depends_on_id":"bd-fb95094c","type":"parent-child","created_at":"2025-10-27T20:31:19.08015-07:00","created_by":"daemon"}]} -{"id":"bd-fb95094c.7","content_hash":"7ef7e29e2bdbfc01f3bf3c1a5f265d1229e41c5e421021711cd0c311aadb520d","title":"Extract SQLite migrations into separate files","description":"The file `internal/storage/sqlite/sqlite.go` is 2,136 lines and contains 11 sequential migrations alongside core storage logic. Extract migrations into a versioned system.\n\nCurrent issues:\n- 11 migration functions mixed with core logic\n- Hard to see migration history\n- Sequential migrations slow database open\n- No clear migration versioning\n\nMigration functions to extract:\n- `migrateDirtyIssuesTable()`\n- `migrateIssueCountersTable()`\n- `migrateExternalRefColumn()`\n- `migrateCompositeIndexes()`\n- `migrateClosedAtConstraint()`\n- `migrateCompactionColumns()`\n- `migrateSnapshotsTable()`\n- `migrateCompactionConfig()`\n- `migrateCompactedAtCommitColumn()`\n- `migrateExportHashesTable()`\n- Plus 1 more (11 total)\n\nTarget structure:\n```\ninternal/storage/sqlite/\n├── sqlite.go # Core storage (~800 lines)\n├── schema.go # Table definitions (~200 lines)\n├── migrations.go # Migration orchestration (~200 lines)\n└── migrations/ # Individual migrations\n ├── 001_initial_schema.go\n ├── 002_dirty_issues.go\n ├── 003_issue_counters.go\n [... through 011_export_hashes.go]\n```\n\nBenefits:\n- Clear migration history\n- Each migration self-contained\n- Easier to review migration changes in PRs\n- Future migrations easier to add","acceptance_criteria":"- All 11 migrations extracted to separate files\n- Migration version tracking in database\n- Migrations run in order on fresh database\n- Existing databases upgrade correctly\n- All tests pass: `go test ./internal/storage/sqlite/...`\n- Database initialization time unchanged or improved\n- Add migration rollback capability (optional, nice-to-have)","status":"closed","priority":2,"issue_type":"task","assignee":"amp","created_at":"2025-10-27T20:30:47.870671-07:00","updated_at":"2025-11-06T20:05:05.01308-08:00","closed_at":"2025-11-06T20:05:05.01308-08:00","source_repo":".","labels":["database","phase-2","refactor"],"dependencies":[{"issue_id":"bd-fb95094c.7","depends_on_id":"bd-fb95094c","type":"parent-child","created_at":"2025-10-27T20:30:47.875564-07:00","created_by":"daemon"}]} +{"id":"bd-fb95094c.7","content_hash":"6b0e7ce36c1680778cf79aaa9881688001818f2e2081f8c8a240fa0257f08e10","title":"Extract SQLite migrations into separate files","description":"The file `internal/storage/sqlite/sqlite.go` is 2,136 lines and contains 11 sequential migrations alongside core storage logic. Extract migrations into a versioned system.\n\nCurrent issues:\n- 11 migration functions mixed with core logic\n- Hard to see migration history\n- Sequential migrations slow database open\n- No clear migration versioning\n\nMigration functions to extract:\n- `migrateDirtyIssuesTable()`\n- `migrateIssueCountersTable()`\n- `migrateExternalRefColumn()`\n- `migrateCompositeIndexes()`\n- `migrateClosedAtConstraint()`\n- `migrateCompactionColumns()`\n- `migrateSnapshotsTable()`\n- `migrateCompactionConfig()`\n- `migrateCompactedAtCommitColumn()`\n- `migrateExportHashesTable()`\n- Plus 1 more (11 total)\n\nTarget structure:\n```\ninternal/storage/sqlite/\n├── sqlite.go # Core storage (~800 lines)\n├── schema.go # Table definitions (~200 lines)\n├── migrations.go # Migration orchestration (~200 lines)\n└── migrations/ # Individual migrations\n ├── 001_initial_schema.go\n ├── 002_dirty_issues.go\n ├── 003_issue_counters.go\n [... through 011_export_hashes.go]\n```\n\nBenefits:\n- Clear migration history\n- Each migration self-contained\n- Easier to review migration changes in PRs\n- Future migrations easier to add","acceptance_criteria":"- All 11 migrations extracted to separate files\n- Migration version tracking in database\n- Migrations run in order on fresh database\n- Existing databases upgrade correctly\n- All tests pass: `go test ./internal/storage/sqlite/...`\n- Database initialization time unchanged or improved\n- Add migration rollback capability (optional, nice-to-have)","status":"closed","priority":2,"issue_type":"task","assignee":"amp","created_at":"2025-10-27T20:30:47.870671-07:00","updated_at":"2025-11-06T20:05:05.01308-08:00","closed_at":"2025-11-06T20:05:05.01308-08:00","source_repo":".","labels":["database","phase-2","refactor"],"dependencies":[{"issue_id":"bd-fb95094c.7","depends_on_id":"bd-fb95094c","type":"parent-child","created_at":"2025-10-27T20:30:47.875564-07:00","created_by":"daemon"}]} {"id":"bd-fc2d","content_hash":"02e7f133acdef2eb52454fe9f5275575e3c237cdf665e57601c1cd09790106d7","title":"Refactor sqlite.go (2298 lines)","description":"Break down internal/storage/sqlite/sqlite.go into smaller, more focused modules. The file is currently 2298 lines and should be split into logical components.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-01T19:28:40.899111-07:00","updated_at":"2025-11-01T22:21:01.729379-07:00","closed_at":"2025-11-01T22:21:01.729379-07:00","source_repo":"."} {"id":"bd-fd56","content_hash":"50437cea170f5b8a962661711d2ba639f9c7d1494a55115408afe3cbc9bebc86","title":"Wrap git operations in GitClient interface","description":"Create internal/daemonrunner/git.go with GitClient interface (HasUpstream, HasChanges, Commit, Push, Pull). Default implementation using os/exec. Use in Syncer and Run loop for testability.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-01T11:41:14.88734-07:00","updated_at":"2025-11-02T12:32:00.159595-08:00","closed_at":"2025-11-02T12:32:00.159597-08:00","source_repo":"."} {"id":"bd-fd8753d9","content_hash":"faea57d583689933e7a173d18595095125b5fd79689cbb3c41039608ba4b335b","title":"Document bd edit command and verify MCP exclusion","description":"Follow-up from PR #152:\n1. Add \"bd edit\" to AGENTS.md with \"Humans only\" note\n2. Verify MCP server doesn't expose bd edit command\n3. Consider adding test for command registration","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-26T13:23:47.982295-07:00","updated_at":"2025-11-06T20:06:49.219828-08:00","closed_at":"2025-11-06T19:41:08.675575-08:00","source_repo":"."} {"id":"bd-febc","content_hash":"686e0d5e3d56abe0edbd203d3d138ee3b013f55b6aed1eac05a56e6e3a5cc261","title":"npm package for bd with native binaries","description":"Create an npm package that wraps native bd binaries for easy installation in Claude Code for Web and other Node.js environments.\n\n## Problem\nClaude Code for Web sandboxes are full Linux VMs with npm support, but cannot easily download binaries from GitHub releases due to network restrictions or tooling limitations.\n\n## Solution\nPublish bd as an npm package that:\n- Downloads platform-specific native binaries during postinstall\n- Provides a CLI wrapper that invokes the native binary\n- Works seamlessly in Claude Code for Web SessionStart hooks\n- Maintains full feature parity (uses native SQLite)\n\n## Benefits vs WASM\n- ✅ Full SQLite support (no custom VFS needed)\n- ✅ All features work identically to native bd\n- ✅ Better performance (native vs WASM overhead)\n- ✅ ~4 hours effort vs ~2 days for WASM\n- ✅ Minimal maintenance burden\n\n## Success Criteria\n- npm install @beads/bd works in Claude Code for Web\n- All bd commands function identically to native binary\n- SessionStart hook documented for auto-installation\n- Package published to npm registry","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-02T23:39:37.684109-08:00","updated_at":"2025-11-03T10:39:44.932565-08:00","closed_at":"2025-11-03T10:39:44.932565-08:00","source_repo":"."} -{"id":"bd-fkdw","content_hash":"1249e8ace0618a4ada791f12d46021e0962058245a0ea86d6c1777fc320a8070","title":"Update bash-agent example with Agent Mail integration","description":"Add Agent Mail integration to examples/bash-agent/agent.sh using curl for HTTP calls.\n\nAcceptance Criteria:\n- Health check function using curl\n- Reserve issue before claiming\n- Send notifications on status change\n- Release on completion\n- Graceful degradation if curl fails\n- No bash errors when Agent Mail unavailable\n\nFile: examples/bash-agent/agent.sh","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-07T22:42:28.722048-08:00","updated_at":"2025-11-08T01:09:25.900138-08:00","closed_at":"2025-11-08T01:09:25.900138-08:00","source_repo":".","dependencies":[{"issue_id":"bd-fkdw","depends_on_id":"bd-m9th","type":"blocks","created_at":"2025-11-07T23:04:01.398259-08:00","created_by":"daemon"}]} -{"id":"bd-fme8","content_hash":"dbabbcb6c427428541722427e9a591f4fe862696b7145b5e451a757fedc72681","title":"Fix CI failures (Coverage, Windows, Nix)","description":"CI is failing, apparently on files not touched in the PRs - #327 , #305 .\n\nDiagnosis summary:\n1. Coverage gate in .github/workflows/ci.yml fails if total statements \u003c50%; current PR run shows 46.9%.\n2. The new hook plumbing in TestInstallHooks() asserts POSIX executable bits, which fails on Windows.\n3. SQLite resurrection tests keep connections open, preventing TempDir cleanup on Windows.\n4. The nix run step launches bd without creating .beads, causing failure.\n","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-20T18:55:34.257906-05:00","updated_at":"2025-11-20T19:04:42.221262-05:00","closed_at":"2025-11-20T19:04:42.221262-05:00","source_repo":"."} +{"id":"bd-fkdw","content_hash":"aae326186151d20e26b9b5c34efa43d9261ffd0fe0d6f4de843f951e4c813886","title":"Update bash-agent example with Agent Mail integration","description":"Add Agent Mail integration to examples/bash-agent/agent.sh using curl for HTTP calls.\n\nAcceptance Criteria:\n- Health check function using curl\n- Reserve issue before claiming\n- Send notifications on status change\n- Release on completion\n- Graceful degradation if curl fails\n- No bash errors when Agent Mail unavailable\n\nFile: examples/bash-agent/agent.sh","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-07T22:42:28.722048-08:00","updated_at":"2025-11-08T01:51:40.350436-08:00","closed_at":"2025-11-08T01:09:25.900138-08:00","source_repo":".","dependencies":[{"issue_id":"bd-fkdw","depends_on_id":"bd-m9th","type":"blocks","created_at":"2025-11-07T23:04:01.398259-08:00","created_by":"daemon"}]} +{"id":"bd-fme8","content_hash":"4f59ed7c49b3375b9584f2f629b5fe5a3c1a5cff08ac7b778b291bc369b7ef98","title":"Fix CI failures (Coverage, Windows, Nix)","description":"CI is failing, apparently on files not touched in the PRs - #327 , #305 .\n\nDiagnosis summary:\n1. Coverage gate in .github/workflows/ci.yml fails if total statements \u003c50%; current PR run shows 46.9%.\n2. The new hook plumbing in TestInstallHooks() asserts POSIX executable bits, which fails on Windows.\n3. SQLite resurrection tests keep connections open, preventing TempDir cleanup on Windows.\n4. The nix run step launches bd without creating .beads, causing failure.\n","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-20T18:55:34.257906-05:00","updated_at":"2025-11-20T19:04:42.221262-05:00","closed_at":"2025-11-20T19:04:42.221262-05:00","source_repo":"."} {"id":"bd-fsb1","content_hash":"a519fdd6d0ca6f70a177c2cb9441994b28d4bc2fe51a663532d4067caf126049","title":"Test issue","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T11:21:51.383077-08:00","updated_at":"2025-11-05T11:21:56.888913-08:00","closed_at":"2025-11-05T11:21:56.888913-08:00","source_repo":".","labels":["test","urgent"]} -{"id":"bd-fzbg","content_hash":"88e15598aa82ec06036be38a9e8f6503c131349ba39d8373e11107dc46a8002d","title":"Update python-agent example with Agent Mail integration","description":"Modify examples/python-agent/agent.py to use Agent Mail adapter at 4 integration points.\n\nAcceptance Criteria:\n- Import and initialize adapter\n- Check inbox before find_ready_work()\n- Reserve issue before claim_task()\n- Notify on status changes\n- Release reservation on complete_task()\n- Works identically when Agent Mail disabled\n- No changes required to core Beads CLI\n\nFile: examples/python-agent/agent.py","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-07T22:42:28.661337-08:00","updated_at":"2025-11-08T00:20:35.213902-08:00","closed_at":"2025-11-08T00:20:35.213902-08:00","source_repo":".","dependencies":[{"issue_id":"bd-fzbg","depends_on_id":"bd-m9th","type":"blocks","created_at":"2025-11-07T23:04:01.315332-08:00","created_by":"daemon"}]} -{"id":"bd-g3ey","content_hash":"e59ecb28d0ceade96c076688de71f5d0022a9b0c0676f3abb1e4e06d90f8f559","title":"bd sync --import-only doesn't update DB mtime causing bd doctor false warning","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-08T15:18:16.761052+01:00","updated_at":"2025-11-08T15:58:37.147425-08:00","closed_at":"2025-11-08T13:12:01.718252-08:00","source_repo":"."} -{"id":"bd-g5p7","content_hash":"3becaf2a661ffb7c95682f76d2ddd0fb6f31ffa7993f130eed257be3817bf48e","title":"Extract duplicated validation logic from CLI commands","description":"~150 lines of identical validation logic duplicated between cmd_create.go and cmd_update.go\n\nDuplication found:\n- validateBeadFields(): 2 identical copies (50+ lines each) \n- parseTimeWithDefault(): 2 identical copies (30 lines each)\n- Flag definitions: 15+ duplicate registrations\n\nSolution: Extract to shared packages:\n- internal/validation/bead.go - Centralized validation\n- internal/utils/time.go - Consolidate time parsing (already exists)\n- cmd/bd/flags.go - Shared flag registration\n\nImpact: Changes require touching 2+ files; high risk of inconsistency; steep learning curve\n\nEffort: 4-6 hours","status":"open","priority":0,"issue_type":"task","created_at":"2025-11-16T14:51:10.159953-08:00","updated_at":"2025-11-16T14:51:10.159953-08:00","source_repo":"."} +{"id":"bd-fzbg","content_hash":"4bf5f57a0a66a94d76882e337c25d49e807ec79257a0aeb636fb81d963493860","title":"Update python-agent example with Agent Mail integration","description":"Modify examples/python-agent/agent.py to use Agent Mail adapter at 4 integration points.\n\nAcceptance Criteria:\n- Import and initialize adapter\n- Check inbox before find_ready_work()\n- Reserve issue before claim_task()\n- Notify on status changes\n- Release reservation on complete_task()\n- Works identically when Agent Mail disabled\n- No changes required to core Beads CLI\n\nFile: examples/python-agent/agent.py","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-07T22:42:28.661337-08:00","updated_at":"2025-11-08T01:51:40.350671-08:00","closed_at":"2025-11-08T00:20:35.213902-08:00","source_repo":".","dependencies":[{"issue_id":"bd-fzbg","depends_on_id":"bd-m9th","type":"blocks","created_at":"2025-11-07T23:04:01.315332-08:00","created_by":"daemon"}]} +{"id":"bd-g3ey","content_hash":"e59ecb28d0ceade96c076688de71f5d0022a9b0c0676f3abb1e4e06d90f8f559","title":"bd sync --import-only doesn't update DB mtime causing bd doctor false warning","description":"","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-08T15:18:16.761052+01:00","updated_at":"2025-11-08T13:12:01.718252-08:00","closed_at":"2025-11-08T13:12:01.718252-08:00","source_repo":"."} +{"id":"bd-g5p7","content_hash":"0c38e8846e9fabd6660713b805e3ce08c521738c3732556b8398e7431615221d","title":"Extract duplicated validation logic from CLI commands","description":"~150 lines of identical validation logic duplicated between cmd_create.go and cmd_update.go\n\nDuplication found:\n- validateBeadFields(): 2 identical copies (50+ lines each) \n- parseTimeWithDefault(): 2 identical copies (30 lines each)\n- Flag definitions: 15+ duplicate registrations\n\nSolution: Extract to shared packages:\n- internal/validation/bead.go - Centralized validation\n- internal/utils/time.go - Consolidate time parsing (already exists)\n- cmd/bd/flags.go - Shared flag registration\n\nImpact: Changes require touching 2+ files; high risk of inconsistency; steep learning curve\n\nEffort: 4-6 hours","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-16T14:51:10.159953-08:00","updated_at":"2025-11-20T19:09:26.721215-05:00","closed_at":"2025-11-20T19:09:26.721215-05:00","source_repo":"."} {"id":"bd-g9eu","content_hash":"79fe2f96d06e3f0750b55f323bc104b02de6ab8a745e0bd36cf3425e125af89c","title":"Investigate TestRoutingIntegration failure","description":"TestRoutingIntegration/maintainer_with_SSH_remote failed during pre-commit check with \"expected role maintainer, got contributor\".\nThis occurred while running `go test -short ./...` on darwin/arm64.\nThe failure appears unrelated to storage/sqlite changes.\nNeed to investigate if this is a flaky test or environmental issue.","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-20T15:55:19.337094-08:00","updated_at":"2025-11-20T15:55:19.337094-08:00","source_repo":"."} -{"id":"bd-gart","content_hash":"59c79c06a74374dbc41066d27192584dcd41d75ddc99348613fd80f323be0f20","title":"Debug test 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-08T00:04:35.317835-08:00","updated_at":"2025-11-08T00:06:46.18875-08:00","closed_at":"2025-11-08T00:06:46.18875-08:00","source_repo":"."} +{"id":"bd-gart","content_hash":"c4b3d68ec7d85a26e9c23ef529e4479b4741eade511d17f8f3602d412b0b3f0a","title":"Debug test 2","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-08T00:04:35.317835-08:00","updated_at":"2025-11-08T00:06:46.18875-08:00","closed_at":"2025-11-08T00:06:46.18875-08:00","source_repo":"."} {"id":"bd-gdzd","content_hash":"54a68b8b4c63fd88b33dbf8239de070a3c95f97d4a0aa5f64e694ff1384199b3","title":"Import fails on same-content-different-ID instead of treating as update","description":"## Problem\n\nThe importer still has rename detection (importer.go:482-500) that triggers when same content hash has different IDs. With hash IDs, this shouldn't happen, but when it does (test data, bugs, legacy data), the import fails:\n\n```\nfailed to handle rename bd-ce75 -\u003e bd-5a90: rename collision handling removed - should not occur with hash IDs\n```\n\n## Current Behavior\n\n1. Importer finds same content hash with different IDs\n2. Calls handleRename() (line 490)\n3. handleRename() errors out (line 294): \"rename collision handling removed\"\n4. Import fails\n\n## Expected Behavior\n\nSame content hash + different IDs should be treated as an **update**, not a rename:\n- Keep existing ID (already in database)\n- Update fields if incoming has newer timestamp\n- Discard incoming ID (it's wrong - hash should have generated same ID)\n\n## Impact\n\n- Import fails on legitimate edge cases (test data, data corruption)\n- Cryptic error message\n- Blocks sync operations\n\n## Fix\n\nIn handleRename() or import loop, instead of erroring:\n```go\n// Same content, different ID - treat as update\nif incoming.UpdatedAt.After(existing.UpdatedAt) {\n existing.Status = incoming.Status\n // ... copy other fields\n s.UpdateIssue(ctx, existing)\n}\nresult.Updated++\n```\n\n## Files\n- internal/importer/importer.go:271-294 (handleRename)\n- internal/importer/importer.go:482-500 (rename detection)\n\n## Repro\nImport JSONL with bd-ce75 and bd-5a90 (both \"Test parent issue\" but different content hashes).","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-05T00:27:51.150233-08:00","updated_at":"2025-11-05T01:02:54.469971-08:00","closed_at":"2025-11-05T01:02:54.469979-08:00","source_repo":"."} -{"id":"bd-ggbc","content_hash":"1992acf7c464d446a1bd47c6a4280bd0d69b13dff0804fa8177e985efa997d4f","title":"Update documentation for merge driver auto-config","description":"Update documentation to reflect the new merge driver auto-configuration during `bd init`.\n\n**Files to update:**\n- README.md - Mention merge driver setup in initialization section\n- AGENTS.md - Update onboarding section about merge driver\n- Possibly QUICKSTART.md\n\n**Content:**\n- Explain what the merge driver does\n- Show --skip-merge-driver flag usage\n- Manual installation steps for post-init setup","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T19:27:04.155662-08:00","updated_at":"2025-11-05T19:29:55.188122-08:00","closed_at":"2025-11-05T19:29:55.188122-08:00","source_repo":".","dependencies":[{"issue_id":"bd-ggbc","depends_on_id":"bd-32nm","type":"discovered-from","created_at":"2025-11-05T19:27:04.156491-08:00","created_by":"daemon"}]} -{"id":"bd-gm7p","content_hash":"d4dacf54914a11edf556f347af9f225034fba0c0509ce5bd6349bb8a35e956a6","title":"Use in-memory filesystem for test git operations","description":"Use tmpfs/ramdisk for git operations in tests to reduce I/O overhead.\n\nOptions:\n1. Mount /tmp as tmpfs in CI (GitHub Actions supports this)\n2. Use Go's testing.TB.TempDir() which may already use tmpfs on some systems\n3. Explicitly create ramdisk for tests on macOS\n\nExpected savings: 20-30% reduction in git operation time","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-04T01:24:19.803224-08:00","updated_at":"2025-11-04T10:52:42.722474-08:00","closed_at":"2025-11-04T10:52:42.722474-08:00","source_repo":".","dependencies":[{"issue_id":"bd-gm7p","depends_on_id":"bd-l5gq","type":"blocks","created_at":"2025-11-04T01:24:19.80414-08:00","created_by":"daemon"}]} -{"id":"bd-gpe7","content_hash":"e0358a497f2dc0e6b72e1f88297f54022b3a86ca350516def48a068b3963c7c0","title":"Tests take too long - unacceptable for project size","description":"## Problem\n\nRunning `go test ./internal/importer/... -v` takes an unacceptably long time (minutes). For a project this size, tests should complete in seconds.\n\n## Impact\n\n- Slows down development iteration\n- AI agents waste time waiting for tests\n- Blocks rapid bug fixes and validation\n- Poor developer experience\n\n## Investigation Needed\n\n- Profile which tests are slow\n- Check for unnecessary sleeps, timeouts, or integration tests\n- Look for tests that could be parallelized\n- Consider splitting unit vs integration tests\n\n## Goal\n\nTest suite for a single package should complete in \u003c5 seconds, ideally \u003c2 seconds.","notes":"## Optimizations Applied\n\n1. **Added t.Parallel() to CLI tests** (13 tests) - allows concurrent execution\n2. **Removed unnecessary 200ms sleep** in daemon_autoimport_test.go - Execute() forces auto-import synchronously\n3. **Reduced filesystem settle wait** from 100ms → 50ms on non-Windows platforms\n4. **Optimized debouncer test sleeps** (9 reductions):\n - Before debounce waits: 30ms → 20ms, 20ms → 10ms\n - After debounce waits: 40ms → 35ms, 30ms → 35ms, etc.\n - Thread safety test: 100ms → 70ms\n - Sequential cycles: 50ms → 40ms (3x)\n - Cancel tests: 70-80ms → 60ms\n\n## Results\n\n### cmd/bd package (main improvement target):\n- **Before**: 5+ minutes (timeout)\n- **After**: ~18-20 seconds\n- **Speedup**: ~15-18x faster\n\n### internal/importer package:\n- **After**: \u003c1 second (0.9s)\n\n### Full test suite (with `-short` flag):\n- Most packages complete in \u003c2s\n- Total runtime constrained by sequential integration tests\n\n## Known Issues\n\n- TestConcurrentExternalRefImports hangs due to :memory: connection pool issue (bd-b121)\n- Some sync_branch tests may need sequential execution (git worktree conflicts)","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-05T00:54:47.784504-08:00","updated_at":"2025-11-05T01:41:57.544395-08:00","closed_at":"2025-11-05T01:41:57.544395-08:00","source_repo":"."} +{"id":"bd-ggbc","content_hash":"bfb238f72474f25fcf132603ae45e6c97c7c1e60ad865062bff75f32f54a9135","title":"Update documentation for merge driver auto-config","description":"Update documentation to reflect the new merge driver auto-configuration during `bd init`.\n\n**Files to update:**\n- README.md - Mention merge driver setup in initialization section\n- AGENTS.md - Update onboarding section about merge driver\n- Possibly QUICKSTART.md\n\n**Content:**\n- Explain what the merge driver does\n- Show --skip-merge-driver flag usage\n- Manual installation steps for post-init setup","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T19:27:04.155662-08:00","updated_at":"2025-11-05T19:29:55.188122-08:00","closed_at":"2025-11-05T19:29:55.188122-08:00","source_repo":".","dependencies":[{"issue_id":"bd-ggbc","depends_on_id":"bd-32nm","type":"discovered-from","created_at":"2025-11-05T19:27:04.156491-08:00","created_by":"daemon"}]} +{"id":"bd-gm7p","content_hash":"4bc3ca7545527e791e7282ad7596cb39f024e20fda1845c3498ffef1ba0100fd","title":"Use in-memory filesystem for test git operations","description":"Use tmpfs/ramdisk for git operations in tests to reduce I/O overhead.\n\nOptions:\n1. Mount /tmp as tmpfs in CI (GitHub Actions supports this)\n2. Use Go's testing.TB.TempDir() which may already use tmpfs on some systems\n3. Explicitly create ramdisk for tests on macOS\n\nExpected savings: 20-30% reduction in git operation time","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-04T01:24:19.803224-08:00","updated_at":"2025-11-04T10:52:42.722474-08:00","closed_at":"2025-11-04T10:52:42.722474-08:00","source_repo":".","dependencies":[{"issue_id":"bd-gm7p","depends_on_id":"bd-l5gq","type":"blocks","created_at":"2025-11-04T01:24:19.80414-08:00","created_by":"daemon"}]} +{"id":"bd-gpe7","content_hash":"abafcc321674aa66d99dc353641fe183e510f4b89624adcaf8ffe0cea5ffb1ef","title":"Tests take too long - unacceptable for project size","description":"## Problem\n\nRunning `go test ./internal/importer/... -v` takes an unacceptably long time (minutes). For a project this size, tests should complete in seconds.\n\n## Impact\n\n- Slows down development iteration\n- AI agents waste time waiting for tests\n- Blocks rapid bug fixes and validation\n- Poor developer experience\n\n## Investigation Needed\n\n- Profile which tests are slow\n- Check for unnecessary sleeps, timeouts, or integration tests\n- Look for tests that could be parallelized\n- Consider splitting unit vs integration tests\n\n## Goal\n\nTest suite for a single package should complete in \u003c5 seconds, ideally \u003c2 seconds.","notes":"## Optimizations Applied\n\n1. **Added t.Parallel() to CLI tests** (13 tests) - allows concurrent execution\n2. **Removed unnecessary 200ms sleep** in daemon_autoimport_test.go - Execute() forces auto-import synchronously\n3. **Reduced filesystem settle wait** from 100ms → 50ms on non-Windows platforms\n4. **Optimized debouncer test sleeps** (9 reductions):\n - Before debounce waits: 30ms → 20ms, 20ms → 10ms\n - After debounce waits: 40ms → 35ms, 30ms → 35ms, etc.\n - Thread safety test: 100ms → 70ms\n - Sequential cycles: 50ms → 40ms (3x)\n - Cancel tests: 70-80ms → 60ms\n\n## Results\n\n### cmd/bd package (main improvement target):\n- **Before**: 5+ minutes (timeout)\n- **After**: ~18-20 seconds\n- **Speedup**: ~15-18x faster\n\n### internal/importer package:\n- **After**: \u003c1 second (0.9s)\n\n### Full test suite (with `-short` flag):\n- Most packages complete in \u003c2s\n- Total runtime constrained by sequential integration tests\n\n## Known Issues\n\n- TestConcurrentExternalRefImports hangs due to :memory: connection pool issue (bd-b121)\n- Some sync_branch tests may need sequential execution (git worktree conflicts)","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-05T00:54:47.784504-08:00","updated_at":"2025-11-05T01:41:57.544395-08:00","closed_at":"2025-11-05T01:41:57.544395-08:00","source_repo":"."} {"id":"bd-gz0x","content_hash":"accf3e81a2e27e43c22b26c6aea4a0da418e63876e236cb462803e5700e2095e","title":"Fix daemon exiting after 5s on macOS due to PID 1 parent monitoring","description":"GitHub issue #278 reports that the daemon exits after \u003c=5 seconds on macOS because it incorrectly treats PID 1 (launchd) as a dead parent.\n\nWhen the daemon detaches on macOS, it gets reparented to PID 1 (launchd), which is the init process. The checkParentProcessAlive function was incorrectly treating PID 1 as a sign that the parent died.\n\nFixed by changing the logic to treat PID 1 as a valid parent for detached daemons.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-09T16:15:34.606508-08:00","updated_at":"2025-11-09T16:15:37.46914-08:00","closed_at":"2025-11-09T16:15:37.46914-08:00","source_repo":"."} {"id":"bd-h4hc","content_hash":"43c11155d74ce32355129c3aac019c07279a4d31c0d58334e9fd5cb100108373","title":"Test child issue","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T13:00:42.368282-08:00","updated_at":"2025-11-05T13:01:11.64526-08:00","closed_at":"2025-11-05T13:01:11.64526-08:00","source_repo":"."} {"id":"bd-hpt5","content_hash":"68813818e69aa94128685887fe733adce22c0a373b2758219ae863340d4bf9d2","title":"show commit hash in 'bd version' when built from source'\n","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-13T13:26:14.662089379-07:00","updated_at":"2025-11-14T09:18:09.721428859-07:00","closed_at":"2025-11-14T09:18:09.721428859-07:00","source_repo":"."} {"id":"bd-hsl3","content_hash":"e0cccbc75edfcb54e0e6c3bd6749d7544327553a19773cf8b97edfafc11b2187","title":"Updated title","description":"","status":"closed","priority":0,"issue_type":"feature","created_at":"2025-11-07T19:07:12.92354-08:00","updated_at":"2025-11-07T22:07:17.346243-08:00","closed_at":"2025-11-07T21:57:59.911411-08:00","source_repo":"."} -{"id":"bd-htfk","content_hash":"d85b7087f79c20ebb4a6f59c38e9b44b2c19416b142e909a9a6db6a4d7aa0b65","title":"Measure notification latency vs git sync","description":"Benchmark end-to-end latency for status updates to propagate between agents using both methods.\n\nAcceptance Criteria:\n- Measure git sync latency (commit → push → pull → import)\n- Measure Agent Mail latency (send_message → fetch_inbox)\n- Document latency distribution (p50, p95, p99)\n- Verify \u003c100ms claim for Agent Mail\n- Compare against 1-5s baseline for git\n\nSuccess Metric: Agent Mail latency \u003c 100ms, git sync latency \u003e 1000ms","notes":"Latency benchmark completed. Results documented in latency_results.md:\n- Git sync: 2000-5000ms (full cycle with network)\n- Agent Mail: \u003c100ms (HTTP API round-trip)\n- Confirms 20-50x latency reduction claim","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:42:00.031959-08:00","updated_at":"2025-11-08T00:05:02.04159-08:00","closed_at":"2025-11-08T00:05:02.04159-08:00","source_repo":".","dependencies":[{"issue_id":"bd-htfk","depends_on_id":"bd-muls","type":"blocks","created_at":"2025-11-07T23:03:52.969505-08:00","created_by":"daemon"},{"issue_id":"bd-htfk","depends_on_id":"bd-spmx","type":"parent-child","created_at":"2025-11-08T00:02:47.918425-08:00","created_by":"daemon"}]} +{"id":"bd-htfk","content_hash":"b3c6670c8f66da01492c6f827acdc99c392ef1456e1e8f433ceaf469c8165e5c","title":"Measure notification latency vs git sync","description":"Benchmark end-to-end latency for status updates to propagate between agents using both methods.\n\nAcceptance Criteria:\n- Measure git sync latency (commit → push → pull → import)\n- Measure Agent Mail latency (send_message → fetch_inbox)\n- Document latency distribution (p50, p95, p99)\n- Verify \u003c100ms claim for Agent Mail\n- Compare against 1-5s baseline for git\n\nSuccess Metric: Agent Mail latency \u003c 100ms, git sync latency \u003e 1000ms","notes":"Latency benchmark completed. Results documented in latency_results.md:\n- Git sync: 2000-5000ms (full cycle with network)\n- Agent Mail: \u003c100ms (HTTP API round-trip)\n- Confirms 20-50x latency reduction claim","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:42:00.031959-08:00","updated_at":"2025-11-08T01:51:40.350905-08:00","closed_at":"2025-11-08T00:05:02.04159-08:00","source_repo":".","dependencies":[{"issue_id":"bd-htfk","depends_on_id":"bd-muls","type":"blocks","created_at":"2025-11-07T23:03:52.969505-08:00","created_by":"daemon"},{"issue_id":"bd-htfk","depends_on_id":"bd-spmx","type":"parent-child","created_at":"2025-11-08T00:02:47.918425-08:00","created_by":"daemon"}]} {"id":"bd-hv01","content_hash":"293d9078e613afae960df6681f8c8d7a5f6ba28ddd2708e9c7af2010ef76b407","title":"Deletions not propagated across multi-workspace sync","description":"## Problem\n\nWhen working with multiple beads workspaces (clones) sharing the same git remote, deleted issues keep coming back.\n\n## Reproduction\n\n1. Clone A deletes issue `bd-xyz` via `bd delete bd-xyz --force`\n2. Clone A daemon syncs and pushes to GitHub\n3. Clone B still has `bd-xyz` in its database\n4. Clone B daemon exports and pushes its JSONL\n5. Clone A pulls and imports → `bd-xyz` comes back!\n\n## Root Cause\n\n**No deletion tracking mechanism.** The system has no way to distinguish between:\n- \"Issue doesn't exist in JSONL because it was deleted\" \n- \"Issue doesn't exist in JSONL because the export is stale\"\n\nImport treats missing issues as \"not in this export\" rather than \"explicitly deleted.\"\n\n## Solution Options\n\n1. **Tombstone records** - Keep deleted issues in JSONL with `\"status\":\"deleted\"` or `\"deleted_at\"` field\n2. **Deletion log** - Separate `.beads/deletions.jsonl` file tracking all deleted IDs\n3. **Three-way merge** - Import compares: DB state, old JSONL, new JSONL\n4. **Manual conflict resolution** - Detect resurrection and prompt user\n\n## Related\n\n- Similar to resurrection logic for orphaned children (bd-cc4f)\n- beads-merge tool handles this better with 3-way merge","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-05T18:34:24.094474-08:00","updated_at":"2025-11-06T18:19:16.233949-08:00","closed_at":"2025-11-06T17:52:24.860716-08:00","source_repo":".","dependencies":[{"issue_id":"bd-hv01","depends_on_id":"bd-qqvw","type":"blocks","created_at":"2025-11-05T18:42:35.485002-08:00","created_by":"daemon"}]} {"id":"bd-hw3c","content_hash":"83359ec96e2b8fc9ce2ece25d56bfbc1c1f948b27dfa56cc7b3715dc86c6d024","title":"Fix GH #227: bd edit broken pipe errors","description":"bd edit command gets \"broken pipe\" errors when using daemon mode because editing can take minutes and the daemon connection times out.\n\nSolution: Force bd edit to always use direct mode (--no-daemon) since it's human-only and interactive.\n\nFixed by checking cmd.Name() == \"edit\" in main.go PersistentPreRun and setting noDaemon = true.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-05T14:36:04.289431-08:00","updated_at":"2025-11-05T14:36:08.103964-08:00","closed_at":"2025-11-05T14:36:08.103964-08:00","source_repo":"."} -{"id":"bd-ic1m","content_hash":"280ef111d6bb7091919aa0c1442ccf6d877dc22d4c0a58d883f6331126833fa9","title":"Benchmark git traffic reduction","description":"Automated benchmark comparing git operations with/without Agent Mail.\n\nAcceptance Criteria:\n- Script that processes 50 issues\n- Counts git operations (pull, commit, push)\n- Generates comparison report\n- Verifies ≥70% reduction\n- Fails if regression detected\n\nFile: tests/benchmarks/git_traffic.py\n\nOutput: Without Agent Mail: 450 git operations, With Agent Mail: 135 git operations, Reduction: 70%","notes":"Implemented automated benchmark script with following features:\n- Processes configurable number of issues (default 50)\n- Compares git operations in two modes: git-only vs Agent Mail\n- Generates detailed comparison report with statistics\n- Exit code reflects pass/fail based on 70% reduction target\n- Results: 98.5% reduction (200 ops → 3 ops) for 50 issues\n\nFiles created:\n- tests/benchmarks/git_traffic.py (main benchmark script)\n- tests/benchmarks/README.md (documentation)\n- tests/benchmarks/git_traffic_50_issues.md (sample results)\n\nThe benchmark vastly exceeds the 70% target, showing 98.5% reduction.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:43:21.486095-08:00","updated_at":"2025-11-08T02:08:19.648473-08:00","closed_at":"2025-11-08T02:08:19.648473-08:00","source_repo":".","dependencies":[{"issue_id":"bd-ic1m","depends_on_id":"bd-fzbg","type":"blocks","created_at":"2025-11-07T22:43:21.486966-08:00","created_by":"daemon"},{"issue_id":"bd-ic1m","depends_on_id":"bd-nemp","type":"blocks","created_at":"2025-11-07T22:43:21.487388-08:00","created_by":"daemon"}]} +{"id":"bd-ic1m","content_hash":"b837a8183ba2b636a3116deb35aa96d99fee84eabdfc8f8d93a91415c3ff4490","title":"Benchmark git traffic reduction","description":"Automated benchmark comparing git operations with/without Agent Mail.\n\nAcceptance Criteria:\n- Script that processes 50 issues\n- Counts git operations (pull, commit, push)\n- Generates comparison report\n- Verifies ≥70% reduction\n- Fails if regression detected\n\nFile: tests/benchmarks/git_traffic.py\n\nOutput: Without Agent Mail: 450 git operations, With Agent Mail: 135 git operations, Reduction: 70%","notes":"Implemented automated benchmark script with following features:\n- Processes configurable number of issues (default 50)\n- Compares git operations in two modes: git-only vs Agent Mail\n- Generates detailed comparison report with statistics\n- Exit code reflects pass/fail based on 70% reduction target\n- Results: 98.5% reduction (200 ops → 3 ops) for 50 issues\n\nFiles created:\n- tests/benchmarks/git_traffic.py (main benchmark script)\n- tests/benchmarks/README.md (documentation)\n- tests/benchmarks/git_traffic_50_issues.md (sample results)\n\nThe benchmark vastly exceeds the 70% target, showing 98.5% reduction.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:43:21.486095-08:00","updated_at":"2025-11-08T02:20:46.951473-08:00","closed_at":"2025-11-08T02:08:19.648473-08:00","source_repo":".","dependencies":[{"issue_id":"bd-ic1m","depends_on_id":"bd-fzbg","type":"blocks","created_at":"2025-11-07T22:43:21.486966-08:00","created_by":"daemon"},{"issue_id":"bd-ic1m","depends_on_id":"bd-nemp","type":"blocks","created_at":"2025-11-07T22:43:21.487388-08:00","created_by":"daemon"}]} {"id":"bd-ihp9","content_hash":"e66bdd32aeb5a67440da6cb06bec0da001d28f123c34c2559352f7c98a6b2381","title":"Fix FOREIGN KEY constraint failures in AddComment and ApplyCompaction","description":"The 'CloseIssue', 'UpdateIssueID', and 'RemoveLabel' methods were fixed in PR #348 to prevent foreign key constraint failures when operating on non-existent issues.\n\nHowever, the Oracle identified two other methods that follow the same problematic pattern:\n1. `AddComment` (in `internal/storage/sqlite/events.go`)\n2. `ApplyCompaction` (in `internal/storage/sqlite/compact.go`)\n\nThese methods attempt to insert an event record after updating the issue, without verifying that the issue update actually affected any rows. This leads to a foreign key constraint failure if the issue does not exist.\n\nWe need to:\n1. Create reproduction tests for these failure cases\n2. Apply the same fix pattern: check `RowsAffected()` after the update, and return a proper \"issue not found\" error if it is 0, before attempting to insert the event.\n3. Standardize the error message format to \"issue %s not found\" or \"issue not found: %s\" for consistency.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-20T09:49:55.090644-08:00","updated_at":"2025-11-20T09:53:54.466769-08:00","closed_at":"2025-11-20T09:53:54.466769-08:00","source_repo":"."} {"id":"bd-iou5","content_hash":"4aaf92c783a9ff8acc47ec4a03409cfb9df9259ff73b184013422445bbd10932","title":"Detect and warn about outdated git hooks","description":"Users may have outdated git hooks installed that reference removed flags (e.g., --resolve-collisions). bd should detect this and warn users to reinstall.","design":"\n- Add version comments to hook templates (e.g., # bd-hooks-v0.21.0)\n- Check during 'bd info' or 'bd daemon start' (not every command to avoid overhead)\n- Compare installed hook version against current bd version\n- Warn with clear message: 'Git hooks are outdated (v0.X.Y), run: examples/git-hooks/install.sh'\n- Could also check if hooks exist but aren't installed at all","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-06T13:59:45.778781-08:00","updated_at":"2025-11-06T15:02:16.928192-08:00","closed_at":"2025-11-06T15:02:16.928192-08:00","source_repo":"."} {"id":"bd-iov0","content_hash":"6a7daf8069628210263fd1fdbf6b9890beab65b764bf0b019c1bb2bc104d5986","title":"Document -short flag in testing guide","description":"Add documentation about the -short flag and how it's used to skip slow tests. Should explain that developers can run 'go test -short ./...' for fast iteration and 'go test ./...' for full coverage.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-06T17:30:49.618187-08:00","updated_at":"2025-11-06T20:06:49.220061-08:00","closed_at":"2025-11-06T19:41:08.643188-08:00","source_repo":"."} @@ -444,108 +2905,108 @@ {"id":"bd-iye7","content_hash":"1554b026ccacde081eb05d3889943d95ae9c75a21d3f06c346c57cbe2391dc46","title":"Add path normalization to getMultiRepoJSONLPaths()","description":"From bd-xo6b code review: getMultiRepoJSONLPaths() does not handle non-standard paths correctly.\n\nProblems:\n- No tilde expansion: ~/repos/foo treated as literal path\n- No absolute path conversion: ../other-repo breaks if working directory changes\n- No duplicate detection: If Primary=. and Additional=[.], same JSONL processed twice\n- No empty string handling: Empty paths create invalid /.beads/issues.jsonl\n\nImpact:\nConfig with tilde or relative paths will fail\n\nFix needed:\n1. Use filepath.Abs() for all paths\n2. Add tilde expansion via os.UserHomeDir()\n3. Deduplicate paths (use map to track seen paths)\n4. Filter out empty strings\n5. Validate paths exist and are readable\n\nFiles:\n- cmd/bd/deletion_tracking.go:333-358 (getMultiRepoJSONLPaths function)","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-06T19:31:51.882743-08:00","updated_at":"2025-11-06T19:35:41.246311-08:00","closed_at":"2025-11-06T19:35:41.246311-08:00","source_repo":".","dependencies":[{"issue_id":"bd-iye7","depends_on_id":"bd-xo6b","type":"discovered-from","created_at":"2025-11-06T19:32:12.267906-08:00","created_by":"daemon"}]} {"id":"bd-j7e2","content_hash":"aeb3aec5ebb3b7554949f7161f58408c445983c993aaa5b31e4df93b083cf19c","title":"RPC diagnostics: BD_RPC_DEBUG timing logs","description":"Add lightweight diagnostic logging for RPC connection attempts:\n- BD_RPC_DEBUG=1 prints to stderr:\n - Socket path being dialed\n - Socket exists check result \n - Dial start/stop time\n - Connection outcome\n- Improve bd daemon --status messaging when lock not held\n\nThis helps field triage of connection issues without verbose daemon logs.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-07T16:42:12.772364-08:00","updated_at":"2025-11-07T22:07:17.346817-08:00","closed_at":"2025-11-07T21:29:32.243458-08:00","source_repo":".","dependencies":[{"issue_id":"bd-j7e2","depends_on_id":"bd-ndyz","type":"discovered-from","created_at":"2025-11-07T16:42:12.773714-08:00","created_by":"daemon"}]} {"id":"bd-jijf","content_hash":"9ecadb3d67b00337d8822ace5378edfe9b3baaa4e64a9e7edc5a2b43d82d9caf","title":"Fix: --parent flag doesn't create parent-child dependency","description":"When using `bd create --parent \u003cid\u003e`, the code generates a hierarchical child ID (e.g., bd-123.1) but never creates a parent-child dependency. This causes `bd epic status` to show zero children even though child issues exist.\n\nRoot cause: create.go generates child ID using store.GetNextChildID() but never calls store.AddDependency() with type parent-child.\n\nFix: After creating the issue when parentID is set, automatically add a parent-child dependency linking child -\u003e parent.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-15T13:15:22.138854-08:00","updated_at":"2025-11-15T13:18:29.301788-08:00","closed_at":"2025-11-15T13:18:29.301788-08:00","source_repo":"."} -{"id":"bd-jjua","content_hash":"40e73380589198a2e43bc484c7d55dd1d3bef620dbc1529ddaf54ca9282284e4","title":"Auto-invoke 3-way merge for JSONL conflicts","description":"Currently when git pull encounters merge conflicts in .beads/issues.jsonl, the post-merge hook fails with an error message pointing users to manual resolution or the beads-merge tool.\n\nThis is a poor user experience - the conflict detection is working, but we should automatically invoke the advanced 3-way merging instead of just telling users about it.\n\n**Current behavior:**\n- Detect conflict markers in JSONL\n- Display error with manual resolution options\n- Exit with failure\n\n**Desired behavior:**\n- Detect conflict markers in JSONL\n- Automatically invoke beads-merge 3-way merge\n- Only fail if automatic merge cannot resolve the conflicts\n\n**Reference:**\n- beads-merge tool: https://github.com/neongreen/mono/tree/main/beads-merge\n- Error occurs in post-merge hook during bd sync after git pull","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-08T03:09:18.258708-08:00","updated_at":"2025-11-08T03:15:55.529652-08:00","closed_at":"2025-11-08T03:15:55.529652-08:00","source_repo":".","comments":[{"id":14,"issue_id":"bd-jjua","author":"stevey","text":"Implemented automatic 3-way merge resolution for JSONL conflicts.\n\n**Changes Made:**\n\n1. **Modified conflict detection in cmd/bd/import.go (lines 105-152)**\n - When git conflict markers are detected, instead of immediately failing, the system now attempts automatic resolution\n - Calls new `attemptAutoMerge()` function to invoke bd merge tool\n - If auto-merge succeeds, restarts import with the merged JSONL\n - If auto-merge fails, falls back to displaying manual resolution instructions\n\n2. **Added attemptAutoMerge() function (lines 469-585)**\n - Extracts the three git conflict stages: base (:1), ours/left (:2), theirs/right (:3)\n - Creates temporary files for each version\n - Invokes `bd merge` command to perform intelligent 3-way merge\n - Writes merged result back to original file\n - Auto-stages the resolved file with git add\n\n**How it works:**\n- When git pull creates conflicts in .beads/issues.jsonl\n- The post-merge hook runs `bd sync --import-only`\n- Import detects conflict markers on line scan\n- Automatically extracts conflict versions from git\n- Runs bd merge tool with field-level merge intelligence\n- If successful, continues import seamlessly\n- Only fails if conflicts cannot be auto-resolved\n\n**Benefits:**\n- Zero user intervention for most JSONL conflicts\n- Leverages existing bd merge 3-way merge logic\n- Maintains data integrity with field-level merging\n- Graceful fallback to manual resolution when needed\n\n**Testing:**\n- Code builds successfully\n- Ready for real-world testing on next git pull conflict\n\nThe solution transforms the error into an automatic resolution step, significantly improving user experience.","created_at":"2025-11-08T21:17:08Z"},{"id":15,"issue_id":"bd-jjua","author":"stevey","text":"**Discovery: Git merge driver was already configured but not being triggered**\n\nThe 3-way merge tool was properly vendored and `bd init` does configure the git merge driver:\n- `git config merge.beads.driver \"bd merge %A %O %L %R\"`\n- `.gitattributes` entry for `.beads/beads.jsonl merge=beads`\n\nThis should have prevented conflicts entirely by auto-invoking `bd merge` during git merge operations.\n\n**Root Cause:**\nHowever, the automatic merge driver doesn't help when conflicts reach the import stage, which happens in the post-merge hook flow:\n1. Git pull encounters conflicts\n2. Post-merge hook runs `bd sync --import-only`\n3. Import reads the JSONL file and detects conflict markers\n4. Previous behavior: fail with error message\n\nThe merge driver prevents conflicts during git operations, but if conflicts somehow make it through (or if the merge driver itself produces conflicts that it can't resolve), the import process needed fallback handling.\n\n**Our Solution:**\nAdded automatic 3-way merge invocation at the import stage as a safety net. This provides defense-in-depth:\n- Primary: git merge driver prevents most conflicts\n- Fallback: import auto-merge handles any that slip through\n\n**Bonus Discovery:**\nFound that `.beads/issues.jsonl` is a zombie file that keeps reappearing despite multiple removal attempts in git history. Renamed it to `.beads/issues.jsonl.zombie-do-not-use` with a warning message. The canonical file is `.beads/beads.jsonl`.","created_at":"2025-11-08T21:17:08Z"}]} +{"id":"bd-jjua","content_hash":"40e73380589198a2e43bc484c7d55dd1d3bef620dbc1529ddaf54ca9282284e4","title":"Auto-invoke 3-way merge for JSONL conflicts","description":"Currently when git pull encounters merge conflicts in .beads/issues.jsonl, the post-merge hook fails with an error message pointing users to manual resolution or the beads-merge tool.\n\nThis is a poor user experience - the conflict detection is working, but we should automatically invoke the advanced 3-way merging instead of just telling users about it.\n\n**Current behavior:**\n- Detect conflict markers in JSONL\n- Display error with manual resolution options\n- Exit with failure\n\n**Desired behavior:**\n- Detect conflict markers in JSONL\n- Automatically invoke beads-merge 3-way merge\n- Only fail if automatic merge cannot resolve the conflicts\n\n**Reference:**\n- beads-merge tool: https://github.com/neongreen/mono/tree/main/beads-merge\n- Error occurs in post-merge hook during bd sync after git pull","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-08T03:09:18.258708-08:00","updated_at":"2025-11-08T03:15:55.529652-08:00","closed_at":"2025-11-08T03:15:55.529652-08:00","source_repo":".","comments":[{"id":7,"issue_id":"bd-jjua","author":"stevey","text":"Implemented automatic 3-way merge resolution for JSONL conflicts.\n\n**Changes Made:**\n\n1. **Modified conflict detection in cmd/bd/import.go (lines 105-152)**\n - When git conflict markers are detected, instead of immediately failing, the system now attempts automatic resolution\n - Calls new `attemptAutoMerge()` function to invoke bd merge tool\n - If auto-merge succeeds, restarts import with the merged JSONL\n - If auto-merge fails, falls back to displaying manual resolution instructions\n\n2. **Added attemptAutoMerge() function (lines 469-585)**\n - Extracts the three git conflict stages: base (:1), ours/left (:2), theirs/right (:3)\n - Creates temporary files for each version\n - Invokes `bd merge` command to perform intelligent 3-way merge\n - Writes merged result back to original file\n - Auto-stages the resolved file with git add\n\n**How it works:**\n- When git pull creates conflicts in .beads/issues.jsonl\n- The post-merge hook runs `bd sync --import-only`\n- Import detects conflict markers on line scan\n- Automatically extracts conflict versions from git\n- Runs bd merge tool with field-level merge intelligence\n- If successful, continues import seamlessly\n- Only fails if conflicts cannot be auto-resolved\n\n**Benefits:**\n- Zero user intervention for most JSONL conflicts\n- Leverages existing bd merge 3-way merge logic\n- Maintains data integrity with field-level merging\n- Graceful fallback to manual resolution when needed\n\n**Testing:**\n- Code builds successfully\n- Ready for real-world testing on next git pull conflict\n\nThe solution transforms the error into an automatic resolution step, significantly improving user experience.","created_at":"2025-11-12T18:57:44Z"},{"id":8,"issue_id":"bd-jjua","author":"stevey","text":"**Discovery: Git merge driver was already configured but not being triggered**\n\nThe 3-way merge tool was properly vendored and `bd init` does configure the git merge driver:\n- `git config merge.beads.driver \"bd merge %A %O %L %R\"`\n- `.gitattributes` entry for `.beads/beads.jsonl merge=beads`\n\nThis should have prevented conflicts entirely by auto-invoking `bd merge` during git merge operations.\n\n**Root Cause:**\nHowever, the automatic merge driver doesn't help when conflicts reach the import stage, which happens in the post-merge hook flow:\n1. Git pull encounters conflicts\n2. Post-merge hook runs `bd sync --import-only`\n3. Import reads the JSONL file and detects conflict markers\n4. Previous behavior: fail with error message\n\nThe merge driver prevents conflicts during git operations, but if conflicts somehow make it through (or if the merge driver itself produces conflicts that it can't resolve), the import process needed fallback handling.\n\n**Our Solution:**\nAdded automatic 3-way merge invocation at the import stage as a safety net. This provides defense-in-depth:\n- Primary: git merge driver prevents most conflicts\n- Fallback: import auto-merge handles any that slip through\n\n**Bonus Discovery:**\nFound that `.beads/issues.jsonl` is a zombie file that keeps reappearing despite multiple removal attempts in git history. Renamed it to `.beads/issues.jsonl.zombie-do-not-use` with a warning message. The canonical file is `.beads/beads.jsonl`.","created_at":"2025-11-12T18:57:44Z"}]} {"id":"bd-jo38","content_hash":"05e0df789df0a8056258cc1594c3f695d77bb735f2b2ae694d8fbb7c14c51bc9","title":"Add WaitGroup tracking to FileWatcher goroutines","description":"FileWatcher spawns goroutines without WaitGroup tracking, causing race condition on shutdown.\n\nLocation: cmd/bd/daemon_watcher.go:123-182, 215-291\n\nProblem:\n- Goroutines spawned without sync.WaitGroup\n- Close() cancels context but doesn't wait for goroutines to exit\n- Race condition: goroutine may access fw.debouncer during Close() cleanup\n- No guarantee goroutine stopped before fw.watcher.Close() is called\n\nSolution:\n- Add sync.WaitGroup field to FileWatcher\n- Track goroutines with wg.Add(1) and defer wg.Done()\n- Call wg.Wait() in Close() before cleanup\n\nImpact: Race condition on daemon shutdown; potential panic\n\nEffort: 2 hours","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-16T14:51:38.591371-08:00","updated_at":"2025-11-16T15:04:00.466334-08:00","closed_at":"2025-11-16T15:04:00.466334-08:00","source_repo":"."} {"id":"bd-jx90","content_hash":"3dfa306c43d7febfbd072d4bb5c1b6018f8a7301380bb128f53abb0eca5deb65","title":"Add simple cleanup command to delete closed issues","description":"Users want a simple command to delete all closed issues without requiring Anthropic API key (unlike compact). Requested in GH #243.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-07T00:26:30.372137-08:00","updated_at":"2025-11-07T22:07:17.347122-08:00","closed_at":"2025-11-07T22:05:16.325863-08:00","source_repo":"."} {"id":"bd-k0j9","content_hash":"52d1e6f87bd7655018bd89dbbbaf8da66bdcba45de6138fd237810365a04606a","title":"Test dependency parent","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T11:23:02.505901-08:00","updated_at":"2025-11-05T11:23:20.91305-08:00","closed_at":"2025-11-05T11:23:20.91305-08:00","source_repo":"."} {"id":"bd-k58","content_hash":"cc90fb20e7bd178b52133d4d0f8781dce2debb46519674ae6356291d597fc13d","title":"Proposal workflow (propose/withdraw/accept)","description":"Implement commands and state machine for moving issues between personal planning repos and canonical upstream repos, enabling contributors to propose work without polluting PRs.","design":"Commands:\n- bd propose \u003cid\u003e [--target \u003crepo\u003e] - Move issue to target repo\n- bd withdraw \u003cid\u003e - Un-propose (move back)\n- bd accept \u003cid\u003e - Maintainer accepts proposal\n\nVisibility states:\n- local: Personal planning only\n- proposed: Staged for upstream PR\n- canonical: Accepted by upstream (default for existing)\n\nOptional visibility field (backward compatible, defaults to canonical)","acceptance_criteria":"1. bd propose moves issue from planning to primary repo\n2. bd withdraw reverses proposal\n3. bd accept (maintainer) finalizes acceptance\n4. Visibility field tracks state (local/proposed/canonical)\n5. Backward compatible - existing issues default to canonical\n6. State transitions are atomic and git-tracked","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-04T11:21:41.113647-08:00","updated_at":"2025-11-05T00:08:42.814698-08:00","closed_at":"2025-11-05T00:08:42.814699-08:00","source_repo":".","dependencies":[{"issue_id":"bd-k58","depends_on_id":"bd-4ms","type":"parent-child","created_at":"2025-11-04T11:22:21.811261-08:00","created_by":"daemon"}]} -{"id":"bd-kazt","content_hash":"a3bd467bc111fa74cf6fc72e2622cc3186f736f6aa25bd4a00a8e256cd042fa6","title":"Add tests for 3-way merge scenarios","description":"Comprehensive test coverage for merge logic.\n\n**Test cases**:\n- Simple field updates (left vs right)\n- Dependency merging (union + dedup)\n- Timestamp handling (max wins)\n- Deletion detection (deleted in one, modified in other)\n- Conflict generation (incompatible changes)\n- Issue resurrection prevention (bd-hv01 regression test)\n\n**Files**:\n- `internal/merge/merge_test.go`\n- `cmd/bd/merge_test.go`","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T18:42:20.472275-08:00","updated_at":"2025-11-06T15:52:41.863426-08:00","closed_at":"2025-11-06T15:52:41.863426-08:00","source_repo":".","dependencies":[{"issue_id":"bd-kazt","depends_on_id":"bd-qqvw","type":"parent-child","created_at":"2025-11-05T18:42:28.740517-08:00","created_by":"daemon"},{"issue_id":"bd-kazt","depends_on_id":"bd-oif6","type":"blocks","created_at":"2025-11-05T18:42:35.469582-08:00","created_by":"daemon"}]} -{"id":"bd-kb4g","content_hash":"e68405211ed698918001dc1354242971a604bc140a026580f24e2a472747ff8c","title":"TestHooksCheckGitHooks failing - version mismatch (0.23.0 vs 0.23.1)","description":"The test is checking embedded hook versions and expecting 0.23.1, but got 0.23.0. This appears to be a version consistency issue that needs investigation.\n\nTest output:\n```\nHook pre-commit version mismatch: got 0.23.0, want 0.23.1\nHook post-merge version mismatch: got 0.23.0, want 0.23.1\nHook pre-push version mismatch: got 0.23.0, want 0.23.1\n```\n\nThis is blocking the landing of GH #274 fix.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-09T14:13:14.138537-08:00","updated_at":"2025-11-20T18:54:56.496852-05:00","closed_at":"2025-11-10T10:46:09.94181-08:00","source_repo":"."} +{"id":"bd-kazt","content_hash":"83b14f6b183318f85ae852db1caa593d5f6592a00b168ae057bb31238701d4fa","title":"Add tests for 3-way merge scenarios","description":"Comprehensive test coverage for merge logic.\n\n**Test cases**:\n- Simple field updates (left vs right)\n- Dependency merging (union + dedup)\n- Timestamp handling (max wins)\n- Deletion detection (deleted in one, modified in other)\n- Conflict generation (incompatible changes)\n- Issue resurrection prevention (bd-hv01 regression test)\n\n**Files**:\n- `internal/merge/merge_test.go`\n- `cmd/bd/merge_test.go`","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T18:42:20.472275-08:00","updated_at":"2025-11-06T15:52:41.863426-08:00","closed_at":"2025-11-06T15:52:41.863426-08:00","source_repo":".","dependencies":[{"issue_id":"bd-kazt","depends_on_id":"bd-qqvw","type":"parent-child","created_at":"2025-11-05T18:42:28.740517-08:00","created_by":"daemon"},{"issue_id":"bd-kazt","depends_on_id":"bd-oif6","type":"blocks","created_at":"2025-11-05T18:42:35.469582-08:00","created_by":"daemon"}]} +{"id":"bd-kb4g","content_hash":"75a41b221c5eb8b13dcf8ebae4f58ef698c4375c55046a6beb5677f5911e835d","title":"TestHooksCheckGitHooks failing - version mismatch (0.23.0 vs 0.23.1)","description":"The test is checking embedded hook versions and expecting 0.23.1, but got 0.23.0. This appears to be a version consistency issue that needs investigation.\n\nTest output:\n```\nHook pre-commit version mismatch: got 0.23.0, want 0.23.1\nHook post-merge version mismatch: got 0.23.0, want 0.23.1\nHook pre-push version mismatch: got 0.23.0, want 0.23.1\n```\n\nThis is blocking the landing of GH #274 fix.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-09T14:13:14.138537-08:00","updated_at":"2025-11-20T12:34:57.760462-05:00","closed_at":"2025-11-20T12:34:57.760462-05:00","source_repo":"."} {"id":"bd-kdoh","content_hash":"e017424d5478bc870b37142dba22ab2a4a863819d5d399b9224cc8992a0411b4","title":"Add tests for getMultiRepoJSONLPaths() edge cases","description":"From bd-xo6b code review: Missing test coverage for getMultiRepoJSONLPaths() edge cases.\n\nCurrent test gaps:\n- No tests for empty paths in config\n- No tests for duplicate paths\n- No tests for tilde expansion\n- No tests for relative paths\n- No tests for symlinks\n- No tests for paths with spaces\n- No tests for invalid/non-existent paths\n\nTest cases needed:\n\n1. Empty path handling:\n Primary = empty, Additional = [empty]\n Expected: Should either use . as default or error gracefully\n\n2. Duplicate detection:\n Primary = ., Additional = [., ./]\n Expected: Should return unique paths only\n\n3. Path normalization:\n Primary = ~/repos/main, Additional = [../other, ./foo/../bar]\n Expected: Should expand to absolute canonical paths\n\n4. Partial failure scenarios:\n What if snapshot capture succeeds for repos 1-2 but fails on repo 3?\n Test that system does not end up in inconsistent state\n\nFiles:\n- cmd/bd/deletion_tracking_test.go (add new tests)\n\nDependencies:\nDepends on fixing getMultiRepoJSONLPaths() path normalization first.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-06T19:31:52.921241-08:00","updated_at":"2025-11-06T20:06:49.220334-08:00","closed_at":"2025-11-06T19:53:34.515411-08:00","source_repo":".","dependencies":[{"issue_id":"bd-kdoh","depends_on_id":"bd-xo6b","type":"discovered-from","created_at":"2025-11-06T19:32:12.353459-08:00","created_by":"daemon"},{"issue_id":"bd-kdoh","depends_on_id":"bd-iye7","type":"blocks","created_at":"2025-11-06T19:32:13.688686-08:00","created_by":"daemon"}]} {"id":"bd-kla1","content_hash":"825b411d37b412a1ee19e3ebc246b6725aca0f32b83e65c8b4680fa4ef2193ff","title":"Add bd init --contributor wizard","description":"Interactive wizard for OSS contributor setup. Guides user through: fork workflow setup, separate planning repo configuration, auto-detection of fork relationships, examples of common OSS workflows.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T18:04:29.958409-08:00","updated_at":"2025-11-05T19:27:33.07529-08:00","closed_at":"2025-11-05T18:53:51.267625-08:00","source_repo":".","dependencies":[{"issue_id":"bd-kla1","depends_on_id":"bd-8rd","type":"parent-child","created_at":"2025-11-05T18:04:39.120064-08:00","created_by":"daemon"}]} {"id":"bd-ktng","content_hash":"0a09f3e1549a70817f23aa57444811aaf18683ff9336944ff6e8c277ac5684b4","title":"Optimize CLI test suite - eliminate redundant git init calls","description":"Current: Each of 13 CLI tests calls git init (31s total). Solution: Use single test binary built once in init(), skip git operations where possible, or use mock filesystem.","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-04T11:23:13.660276-08:00","updated_at":"2025-11-04T11:23:13.660276-08:00","source_repo":".","dependencies":[{"issue_id":"bd-ktng","depends_on_id":"bd-l5gq","type":"discovered-from","created_at":"2025-11-04T11:23:13.662102-08:00","created_by":"daemon"}]} -{"id":"bd-ky74","content_hash":"7f26c9b56695baae64c689f961b05eb547aadc1383948edc15b6fa0395d94b0c","title":"Optimize cmd/bd long-mode tests by switching to in-process testing","description":"The long-mode CLI tests in cmd/bd are slow (1.4-4.4 seconds each) because they spawn full bd processes via exec.Command() for every operation.\n\nCurrent approach:\n- Each runBD() call spawns new bd process via exec.Command(testBD, args...)\n- Each process initializes Go runtime, loads SQLite, parses CLI flags\n- Tests run serially (create → update → show → close)\n- Even with --no-daemon flag, there's significant process spawn overhead\n\nExample timing from test run:\n- TestCLI_PriorityFormats: 2.21s\n- TestCLI_Show: 2.26s\n- TestCLI_Ready: 2.29s\n- TestCLI_Import: 4.42s\n\nOptimization strategy:\n1. Convert most tests to in-process testing (call bd functions directly)\n2. Reuse test databases across related operations instead of fresh init each time\n3. Keep a few exec.Command() tests that batch multiple operations to verify the CLI path works end-to-end\n\nThis should reduce test time from ~40s to ~5s for the affected tests.","design":"**Approach:**\n\n1. **In-process testing (majority of tests):**\n - Call bd command functions directly instead of exec.Command()\n - Create helper that invokes root command with test args\n - Capture stdout/stderr in-process\n - Benefits: ~10-20x faster, better stack traces, no process overhead\n\n2. **Database reuse:**\n - Share test database across related operations in same test\n - Only create fresh DB when isolation needed\n - Use subtests to share setup cost\n\n3. **Minimal exec.Command() coverage:**\n - Keep 2-3 tests that use exec.Command() for end-to-end validation\n - Batch multiple operations per test (e.g., TestCLI_EndToEnd runs create+update+close+export)\n - Just validates the binary works when executed normally\n\n**Files to change:**\n- cmd/bd/cli_fast_test.go - convert runBD() helper to in-process\n- cmd/bd/test_helpers_test.go - may need new helpers for in-process execution","acceptance_criteria":"- All tests in cli_fast_test.go still pass\n- Test suite runs in \u0026lt;10s (down from ~40s)\n- At least 1-2 tests still use exec.Command() for end-to-end validation\n- No daemon processes spawned during tests\n- Coverage maintained or improved","notes":"Converted all CLI tests in cli_fast_test.go to use in-process testing via rootCmd.Execute(). Created runBDInProcess() helper that:\n- Calls rootCmd.Execute() directly instead of spawning processes\n- Uses mutex to serialize execution (rootCmd/viper not thread-safe)\n- Properly cleans up global state (store, daemonClient)\n- Returns only stdout to avoid JSON parsing issues with stderr warnings\n\nPerformance results:\n- In-process tests: ~0.6s each (cached even faster)\n- exec.Command tests: ~3.7s each \n- Speedup: ~10x faster\n\nKept TestCLI_EndToEnd() that uses exec.Command for end-to-end validation of the actual binary.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-08T18:40:27.358821-08:00","updated_at":"2025-11-08T18:47:11.107998-08:00","closed_at":"2025-11-08T18:47:11.107998-08:00","source_repo":"."} +{"id":"bd-ky74","content_hash":"d44651203d5d7996a09dbcfbadede992b6364b40ec6c79fa5efe98f0bb26daee","title":"Optimize cmd/bd long-mode tests by switching to in-process testing","description":"The long-mode CLI tests in cmd/bd are slow (1.4-4.4 seconds each) because they spawn full bd processes via exec.Command() for every operation.\n\nCurrent approach:\n- Each runBD() call spawns new bd process via exec.Command(testBD, args...)\n- Each process initializes Go runtime, loads SQLite, parses CLI flags\n- Tests run serially (create → update → show → close)\n- Even with --no-daemon flag, there's significant process spawn overhead\n\nExample timing from test run:\n- TestCLI_PriorityFormats: 2.21s\n- TestCLI_Show: 2.26s\n- TestCLI_Ready: 2.29s\n- TestCLI_Import: 4.42s\n\nOptimization strategy:\n1. Convert most tests to in-process testing (call bd functions directly)\n2. Reuse test databases across related operations instead of fresh init each time\n3. Keep a few exec.Command() tests that batch multiple operations to verify the CLI path works end-to-end\n\nThis should reduce test time from ~40s to ~5s for the affected tests.","design":"**Approach:**\n\n1. **In-process testing (majority of tests):**\n - Call bd command functions directly instead of exec.Command()\n - Create helper that invokes root command with test args\n - Capture stdout/stderr in-process\n - Benefits: ~10-20x faster, better stack traces, no process overhead\n\n2. **Database reuse:**\n - Share test database across related operations in same test\n - Only create fresh DB when isolation needed\n - Use subtests to share setup cost\n\n3. **Minimal exec.Command() coverage:**\n - Keep 2-3 tests that use exec.Command() for end-to-end validation\n - Batch multiple operations per test (e.g., TestCLI_EndToEnd runs create+update+close+export)\n - Just validates the binary works when executed normally\n\n**Files to change:**\n- cmd/bd/cli_fast_test.go - convert runBD() helper to in-process\n- cmd/bd/test_helpers_test.go - may need new helpers for in-process execution","acceptance_criteria":"- All tests in cli_fast_test.go still pass\n- Test suite runs in \u0026lt;10s (down from ~40s)\n- At least 1-2 tests still use exec.Command() for end-to-end validation\n- No daemon processes spawned during tests\n- Coverage maintained or improved","notes":"Converted all CLI tests in cli_fast_test.go to use in-process testing via rootCmd.Execute(). Created runBDInProcess() helper that:\n- Calls rootCmd.Execute() directly instead of spawning processes\n- Uses mutex to serialize execution (rootCmd/viper not thread-safe)\n- Properly cleans up global state (store, daemonClient)\n- Returns only stdout to avoid JSON parsing issues with stderr warnings\n\nPerformance results:\n- In-process tests: ~0.6s each (cached even faster)\n- exec.Command tests: ~3.7s each \n- Speedup: ~10x faster\n\nKept TestCLI_EndToEnd() that uses exec.Command for end-to-end validation of the actual binary.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-08T18:40:27.358821-08:00","updated_at":"2025-11-08T18:47:11.107998-08:00","closed_at":"2025-11-08T18:47:11.107998-08:00","source_repo":"."} {"id":"bd-l4b6","content_hash":"62f76d6f751783139b97ee4b08e1134f6154d0eb5696e0f78ce258f841c9738e","title":"Add tests for bd init --team wizard","description":"Write integration tests for the team wizard:\n- Test branch detection\n- Test sync branch creation\n- Test protected branch workflow\n- Test auto-sync configuration","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T18:58:18.192425-08:00","updated_at":"2025-11-06T20:06:49.22056-08:00","closed_at":"2025-11-06T19:55:39.687439-08:00","source_repo":"."} -{"id":"bd-l5gq","content_hash":"b485239aea61b3265f1be077398e6cade0e35cb6049f5ba829adf4c3dab43f77","title":"Optimize test suite performance - cut runtime by 50%+","description":"## Problem\nTest suite takes ~20.8 seconds, with 95% of time spent in just 2 tests:\n- TestHashIDs_MultiCloneConverge: 11.08s (53%)\n- TestHashIDs_IdenticalContentDedup: 8.78s (42%)\n\nBoth tests in beads_hash_multiclone_test.go perform extensive Git operations (bare repos, multiple clones, sync rounds).\n\n## Goal\nCut total test time by at least 50% (to ~10 seconds or less).\n\n## Analysis\nTests already have some optimizations:\n- --shared --depth=1 --no-tags for fast cloning\n- Disabled hooks, gc, fsync\n- Support -short flag\n\n## Impact\n- Faster development feedback loop\n- Reduced CI costs and time\n- Better developer experience","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-11-04T01:23:14.410648-08:00","updated_at":"2025-11-04T11:23:13.683213-08:00","closed_at":"2025-11-04T11:23:13.683213-08:00","source_repo":"."} +{"id":"bd-l5gq","content_hash":"9c6f895c8e0066874073474fded02d3b1b10a008c3448f1e650e2ff39b5e8e02","title":"Optimize test suite performance - cut runtime by 50%+","description":"## Problem\nTest suite takes ~20.8 seconds, with 95% of time spent in just 2 tests:\n- TestHashIDs_MultiCloneConverge: 11.08s (53%)\n- TestHashIDs_IdenticalContentDedup: 8.78s (42%)\n\nBoth tests in beads_hash_multiclone_test.go perform extensive Git operations (bare repos, multiple clones, sync rounds).\n\n## Goal\nCut total test time by at least 50% (to ~10 seconds or less).\n\n## Analysis\nTests already have some optimizations:\n- --shared --depth=1 --no-tags for fast cloning\n- Disabled hooks, gc, fsync\n- Support -short flag\n\n## Impact\n- Faster development feedback loop\n- Reduced CI costs and time\n- Better developer experience","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-11-04T01:23:14.410648-08:00","updated_at":"2025-11-04T11:23:13.683213-08:00","closed_at":"2025-11-04T11:23:13.683213-08:00","source_repo":"."} {"id":"bd-l954","content_hash":"263dd2111cf0353b307f2e47489aa42ecf607e49b1316b54a6497cad9d3722b0","title":"Performance Testing Framework","description":"Add comprehensive performance testing for beads focusing on optimization guidance and validating 10K+ database scale. Uses standard Go tooling, follows existing patterns, minimal complexity.\n\nComponents:\n- Benchmark suite for critical operations at 10K-20K scale\n- Fixture generator for realistic test data (epic hierarchies, cross-links)\n- User diagnostics via bd doctor --perf\n- Always-on profiling integration\n\nGoals:\n- Identify bottlenecks for optimization work\n- Validate performance at 10K+ issue scale\n- Enable users to collect diagnostics for bug reports\n- Support both SQLite and JSONL import paths","status":"open","priority":2,"issue_type":"epic","created_at":"2025-11-13T22:22:11.203467-08:00","updated_at":"2025-11-13T22:22:11.203467-08:00","source_repo":"."} -{"id":"bd-la9d","content_hash":"298e5922cb0e6460d1cf14d2b7230c63403e72fcb511fb31d3fe2e2f241fd18a","title":"Blocking issue","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-08T02:53:09.97793-08:00","updated_at":"2025-11-08T02:53:09.97793-08:00","closed_at":"2025-11-07T21:55:09.43148-08:00","source_repo":"."} +{"id":"bd-la9d","content_hash":"298e5922cb0e6460d1cf14d2b7230c63403e72fcb511fb31d3fe2e2f241fd18a","title":"Blocking issue","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-20T19:11:50.954966-05:00","updated_at":"2025-11-20T19:11:50.954966-05:00","closed_at":"2025-11-07T21:55:09.43148-08:00","source_repo":"."} {"id":"bd-lm2q","content_hash":"b098ab750578221bdbc099aeb93f1275650c3636a6b93badbcb093a411a82d8d","title":"Fix `bd sync` failure due to daemon auto-export timestamp skew","description":"`bd sync` fails with false-positive \"JSONL is newer than database\" after daemon auto-export.\nRoot Cause: Daemon exports local changes to JSONL, updating its timestamp. `bd sync` sees JSONL.mtime \u003e DB.mtime and assumes external changes, blocking export.\nProposed Fixes:\n1. `bd sync` auto-imports if timestamp matches but content differs (or just auto-imports).\n2. Content-based comparison instead of timestamp only.\n","status":"open","priority":1,"issue_type":"bug","created_at":"2025-11-20T18:56:16.876685-05:00","updated_at":"2025-11-20T18:56:16.876685-05:00","source_repo":"."} {"id":"bd-lwnt","content_hash":"ddfa247870eb3734ffa7a4d0da6fcd4a359d2b48e02d70aad8560ec4bc13afdc","title":"Test P1 priority","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T12:58:38.074112-08:00","updated_at":"2025-11-05T12:58:44.711763-08:00","closed_at":"2025-11-05T12:58:44.711763-08:00","source_repo":"."} {"id":"bd-m62x","content_hash":"45ec0b71d12d639a662267e71bc8febd4c90c6abce22de4795ea949fb6d204ae","title":"Benchmark Suite for Critical Operations","description":"Extend existing benchmark suite with comprehensive benchmarks for critical operations at 10K-20K scale.\n\nExisting benchmarks (keep these):\n- cycle_bench_test.go - Cycle detection up to 5K issues (linear, tree, dense graphs)\n- compact_bench_test.go - Compaction candidate queries (100 issues)\n- internal/rpc/bench_test.go - Daemon vs direct mode comparison\n\nNew benchmarks to add in sqlite_bench_test.go (~10-12 total):\n1. GetReadyWork - Simple, deep hierarchies, cross-linked (CRITICAL - not currently benchmarked)\n2. SearchIssues - No filters, complex filters (CRITICAL - not currently benchmarked)\n3. CreateIssue - Single issue creation\n4. UpdateIssue - Status/priority/assignee changes\n5. AddDependency - Extend to 10K/20K scale (currently only up to 5K)\n6. JSONL Export - Full export performance\n7. JSONL Import - Import performance\n\nScale levels:\n- Large: 10K issues (5K open, 5K closed)\n- XLarge: 20K issues (10K open, 10K closed)\n\nImplementation:\n- NEW FILE: internal/storage/sqlite/sqlite_bench_test.go\n- Keep existing cycle_bench_test.go and compact_bench_test.go unchanged\n- Build tag: //go:build bench\n- Standard testing.B benchmarks\n- b.ReportAllocs() for memory tracking\n- Test both SQLite and JSONL-imported databases\n\nAlways generates CPU and memory profiles for analysis.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-13T22:22:43.770787-08:00","updated_at":"2025-11-13T23:15:33.781023-08:00","closed_at":"2025-11-13T23:15:33.781023-08:00","source_repo":".","dependencies":[{"issue_id":"bd-m62x","depends_on_id":"bd-q13h","type":"blocks","created_at":"2025-11-13T22:24:02.668091-08:00","created_by":"daemon"},{"issue_id":"bd-m62x","depends_on_id":"bd-zj8e","type":"blocks","created_at":"2025-11-13T22:24:06.30131-08:00","created_by":"daemon"}]} {"id":"bd-m7ge","content_hash":"bb08f2bcbbdd2e392733d92bff2e46a51000337ac019d306dd6a2983916873c4","title":"Add .beads/README.md during 'bd init' for project documentation and promotion","description":"When 'bd init' is run, automatically generate a .beads/README.md file that:\n\n1. Briefly explains what Beads is (AI-native issue tracking that lives in your repo)\n2. Links to the main repository: https://github.com/steveyegge/beads\n3. Provides a quick reference of essential commands:\n - bd create: Create new issues\n - bd list: View all issues\n - bd update: Modify issue status/details\n - bd show: View issue details\n - bd sync: Sync with git remote\n4. Highlights key benefits for AI coding agents and developers\n5. Encourages developers to try it out\n\nThe README should be enthusiastic and compelling to get open source contributors excited about using Beads for their AI-assisted development workflows.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-16T22:32:50.478681-08:00","updated_at":"2025-11-16T22:32:58.492868-08:00","source_repo":"."} -{"id":"bd-m9th","content_hash":"eabc13aaa418ea35d1c9cf709cf5d7cc7df19c7afba31ade680d29056bb9699a","title":"Create Python adapter library","description":"Create beads_mail_adapter.py library that wraps Agent Mail HTTP calls with health checks and graceful degradation.\n\nAcceptance Criteria:\n- AgentMailAdapter class with health check on init\n- enabled flag auto-disables if server unreachable\n- All methods wrapped in try/catch (non-blocking failures)\n- Methods: reserve_issue(), release_issue(), notify(), check_inbox()\n- Environment-based configuration (AGENT_MAIL_URL, AGENT_MAIL_TOKEN)\n- Unit tests for enabled/disabled modes\n\nFile: lib/beads_mail_adapter.py","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-07T22:42:28.60152-08:00","updated_at":"2025-11-08T00:11:02.746747-08:00","closed_at":"2025-11-08T00:11:02.746747-08:00","source_repo":".","dependencies":[{"issue_id":"bd-m9th","depends_on_id":"bd-4cyb","type":"blocks","created_at":"2025-11-07T22:42:28.602698-08:00","created_by":"daemon"}]} -{"id":"bd-mf0o","content_hash":"1d19c10fec609126f526ad052ef913f808c7f10983bcd03d661584f87e055ff1","title":"Add 'new' as alias for 'create' command","description":"","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-08T03:11:46.791657-08:00","updated_at":"2025-11-08T03:11:51.035418-08:00","closed_at":"2025-11-08T03:11:51.035418-08:00","source_repo":"."} +{"id":"bd-m9th","content_hash":"862e45f019a273e93490f1a309ac0740c43f4e33b815ff3a8797b5511f401f00","title":"Create Python adapter library","description":"Create beads_mail_adapter.py library that wraps Agent Mail HTTP calls with health checks and graceful degradation.\n\nAcceptance Criteria:\n- AgentMailAdapter class with health check on init\n- enabled flag auto-disables if server unreachable\n- All methods wrapped in try/catch (non-blocking failures)\n- Methods: reserve_issue(), release_issue(), notify(), check_inbox()\n- Environment-based configuration (AGENT_MAIL_URL, AGENT_MAIL_TOKEN)\n- Unit tests for enabled/disabled modes\n\nFile: lib/beads_mail_adapter.py","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-07T22:42:28.60152-08:00","updated_at":"2025-11-08T01:51:40.351137-08:00","closed_at":"2025-11-08T00:11:02.746747-08:00","source_repo":".","dependencies":[{"issue_id":"bd-m9th","depends_on_id":"bd-4cyb","type":"blocks","created_at":"2025-11-07T22:42:28.602698-08:00","created_by":"daemon"}]} +{"id":"bd-mf0o","content_hash":"87f9eb99c69925639f19252c6509bcef9a4b21a4dd288d970aa2212b68a4c6b7","title":"Add 'new' as alias for 'create' command","description":"","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-08T03:11:46.791657-08:00","updated_at":"2025-11-08T03:11:51.035418-08:00","closed_at":"2025-11-08T03:11:51.035418-08:00","source_repo":"."} {"id":"bd-mlcz","content_hash":"c7a69a80bb7a3934692c11aca9bf33d38ab797ab86ca1b3ac2a1347bff39feac","title":"Implement bd migrate command","description":"Add bd migrate command to move issues between repos with filtering. Should support: filtering by status/priority/labels, dry-run mode, preserving dependencies, handling source_repo field updates.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T18:04:29.902151-08:00","updated_at":"2025-11-05T18:42:52.536951-08:00","closed_at":"2025-11-05T18:42:52.536951-08:00","source_repo":".","dependencies":[{"issue_id":"bd-mlcz","depends_on_id":"bd-8rd","type":"parent-child","created_at":"2025-11-05T18:04:39.072312-08:00","created_by":"daemon"}]} {"id":"bd-mn9p","content_hash":"5fc031df24862169c50d6a5c0d6060cfded0f641e0538524db5a22eef5140f3d","title":"bd-hv01: Brittle string comparison breaks with JSON field reordering","description":"## Problem\ndeletion_tracking.go:125 uses string comparison to detect unchanged issues:\n\n```go\nif leftLine, existsInLeft := leftIndex[id]; existsInLeft \u0026\u0026 leftLine == baseLine {\n deletions = append(deletions, id)\n}\n```\n\nThis breaks if:\n- JSON field order changes (legal in JSON)\n- Timestamps updated by import/export\n- Whitespace/formatting changes\n- Floating point precision varies\n\n## Example Failure\n```json\n// baseLine\n{\"id\":\"bd-1\",\"priority\":1,\"status\":\"open\"}\n// leftLine (same data, different order)\n{\"id\":\"bd-1\",\"status\":\"open\",\"priority\":1}\n```\nThese are semantically identical but string comparison fails.\n\n## Fix\nParse and compare JSON semantically:\n```go\nfunc jsonEquals(a, b string) bool {\n var objA, objB map[string]interface{}\n json.Unmarshal([]byte(a), \u0026objA)\n json.Unmarshal([]byte(b), \u0026objB)\n return reflect.DeepEqual(objA, objB)\n}\n```\n\n## Files Affected\n- cmd/bd/deletion_tracking.go:125\n- cmd/bd/deletion_tracking.go:134-170 (buildIDToLineMap)","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-06T18:15:35.090716-08:00","updated_at":"2025-11-06T18:46:55.889888-08:00","closed_at":"2025-11-06T18:46:55.889888-08:00","source_repo":".","dependencies":[{"issue_id":"bd-mn9p","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T18:19:14.790898-08:00","created_by":"daemon"}]} {"id":"bd-mnap","content_hash":"c15d3c631656fe6d21291f127fc545af93e712b5f3f94cce028513fb743a4fdb","title":"Investigate performance issues in VS Code Copilot (Windows)","description":"Beads unusable in Windows 11 VS Code Copilot chat with Sonnet 4.5.\nSummary event happens every 3-4 turns, taking 3 minutes.\nCopilot summarizes after ~125k tokens despite model supporting 1M.\nLarge context size of beads might be triggering aggressive summarization.\nNeed workaround or optimization for context size.\n","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-20T18:56:30.124918-05:00","updated_at":"2025-11-20T18:56:30.124918-05:00","source_repo":"."} -{"id":"bd-muls","content_hash":"7694cd3d43c83a758905922e7b88fc5b0b9100a74b8c841af469175f5643b8c2","title":"Install and test MCP Agent Mail locally","description":"Install MCP Agent Mail on a single development machine and verify basic functionality.\n\nAcceptance Criteria:\n- Server installed via one-line installer\n- Server running on port 8765\n- Can register a project via HTTP\n- Can register an agent identity\n- Web UI accessible at /mail","notes":"Tested local installation. Server runs on port 8765, web UI works. MCP API tool execution has errors - needs debugging. See /tmp/bd-muls-report.md for details.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-07T22:41:59.896735-08:00","updated_at":"2025-11-07T23:14:59.1182-08:00","closed_at":"2025-11-07T23:14:59.1182-08:00","source_repo":"."} +{"id":"bd-muls","content_hash":"bfe08a41307f596296672aa4fdf33d5fbf7b40366a38eaa94a22fc5052619488","title":"Install and test MCP Agent Mail locally","description":"Install MCP Agent Mail on a single development machine and verify basic functionality.\n\nAcceptance Criteria:\n- Server installed via one-line installer\n- Server running on port 8765\n- Can register a project via HTTP\n- Can register an agent identity\n- Web UI accessible at /mail","notes":"Tested local installation. Server runs on port 8765, web UI works. MCP API tool execution has errors - needs debugging. See /tmp/bd-muls-report.md for details.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-07T22:41:59.896735-08:00","updated_at":"2025-11-08T01:49:23.463133-08:00","closed_at":"2025-11-07T23:14:59.1182-08:00","source_repo":"."} {"id":"bd-my64","content_hash":"8f4eb8056f81096e7090813f319b3aa996ada6dc5809d81305271d0584c2f364","title":"Pre-push hook and daemon export produce different JSONL","description":"After committing and pushing, git status shows .beads/beads.jsonl as dirty. Investigation shows:\n\n1. Pre-push hook ran successfully and exported DB → JSONL\n2. Push completed\n3. Shortly after, daemon exported DB → JSONL again with different content\n4. Diff shows comments added to old issues (bd-23a8, bd-6049, bd-87a0)\n\nTimeline:\n- Commit c731c45 \"Update beads JSONL\"\n- Pre-push hook exported JSONL\n- Push succeeded\n- Daemon PID 33314 exported again with different content\n\nQuestions:\n1. Did someone run a command between commit and daemon export?\n2. Is there a timing issue where pre-push hook doesn't capture all DB changes?\n3. Should pre-commit hook flush daemon changes before committing?\n\nThe comments appear to be from Nov 5 (created_at: 2025-11-05T08:38:46Z) but are only appearing in JSONL now. This suggests the DB had these comments but they weren't exported during pre-push.\n\nPossible causes:\n- Pre-push hook uses BEADS_NO_DAEMON=1 which might skip pending writes\n- Daemon has unflushed changes in memory\n- Race condition between pre-push export and daemon's periodic export","notes":"Improved fix based on oracle code review:\n1. Pre-push now flushes pending changes first (prevents debounce race)\n2. Uses git status --porcelain to catch all change types\n3. Handles both beads.jsonl and issues.jsonl\n4. Works even if bd not installed (git-only check)","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-06T18:49:54.570993-08:00","updated_at":"2025-11-06T19:01:14.549032-08:00","closed_at":"2025-11-06T18:57:42.710282-08:00","source_repo":"."} {"id":"bd-ndyz","content_hash":"98629cb6e905127858991beecd39aa298b2c83007d87d64dd3644b1af605e627","title":"GH#243: Recurring stale daemon.lock causes 5s delays","description":"User reports daemon.lock keeps becoming stale after running Claude with beads.\n\nSymptom:\n- bd ready takes 5 seconds (exact)\n- daemon.lock exists but socket is missing\n- bd daemons killall temporarily fixes it\n- Problem recurs after using beads with AI agents\n\nUser on v0.22.0, Macbook M2, 132 issues (89 closed)\n\nHypothesis: Daemon is crashing or exiting uncleanly during agent sessions, leaving stale lock file.\n\nNeed to:\n1. Add crash logging to daemon to understand why it's exiting\n2. Improve cleanup on daemon exit (ensure lock is always removed)\n3. Add automatic stale lock detection/cleanup\n4. Consider making daemon more resilient to crashes","design":"Root cause: 5s delay from slow RPC connect attempts when socket missing but clients retry with long timeouts. Lock file mechanism is fine (OS releases on crash), but missing socket + stale pid cause unnecessary connection attempts.\n\nKey insight: The lock itself isn't stale (OS-managed), but socket cleanup on crash is incomplete, leading clients to wait through full dial timeout.","notes":"Oracle analysis complete. Converting to epic with 5 focused sub-issues:\n1. RPC fast-fail with socket stat + short timeouts (P0)\n2. Standardize daemon detection with lock probe (P1) \n3. Crash recovery improvements (P2)\n4. Self-heal stale artifacts (P2)\n5. Diagnostics and debugging (P3)","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-07T16:32:23.576171-08:00","updated_at":"2025-11-07T22:07:17.347419-08:00","closed_at":"2025-11-07T21:29:56.009737-08:00","source_repo":"."} -{"id":"bd-nemp","content_hash":"e926c907659faaa8fefc8433862fe145c187cdf8250ff0bb1c9721ca112f4fdb","title":"Measure git operation reduction","description":"Quantify the reduction in git operations (pulls, commits, pushes) when using Agent Mail for coordination.\n\nAcceptance Criteria:\n- Baseline: count git ops for 10 issues without Agent Mail\n- With Agent Mail: count git ops for 10 issues\n- Document reduction percentage\n- Verify 70-80% reduction claim\n- Measure impact on .git directory size growth\n\nSuccess Metric: ≥70% reduction in git operations","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:42:00.157334-08:00","updated_at":"2025-11-08T00:20:30.691721-08:00","closed_at":"2025-11-08T00:20:30.691721-08:00","source_repo":".","dependencies":[{"issue_id":"bd-nemp","depends_on_id":"bd-6hji","type":"blocks","created_at":"2025-11-07T23:03:53.131532-08:00","created_by":"daemon"},{"issue_id":"bd-nemp","depends_on_id":"bd-htfk","type":"blocks","created_at":"2025-11-07T23:03:53.200321-08:00","created_by":"daemon"}]} +{"id":"bd-nemp","content_hash":"0495137c34f3a429f216180b34551481846c818d7bdf56118eef59b15a7f3a3d","title":"Measure git operation reduction","description":"Quantify the reduction in git operations (pulls, commits, pushes) when using Agent Mail for coordination.\n\nAcceptance Criteria:\n- Baseline: count git ops for 10 issues without Agent Mail\n- With Agent Mail: count git ops for 10 issues\n- Document reduction percentage\n- Verify 70-80% reduction claim\n- Measure impact on .git directory size growth\n\nSuccess Metric: ≥70% reduction in git operations","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:42:00.157334-08:00","updated_at":"2025-11-08T01:51:40.351357-08:00","closed_at":"2025-11-08T00:20:30.691721-08:00","source_repo":".","dependencies":[{"issue_id":"bd-nemp","depends_on_id":"bd-6hji","type":"blocks","created_at":"2025-11-07T23:03:53.131532-08:00","created_by":"daemon"},{"issue_id":"bd-nemp","depends_on_id":"bd-htfk","type":"blocks","created_at":"2025-11-07T23:03:53.200321-08:00","created_by":"daemon"}]} {"id":"bd-ng56","content_hash":"f570cf399d412baa9b9209bae41140668269513e2d2127c47ddee70fa173d79d","title":"bd-hv01: Three full JSONL reads on every sync (performance)","description":"Problem: computeAcceptedDeletions reads three JSONL files completely into memory (base, left, merged). For 1000 issues at 1KB each, this is 3MB read and 3000 JSON parse operations.\n\nImpact: Acceptable now (~20-35ms overhead) but will be slow for large repos (10k+ issues).\n\nPossible optimizations: single-pass streaming, memory-mapped files, binary format, incremental snapshots.\n\nFiles: cmd/bd/deletion_tracking.go:101-208","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-06T18:16:25.653076-08:00","updated_at":"2025-11-06T20:06:49.220818-08:00","closed_at":"2025-11-06T19:41:04.67733-08:00","source_repo":".","dependencies":[{"issue_id":"bd-ng56","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T18:19:15.148149-08:00","created_by":"daemon"}]} -{"id":"bd-nl8z","content_hash":"a573c9fe29cd810420b602fc5d2c105ace29a409f2294fd251baf515bef0b85e","title":"Documentation","description":"Complete documentation for Agent Mail integration to enable adoption.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-07T22:42:37.969636-08:00","updated_at":"2025-11-08T03:09:48.253476-08:00","closed_at":"2025-11-08T02:34:57.887891-08:00","source_repo":".","dependencies":[{"issue_id":"bd-nl8z","depends_on_id":"bd-wfmw","type":"blocks","created_at":"2025-11-07T22:42:37.970621-08:00","created_by":"daemon"}]} +{"id":"bd-nl8z","content_hash":"a573c9fe29cd810420b602fc5d2c105ace29a409f2294fd251baf515bef0b85e","title":"Documentation","description":"Complete documentation for Agent Mail integration to enable adoption.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-07T22:42:37.969636-08:00","updated_at":"2025-11-08T03:54:04.856836-08:00","closed_at":"2025-11-08T02:34:57.887891-08:00","source_repo":".","dependencies":[{"issue_id":"bd-nl8z","depends_on_id":"bd-wfmw","type":"blocks","created_at":"2025-11-07T22:42:37.970621-08:00","created_by":"daemon"}]} {"id":"bd-nq41","content_hash":"33f9cfe6a0ef5200dcd5016317b43b1568ff9dc7303537d956bdab02029f6c63","title":"Fix Homebrew warning about Ruby file location","description":"Homebrew warning: Found Ruby file outside steveyegge/beads tap formula directory.\nWarning points to: /opt/homebrew/Library/Taps/steveyegge/homebrew-beads/bd.rb\nIt should likely be inside a Formula/ directory or similar structure expected by Homebrew taps.\n","status":"open","priority":2,"issue_type":"chore","created_at":"2025-11-20T18:56:21.226579-05:00","updated_at":"2025-11-20T18:56:21.226579-05:00","source_repo":"."} {"id":"bd-nqes","content_hash":"0063981ff72ee9d99ef59e43bf43369b4c8fc0e73479ce1e8bd9e91603b850a3","title":"bd-hv01: Non-atomic snapshot operations can cause data loss","description":"## Problem\nIn sync.go:146-155 and daemon_sync.go:502-505, snapshot capture failures are logged as warnings but sync continues:\n\n```go\nif err := exportToJSONL(ctx, jsonlPath); err != nil { ... }\nif err := captureLeftSnapshot(jsonlPath); err != nil {\n fmt.Fprintf(os.Stderr, \"Warning: failed to capture snapshot...\")\n}\n```\n\nIf export succeeds but snapshot capture fails, the merge uses stale snapshot data, potentially deleting wrong issues.\n\n## Impact\n- Critical data integrity issue\n- Could delete issues incorrectly during multi-workspace sync\n\n## Fix\nMake snapshot capture mandatory:\n```go\nif err := captureLeftSnapshot(jsonlPath); err != nil {\n return fmt.Errorf(\"failed to capture snapshot (required for deletion tracking): %w\", err)\n}\n```\n\n## Files Affected\n- cmd/bd/sync.go:146-155\n- cmd/bd/daemon_sync.go:502-505","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-06T18:15:33.574158-08:00","updated_at":"2025-11-06T18:46:55.874814-08:00","closed_at":"2025-11-06T18:46:55.874814-08:00","source_repo":".","dependencies":[{"issue_id":"bd-nqes","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T18:19:14.749153-08:00","created_by":"daemon"}]} {"id":"bd-nszi","content_hash":"7eb77a2db8edb51267c42176883ad97f11a83103720647c92a8de26e79e6ab3e","title":"Post-merge hook silently fails on JSONL conflicts, poor UX","description":"When git pull results in merge conflicts in .beads/issues.jsonl, the post-merge hook runs 'bd sync --import-only' which fails, but stderr was redirected to /dev/null. User only saw generic warning.\n\nFixed by capturing and displaying the actual error output, so users see 'Git conflict markers detected' message immediately.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-08T02:31:04.909925-08:00","updated_at":"2025-11-08T02:31:45.237286-08:00","closed_at":"2025-11-08T02:31:45.237286-08:00","source_repo":"."} -{"id":"bd-o43","content_hash":"da285ab01b4f4bce19f609b006c338d268fd520f103594b37c43d339f3e3a79e","title":"Add richer query capabilities to bd list","description":"Current bd list filters are limited to basic field matching (status, priority, type, assignee, label). This forces users to resort to piping through jq for common queries.\n\nMissing query capabilities:\n- Pattern matching: --title-contains, --desc-contains\n- Date ranges: --created-after, --updated-before, --closed-after\n- Empty/null checks: --empty-description, --no-assignee, --no-labels\n- Numeric ranges: --priority-min, --priority-max\n- Complex boolean logic: --and, --or operators\n- Full-text search: --search across all text fields\n- Negation: --not-status, --exclude-label\n\nExample use cases:\n- Find issues with empty descriptions\n- Find stale issues not updated in 30 days\n- Find high-priority bugs with no assignee\n- Search for keyword across title/description/notes\n\nImplementation approach:\n- Add query builder pattern to storage layer\n- Support --query DSL for complex queries\n- Keep simple flags for common cases\n- Add --json output for programmatic use","notes":"## Progress Update\n\n**Completed:**\n- ✅ Extended IssueFilter struct with new fields (pattern matching, date ranges, empty/null checks, priority ranges)\n- ✅ Updated SQLite SearchIssues implementation \n- ✅ Added CLI flags to list.go\n- ✅ Added parseTimeFlag helper\n- ✅ Comprehensive tests added - all passing\n\n**Remaining:**\n- ⚠️ RPC layer needs updating (internal/rpc/protocol.go ListArgs)\n- ⚠️ Daemon handler needs to forward new filters\n- ⚠️ End-to-end testing with daemon mode\n- 📝 Documentation updates\n\n**Files Modified:**\n- internal/types/types.go\n- internal/storage/sqlite/sqlite.go \n- cmd/bd/list.go\n- cmd/bd/list_test.go\n\n**Next Steps:**\n1. Update RPC protocol\n2. Update daemon handler \n3. Test with daemon mode\n4. Update docs","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-05T00:17:48.677493-08:00","updated_at":"2025-11-05T00:33:38.998433-08:00","closed_at":"2025-11-05T00:33:38.998433-08:00","source_repo":"."} +{"id":"bd-o43","content_hash":"4caa0f14a58127378a533362ec0292833b6d59195e503fab7505180c9c5c0438","title":"Add richer query capabilities to bd list","description":"Current bd list filters are limited to basic field matching (status, priority, type, assignee, label). This forces users to resort to piping through jq for common queries.\n\nMissing query capabilities:\n- Pattern matching: --title-contains, --desc-contains\n- Date ranges: --created-after, --updated-before, --closed-after\n- Empty/null checks: --empty-description, --no-assignee, --no-labels\n- Numeric ranges: --priority-min, --priority-max\n- Complex boolean logic: --and, --or operators\n- Full-text search: --search across all text fields\n- Negation: --not-status, --exclude-label\n\nExample use cases:\n- Find issues with empty descriptions\n- Find stale issues not updated in 30 days\n- Find high-priority bugs with no assignee\n- Search for keyword across title/description/notes\n\nImplementation approach:\n- Add query builder pattern to storage layer\n- Support --query DSL for complex queries\n- Keep simple flags for common cases\n- Add --json output for programmatic use","notes":"## Progress Update\n\n**Completed:**\n- ✅ Extended IssueFilter struct with new fields (pattern matching, date ranges, empty/null checks, priority ranges)\n- ✅ Updated SQLite SearchIssues implementation \n- ✅ Added CLI flags to list.go\n- ✅ Added parseTimeFlag helper\n- ✅ Comprehensive tests added - all passing\n\n**Remaining:**\n- ⚠️ RPC layer needs updating (internal/rpc/protocol.go ListArgs)\n- ⚠️ Daemon handler needs to forward new filters\n- ⚠️ End-to-end testing with daemon mode\n- 📝 Documentation updates\n\n**Files Modified:**\n- internal/types/types.go\n- internal/storage/sqlite/sqlite.go \n- cmd/bd/list.go\n- cmd/bd/list_test.go\n\n**Next Steps:**\n1. Update RPC protocol\n2. Update daemon handler \n3. Test with daemon mode\n4. Update docs","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-05T00:17:48.677493-08:00","updated_at":"2025-11-05T00:33:38.998433-08:00","closed_at":"2025-11-05T00:33:38.998433-08:00","source_repo":"."} {"id":"bd-o78","content_hash":"0d61c7a8e687c16c262db4ba4e6c7f63861fbeb524ec014000c68a0552df7965","title":"Enhance `bd doctor` to verify Claude Code integration","description":"Add checks to `bd doctor` that verify Claude Code integration is properly set up when .claude/ directory or Claude environment is detected.","design":"## Checks to Add\n\n### 1. Claude Environment Detection\n```go\nif isClaudeDetected() {\n fmt.Println(\"✓ Claude Code environment detected\")\n \n // Check what's installed\n hasMCP := isMCPServerInstalled()\n hasHooks := isClaudeSetupComplete()\n \n if hasMCP \u0026\u0026 hasHooks {\n fmt.Println(\"✓ MCP server installed\")\n fmt.Println(\"✓ Claude hooks installed (provides workflow reminders)\")\n } else if !hasMCP \u0026\u0026 hasHooks {\n fmt.Println(\"✓ Claude hooks installed (provides CLI reference)\")\n fmt.Println(\" Note: MCP server not detected (using CLI mode)\")\n } else if hasMCP \u0026\u0026 !hasHooks {\n fmt.Println(\"✓ MCP server installed\")\n fmt.Println(\"⚠ Claude hooks not installed\")\n fmt.Println(\" Hooks prevent agent from forgetting bd workflow after compaction\")\n fmt.Println(\" Run: bd setup claude\")\n } else {\n fmt.Println(\"⚠ Claude integration not set up\")\n fmt.Println(\" Run: bd setup claude\")\n // TODO (future): Recommend CLI approach once proven in production\n // fmt.Println(\" Tip: CLI mode (without MCP) uses fewer tokens\")\n }\n}\n\nfunc isMCPServerInstalled() bool {\n // Check ~/.claude/settings.json for beads MCP server\n home, _ := os.UserHomeDir()\n settingsPath := filepath.Join(home, \".claude/settings.json\")\n \n data, err := os.ReadFile(settingsPath)\n if err != nil {\n return false\n }\n \n var settings map[string]interface{}\n if err := json.Unmarshal(data, \u0026settings); err != nil {\n return false\n }\n \n // Check mcpServers section for beads\n mcpServers, ok := settings[\"mcpServers\"].(map[string]interface{})\n if !ok {\n return false\n }\n \n // Look for beads server (any key containing \"beads\")\n for key := range mcpServers {\n if strings.Contains(strings.ToLower(key), \"beads\") {\n return true\n }\n }\n \n return false\n}\n```\n\n### 2. Hook Installation Verification (MCP-Aware)\n\n```go\nfunc checkClaudeHooks() {\n home, _ := os.UserHomeDir()\n globalSettings := filepath.Join(home, \".claude/settings.json\")\n projectSettings := \".claude/settings.local.json\"\n \n globalHooks := hasBeadsHooks(globalSettings)\n projectHooks := hasBeadsHooks(projectSettings)\n \n if globalHooks {\n fmt.Println(\"✓ Global hooks installed\")\n } else if projectHooks {\n fmt.Println(\"✓ Project hooks installed\")\n } else {\n fmt.Println(\"⚠ No hooks installed\")\n fmt.Println(\" Run: bd setup claude\")\n return\n }\n \n // Check if hooks will work\n if !commandExists(\"bd\") {\n fmt.Println(\"⚠ 'bd' command not in PATH\")\n fmt.Println(\" Hooks won't work - ensure bd is installed globally\")\n }\n}\n\nfunc hasBeadsHooks(settingsPath string) bool {\n data, err := os.ReadFile(settingsPath)\n if err != nil {\n return false\n }\n \n var settings map[string]interface{}\n if err := json.Unmarshal(data, \u0026settings); err != nil {\n return false\n }\n \n hooks, ok := settings[\"hooks\"].(map[string]interface{})\n if !ok {\n return false\n }\n \n // Check SessionStart and PreCompact for \"bd prime\"\n for _, event := range []string{\"SessionStart\", \"PreCompact\"} {\n eventHooks, ok := hooks[event].([]interface{})\n if !ok {\n continue\n }\n \n for _, hook := range eventHooks {\n hookMap, _ := hook.(map[string]interface{})\n commands, _ := hookMap[\"hooks\"].([]interface{})\n for _, cmd := range commands {\n cmdMap, _ := cmd.(map[string]interface{})\n if cmdMap[\"command\"] == \"bd prime\" {\n return true\n }\n }\n }\n }\n \n return false\n}\n```\n\n### 3. AGENTS.md/CLAUDE.md Reference Check\n```go\n// Check if documentation references bd prime\nagentsContent := readFileIfExists(\"AGENTS.md\")\nclaudeContent := readFileIfExists(\"CLAUDE.md\")\n\nif strings.Contains(agentsContent, \"bd prime\") || strings.Contains(claudeContent, \"bd prime\") {\n // Verify bd prime command exists in current version\n if !commandExists(\"prime\") {\n fmt.Println(\"⚠ Documentation references 'bd prime' but command not found\")\n fmt.Println(\" Upgrade bd or remove references\")\n } else {\n fmt.Println(\"✓ Documentation references match installed features\")\n }\n}\n```\n\n### 4. Context Priming Test\n```go\n// Verify bd prime actually works\ncmd := exec.Command(\"bd\", \"prime\")\noutput, err := cmd.CombinedOutput()\n\nif err != nil {\n fmt.Println(\"⚠ 'bd prime' failed to execute\")\n fmt.Println(\" Error:\", err)\n} else if len(output) == 0 {\n fmt.Println(\"⚠ 'bd prime' produced no output\")\n fmt.Println(\" Expected workflow context markdown\")\n} else {\n // Check if output adapts to MCP mode\n hasMCP := isMCPServerInstalled()\n outputStr := string(output)\n \n if hasMCP \u0026\u0026 strings.Contains(outputStr, \"mcp__plugin_beads_beads__\") {\n fmt.Println(\"✓ bd prime detected MCP mode (workflow reminders)\")\n } else if !hasMCP \u0026\u0026 strings.Contains(outputStr, \"bd ready\") {\n fmt.Println(\"✓ bd prime using CLI mode (full command reference)\")\n } else {\n fmt.Println(\"⚠ bd prime output may not be adapting to environment\")\n }\n}\n```\n\n## Output Format Examples\n\n### With MCP and Hooks\n```\nbd doctor\n\nDatabase:\n✓ Database found at .beads/beads.db\n✓ Git hooks installed\n\nClaude Code Integration:\n✓ Claude Code environment detected\n✓ MCP server installed\n✓ Claude hooks installed (provides workflow reminders)\n✓ bd prime detected MCP mode (workflow reminders)\n✓ Documentation references match installed features\n\nSync Status:\n✓ No sync issues detected\n```\n\n### Without MCP, With Hooks\n```\nbd doctor\n\nDatabase:\n✓ Database found at .beads/beads.db\n✓ Git hooks installed\n\nClaude Code Integration:\n✓ Claude Code environment detected\n✓ Claude hooks installed (provides CLI reference)\n Note: MCP server not detected (using CLI mode)\n✓ bd prime using CLI mode (full command reference)\n\nSync Status:\n✓ No sync issues detected\n```\n\n### No Integration\n```\nbd doctor\n\nDatabase:\n✓ Database found at .beads/beads.db\n✓ Git hooks installed\n\nClaude Code Integration:\n✓ Claude Code environment detected\n⚠ Claude integration not set up\n Run: bd setup claude\n\nSync Status:\n✓ No sync issues detected\n```\n\n## Future Enhancement (Post-Production Validation)\n\nOnce CLI mode is proven in production, add recommendation:\n\n```go\nif isClaudeDetected() \u0026\u0026 !hasMCP \u0026\u0026 !hasHooks {\n fmt.Println(\"⚠ Claude integration not set up\")\n fmt.Println(\" Run: bd setup claude\")\n fmt.Println(\" Tip: CLI mode (without MCP) uses fewer tokens than MCP server\")\n fmt.Println(\" Both approaches work equally well - choose based on preference\")\n}\n```\n\nThis recommendation should only be added after CLI mode with `bd prime` is validated in real-world usage.","acceptance_criteria":"- bd doctor checks for Claude environment\n- Verifies hook installation if .claude/ exists\n- Checks AGENTS.md/CLAUDE.md for bd prime references\n- Detects version mismatches between docs and installed bd\n- Provides actionable suggestions (bd setup claude, upgrade)\n- Tests cover detection logic","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-11T23:30:05.782406-08:00","updated_at":"2025-11-12T00:12:07.717579-08:00","source_repo":".","dependencies":[{"issue_id":"bd-o78","depends_on_id":"bd-rpn","type":"blocks","created_at":"2025-11-11T23:30:05.783234-08:00","created_by":"daemon"},{"issue_id":"bd-o78","depends_on_id":"bd-br8","type":"blocks","created_at":"2025-11-11T23:30:05.783647-08:00","created_by":"daemon"},{"issue_id":"bd-o78","depends_on_id":"bd-90v","type":"parent-child","created_at":"2025-11-11T23:31:27.886095-08:00","created_by":"daemon"}]} -{"id":"bd-oif6","content_hash":"b89adce99d6bc1bc1c5a717b75b35a801144f7fe3e30d8eafd7211dc784ee17b","title":"Vendor beads-merge Go code into internal/merge/","description":"Copy beads-merge source code from @neongreen's repo into bd codebase.\n\n**Tasks**:\n- Create `internal/merge/` package\n- Copy merge algorithm code\n- Add attribution header to all files\n- Update imports to use bd's internal types\n- Add LICENSE/ATTRIBUTION file crediting @neongreen\n- Keep original algorithm intact\n\n**Source**: https://github.com/neongreen/mono/tree/main/beads-merge","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T18:42:20.405283-08:00","updated_at":"2025-11-05T18:52:53.71713-08:00","closed_at":"2025-11-05T18:52:53.71713-08:00","source_repo":".","dependencies":[{"issue_id":"bd-oif6","depends_on_id":"bd-qqvw","type":"parent-child","created_at":"2025-11-05T18:42:28.69196-08:00","created_by":"daemon"}]} +{"id":"bd-oif6","content_hash":"5732dcbfd354e39ae9249cbae70f08ec1ccf026a812129519dfda5a8588e5ad1","title":"Vendor beads-merge Go code into internal/merge/","description":"Copy beads-merge source code from @neongreen's repo into bd codebase.\n\n**Tasks**:\n- Create `internal/merge/` package\n- Copy merge algorithm code\n- Add attribution header to all files\n- Update imports to use bd's internal types\n- Add LICENSE/ATTRIBUTION file crediting @neongreen\n- Keep original algorithm intact\n\n**Source**: https://github.com/neongreen/mono/tree/main/beads-merge","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T18:42:20.405283-08:00","updated_at":"2025-11-05T18:52:53.71713-08:00","closed_at":"2025-11-05T18:52:53.71713-08:00","source_repo":".","dependencies":[{"issue_id":"bd-oif6","depends_on_id":"bd-qqvw","type":"parent-child","created_at":"2025-11-05T18:42:28.69196-08:00","created_by":"daemon"}]} {"id":"bd-ola6","content_hash":"79461888e8a7875bf3623b8db44ea004f73a2374daa52ae9cb3fc9d3ce5e6a8b","title":"Implement transaction retry logic for SQLITE_BUSY","description":"BEGIN IMMEDIATE fails immediately on SQLITE_BUSY instead of retrying with exponential backoff.\n\nLocation: internal/storage/sqlite/sqlite.go:223-225\n\nProblem:\n- Under concurrent write load, BEGIN IMMEDIATE can fail with SQLITE_BUSY\n- Current implementation fails immediately instead of retrying\n- Results in spurious failures under normal concurrent usage\n\nSolution: Implement exponential backoff retry:\n- Retry up to N times (e.g., 5)\n- Backoff: 10ms, 20ms, 40ms, 80ms, 160ms\n- Check for context cancellation between retries\n- Only retry on SQLITE_BUSY/database locked errors\n\nImpact: Spurious failures under concurrent write load\n\nEffort: 3 hours","status":"open","priority":1,"issue_type":"feature","created_at":"2025-11-16T14:51:31.247147-08:00","updated_at":"2025-11-16T14:51:31.247147-08:00","source_repo":"."} -{"id":"bd-omx1","content_hash":"50d19205f24508b982b7ed889607cfbeb56c83e9df4d0d967283e34096035089","title":"Add `bd merge` command wrapping 3-way merge logic","description":"Implement CLI command to invoke beads-merge functionality.\n\n**Interface**:\n```bash\nbd merge \u003coutput\u003e \u003cbase\u003e \u003cleft\u003e \u003cright\u003e\nbd merge --debug \u003coutput\u003e \u003cbase\u003e \u003cleft\u003e \u003cright\u003e\n```\n\n**Behavior**:\n- Exit code 0 on clean merge\n- Exit code 1 if conflicts (write conflict markers)\n- Support --debug flag for verbose output\n- Match beads-merge's existing behavior\n\n**File**: `cmd/bd/merge.go`","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T18:42:20.427429-08:00","updated_at":"2025-11-05T19:01:29.071365-08:00","closed_at":"2025-11-05T19:01:29.071365-08:00","source_repo":".","dependencies":[{"issue_id":"bd-omx1","depends_on_id":"bd-qqvw","type":"parent-child","created_at":"2025-11-05T18:42:28.709123-08:00","created_by":"daemon"},{"issue_id":"bd-omx1","depends_on_id":"bd-oif6","type":"blocks","created_at":"2025-11-05T18:42:35.436444-08:00","created_by":"daemon"}]} -{"id":"bd-p0zr","content_hash":"15169fc52d0373eb0ea231bb14d3a90814001d803b83aa3b561d0e32e9365b81","title":"bd message: Improve type safety with typed parameter structs","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-08T12:54:29.675678-08:00","updated_at":"2025-11-08T12:58:59.559643-08:00","closed_at":"2025-11-08T12:58:59.559643-08:00","source_repo":".","dependencies":[{"issue_id":"bd-p0zr","depends_on_id":"bd-6uix","type":"parent-child","created_at":"2025-11-08T12:55:55.058354-08:00","created_by":"daemon"}]} -{"id":"bd-p65x","content_hash":"9fb7f74dbd1c92d47ff34bae3a58b9a4b97643a065cc07e3f76d20537f93be91","title":"Latency test 1","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-20T12:09:09.267424-05:00","updated_at":"2025-11-20T12:09:09.267424-05:00","closed_at":"2025-11-08T00:06:46.198388-08:00","source_repo":"."} +{"id":"bd-omx1","content_hash":"e61d74adb03fc8275c97242df8ce0e4146db7e49271e4e86c3379b4a3fbab0d8","title":"Add `bd merge` command wrapping 3-way merge logic","description":"Implement CLI command to invoke beads-merge functionality.\n\n**Interface**:\n```bash\nbd merge \u003coutput\u003e \u003cbase\u003e \u003cleft\u003e \u003cright\u003e\nbd merge --debug \u003coutput\u003e \u003cbase\u003e \u003cleft\u003e \u003cright\u003e\n```\n\n**Behavior**:\n- Exit code 0 on clean merge\n- Exit code 1 if conflicts (write conflict markers)\n- Support --debug flag for verbose output\n- Match beads-merge's existing behavior\n\n**File**: `cmd/bd/merge.go`","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T18:42:20.427429-08:00","updated_at":"2025-11-05T19:01:29.071365-08:00","closed_at":"2025-11-05T19:01:29.071365-08:00","source_repo":".","dependencies":[{"issue_id":"bd-omx1","depends_on_id":"bd-qqvw","type":"parent-child","created_at":"2025-11-05T18:42:28.709123-08:00","created_by":"daemon"},{"issue_id":"bd-omx1","depends_on_id":"bd-oif6","type":"blocks","created_at":"2025-11-05T18:42:35.436444-08:00","created_by":"daemon"}]} +{"id":"bd-p0zr","content_hash":"5e518ce89ce35cb4b5b534b8c1287679b7984bc73f7c6747773962277d2ad1bc","title":"bd message: Improve type safety with typed parameter structs","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-08T12:54:29.675678-08:00","updated_at":"2025-11-08T12:58:59.559643-08:00","closed_at":"2025-11-08T12:58:59.559643-08:00","source_repo":".","dependencies":[{"issue_id":"bd-p0zr","depends_on_id":"bd-6uix","type":"parent-child","created_at":"2025-11-08T12:55:55.058354-08:00","created_by":"daemon"}]} +{"id":"bd-p65x","content_hash":"9fb7f74dbd1c92d47ff34bae3a58b9a4b97643a065cc07e3f76d20537f93be91","title":"Latency test 1","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-08T00:04:38.815725-08:00","updated_at":"2025-11-09T14:53:53.215595-08:00","closed_at":"2025-11-09T14:53:53.215603-08:00","source_repo":"."} {"id":"bd-p68x","content_hash":"2adc58598da8443025691815c351057400ddaa6fa6f0121f1dbb85af58d8d6e8","title":"Create examples for common workflows","description":"Add examples/ subdirectories: OSS contributor workflow, team branch workflow, multi-phase development, multiple personas (architect/implementer). Each with README and sample configs.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T18:04:30.128257-08:00","updated_at":"2025-11-05T19:27:33.07555-08:00","closed_at":"2025-11-05T19:08:39.035904-08:00","source_repo":".","dependencies":[{"issue_id":"bd-p68x","depends_on_id":"bd-8rd","type":"parent-child","created_at":"2025-11-05T18:04:39.247515-08:00","created_by":"daemon"}]} {"id":"bd-p6vp","content_hash":"1df6d3b9b438cdcdbc618c24fea48769c1f22e8a8701af4e742531d4433ca7ea","title":"Clarify .beads/.gitattributes handling in Protected Branches docs","description":"Protected Branches docs quick start leaves untracked `.beads` directory and `.gitattributes`.\nQuestion: Are these changes meant to be checked into the protected branch?\nNeed to clarify if these should be ignored or committed, or if the instructions are missing a step.\n","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-20T18:56:25.79407-05:00","updated_at":"2025-11-20T18:56:25.79407-05:00","source_repo":"."} -{"id":"bd-pdjb","content_hash":"ac30f03839ef20d09a5a6c4915b8046b270ebdb564c1ee7511edc72128cd8fa0","title":"Testing \u0026 Validation","description":"Ensure reliability through comprehensive testing.","notes":"Completed comprehensive Agent Mail test coverage analysis and implementation.\n\n**Test Coverage Summary:**\n- 66 total tests across 5 files\n- 51 unit tests for HTTP adapter (0.02s)\n- 15 integration tests for multi-agent scenarios (~55s total)\n\n**New Tests Added:**\nCreated `test_multi_agent_coordination.py` (4 tests, 11s) covering:\n1. Fairness: 10 agents competing for 5 issues → exactly 1 claim per issue\n2. Notifications: End-to-end message delivery between agents\n3. Handoff: Clean reservation transfer from agent1 to agent2\n4. Idempotency: Double reserve/release by same agent\n\n**Coverage Quality:**\n✅ Collision prevention (race conditions)\n✅ Graceful degradation (7 failure modes)\n✅ TTL/expiration behavior\n✅ Multi-agent coordination\n✅ JSONL consistency\n✅ HTTP error handling\n✅ Authorization and configuration\n\n**Intentionally Skipped:**\n- Path traversal (validated elsewhere)\n- Retry policies (nice-to-have)\n- HTTPS/TLS (out of scope)\n- Slow tests (50+ agents, soak tests)\n\nSee `tests/integration/AGENT_MAIL_TEST_COVERAGE.md` for details.\n\nAll tests pass. Agent Mail integration is well-tested and reliable for multi-agent scenarios.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-07T22:43:00.457985-08:00","updated_at":"2025-11-08T03:09:48.253758-08:00","closed_at":"2025-11-08T02:47:34.153586-08:00","source_repo":".","dependencies":[{"issue_id":"bd-pdjb","depends_on_id":"bd-wfmw","type":"blocks","created_at":"2025-11-07T22:43:00.459403-08:00","created_by":"daemon"}]} -{"id":"bd-pdwz","content_hash":"f76d63fc1bef4ab993800f94abc68e2fa717bc4932a65ee226414917d8654090","title":"Add t.Parallel() to slow hash multiclone tests","description":"Add t.Parallel() to TestHashIDs_MultiCloneConverge and TestHashIDs_IdenticalContentDedup so they run concurrently.\n\nExpected savings: ~10 seconds (from 20s to ~11s)\n\nImplementation:\n- Add t.Parallel() call at start of each test function\n- Verify tests don't share resources that would cause conflicts\n- Run tests to confirm they work in parallel\n\nFile: beads_hash_multiclone_test.go:34, :101","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-04T01:24:15.705228-08:00","updated_at":"2025-11-04T09:52:31.945545-08:00","closed_at":"2025-11-04T09:52:31.945545-08:00","source_repo":".","dependencies":[{"issue_id":"bd-pdwz","depends_on_id":"bd-l5gq","type":"blocks","created_at":"2025-11-04T01:24:15.706149-08:00","created_by":"daemon"}]} -{"id":"bd-pmuu","content_hash":"78eeb9284c40aa956ce48b29d298c70daaacce08af4a978972e64999d6ebba19","title":"Create architecture decision record (ADR)","description":"Document why we chose Agent Mail, alternatives considered, and tradeoffs.\n\nAcceptance Criteria:\n- Problem statement (git traffic, no locks)\n- Alternatives considered (custom RPC, Redis, etc.)\n- Why Agent Mail fits Beads\n- Integration principles (optional, graceful degradation)\n- Future considerations\n\nFile: docs/adr/002-agent-mail-integration.md","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-07T22:42:51.420203-08:00","updated_at":"2025-11-08T00:06:01.816892-08:00","closed_at":"2025-11-08T00:06:01.816892-08:00","source_repo":".","dependencies":[{"issue_id":"bd-pmuu","depends_on_id":"bd-spmx","type":"parent-child","created_at":"2025-11-08T00:02:47.93119-08:00","created_by":"daemon"}]} +{"id":"bd-pdjb","content_hash":"ac30f03839ef20d09a5a6c4915b8046b270ebdb564c1ee7511edc72128cd8fa0","title":"Testing \u0026 Validation","description":"Ensure reliability through comprehensive testing.","notes":"Completed comprehensive Agent Mail test coverage analysis and implementation.\n\n**Test Coverage Summary:**\n- 66 total tests across 5 files\n- 51 unit tests for HTTP adapter (0.02s)\n- 15 integration tests for multi-agent scenarios (~55s total)\n\n**New Tests Added:**\nCreated `test_multi_agent_coordination.py` (4 tests, 11s) covering:\n1. Fairness: 10 agents competing for 5 issues → exactly 1 claim per issue\n2. Notifications: End-to-end message delivery between agents\n3. Handoff: Clean reservation transfer from agent1 to agent2\n4. Idempotency: Double reserve/release by same agent\n\n**Coverage Quality:**\n✅ Collision prevention (race conditions)\n✅ Graceful degradation (7 failure modes)\n✅ TTL/expiration behavior\n✅ Multi-agent coordination\n✅ JSONL consistency\n✅ HTTP error handling\n✅ Authorization and configuration\n\n**Intentionally Skipped:**\n- Path traversal (validated elsewhere)\n- Retry policies (nice-to-have)\n- HTTPS/TLS (out of scope)\n- Slow tests (50+ agents, soak tests)\n\nSee `tests/integration/AGENT_MAIL_TEST_COVERAGE.md` for details.\n\nAll tests pass. Agent Mail integration is well-tested and reliable for multi-agent scenarios.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-07T22:43:00.457985-08:00","updated_at":"2025-11-08T03:54:04.857153-08:00","closed_at":"2025-11-08T02:47:34.153586-08:00","source_repo":".","dependencies":[{"issue_id":"bd-pdjb","depends_on_id":"bd-wfmw","type":"blocks","created_at":"2025-11-07T22:43:00.459403-08:00","created_by":"daemon"}]} +{"id":"bd-pdwz","content_hash":"5c35a877ec5fa3af14a45a920764e7a4c289f93c427a479da7b335c068195af0","title":"Add t.Parallel() to slow hash multiclone tests","description":"Add t.Parallel() to TestHashIDs_MultiCloneConverge and TestHashIDs_IdenticalContentDedup so they run concurrently.\n\nExpected savings: ~10 seconds (from 20s to ~11s)\n\nImplementation:\n- Add t.Parallel() call at start of each test function\n- Verify tests don't share resources that would cause conflicts\n- Run tests to confirm they work in parallel\n\nFile: beads_hash_multiclone_test.go:34, :101","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-04T01:24:15.705228-08:00","updated_at":"2025-11-04T09:52:31.945545-08:00","closed_at":"2025-11-04T09:52:31.945545-08:00","source_repo":".","dependencies":[{"issue_id":"bd-pdwz","depends_on_id":"bd-l5gq","type":"blocks","created_at":"2025-11-04T01:24:15.706149-08:00","created_by":"daemon"}]} +{"id":"bd-pmuu","content_hash":"5e55fb75f647ecdcf928497d05c0263a5db7baf1d1d47e8b4074ca02766672ba","title":"Create architecture decision record (ADR)","description":"Document why we chose Agent Mail, alternatives considered, and tradeoffs.\n\nAcceptance Criteria:\n- Problem statement (git traffic, no locks)\n- Alternatives considered (custom RPC, Redis, etc.)\n- Why Agent Mail fits Beads\n- Integration principles (optional, graceful degradation)\n- Future considerations\n\nFile: docs/adr/002-agent-mail-integration.md","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-07T22:42:51.420203-08:00","updated_at":"2025-11-08T01:51:40.351586-08:00","closed_at":"2025-11-08T00:06:01.816892-08:00","source_repo":".","dependencies":[{"issue_id":"bd-pmuu","depends_on_id":"bd-spmx","type":"parent-child","created_at":"2025-11-08T00:02:47.93119-08:00","created_by":"daemon"}]} {"id":"bd-q13h","content_hash":"ad443aa59b317e5900e1c0e3a083d693c699c44f8582a6bfdf6c0d93f909e40c","title":"Makefile Integration for Benchmarks","description":"Add a single 'bench' target to the Makefile for running performance benchmarks.\n\nTarget:\n.PHONY: bench\n\nbench:\n\tgo test -bench=. -benchtime=3s -tags=bench \\\n\t\t-cpuprofile=cpu.prof -memprofile=mem.prof \\\n\t\t./internal/storage/sqlite/\n\t@echo \"\"\n\t@echo \"Profiles generated. View flamegraph:\"\n\t@echo \" go tool pprof -http=:8080 cpu.prof\"\n\nFeatures:\n- Single simple target, no complexity\n- Always generates CPU and memory profiles\n- Clear output on how to view results\n- 3 second benchmark time for reliable results\n- Uses bench build tag for heavy benchmarks\n\nUsage:\n make bench # Run all benchmarks\n go test -bench=BenchmarkGetReadyWork... # Run specific benchmark","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-13T22:23:25.922916-08:00","updated_at":"2025-11-14T08:55:17.620824-08:00","closed_at":"2025-11-14T08:55:17.620824-08:00","source_repo":".","dependencies":[{"issue_id":"bd-q13h","depends_on_id":"bd-zj8e","type":"blocks","created_at":"2025-11-13T22:24:06.371947-08:00","created_by":"daemon"}]} {"id":"bd-q2ri","content_hash":"472cf1c393423f4ec4a4e74a971be0f44fd4b8186ea276860fe0947d031e3eb1","title":"bd-hv01: Add comprehensive edge case tests for deletion tracking","description":"Need to add tests for: corrupted snapshot file, stale snapshot (\u003e 1 hour), concurrent sync operations (daemon + manual), partial deletion failure, empty remote JSONL, multi-repo mode with deletions, git worktree scenario.\n\nAlso refine TestDeletionWithLocalModification to check for specific conflict error instead of accepting any error.\n\nFiles: cmd/bd/deletion_tracking_test.go","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-06T18:16:26.849881-08:00","updated_at":"2025-11-06T20:06:49.221043-08:00","closed_at":"2025-11-06T19:55:39.700695-08:00","source_repo":".","dependencies":[{"issue_id":"bd-q2ri","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T18:19:15.104113-08:00","created_by":"daemon"}]} {"id":"bd-q59i","content_hash":"807970859370452e8892779759b15ba2f52740d8d38ad1c1f8f47a364c898cc3","title":"User Diagnostics (bd doctor --perf)","description":"Extend cmd/bd/doctor.go to add --perf flag for user performance diagnostics.\n\nFunctionality:\n- Add --perf flag to existing bd doctor command\n- Collect system info (OS, arch, Go version, SQLite version)\n- Collect database stats (size, issue counts, dependency counts)\n- Time key operations on user's actual database:\n * bd ready\n * bd list --status=open\n * bd show \u003crandom-issue\u003e\n * bd create (with rollback)\n * Search with filters\n- Generate CPU profile automatically (timestamped filename)\n- Output simple report with platform info, timings, profile location\n\nOutput example:\n Beads Performance Diagnostics\n Platform: darwin/arm64\n Database: 8,234 issues (4,123 open)\n \n Operation Performance:\n bd ready 42ms\n bd list --status=open 15ms\n \n Profile saved: beads-perf-2025-11-13.prof\n View: go tool pprof -http=:8080 beads-perf-2025-11-13.prof\n\nImplementation:\n- Extend cmd/bd/doctor.go (~100 lines)\n- Use runtime/pprof for CPU profiling\n- Use time.Now()/time.Since() for timing\n- Rollback test operations (don't modify user's database)","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-13T22:23:11.988562-08:00","updated_at":"2025-11-13T22:45:57.26294-08:00","closed_at":"2025-11-13T22:45:57.26294-08:00","source_repo":".","dependencies":[{"issue_id":"bd-q59i","depends_on_id":"bd-zj8e","type":"blocks","created_at":"2025-11-13T22:24:06.336236-08:00","created_by":"daemon"}]} {"id":"bd-q652","content_hash":"d106ac81413dae0b983c13d405a419c5c3f9c6009668a642d0a115aa43524235","title":"Database pollution in ~/src/dave/vc: 895 issues vs canonical 310","description":"~/src/dave/vc/.beads/beads.db has 895 total issues (675 open, 149 closed), but canonical ~/src/vc/.beads/vc.db has only 310 issues (230 open). This is 585 extra issues - likely pollution from other repositories.\n\nNeed to:\n1. Identify which issues are polluted (use detect-pollution)\n2. Compare issue IDs between dave/vc and canonical vc databases\n3. Determine pollution source (beads repo? other repos?)\n4. Clean up polluted database\n5. Root cause: why did pollution occur?","notes":"Investigation findings so far:\n- Polluted DB (~/src/dave/vc/.beads/beads.db): 241 issues (180 open, 43 closed)\n- Canonical DB (~/src/vc/.beads/vc.db): 310 issues (230 open, 62 closed)\n- Contradiction: Polluted has FEWER issues, not more (241 \u003c 310, diff of 69)\n- Only 1 unique ID in polluted: vc-55fi\n- All source_repo fields are set to \".\" in both databases\n- Issue description claims 895 issues in polluted vs 310 canonical - numbers don't match current state\n- Possible: Pollution was already partially cleaned, or issue description refers to different database?","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-07T00:07:37.999168-08:00","updated_at":"2025-11-07T00:13:32.179396-08:00","closed_at":"2025-11-07T00:13:32.179396-08:00","source_repo":"."} {"id":"bd-qhws","content_hash":"8bc709fe88d2b880e7ffa946e4c957d5c0494c8f198bc51b7fe0543a99b30947","title":"Configure database connection pool limits for daemon mode","description":"Database connection pool not configured for file-based databases when running in daemon mode.\n\nLocation: internal/storage/sqlite/sqlite.go:108-116\n\nProblem:\n- Daemon is a long-running server handling concurrent RPC requests\n- Multiple CLI commands hit same daemon simultaneously \n- Go default: unlimited connections (MaxOpenConns=0)\n- SQLite IMMEDIATE transactions serialize on write lock\n- Can have 100+ goroutines blocked waiting, each holding connection\n- Results in connection exhaustion and 'database is locked' errors\n\nCurrent code only limits in-memory DBs:\nif isInMemory {\n db.SetMaxOpenConns(1)\n db.SetMaxIdleConns(1)\n}\n// File DBs: UNLIMITED connections!\n\nFix:\nif !isInMemory {\n maxConns := runtime.NumCPU() + 1 // 1 writer + N readers\n db.SetMaxOpenConns(maxConns)\n db.SetMaxIdleConns(2)\n db.SetConnMaxLifetime(0)\n}\n\nImpact: 'database is locked' errors under concurrent load in daemon mode\n\nNote: NOT an issue for direct CLI usage (each process isolated). Only affects daemon mode where multiple CLI commands share one database pool.\n\nEffort: 1 hour","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-16T14:51:24.579345-08:00","updated_at":"2025-11-16T15:04:00.450911-08:00","closed_at":"2025-11-16T15:04:00.450911-08:00","source_repo":"."} -{"id":"bd-qq2i","content_hash":"0684ba6ad288ba05379275c2947f5813ce400c292eae2f48bba8092fd71e7ce6","title":"Add 'bd message send' command for Agent Mail messaging","description":"Agent Mail server supports messaging between agents, but bd CLI only uses it for file reservations. Add commands for inter-agent messaging.\n\n## Background\n- Agent Mail server running at http://127.0.0.1:8765\n- 12 workspaces configured across 3 channels (beads.dev, vc.dev, wyvern.dev)\n- Current integration: file reservations only\n- Gap: no way to send messages from bd CLI\n\n## Proposed Commands\n\n```bash\n# Send message to another agent\nbd message send \u003cto-agent\u003e \u003cmessage\u003e [options]\n --subject \u003csubject\u003e\n --thread-id \u003cthread-id\u003e # Optional - group related messages\n --project-id \u003cproject\u003e # Defaults to BEADS_PROJECT_ID\n\n# List inbox messages\nbd message inbox [options]\n --limit \u003cN\u003e\n --unread-only\n\n# Read specific message\nbd message read \u003cmessage-id\u003e\n\n# Mark message as acknowledged\nbd message ack \u003cmessage-id\u003e\n```\n\n## Example Usage\n\n```bash\n# Send message to agent in same channel\nbd message send cino-beads-stevey-macbook \"Working on bd-z0yn, need your review\" \\\n --subject \"Review request\" \\\n --thread-id bd-z0yn\n\n# Check inbox\nbd message inbox --unread-only\n\n# Read and acknowledge\nbd message read msg-abc123\nbd message ack msg-abc123\n```\n\n## Design Notes\n- Use same env vars (BEADS_AGENT_MAIL_URL, BEADS_AGENT_NAME, BEADS_PROJECT_ID)\n- Graceful degradation if Agent Mail unavailable\n- JSON output support for all commands\n- Consider integrating with bd update/close (auto-notify on status changes)\n\n## References\n- Agent Mail README: ~/src/mcp_agent_mail/README.md\n- Beads integration docs: docs/AGENT_MAIL.md","notes":"## Implementation Summary\n\nAdded four new commands to bd CLI for Agent Mail messaging:\n\n1. `bd message send \u003cto-agent\u003e \u003cmessage\u003e` - Send messages to other agents\n - Flags: --subject, --thread-id, --importance, --ack-required\n - Supports markdown content\n - Thread conversations by issue ID\n\n2. `bd message inbox` - List inbox messages\n - Flags: --limit, --unread-only, --urgent-only, --json\n - Shows subject, sender, age, importance\n - Highlights unread and ACK-required messages\n\n3. `bd message read \u003cmessage-id\u003e` - Read and mark message as read\n - Automatically marks message as read\n - Shows message content\n\n4. `bd message ack \u003cmessage-id\u003e` - Acknowledge a message\n - Marks message as acknowledged\n - Also marks as read if not already\n\n## Implementation Details\n\n- Uses JSON-RPC over HTTP to communicate with Agent Mail server\n- Configuration via environment variables (BEADS_AGENT_MAIL_URL, BEADS_AGENT_NAME, BEADS_PROJECT_ID)\n- Graceful error messages when Agent Mail not configured\n- Full JSON output support for programmatic use\n- Follows same patterns as existing bd commands\n\n## Documentation\n\nUpdated:\n- docs/AGENT_MAIL.md - Added \"Messaging Commands\" section with examples and best practices\n- README.md - Added \"Messaging (Agent Mail)\" section in Usage\n\n## Testing\n\n- Compiles successfully\n- Help output works correctly\n- Ready for integration testing with Agent Mail server","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-08T12:44:03.547806-08:00","updated_at":"2025-11-08T12:49:02.436927-08:00","closed_at":"2025-11-08T12:49:02.436927-08:00","source_repo":"."} +{"id":"bd-qq2i","content_hash":"9e1e4ce5774fa61cdcd093805f0475bc54b39ced9672e81c9fea781441de2ef2","title":"Add 'bd message send' command for Agent Mail messaging","description":"Agent Mail server supports messaging between agents, but bd CLI only uses it for file reservations. Add commands for inter-agent messaging.\n\n## Background\n- Agent Mail server running at http://127.0.0.1:8765\n- 12 workspaces configured across 3 channels (beads.dev, vc.dev, wyvern.dev)\n- Current integration: file reservations only\n- Gap: no way to send messages from bd CLI\n\n## Proposed Commands\n\n```bash\n# Send message to another agent\nbd message send \u003cto-agent\u003e \u003cmessage\u003e [options]\n --subject \u003csubject\u003e\n --thread-id \u003cthread-id\u003e # Optional - group related messages\n --project-id \u003cproject\u003e # Defaults to BEADS_PROJECT_ID\n\n# List inbox messages\nbd message inbox [options]\n --limit \u003cN\u003e\n --unread-only\n\n# Read specific message\nbd message read \u003cmessage-id\u003e\n\n# Mark message as acknowledged\nbd message ack \u003cmessage-id\u003e\n```\n\n## Example Usage\n\n```bash\n# Send message to agent in same channel\nbd message send cino-beads-stevey-macbook \"Working on bd-z0yn, need your review\" \\\n --subject \"Review request\" \\\n --thread-id bd-z0yn\n\n# Check inbox\nbd message inbox --unread-only\n\n# Read and acknowledge\nbd message read msg-abc123\nbd message ack msg-abc123\n```\n\n## Design Notes\n- Use same env vars (BEADS_AGENT_MAIL_URL, BEADS_AGENT_NAME, BEADS_PROJECT_ID)\n- Graceful degradation if Agent Mail unavailable\n- JSON output support for all commands\n- Consider integrating with bd update/close (auto-notify on status changes)\n\n## References\n- Agent Mail README: ~/src/mcp_agent_mail/README.md\n- Beads integration docs: docs/AGENT_MAIL.md","notes":"## Implementation Summary\n\nAdded four new commands to bd CLI for Agent Mail messaging:\n\n1. `bd message send \u003cto-agent\u003e \u003cmessage\u003e` - Send messages to other agents\n - Flags: --subject, --thread-id, --importance, --ack-required\n - Supports markdown content\n - Thread conversations by issue ID\n\n2. `bd message inbox` - List inbox messages\n - Flags: --limit, --unread-only, --urgent-only, --json\n - Shows subject, sender, age, importance\n - Highlights unread and ACK-required messages\n\n3. `bd message read \u003cmessage-id\u003e` - Read and mark message as read\n - Automatically marks message as read\n - Shows message content\n\n4. `bd message ack \u003cmessage-id\u003e` - Acknowledge a message\n - Marks message as acknowledged\n - Also marks as read if not already\n\n## Implementation Details\n\n- Uses JSON-RPC over HTTP to communicate with Agent Mail server\n- Configuration via environment variables (BEADS_AGENT_MAIL_URL, BEADS_AGENT_NAME, BEADS_PROJECT_ID)\n- Graceful error messages when Agent Mail not configured\n- Full JSON output support for programmatic use\n- Follows same patterns as existing bd commands\n\n## Documentation\n\nUpdated:\n- docs/AGENT_MAIL.md - Added \"Messaging Commands\" section with examples and best practices\n- README.md - Added \"Messaging (Agent Mail)\" section in Usage\n\n## Testing\n\n- Compiles successfully\n- Help output works correctly\n- Ready for integration testing with Agent Mail server","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-08T12:44:03.547806-08:00","updated_at":"2025-11-08T12:49:02.436927-08:00","closed_at":"2025-11-08T12:49:02.436927-08:00","source_repo":"."} {"id":"bd-qqvw","content_hash":"745b79db79433a49b763685e52e45f7083e49e26ca4dc4e82d16848a09ca1817","title":"Vendor and integrate beads-merge tool","description":"Incorporate @neongreen's beads-merge 3-way merge tool into bd to solve:\n- Multi-workspace deletion sync (bd-hv01)\n- Git merge conflicts in JSONL\n- Field-level intelligent merging\n\n**Repository**: https://github.com/neongreen/mono/tree/main/beads-merge\n\n**Integration approach**: Vendor the Go code with attribution, pending @neongreen's approval (GitHub issue #240)\n\n**Benefits**:\n- Prevents deletion resurrection bug\n- Smart dependency merging (union + dedup)\n- Timestamp handling (max wins)\n- Detects deleted-vs-modified conflicts\n- Works as git merge driver\n\n**Acceptance criteria**:\n- beads-merge code vendored into bd codebase\n- Available as `bd merge` command\n- Git merge driver setup during `bd init`\n- Tests verify 3-way merge logic\n- Documentation updated\n- @neongreen credited","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-05T18:41:59.500359-08:00","updated_at":"2025-11-06T18:19:16.234208-08:00","closed_at":"2025-11-06T15:40:24.796921-08:00","source_repo":"."} -{"id":"bd-qs4p","content_hash":"e5cf4c9117dee9cc4719b39dd19b74861efdca7225d2ced35612207862e46cdb","title":"bd import fails on duplicate external_ref with no resolution options","description":"When JSONL contains duplicate external_ref values (e.g., two issues both have external_ref='BS-170'), bd import fails entirely with no resolution options.\n\nUser must manually edit JSONL to remove duplicates, which is error-prone.\n\nExample error:\n```\nbatch import contains duplicate external_ref values:\nexternal_ref 'BS-170' appears in issues: [opal-39 opal-43]\n```\n\nShould handle this similar to duplicate issue detection - offer to merge, pick one, or clear duplicates.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-06T10:53:41.906165-08:00","updated_at":"2025-11-06T11:03:16.975041-08:00","closed_at":"2025-11-06T11:03:16.975041-08:00","source_repo":"."} +{"id":"bd-qs4p","content_hash":"46a4cf3491c85c38d7bf9e3ffc260c939d76e471d9dae41785de197269e3c05c","title":"bd import fails on duplicate external_ref with no resolution options","description":"When JSONL contains duplicate external_ref values (e.g., two issues both have external_ref='BS-170'), bd import fails entirely with no resolution options.\n\nUser must manually edit JSONL to remove duplicates, which is error-prone.\n\nExample error:\n```\nbatch import contains duplicate external_ref values:\nexternal_ref 'BS-170' appears in issues: [opal-39 opal-43]\n```\n\nShould handle this similar to duplicate issue detection - offer to merge, pick one, or clear duplicates.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-06T10:53:41.906165-08:00","updated_at":"2025-11-06T11:03:16.975041-08:00","closed_at":"2025-11-06T11:03:16.975041-08:00","source_repo":"."} {"id":"bd-r1pf","content_hash":"aa28faaa7538a6f1691a5dbc3f5136c2f446c7a16836ee0b572d8fe3e86adcff","title":"Test label","description":"","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-06T20:16:20.609492-08:00","updated_at":"2025-11-06T20:16:34.973855-08:00","closed_at":"2025-11-06T20:16:34.973855-08:00","source_repo":".","labels":[""," urgent "," bug "," critical "]} {"id":"bd-r79z","content_hash":"2972e60ecf73426a5349415689e57a2404800ee61468ed6d295ab7d4b2c5c7e0","title":"GH#245: Windows MCP subprocess timeout for git rev-parse","description":"User reports git detection timing out on Windows in MCP server, but CLI works fine.\n\nPath: C:\\Users\\chris\\Documents\\DEV_R\\quarto-cli\nError: Git repository detection timed out after 5s\nWorks fine in CLI: `git rev-parse --show-toplevel` succeeds\n\nHypothesis: subprocess.run() with asyncio.to_thread() may have Windows-specific issues or the MCP runtime environment may not have proper PATH/git access.\n\nPotential fixes:\n1. Add subprocess shell=True on Windows\n2. Increase timeout further for Windows\n3. Add better error logging to capture subprocess stderr\n4. Skip git resolution entirely on timeout and just use provided path","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-07T16:31:37.531223-08:00","updated_at":"2025-11-07T19:00:44.358543-08:00","closed_at":"2025-11-07T19:00:44.358543-08:00","source_repo":"."} {"id":"bd-rb75","content_hash":"e91418eb7abda986ddb57feaee1b91867043de8c0883d71c21dc1bf4047f5824","title":"Clean up merge conflict artifacts in .beads directory","description":"After resolving merge conflicts in .beads/beads.jsonl, leftover artifacts remain as untracked files:\n- .beads/beads.base.jsonl\n- .beads/beads.left.jsonl\n\nThese appear to be temporary files created during merge conflict resolution.\n\nOptions to fix:\n1. Add these patterns to .beads/.gitignore automatically\n2. Clean up these files after successful merge resolution\n3. Document that users should delete them manually\n4. Add a check in 'bd sync' or 'bd doctor' to detect and remove stale merge artifacts\n\nPreferred solution: Add *.base.jsonl and *.left.jsonl patterns to .beads/.gitignore during 'bd init', and optionally clean them up automatically after successful import.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-06T19:09:16.114274-08:00","updated_at":"2025-11-06T19:13:44.630402-08:00","closed_at":"2025-11-06T19:13:44.630402-08:00","source_repo":"."} -{"id":"bd-rbxi","content_hash":"df423e4150f6f3b5a19467b8cb41a4b90475cc9ced45ed577ebbe9e3e75279f9","title":"bd-hv01: Deletion tracking production readiness","description":"Epic to track all improvements and fixes needed to make the deletion tracking implementation ([deleted:bd-hv01]) production-ready.\n\nThe core 3-way merge algorithm is sound, but there are critical issues around atomicity, error handling, and edge cases that need to be addressed before this can be safely used in production.\n\nCritical path (P1):\n- Non-atomic snapshot operations\n- Brittle JSON string comparison\n- Silent partial deletion failures\n- Race conditions in concurrent scenarios\n\nFollow-up work (P2-P3):\n- Test coverage for edge cases and multi-repo mode\n- Performance optimizations\n- Code refactoring and observability\n\nRelated commit: 708a81c","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-06T18:18:24.315646-08:00","updated_at":"2025-11-08T03:12:04.15385-08:00","closed_at":"2025-11-08T02:19:19.780741-08:00","source_repo":"."} -{"id":"bd-ri6d","content_hash":"0d6a54b74b097c2a5f3d007f4509f9287c728fabfb50a6eb9e5d2935cb2f5341","title":"bd message: Fix inefficient client-side filtering for --unread-only","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-08T12:54:28.614867-08:00","updated_at":"2025-11-08T12:58:59.551512-08:00","closed_at":"2025-11-08T12:58:59.551512-08:00","source_repo":".","dependencies":[{"issue_id":"bd-ri6d","depends_on_id":"bd-6uix","type":"parent-child","created_at":"2025-11-08T12:55:55.012455-08:00","created_by":"daemon"}]} +{"id":"bd-rbxi","content_hash":"df423e4150f6f3b5a19467b8cb41a4b90475cc9ced45ed577ebbe9e3e75279f9","title":"bd-hv01: Deletion tracking production readiness","description":"Epic to track all improvements and fixes needed to make the deletion tracking implementation ([deleted:bd-hv01]) production-ready.\n\nThe core 3-way merge algorithm is sound, but there are critical issues around atomicity, error handling, and edge cases that need to be addressed before this can be safely used in production.\n\nCritical path (P1):\n- Non-atomic snapshot operations\n- Brittle JSON string comparison\n- Silent partial deletion failures\n- Race conditions in concurrent scenarios\n\nFollow-up work (P2-P3):\n- Test coverage for edge cases and multi-repo mode\n- Performance optimizations\n- Code refactoring and observability\n\nRelated commit: 708a81c","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-06T18:18:24.315646-08:00","updated_at":"2025-11-08T03:54:04.857449-08:00","closed_at":"2025-11-08T02:19:19.780741-08:00","source_repo":"."} +{"id":"bd-ri6d","content_hash":"62b887c13232eeabf1d1b25a514b6044ff6ea7b510a06cbd5a736beabe722c43","title":"bd message: Fix inefficient client-side filtering for --unread-only","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-08T12:54:28.614867-08:00","updated_at":"2025-11-08T12:58:59.551512-08:00","closed_at":"2025-11-08T12:58:59.551512-08:00","source_repo":".","dependencies":[{"issue_id":"bd-ri6d","depends_on_id":"bd-6uix","type":"parent-child","created_at":"2025-11-08T12:55:55.012455-08:00","created_by":"daemon"}]} {"id":"bd-rpn","content_hash":"4b0c8a22edcf49b95f1caba51397f5a6289bc170a69084bc3c39267a8f43d888","title":"Implement `bd prime` command for AI context loading","description":"Create a `bd prime` command that outputs AI-optimized markdown containing essential Beads workflow context. This provides an alternative to the MCP server for token-conscious users and enables context recovery after compaction/clearing.","design":"## Implementation\n\nCreate `cmd/bd/prime.go` that outputs AI-optimized markdown with **adaptive content based on MCP detection**.\n\n## MCP-Aware Output Strategy\n\n`bd prime` detects if MCP server is active and adjusts output accordingly:\n\n**With MCP detected** (~500 tokens):\n- Workflow reminders only\n- \"Use bd MCP tools, not markdown TODOs\"\n- Session management tips\n- NO CLI command syntax (user has native MCP tools)\n\n**Without MCP** (~1-2k tokens):\n- Full workflow rules\n- Complete CLI command reference with examples\n- All command syntax and options\n\n**Why this matters:**\n- MCP users don't need CLI docs (they have native function calls)\n- Non-MCP users need full command reference\n- Same hook works for all users, adapts to their environment\n- Reduces token waste for MCP users\n\n## MCP Detection Logic\n\n```go\nfunc isMCPActive() bool {\n // Check environment variables that Claude Code sets when MCP servers are loaded\n // Options to investigate:\n // 1. Check for CLAUDE_MCP_SERVERS environment variable\n // 2. Check for specific MCP server process indicators\n // 3. Parse ~/.claude/settings.json for enabled MCP servers\n // 4. Check for MCP socket/connection availability\n \n // Fallback: assume MCP if we can't determine\n // (safer to output less and have user call with --full flag)\n return checkMCPEnvironment()\n}\n```\n\n**Alternative: Command flag for explicit control:**\n```bash\nbd prime # Auto-detect MCP\nbd prime --full # Force full output (ignore MCP detection)\nbd prime --mcp # Force MCP mode (minimal output)\n```\n\n## Discovery Logic\n\n**Skip PersistentPreRun database initialization:**\nAdd \"prime\" to noDbCommands list in main.go so it doesn't require .beads/ upfront.\n\n**Silent, cross-platform execution:**\n```go\nvar primeCmd = \u0026cobra.Command{\n Use: \"prime\",\n Short: \"Output AI-optimized workflow context\",\n Run: func(cmd *cobra.Command, args []string) {\n // Find .beads/ directory (walks up tree like bd does)\n dbPath := beads.FindDatabasePath()\n if dbPath == \"\" {\n // Not in a beads project - silent exit with success\n // CRITICAL: No stderr output, exit 0\n // This enables cross-platform hook integration\n os.Exit(0)\n }\n \n // Detect MCP mode (unless overridden by flags)\n mcpMode := isMCPActive()\n if fullFlag {\n mcpMode = false\n }\n if mcpFlag {\n mcpMode = true\n }\n \n // Output workflow context (adaptive based on MCP)\n if err := outputPrimeContext(mcpMode); err != nil {\n // Suppress all errors - silent exit with success\n // Never write to stderr (breaks Windows compatibility)\n os.Exit(0)\n }\n },\n}\n```\n\n**Why silent execution matters:**\n- **Cross-platform**: No shell-specific syntax needed (`2\u003e/dev/null`, `|| true`)\n- **Hook-friendly**: Can be called directly from JSON: `\"command\": \"bd prime\"`\n- **Windows compatible**: Works in cmd.exe, PowerShell, bash\n- **Non-beads projects**: No error noise when run outside beads projects\n\n## Output Formats\n\n### MCP Mode (~500 tokens)\n```markdown\n# Beads Workflow Context\n\n\u003e **You have native bd MCP tools available** - use them instead of markdown TODOs\n\u003e Run `bd prime --full` for complete CLI reference if needed\n\n## Core Workflow Rules\n\n**Task Tracking:**\n- Use bd MCP tools for ALL work tracking (never markdown TODOs)\n- Check available work: use `mcp__plugin_beads_beads__ready` tool\n- Create issues: use `mcp__plugin_beads_beads__create` tool\n- Update status: use `mcp__plugin_beads_beads__update` tool\n\n**Session Management:**\n- Start: Check `ready` tool for available work\n- During: Keep issues updated with `update` tool\n- End: Verify sync status, close completed issues\n\n**Git Integration:**\n- Hooks auto-sync issues with git commits\n- Run `sync` tool at session end to push to remote\n\n**Need help?** \n- Use `show` tool for issue details\n- Check AGENTS.md for complete workflow\n- Run `bd prime --full` for CLI command reference\n```\n\n### Non-MCP Mode (~1-2k tokens)\n```markdown\n# Beads Workflow Context\n\n\u003e **Context Recovery**: Run `bd prime` after compaction, clear, or new session\n\u003e Hooks auto-call this in Claude Code when .beads/ detected\n\n## Core Rules\n- Track ALL work in bd (no markdown TODOs)\n- Git workflow: hooks auto-sync, run `bd sync` at session end\n- Session management: check `bd ready` for available work\n\n## Essential Commands\n\n### Finding Work\n- `bd ready` - Show issues ready to work (no blockers)\n- `bd list --status=open` - All open issues\n- `bd list --status=in_progress` - Your active work\n- `bd show \u003cid\u003e` - Detailed issue view with dependencies\n\n### Creating \u0026 Updating\n- `bd create --title=\"...\" --type=task|bug|feature` - New issue\n- `bd update \u003cid\u003e --status=in_progress` - Claim work\n- `bd update \u003cid\u003e --assignee=username` - Assign to someone\n- `bd close \u003cid\u003e` - Mark complete\n- `bd close \u003cid\u003e --reason=\"explanation\"` - Close with reason\n\n### Dependencies \u0026 Blocking\n- `bd dep \u003cfrom\u003e \u003cto\u003e` - Add blocker dependency (from blocks to)\n- `bd blocked` - Show all blocked issues\n- `bd show \u003cid\u003e` - See what's blocking/blocked by this issue\n\n### Sync \u0026 Collaboration\n- `bd sync` - Sync with git remote (run at session end)\n- `bd sync --status` - Check sync status without syncing\n\n### Project Health\n- `bd stats` - Project statistics (open/closed/blocked counts)\n- `bd doctor` - Check for issues (sync problems, missing hooks)\n\n## Common Workflows\n\n**Starting work:**\n```bash\nbd ready # Find available work\nbd show \u003cid\u003e # Review issue details\nbd update \u003cid\u003e --status=in_progress # Claim it\n```\n\n**Completing work:**\n```bash\nbd close \u003cid\u003e # Mark done\nbd sync # Push to remote\n```\n\n**Creating dependent work:**\n```bash\nbd create --title=\"Implement feature X\" --type=feature\nbd create --title=\"Write tests for X\" --type=task\nbd dep beads-xxx beads-yyy # Feature blocks tests\n```\n\nFor complete docs: AGENTS.md, QUICKSTART.md, `bd --help`\n```\n\n## Behavior Guarantees\n\n1. **Never writes to stderr** (all errors suppressed internally)\n2. **Always exits 0** (success) even when:\n - Not in a beads project\n - .beads/ not found\n - Any internal error occurs\n3. **Cross-platform compatible** (no shell-specific syntax)\n4. **Hook-safe** (can be called directly without wrappers)\n5. **MCP-aware** (adapts output based on user's tool environment)\n\n## Files\n- `cmd/bd/prime.go` - Command implementation with MCP detection\n- `cmd/bd/prime_test.go` - Tests (including MCP mode switching)\n- Update `cmd/bd/main.go` - Add \"prime\" to noDbCommands list","acceptance_criteria":"- `bd prime` outputs markdown format\n- Output is ~1-2k tokens\n- Output includes workflow rules and command reference\n- Command has unit tests\n- Documentation updated in AGENTS.md","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-11T23:28:42.74124-08:00","updated_at":"2025-11-12T08:30:15.711595-08:00","closed_at":"2025-11-12T08:30:15.711595-08:00","source_repo":".","dependencies":[{"issue_id":"bd-rpn","depends_on_id":"bd-90v","type":"parent-child","created_at":"2025-11-11T23:31:20.357861-08:00","created_by":"daemon"}]} -{"id":"bd-ry1u","content_hash":"b566c54bd06360dbc38709cfb93040c8da04abf0309269bd8b4ee3710a9a4099","title":"Publish official devcontainer configuration","description":"","design":"Problem: GH issue #229 shows git hooks aren't available in devcontainers because bd CLI isn't installed. Solution: Provide official .devcontainer/devcontainer.json that installs Go, builds bd from source, runs bd init --quiet, and installs hooks automatically. Benefits: New contributors start immediately, AI assistants work out-of-box, no manual setup. Implementation: Create .devcontainer/devcontainer.json with Go feature, postCreateCommand to build bd and install hooks, environment variables. Acceptance: Container builds with bd installed, hooks functional, documentation updated, tested with Codespaces and VSCode.","notes":"Devcontainer configuration implemented. Manual testing required in actual devcontainer environment (Codespaces or VSCode Remote Containers). All code changes complete, tests pass, linting clean.","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-11-05T15:02:21.783666-08:00","updated_at":"2025-11-05T17:46:42.70998-08:00","closed_at":"2025-11-05T17:46:42.70998-08:00","source_repo":"."} +{"id":"bd-ry1u","content_hash":"013464efc3cf53d47c2a170040c66099ce77b13d3d1b34c3729e6a5208122799","title":"Publish official devcontainer configuration","description":"","design":"Problem: GH issue #229 shows git hooks aren't available in devcontainers because bd CLI isn't installed. Solution: Provide official .devcontainer/devcontainer.json that installs Go, builds bd from source, runs bd init --quiet, and installs hooks automatically. Benefits: New contributors start immediately, AI assistants work out-of-box, no manual setup. Implementation: Create .devcontainer/devcontainer.json with Go feature, postCreateCommand to build bd and install hooks, environment variables. Acceptance: Container builds with bd installed, hooks functional, documentation updated, tested with Codespaces and VSCode.","notes":"Devcontainer configuration implemented. Manual testing required in actual devcontainer environment (Codespaces or VSCode Remote Containers). All code changes complete, tests pass, linting clean.","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-11-05T15:02:21.783666-08:00","updated_at":"2025-11-05T17:46:42.70998-08:00","closed_at":"2025-11-05T17:46:42.70998-08:00","source_repo":"."} {"id":"bd-s02","content_hash":"911d456e4dabae028dd615b643c99058ef12e55ea523cb81cc933783c7b13546","title":"Manual task","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-03T20:15:10.022202-08:00","updated_at":"2025-11-03T20:15:10.022202-08:00","source_repo":"."} -{"id":"bd-s1xn","content_hash":"3b73746c0cc91c7b846b7865c4cfbcaaaf77e7609d869d3b5d8101198053590f","title":"bd message: Refactor duplicated error messages","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-08T12:54:27.624981-08:00","updated_at":"2025-11-08T12:58:59.542795-08:00","closed_at":"2025-11-08T12:58:59.542795-08:00","source_repo":".","dependencies":[{"issue_id":"bd-s1xn","depends_on_id":"bd-6uix","type":"parent-child","created_at":"2025-11-08T12:55:54.96063-08:00","created_by":"daemon"}]} -{"id":"bd-sc57","content_hash":"c82176a5a4e821ce882030bbe3be411c528bc0fe659e1879c0be72758b55fb03","title":"Production Readiness (Optional)","description":"Enable multi-machine deployments with containerization and monitoring.","status":"closed","priority":3,"issue_type":"epic","created_at":"2025-11-07T22:43:31.527617-08:00","updated_at":"2025-11-08T01:06:12.904671-08:00","closed_at":"2025-11-08T01:06:12.904671-08:00","source_repo":".","dependencies":[{"issue_id":"bd-sc57","depends_on_id":"bd-wfmw","type":"blocks","created_at":"2025-11-07T22:43:31.528743-08:00","created_by":"daemon"},{"issue_id":"bd-sc57","depends_on_id":"bd-pdjb","type":"blocks","created_at":"2025-11-07T22:43:31.529193-08:00","created_by":"daemon"}]} +{"id":"bd-s1xn","content_hash":"0207827e9eec2a520f16f53a2cdaf50a06483dc53736aa5158e1ff971b88acc6","title":"bd message: Refactor duplicated error messages","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-08T12:54:27.624981-08:00","updated_at":"2025-11-08T12:58:59.542795-08:00","closed_at":"2025-11-08T12:58:59.542795-08:00","source_repo":".","dependencies":[{"issue_id":"bd-s1xn","depends_on_id":"bd-6uix","type":"parent-child","created_at":"2025-11-08T12:55:54.96063-08:00","created_by":"daemon"}]} +{"id":"bd-sc57","content_hash":"84c36e7e83f18357f9123ff25df6d97f10d8ccd9d89fae223b0031b59bdff168","title":"Production Readiness (Optional)","description":"Enable multi-machine deployments with containerization and monitoring.","status":"closed","priority":3,"issue_type":"epic","created_at":"2025-11-07T22:43:31.527617-08:00","updated_at":"2025-11-08T01:51:40.351792-08:00","closed_at":"2025-11-08T01:06:12.904671-08:00","source_repo":".","dependencies":[{"issue_id":"bd-sc57","depends_on_id":"bd-wfmw","type":"blocks","created_at":"2025-11-07T22:43:31.528743-08:00","created_by":"daemon"},{"issue_id":"bd-sc57","depends_on_id":"bd-pdjb","type":"blocks","created_at":"2025-11-07T22:43:31.529193-08:00","created_by":"daemon"}]} {"id":"bd-sjmr","content_hash":"55d8ded3fe8f5cb6bd2096aad15c70e5e88230bf0bb2ea1a71347376eb2f123d","title":"Fix inconsistent error handling in multi-repo deletion tracking","description":"From bd-xo6b code review: Multi-repo deletion tracking has mixed failure modes that can leave system in inconsistent state.\n\n**Current behavior (daemon_sync.go):**\n- Snapshot capture (L505-514): Hard fail → aborts sync\n- Merge/prune (L575-584): Hard fail → aborts sync \n- Base snapshot update (L613-619): Soft fail → logs warning, continues\n\n**Critical problem:**\nIf merge fails on repo 3 of 5:\n- Repos 1-2 have already merged and deleted issues (irreversible)\n- Repos 3-5 are untouched\n- Database is in partially-updated state\n- No rollback mechanism\n\n**Real-world scenario:**\n```\nSync with repos [A, B, C]:\n1. Capture snapshots A ✓, B ✓, C ✗ → ABORT (good)\n2. Merge A ✓, B ✗ → ABORT but A already deleted issues (BAD - no rollback)\n3. Update base A ⚠, B ⚠ → Warnings only (inconsistent with 1 \u0026 2)\n```\n\n**Solution options:**\n1. **Two-phase commit:**\n - Phase 1: Validate all repos (check files exist, readable, parseable)\n - Phase 2: Apply changes atomically (or fail entirely before any mutations)\n\n2. **Fail-fast validation:**\n - Before any snapshot/merge operations, validate all repos upfront\n - Abort entire sync if any repo fails validation\n\n3. **Make base snapshot update consistent:**\n - Either make it hard-fail like the others, or make all soft-fail\n\n**Files:**\n- cmd/bd/daemon_sync.go:505-514 (snapshot capture)\n- cmd/bd/daemon_sync.go:575-584 (merge/prune)\n- cmd/bd/daemon_sync.go:613-619 (base snapshot update)\n\n**Recommendation:** Use option 1 (two-phase) or option 2 (fail-fast validation) + fix base snapshot inconsistency.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-06T19:31:29.538092-08:00","updated_at":"2025-11-06T19:35:41.268584-08:00","closed_at":"2025-11-06T19:35:41.268584-08:00","source_repo":".","dependencies":[{"issue_id":"bd-sjmr","depends_on_id":"bd-xo6b","type":"discovered-from","created_at":"2025-11-06T19:32:12.310033-08:00","created_by":"daemon"}]} -{"id":"bd-spmx","content_hash":"782a21bc7da73f2b62e340ff669b03731fcac21d75bd1bfdd222c04a565ff6ee","title":"Investigation \u0026 Proof of Concept","description":"Validate that MCP Agent Mail works as expected and delivers promised benefits before committing to full integration.","notes":"POC completed successfully:\n✅ bd-muls: Server installed and tested\n✅ bd-27xm: MCP tool execution issues resolved\n✅ [deleted:bd-6hji]: File reservation collision prevention validated\n✅ bd-htfk: Latency benchmarking shows 20-50x improvement\n✅ bd-pmuu: ADR 002 created documenting integration decision\n\nResults validate Agent Mail benefits:\n- Collision prevention works (exclusive file reservations)\n- Latency: \u003c100ms (vs 2000-5000ms git sync)\n- Lightweight deployment (\u003c50MB memory)\n- Optional/non-intrusive integration approach validated\n\nNext: bd-wfmw (Integration Layer Implementation)","status":"closed","priority":0,"issue_type":"epic","created_at":"2025-11-07T22:41:37.13757-08:00","updated_at":"2025-11-08T03:12:04.154114-08:00","closed_at":"2025-11-08T00:06:20.731732-08:00","source_repo":"."} +{"id":"bd-spmx","content_hash":"782a21bc7da73f2b62e340ff669b03731fcac21d75bd1bfdd222c04a565ff6ee","title":"Investigation \u0026 Proof of Concept","description":"Validate that MCP Agent Mail works as expected and delivers promised benefits before committing to full integration.","notes":"POC completed successfully:\n✅ bd-muls: Server installed and tested\n✅ bd-27xm: MCP tool execution issues resolved\n✅ [deleted:bd-6hji]: File reservation collision prevention validated\n✅ bd-htfk: Latency benchmarking shows 20-50x improvement\n✅ bd-pmuu: ADR 002 created documenting integration decision\n\nResults validate Agent Mail benefits:\n- Collision prevention works (exclusive file reservations)\n- Latency: \u003c100ms (vs 2000-5000ms git sync)\n- Lightweight deployment (\u003c50MB memory)\n- Optional/non-intrusive integration approach validated\n\nNext: bd-wfmw (Integration Layer Implementation)","status":"closed","priority":0,"issue_type":"epic","created_at":"2025-11-07T22:41:37.13757-08:00","updated_at":"2025-11-08T03:54:04.857727-08:00","closed_at":"2025-11-08T00:06:20.731732-08:00","source_repo":"."} {"id":"bd-srwk","content_hash":"77494cfb4c2b8f2746367239f800f0e36c93959a47385c7dc2a9d4ac54f4256d","title":"bd export should detect and prevent stale database exports","description":"## Problem\n\nWhen `bd export` is run with a stale database (older than issues.jsonl), it silently overwrites the JSONL file with stale data, causing data loss.\n\n## What Happened (vc project)\n\n1. Agent A created 4 new issues and exported to issues.jsonl (commit 99a9d58)\n2. Agent A closed an issue and exported again (commit 58b4613) - JSONL now has 4 epics\n3. Agent B had stale database (from before step 1)\n4. Agent B worked on unrelated issue and exported (commit 0609233)\n5. Agent B's export **overwrote issues.jsonl**, removing the 4 epics created by Agent A\n6. Required manual recovery by re-exporting from Agent A's correct database\n\n## Expected Behavior\n\n`bd export` should detect that the database is stale and either:\n- **Refuse to export** with error message explaining the issue\n- **Warn prominently** and require explicit --force flag to override\n- **Auto-import first** to sync database before exporting\n\n## How to Detect Staleness\n\nCompare modification times (similar to VC's ValidateDatabaseFreshness):\n1. Check .db, .db-wal, .db-shm timestamps (use newest for WAL mode)\n2. Check issues.jsonl timestamp\n3. If JSONL is newer by \u003e1 second: database is stale\n\n## Suggested Fix\n\nAdd staleness check in `bd export`:\n\n```go\nfunc Export(dbPath, jsonlPath string, force bool) error {\n // Check if database is stale\n if !force {\n if err := checkDatabaseFreshness(dbPath, jsonlPath); err != nil {\n return fmt.Errorf(\"database is stale: %w\\n\" +\n \"Run 'bd import %s' first to sync, or use --force to override\",\n err, jsonlPath)\n }\n }\n \n // Proceed with export...\n}\n```\n\n## Impact\n\n- **Severity**: High (silent data loss)\n- **Frequency**: Happens in multi-agent workflows when agents don't sync\n- **Workaround**: Manual recovery (re-export from correct database)\n\n## References\n\n- VC issue tracker: commits 58b4613 -\u003e 0609233 -\u003e c41c638\n- VC has similar check: `storage.ValidateDatabaseFreshness()`\n- Tolerance: 1 second (handles filesystem timestamp precision)","acceptance_criteria":"1. bd export detects stale database (JSONL newer than DB)\n2. Refuses to export with clear error message\n3. Suggests running 'bd import' first\n4. --force flag allows override with warning\n5. Tolerates filesystem timestamp precision (1 second)\n6. Works correctly with WAL mode (.db-wal files)\n7. Test coverage for staleness detection\n8. Documentation updated with export safety warnings","notes":"Fixed with ID-based comparison instead of just count. Now detects:\n1. DB has fewer issues than JSONL (count check)\n2. DB has different issues than JSONL (ID comparison)\n\nBoth scenarios now properly refuse export unless --force is used.\n\nImplementation uses getIssueIDsFromJSONL() to build a set of IDs from JSONL, then checks if any JSONL IDs are missing from DB. Shows specific missing issue IDs in error message.","status":"closed","priority":1,"issue_type":"bug","assignee":"amp","created_at":"2025-11-07T19:39:24.172154-08:00","updated_at":"2025-11-07T20:05:13.649736-08:00","closed_at":"2025-11-07T19:58:43.300177-08:00","source_repo":"."} {"id":"bd-t4u1","content_hash":"5558c6e25c6aae4be03fd9f112d892f6e69dc020dee2292a24ec185fb7b6a054","title":"False positive detection by Kaspersky Antivirus (Trojan)","description":"Kaspersky Antivirus falsely detects beads (bd.exe v0.23.1) as a Trojan (PDM:Trojan.Win32.Generic) and removes it.\nEvent: Malicious object detected\nComponent: System Watcher\nObject name: bd.exe\n","status":"open","priority":1,"issue_type":"task","created_at":"2025-11-20T18:56:12.498187-05:00","updated_at":"2025-11-20T18:56:12.498187-05:00","source_repo":"."} {"id":"bd-tmdx","content_hash":"0976d6529458902f06108d5d316fda3bf6ed299eaa684501aada481d9e4b10a5","title":"Investigate database pollution - unexpected issue count increases","description":"Two repositories showing unexpected issue counts:\n- ~/src/beads: 280 issues (expected ~209-220)\n- ~/src/dave/beads: 895 issues (675 open, 149 closed)\n\nThis suggests database pollution - issues from one repository leaking into another. Need to investigate:\n1. Run bd detect-pollution on both repos\n2. Check for cross-repo contamination\n3. Identify source of pollution (daemon? multi-repo config? import issues?)\n4. Clean up polluted databases\n5. Prevent future pollution","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-06T22:50:16.957689-08:00","updated_at":"2025-11-07T00:05:38.994405-08:00","closed_at":"2025-11-07T00:05:38.994405-08:00","source_repo":"."} {"id":"bd-tne","content_hash":"2a6596980450714800bddc88e106026743a1a131e96f09198eb7dc2a16d75ca4","title":"Add Claude setup tip with dynamic priority","description":"Add a predefined tip that suggests running `bd setup claude` when Claude Code is detected but not configured. This tip should have higher priority (shown more frequently) until the setup is complete.","design":"## Implementation\n\nAdd to tip registry in `cmd/bd/tips.go`:\n\n```go\n{\n ID: \"claude_setup\",\n Condition: func() bool {\n return isClaudeDetected() \u0026\u0026 !isClaudeSetupComplete()\n },\n Message: \"Run 'bd setup claude' to enable automatic context recovery in Claude Code\",\n Frequency: 24 * time.Hour, // Daily minimum gap\n Priority: 100, // Highest priority\n Probability: 0.6, // 60% chance when eligible\n}\n```\n\n## Detection Logic\n\n```go\nfunc isClaudeDetected() bool {\n // Check environment variables\n if os.Getenv(\"CLAUDE_CODE\") != \"\" || os.Getenv(\"ANTHROPIC_CLI\") != \"\" {\n return true\n }\n // Check if .claude/ directory exists\n if _, err := os.Stat(filepath.Join(os.Getenv(\"HOME\"), \".claude\")); err == nil {\n return true\n }\n return false\n}\n\nfunc isClaudeSetupComplete() bool {\n // Check for global installation\n home, err := os.UserHomeDir()\n if err == nil {\n _, err1 := os.Stat(filepath.Join(home, \".claude/commands/prime_beads.md\"))\n _, err2 := os.Stat(filepath.Join(home, \".claude/hooks/sessionstart\"))\n if err1 == nil \u0026\u0026 err2 == nil {\n return true // Global hooks installed\n }\n }\n \n // Check for project installation\n _, err1 := os.Stat(\".claude/commands/prime_beads.md\")\n _, err2 := os.Stat(\".claude/hooks/sessionstart\")\n return err1 == nil \u0026\u0026 err2 == nil\n}\n```\n\n## Priority and Probability Behavior\n\n**Why 60% probability?**\n- Important message (priority 100) but not critical\n- Daily frequency + 60% = shows ~4 times per week\n- Avoids spam while staying visible\n- Balances persistence with user experience\n\n**Comparison with other probabilities:**\n- 100% probability: Shows EVERY day (annoying)\n- 80% probability: Shows ~6 days per week (too frequent)\n- 60% probability: Shows ~4 days per week (balanced)\n- 40% probability: Shows ~3 days per week (might be missed)\n\n**Auto-stops when setup complete:**\n- Condition becomes false after `bd setup claude`\n- No manual dismissal needed\n- Tip naturally disappears from rotation","acceptance_criteria":"- Claude setup tip added to registry\n- isClaudeDetected() checks environment and filesystem\n- isClaudeSetupComplete() verifies hook installation\n- Tip shows daily until setup complete\n- Tip stops showing after setup\n- Unit tests for detection functions","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-11T23:29:29.871324-08:00","updated_at":"2025-11-11T23:50:29.756454-08:00","source_repo":".","dependencies":[{"issue_id":"bd-tne","depends_on_id":"bd-d4i","type":"blocks","created_at":"2025-11-11T23:29:29.872081-08:00","created_by":"daemon"},{"issue_id":"bd-tne","depends_on_id":"bd-br8","type":"blocks","created_at":"2025-11-11T23:29:29.87252-08:00","created_by":"daemon"}]} {"id":"bd-tru","content_hash":"0de12031088519a3dcd27968d6bf17eb3a92d1853264e5a0dceef3310b3a2b04","title":"Update documentation for bd prime and Claude integration","description":"Update AGENTS.md, README.md, and QUICKSTART.md to document the new `bd prime` command, `bd setup claude` command, and tip system.","design":"## Documentation Updates\n\n### AGENTS.md\nAdd new section \"Context Recovery\":\n```markdown\n## Context Recovery\n\n### The Problem\nAfter context compaction or clearing conversation, AI agents may forget to use Beads and revert to markdown TODOs. Claude Code hooks solve this.\n\n### bd prime Command\nThe `bd prime` command outputs essential Beads workflow context in AI-optimized markdown format (~1-2k tokens).\n\n**When to use:**\n- After context compaction\n- After clearing conversation\n- Starting new session\n- When agent seems to forget bd workflow\n- Manual context refresh\n\n**Usage:**\n```bash\nbd prime # Output workflow context\n```\n\n### Automatic Integration (Recommended)\n\nRun `bd setup claude` to install hooks that auto-refresh bd context:\n- **SessionStart hook**: Loads context in new sessions\n- **PreCompact hook**: Refreshes context before compaction (survives better)\n- **Works with MCP**: Hooks complement MCP server (not replace)\n- **Works without MCP**: bd prime provides workflow via CLI\n\n**Why hooks matter even with MCP:**\n- MCP provides native tools, but agent may forget to use them\n- Hooks keep \"use bd, not markdown\" fresh in context\n- PreCompact refreshes workflow before compaction\n\n### MCP Server vs bd prime\n\n**Not an either/or choice** - they solve different problems:\n\n| Aspect | MCP Server | bd prime | Both |\n|--------|-----------|----------|------|\n| **Purpose** | Native bd tools | Workflow context | Best of both |\n| **Tokens** | 10.5k always loaded | ~1-2k when called | 10.5k + ~2k |\n| **Tool access** | Function calls | CLI via Bash | Function calls |\n| **Context memory** | Can fade after compaction | Hooks keep fresh | Hooks + tools |\n| **Recommended** | Heavy usage | Token optimization | Best experience |\n\n**Setup options:**\n```bash\nbd setup claude # Install hooks (works with or without MCP)\nbd setup claude --local # Per-project only\nbd setup claude --remove # Remove hooks\n```\n```\n\n### README.md\nAdd to \"Getting Started\" section:\n```markdown\n### AI Agent Integration\n\n**Claude Code users:** Run `bd setup claude` to install automatic context recovery hooks.\n\nHooks work with both MCP server and CLI approaches, preventing agents from forgetting bd workflow after compaction.\n\n**MCP vs bd prime:**\n- **With MCP server**: Hooks keep agent using bd tools (prevents markdown TODO reversion)\n- **Without MCP server**: Hooks provide workflow context via `bd prime` (~1-2k tokens)\n```\n\n### QUICKSTART.md\nAdd section on agent integration:\n```markdown\n## For AI Agents\n\n**Context loading:**\n```bash\nbd prime # Load workflow context (~1-2k tokens)\n```\n\n**Automatic setup (Claude Code):**\n```bash\nbd setup claude # Install hooks for automatic context recovery\n```\n\nHooks prevent agents from forgetting bd workflow after compaction.\n```","acceptance_criteria":"- AGENTS.md has Context Recovery section\n- README.md mentions bd setup claude\n- QUICKSTART.md mentions bd prime\n- Examples show when to use bd prime vs MCP\n- Clear comparison of trade-offs","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-11T23:30:22.77349-08:00","updated_at":"2025-11-11T23:45:23.242658-08:00","source_repo":".","dependencies":[{"issue_id":"bd-tru","depends_on_id":"bd-rpn","type":"blocks","created_at":"2025-11-11T23:30:22.774216-08:00","created_by":"daemon"},{"issue_id":"bd-tru","depends_on_id":"bd-br8","type":"blocks","created_at":"2025-11-11T23:30:22.774622-08:00","created_by":"daemon"},{"issue_id":"bd-tru","depends_on_id":"bd-90v","type":"parent-child","created_at":"2025-11-11T23:31:35.277819-08:00","created_by":"daemon"}]} {"id":"bd-ts0c","content_hash":"802acdef71cd9252f7b94db3c21e4c5a4903d04306080b007f395e3fc1ee8bbd","title":"Merge PR #300: gitignore upgrade feature","description":"PR #300 is ready to merge but has rebase conflicts with main.\n\n**Context:**\n- PR implements 3 mechanisms for .beads/.gitignore upgrade (bd doctor --fix, daemon auto-upgrade, bd init idempotent)\n- Conflicts resolved locally but diverged branches make push difficult\n- All fixes applied: removed merge artifact, applied new gitignore template\n- Clean scope: only 6 files changed (+194/-42)\n\n**Next steps:**\n1. Option A: Merge via GitHub UI (resolve conflicts in web interface)\n2. Option B: Fresh rebase on main and force push\n3. Verify CI passes\n4. Squash and merge\n\nPR URL: https://github.com/steveyegge/beads/pull/300\nFixes: #274","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-12T11:56:22.778982-08:00","updated_at":"2025-11-12T12:46:36.550488-08:00","closed_at":"2025-11-12T12:46:36.550488-08:00","source_repo":"."} -{"id":"bd-tuqd","content_hash":"2543d4664e5f80948c52a551d867948d9268c333e119b8ec2829f2b3464db2ad","title":"bd init overwrites existing git hooks without detection or chaining","description":"GH #254: bd init silently overwrites existing git hooks (like pre-commit framework) without detecting them, backing them up, or offering to chain. This breaks workflows and can result in committed code with failing tests.\n\nFix: Detect existing hooks, prompt user with options to chain/overwrite/skip.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-07T15:51:17.582882-08:00","updated_at":"2025-11-07T15:55:01.330531-08:00","closed_at":"2025-11-07T15:55:01.330531-08:00","source_repo":"."} +{"id":"bd-tuqd","content_hash":"06ac95944f03d871a6f58d2cd63796828873e92ef7c9b897eb639d28860a458e","title":"bd init overwrites existing git hooks without detection or chaining","description":"GH #254: bd init silently overwrites existing git hooks (like pre-commit framework) without detecting them, backing them up, or offering to chain. This breaks workflows and can result in committed code with failing tests.\n\nFix: Detect existing hooks, prompt user with options to chain/overwrite/skip.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-07T15:51:17.582882-08:00","updated_at":"2025-11-07T15:55:01.330531-08:00","closed_at":"2025-11-07T15:55:01.330531-08:00","source_repo":"."} {"id":"bd-twlr","content_hash":"e0fe5d5f0cac3bb24ae6c12bdcac79ba0dac61f2e85568e9def8b809b7d038b6","title":"Add bd init --team wizard","description":"Interactive wizard for team workflow setup. Guides user through: branch workflow configuration, shared repo setup, team member onboarding, examples of team collaboration patterns.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T18:04:30.013645-08:00","updated_at":"2025-11-05T19:27:33.075826-08:00","closed_at":"2025-11-05T18:56:03.004161-08:00","source_repo":".","dependencies":[{"issue_id":"bd-twlr","depends_on_id":"bd-8rd","type":"parent-child","created_at":"2025-11-05T18:04:39.164445-08:00","created_by":"daemon"}]} {"id":"bd-u4f5","content_hash":"89c6ae8745a842541c9a2025222c2c2e67e17b4fc33e0e56e58a37f0c5935939","title":"bd import silently succeeds when database matches working tree but not git HEAD","description":"**Critical**: bd import reports '0 created, 0 updated' when database matches working tree JSONL, even when working tree is ahead of git HEAD. This gives false confidence that everything is synced with the source of truth.\n\n## Reproduction\n\n1. Start with database synced to working tree .beads/issues.jsonl (376 issues)\n2. Git HEAD has older version of .beads/issues.jsonl (354 issues)\n3. Run: bd import .beads/issues.jsonl\n4. Output: 'Import complete: 0 created, 0 updated'\n\n## Problem\n\nUser expects 'bd import' after 'git pull' to sync database with committed state, but:\n- Command silently succeeds because DB already matches working tree\n- No warning that working tree has uncommitted changes\n- User falsely believes everything is synced with git\n- Violates 'JSONL in git is source of truth' principle\n\n## Expected Behavior\n\nWhen .beads/issues.jsonl differs from git HEAD, bd import should:\n1. Detect uncommitted changes: git diff --quiet HEAD .beads/issues.jsonl\n2. Warn user: 'Warning: .beads/issues.jsonl has uncommitted changes (376 lines vs 354 in HEAD)'\n3. Clarify status: 'Import complete: 0 created, 0 updated (already synced with working tree)'\n4. Recommend: 'Run git diff .beads/issues.jsonl to review uncommitted work'\n\n## Impact\n\n- Users can't trust 'bd import' status messages\n- Silent data loss risk if user assumes synced and runs git checkout\n- Breaks mental model of 'JSONL in git = source of truth'\n- Critical for VC's landing-the-plane workflow","acceptance_criteria":"1. bd import detects when working tree differs from git HEAD\n2. Warning emitted if JSONL has uncommitted changes \n3. Status message clarifies 'synced with working tree' vs 'synced with git'\n4. Optional flag to suppress warning (e.g., --working-tree mode)\n5. Documentation updated to explain import behavior with uncommitted changes\n6. Test case: import with dirty working tree shows warning","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-07T23:51:28.536822-08:00","updated_at":"2025-11-07T23:58:34.482313-08:00","closed_at":"2025-11-07T23:58:34.482313-08:00","source_repo":".","labels":["data-integrity"]} -{"id":"bd-u8j","content_hash":"962eba2362141bb73be8375626997f1d6ab91b76d691f11f23593a964b036995","title":"Clarify exclusive lock protocol compatibility with multi-repo","description":"The contributor-workflow-analysis.md proposes per-repo file locking (Decision #7) using flock on JSONL files. However, VC (a downstream library consumer) uses an exclusive lock protocol (vc-195, requires Beads v0.17.3+) that allows bd daemon and VC executor to coexist.\n\nNeed to clarify:\n- Does the proposed per-repo file locking work with VC's existing exclusive lock protocol?\n- Do library consumers like VC need to adapt their locking logic?\n- Can multiple repos be locked atomically for cross-repo operations?\n\nContext: contributor-workflow-analysis.md lines 662-681","acceptance_criteria":"- Documentation explicitly states compatibility or incompatibility with existing lock protocols\n- If incompatible, migration path is documented for library consumers\n- If compatible, example showing coexistence is provided","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:08.257493-08:00","updated_at":"2025-11-05T14:15:01.506885-08:00","closed_at":"2025-11-05T14:15:01.506885-08:00","source_repo":"."} +{"id":"bd-u8j","content_hash":"91f39bbd4f2394592407c77917682b2c7c3a0b6415a3572eb75a49b0486a17fe","title":"Clarify exclusive lock protocol compatibility with multi-repo","description":"The contributor-workflow-analysis.md proposes per-repo file locking (Decision #7) using flock on JSONL files. However, VC (a downstream library consumer) uses an exclusive lock protocol (vc-195, requires Beads v0.17.3+) that allows bd daemon and VC executor to coexist.\n\nNeed to clarify:\n- Does the proposed per-repo file locking work with VC's existing exclusive lock protocol?\n- Do library consumers like VC need to adapt their locking logic?\n- Can multiple repos be locked atomically for cross-repo operations?\n\nContext: contributor-workflow-analysis.md lines 662-681","acceptance_criteria":"- Documentation explicitly states compatibility or incompatibility with existing lock protocols\n- If incompatible, migration path is documented for library consumers\n- If compatible, example showing coexistence is provided","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:08.257493-08:00","updated_at":"2025-11-05T14:15:01.506885-08:00","closed_at":"2025-11-05T14:15:01.506885-08:00","source_repo":"."} {"id":"bd-uiae","content_hash":"5c184901daaa674a0f1224a29ab789019b53da6d5b5b4d6ac943e7d5d4846b3e","title":"Update documentation for beads-merge integration","description":"Document the integrated merge functionality.\n\n**Updates needed**:\n- AGENTS.md: Replace \"use external beads-merge\" with \"bd merge\"\n- README.md: Add git merge driver section\n- TROUBLESHOOTING.md: Update merge conflict resolution\n- ADVANCED.md: Document 3-way merge algorithm\n- Create CREDITS.md or ATTRIBUTION.md for @neongreen\n\n**Highlight**: Deletion sync fix (bd-hv01)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T18:42:20.488998-08:00","updated_at":"2025-11-06T18:19:16.234758-08:00","closed_at":"2025-11-06T15:40:27.830475-08:00","source_repo":".","dependencies":[{"issue_id":"bd-uiae","depends_on_id":"bd-qqvw","type":"parent-child","created_at":"2025-11-05T18:42:28.752447-08:00","created_by":"daemon"}]} -{"id":"bd-urob","content_hash":"fc0e79260f5f6860fa8884859c4b33b18f9cc2dad361c1c1abb9bdeb412479b5","title":"bd-hv01: Refactor snapshot management into dedicated module","description":"Problem: Snapshot logic is scattered across deletion_tracking.go. Would benefit from abstraction with SnapshotManager type.\n\nBenefits: cleaner separation of concerns, easier to test in isolation, better encapsulation, could add observability/metrics.\n\nSuggested improvements: add magic constants, track merge statistics, better error messages.\n\nFiles: cmd/bd/deletion_tracking.go (refactor into new snapshot_manager.go)","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-11-06T18:16:27.943666-08:00","updated_at":"2025-11-08T02:24:24.686744-08:00","closed_at":"2025-11-08T02:19:14.152412-08:00","source_repo":".","dependencies":[{"issue_id":"bd-urob","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T18:19:15.192447-08:00","created_by":"daemon"}]} +{"id":"bd-urob","content_hash":"fc0e79260f5f6860fa8884859c4b33b18f9cc2dad361c1c1abb9bdeb412479b5","title":"bd-hv01: Refactor snapshot management into dedicated module","description":"Problem: Snapshot logic is scattered across deletion_tracking.go. Would benefit from abstraction with SnapshotManager type.\n\nBenefits: cleaner separation of concerns, easier to test in isolation, better encapsulation, could add observability/metrics.\n\nSuggested improvements: add magic constants, track merge statistics, better error messages.\n\nFiles: cmd/bd/deletion_tracking.go (refactor into new snapshot_manager.go)","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-11-06T18:16:27.943666-08:00","updated_at":"2025-11-08T02:19:14.152412-08:00","closed_at":"2025-11-08T02:19:14.152412-08:00","source_repo":".","dependencies":[{"issue_id":"bd-urob","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T18:19:15.192447-08:00","created_by":"daemon"}]} {"id":"bd-vavh","content_hash":"c4683032c24f356aa799a87390c2f95a280bb6ce1cd94d26bb5d4b0d8ea16829","title":"Fix row iterator resource leak in recursive dependency queries","description":"Critical resource leak in findAllDependentsRecursive() where rows.Close() is called AFTER early return on error, never executing.\n\nLocation: internal/storage/sqlite/sqlite.go:1131-1136\n\nProblem: \n- rows.Close() placed after return statement\n- On scan error, iterator never closed\n- Can exhaust SQLite connections under moderate load\n\nFix: Move defer rows.Close() to execute on all code paths\n\nImpact: Connection exhaustion during dependency traversal","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-16T14:50:55.881698-08:00","updated_at":"2025-11-16T15:03:55.009607-08:00","closed_at":"2025-11-16T15:03:55.009607-08:00","source_repo":"."} {"id":"bd-vcg5","content_hash":"82933ce7e0add2ee5b5830b343785c3585151453c5c06243af2b1f2b934e72b2","title":"Daemon crash recovery: panic handler + socket cleanup","description":"Improve daemon cleanup on unexpected exit:\n1. Add top-level recover() in runDaemonLoop to capture panics\n2. Write daemon-error file with stack trace on panic\n3. Prefer return over os.Exit where possible (so defers run)\n4. In stopDaemon forced-kill path, also remove stale socket if present\n\nThis ensures better diagnostics and cleaner state after crashes.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-07T16:42:12.733219-08:00","updated_at":"2025-11-07T22:07:17.347728-08:00","closed_at":"2025-11-07T21:17:15.94117-08:00","source_repo":".","dependencies":[{"issue_id":"bd-vcg5","depends_on_id":"bd-ndyz","type":"discovered-from","created_at":"2025-11-07T16:42:12.733889-08:00","created_by":"daemon"}]} {"id":"bd-vxdr","content_hash":"d188358987c7a7d444f9144a4a6cc5164eccd35b16325edba51dad104ab2a7f2","title":"Investigate database pollution - issue count anomalies","description":"Multiple repos showing inflated issue counts suggesting cross-repo pollution:\n- ~/src/dave/beads: 895 issues (675 open) - clearly polluted\n- ~/src/stevey/src/beads: 280 issues (expected ~209-220) - possibly polluted\n\nNeed to investigate:\n1. Source of pollution (multi-repo sync issues?)\n2. How many duplicate/foreign issues exist\n3. Whether recent sync operations caused cross-contamination\n4. How to clean up and prevent future pollution","notes":"Investigation findings:\n\n**Root cause identified:**\n- NOT cross-repo contamination\n- NOT automated test leakage (tests properly use t.TempDir())\n- Manual testing during template feature development (Nov 2-4)\n- Commit ba325a2: \"test issues were accidentally committed during template feature development\"\n\n**Database growth timeline:**\n- Nov 3: 19 issues (baseline)\n- Nov 2-5: +244 issues (massive development spike)\n- Nov 6-7: +40 issues (continued growth)\n- Current: 291 issues → 270 after cleanup\n\n**Test pollution breakdown:**\n- 21 issues matching \"Test \" prefix pattern\n- Most created Nov 2-5 during feature development\n- Pollution from manual `./bd create \"Test issue\"` commands in production workspace\n- All automated tests properly isolated with t.TempDir()\n\n**Cleanup completed:**\n- Ran scripts/cleanup-test-pollution.sh successfully\n- Removed 21 test issues\n- Database reduced from 291 → 270 issues (7.2% cleanup)\n- JSONL synced to git\n\n**Prevention strategy:**\n- Filed follow-up issue for prevention mechanisms\n- Script can be deleted once prevention is in place\n- Tests are already properly isolated - no code changes needed there","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-06T22:34:40.137483-08:00","updated_at":"2025-11-07T16:07:28.274136-08:00","closed_at":"2025-11-07T16:04:02.199807-08:00","source_repo":"."} {"id":"bd-wcl","content_hash":"c08d62ce3627a49126c63f6a630a08c1666e5b1b8d9148ae0c72d7d06611b2a9","title":"Document CLI + hooks as recommended approach over MCP","description":"Update documentation to position CLI + bd prime hooks as the primary recommended approach over MCP server, explaining why minimizing context matters even with large context windows (compute cost, energy, environment, latency).","design":"## Goals\n\nPosition CLI + `bd prime` hooks as the **primary recommended approach** for AI agent integration, with MCP server as a legacy/fallback option.\n\nExplore **hybrid mode** - if certain commands benefit from MCP (UX/DX advantages like no approval prompts), minimize MCP surface area to only those commands.\n\nThis requires production validation first - only update docs after CLI mode is proven reliable.\n\n## Why Minimize Context (Even With Large Windows)\n\n**Context window size ≠ free resource**\n\nLarge context windows (100k+, 200k+) don't mean we should fill them wastefully. Every token in context has real costs:\n\n### Compute Cost\n- **Processing overhead**: Larger context = more GPU/CPU cycles per request\n- **Memory usage**: 10.5k tokens consume significant RAM/VRAM\n- **Scaling impact**: Multiplied across all users, all sessions, all requests\n\n### Energy \u0026 Environment\n- **Electricity**: More compute = more power consumption\n- **Carbon footprint**: Data centers running on grid power (not all renewable)\n- **Sustainability**: Unnecessary token usage contributes to AI's environmental impact\n- **Responsibility**: Efficient tools are better for the planet\n\n### User Experience\n- **Latency**: Larger context = slower processing (noticeable at 10k+ tokens)\n- **Cost**: Many AI services charge per token (input + output)\n- **Rate limits**: Context counts against API quotas\n\n### Engineering Excellence\n- **Efficiency**: Good engineering minimizes resource usage\n- **Scalability**: Efficient tools scale better\n- **Best practices**: Optimize for the common case\n\n**The comparison:**\n\n| Approach | Standing Context | Efficiency | User Cost | Environmental Impact |\n|----------|-----------------|------------|-----------|---------------------|\n| **CLI + hooks** | ~1-2k tokens | 80-90% reduction | Lower | Sustainable ✓ |\n| **MCP minimal** | ~2-4k tokens | 60-80% reduction | Medium | Better ✓ |\n| **MCP full** | ~10.5k tokens | Baseline | Higher | Wasteful ✗ |\n\n**Functional equivalence:**\n- CLI via Bash tool works just as well as MCP native calls\n- Same features, same reliability\n- No downside except initial learning curve\n\n## Hybrid Mode: Minimal MCP Surface Area\n\n**Philosophy:** MCP server doesn't have to expose everything.\n\nIf certain commands have legitimate UX/DX benefits from MCP (e.g., no approval prompts, cleaner syntax), we can expose ONLY those commands via MCP while using CLI for everything else.\n\n### Potential MCP-Only Candidates (TBD)\n\nCommands that might benefit from MCP native calls:\n- `ready` - frequently checked, no side effects, approval prompt annoying\n- `show` - read-only, frequently used, approval slows workflow\n- `list` - read-only, no risk, approval adds friction\n\nCommands that work fine via CLI:\n- `create` - complex parameters, benefits from explicit confirmation\n- `update` - state changes, good to see command explicitly\n- `close` - state changes, explicit is better\n- `dep` - relationships, good to see what's being linked\n- `sync` - git operations, definitely want visibility\n\n### Token Budget\n\n**Full MCP** (current): ~10.5k tokens\n- All ~20+ bd commands exposed\n- All parameter schemas\n- All descriptions and examples\n\n**Minimal MCP** (proposed): ~2-4k tokens\n- 3-5 high-frequency read commands only\n- Simplified schemas\n- Minimal descriptions\n- Everything else via CLI\n\n**Pure CLI**: ~1-2k tokens (only on SessionStart/PreCompact)\n- No MCP tools loaded\n- All commands via Bash\n\n### Investigation Required\n\nBefore implementing hybrid mode, validate:\n\n1. **Do MCP calls actually skip approval prompts?**\n - Test with Claude Code approval settings\n - Compare MCP tool calls vs Bash tool calls\n - Measure UX difference in real usage\n\n2. **What's the actual token breakdown per command?**\n - Measure individual command schemas\n - Calculate token savings for minimal vs full\n\n3. **Is approval prompt the only benefit?**\n - Are there other UX advantages to MCP?\n - Does native syntax actually improve experience?\n - User testing with both approaches\n\n4. **Can we dynamically load MCP tools?**\n - Only load MCP when certain commands needed?\n - Hot-swap between CLI and MCP?\n - Probably not - MCP loads at startup\n\n### Hybrid Mode Documentation (If Validated)\n\n```markdown\n## Choosing Your Integration Approach\n\nBeads supports three AI agent integration approaches:\n\n### CLI + Hooks (Recommended - Most Efficient)\n\n**Setup:** `bd setup claude`\n\nUses Claude Code hooks to inject workflow context via `bd prime` command. Agent uses bd via Bash tool.\n\n**Tokens:** ~1-2k (on SessionStart/PreCompact only)\n\n**Pros:**\n- Maximum efficiency (80-90% reduction vs full MCP)\n- Lowest compute/energy usage\n- Same functionality as MCP\n\n**Cons:**\n- Bash tool calls may require approval prompts\n- Slightly more verbose in conversation\n\n### Minimal MCP + Hooks (Balanced)\n\n**Setup:** Install minimal MCP server (read-only commands) + `bd setup claude`\n\nExposes only high-frequency read commands via MCP (ready, show, list). Everything else via CLI.\n\n**Tokens:** ~2-4k MCP + ~1-2k hooks\n\n**Pros:**\n- 60-80% reduction vs full MCP\n- No approval prompts for common queries\n- Cleaner syntax for frequent operations\n- Still efficient\n\n**Cons:**\n- Requires MCP server (additional setup)\n- Mixed interface (some MCP, some CLI)\n\n### Full MCP + Hooks (Legacy)\n\n**Setup:** Install full MCP server + `bd setup claude`\n\n**Tokens:** ~10.5k MCP + hooks\n\n**Pros:**\n- All commands as native function calls\n- Consistent interface\n\n**Cons:**\n- Highest token usage (worst for compute/energy/cost)\n- Slowest processing\n- Less sustainable\n\n### Recommendation\n\n1. **Start with CLI + hooks** - most efficient, works great\n2. **Try minimal MCP** if approval prompts become annoying\n3. **Avoid full MCP** - wasteful with no significant benefit\n```\n\n## Production Validation Checklist\n\nBefore making these documentation changes, validate CLI approach works reliably:\n\n### Phase 1: Pure CLI Validation\n- [ ] `bd prime` implemented and tested\n- [ ] Hooks installed and working in Claude Code\n- [ ] Real-world usage by at least 2-3 developers for 1+ weeks\n- [ ] No significant usability issues reported\n- [ ] Agent successfully uses bd via Bash tool\n- [ ] Document which commands (if any) have approval prompt issues\n\n### Phase 2: Hybrid Mode Investigation (Optional)\n- [ ] Test if MCP calls skip approval prompts vs Bash calls\n- [ ] Measure token cost per MCP command\n- [ ] Identify minimal set of commands worth exposing via MCP\n- [ ] Build minimal MCP server variant\n- [ ] Validate token savings (should be 60-80% vs full MCP)\n- [ ] User testing shows actual UX improvement\n\n### Phase 3: Documentation Update\n- [ ] Update based on validation results\n- [ ] Include measured token counts (not estimates)\n- [ ] Provide clear migration paths\n- [ ] Update `bd doctor` recommendations\n\n## Migration Guide (Optional)\n\nFor users currently using MCP:\n\n```markdown\n### Migrating from Full MCP to CLI + Hooks\n\nAlready using full MCP server? You can switch to the more efficient CLI approach:\n\n1. Install hooks: `bd setup claude`\n2. Test it works (hooks inject context, agent uses Bash tool)\n3. Remove MCP server from `~/.claude/settings.json`\n4. Restart Claude Code\n\nYou'll get the same functionality with 80-90% less token usage.\n\n### Migrating to Minimal MCP (If Available)\n\nIf you find approval prompts annoying for certain commands:\n\n1. Replace full MCP with minimal MCP in `~/.claude/settings.json`\n2. Restart Claude Code\n3. Verify high-frequency commands (ready, show, list) work via MCP\n4. Everything else automatically uses CLI\n\nYou'll get 60-80% token reduction vs full MCP while keeping the UX benefits.\n```\n\n## Files to Update\n\n- `README.md` - Add recommendation in AI Integration section\n- `AGENTS.md` - Add \"Choosing Your Integration Approach\" section early\n- `QUICKSTART.md` - Update AI integration section\n- `docs/` - Any other AI integration docs if they exist\n- `mcp-server/` - Create minimal variant if hybrid validated\n\n## Future: Update `bd init`\n\nOnce validated, update `bd init` to:\n- Default to recommending `bd setup claude` (hooks only)\n- Mention minimal MCP as option for UX improvement\n- Detect existing full MCP and suggest migration\n- Provide token usage estimates for each approach\n\n## MCP Server Architecture Note\n\n**Key insight:** MCP server doesn't have to expose all bd functionality.\n\nCurrent design exposes ~20+ commands (all bd subcommands). This is over-engineered.\n\n**Better design:**\n- **Minimal MCP**: 3-5 read-only commands (~2-4k tokens)\n- **CLI**: Everything else via Bash tool\n- **Hooks**: Context injection via `bd prime`\n\nThis achieves best of both worlds:\n- Low token usage (efficient)\n- No approval prompts for common queries (UX)\n- Explicit visibility for state changes (safety)\n\nIf validation shows NO meaningful benefit to MCP (even minimal), skip hybrid mode entirely and recommend pure CLI.","acceptance_criteria":"- Documentation explains CLI + hooks as recommended approach\n- Explains why context size matters (compute/energy/cost/latency)\n- Token comparison table shows 80-90% reduction\n- Migration guide for existing MCP users\n- Only deployed AFTER production validation\n- Clear that both approaches are supported","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-12T00:15:25.923025-08:00","updated_at":"2025-11-12T00:18:16.786857-08:00","source_repo":"."} -{"id":"bd-we4p","content_hash":"cd294027dd3105b1f32e306c52b8273a5720b749d1ac2cbd5e2fb36abffc0582","title":"Cache getMultiRepoJSONLPaths() result during sync to avoid redundant calls","description":"From bd-xo6b code review: getMultiRepoJSONLPaths() is called 3x per sync cycle.\n\n**Current behavior:**\ndaemon_sync.go calls getMultiRepoJSONLPaths() three times per sync:\n- Line 505: Snapshot capture before pull\n- Line 575: Merge/prune after pull\n- Line 613: Base snapshot update after import\n\n**Cost per call:**\n- Config lookup (likely cached, but still overhead)\n- Path construction: O(N) where N = number of repos\n- String allocations: (N + 1) × filepath.Join() calls\n\n**Total per sync:** 3N path constructions + 3 config lookups + 3 slice allocations\n\n**Impact:**\n- For N=3 repos: Negligible (\u003c 1ms)\n- For N=10 repos: Still minimal\n- For N=100+ repos: Wasteful\n\n**Solution:**\nCall once at sync start, reuse result:\n\n```go\nfunc createSyncFunc(...) func() {\n return func() {\n // ... existing setup ...\n \n // Call once at start\n multiRepoPaths := getMultiRepoJSONLPaths()\n \n // Snapshot capture\n if multiRepoPaths != nil {\n for _, path := range multiRepoPaths {\n if err := captureLeftSnapshot(path); err != nil { ... }\n }\n }\n \n // ... later ...\n \n // Merge/prune - reuse same paths\n if multiRepoPaths != nil {\n for _, path := range multiRepoPaths { ... }\n }\n \n // ... later ...\n \n // Base snapshot update - reuse same paths\n if multiRepoPaths != nil {\n for _, path := range multiRepoPaths { ... }\n }\n }\n}\n```\n\n**Files:**\n- cmd/bd/daemon_sync.go:449-636 (createSyncFunc)\n\n**Note:** This is a performance optimization, not a correctness fix. Low priority unless multi-repo usage scales significantly.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-11-06T19:31:32.128674-08:00","updated_at":"2025-11-06T19:40:50.871176-08:00","closed_at":"2025-11-06T19:40:50.871176-08:00","source_repo":".","dependencies":[{"issue_id":"bd-we4p","depends_on_id":"bd-xo6b","type":"discovered-from","created_at":"2025-11-06T19:32:12.39754-08:00","created_by":"daemon"}]} -{"id":"bd-wfmw","content_hash":"4c761e0f53d327cc7ddcc12cdadc81c1811249fd109f82691eecf8e73d41b750","title":"Integration Layer Implementation","description":"Build the adapter layer that makes Agent Mail optional and non-intrusive.","notes":"Progress: bd-m9th (Python adapter library) completed with full test coverage. Next: bd-fzbg (update python-agent example with Agent Mail integration).","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-07T22:42:09.356429-08:00","updated_at":"2025-11-08T00:20:30.888756-08:00","closed_at":"2025-11-08T00:20:30.888756-08:00","source_repo":".","dependencies":[{"issue_id":"bd-wfmw","depends_on_id":"bd-spmx","type":"blocks","created_at":"2025-11-07T22:42:09.357488-08:00","created_by":"daemon"}]} +{"id":"bd-we4p","content_hash":"0e3248d31a6524c7a665960682cf2b159449fa31f5427771796dce8639059faf","title":"Cache getMultiRepoJSONLPaths() result during sync to avoid redundant calls","description":"From bd-xo6b code review: getMultiRepoJSONLPaths() is called 3x per sync cycle.\n\n**Current behavior:**\ndaemon_sync.go calls getMultiRepoJSONLPaths() three times per sync:\n- Line 505: Snapshot capture before pull\n- Line 575: Merge/prune after pull\n- Line 613: Base snapshot update after import\n\n**Cost per call:**\n- Config lookup (likely cached, but still overhead)\n- Path construction: O(N) where N = number of repos\n- String allocations: (N + 1) × filepath.Join() calls\n\n**Total per sync:** 3N path constructions + 3 config lookups + 3 slice allocations\n\n**Impact:**\n- For N=3 repos: Negligible (\u003c 1ms)\n- For N=10 repos: Still minimal\n- For N=100+ repos: Wasteful\n\n**Solution:**\nCall once at sync start, reuse result:\n\n```go\nfunc createSyncFunc(...) func() {\n return func() {\n // ... existing setup ...\n \n // Call once at start\n multiRepoPaths := getMultiRepoJSONLPaths()\n \n // Snapshot capture\n if multiRepoPaths != nil {\n for _, path := range multiRepoPaths {\n if err := captureLeftSnapshot(path); err != nil { ... }\n }\n }\n \n // ... later ...\n \n // Merge/prune - reuse same paths\n if multiRepoPaths != nil {\n for _, path := range multiRepoPaths { ... }\n }\n \n // ... later ...\n \n // Base snapshot update - reuse same paths\n if multiRepoPaths != nil {\n for _, path := range multiRepoPaths { ... }\n }\n }\n}\n```\n\n**Files:**\n- cmd/bd/daemon_sync.go:449-636 (createSyncFunc)\n\n**Note:** This is a performance optimization, not a correctness fix. Low priority unless multi-repo usage scales significantly.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-11-06T19:31:32.128674-08:00","updated_at":"2025-11-06T19:40:50.871176-08:00","closed_at":"2025-11-06T19:40:50.871176-08:00","source_repo":".","dependencies":[{"issue_id":"bd-we4p","depends_on_id":"bd-xo6b","type":"discovered-from","created_at":"2025-11-06T19:32:12.39754-08:00","created_by":"daemon"}]} +{"id":"bd-wfmw","content_hash":"21706f1701be9fb51fa9e17d1dded6343bc2585e4bdb608239a20c5853d00220","title":"Integration Layer Implementation","description":"Build the adapter layer that makes Agent Mail optional and non-intrusive.","notes":"Progress: bd-m9th (Python adapter library) completed with full test coverage. Next: bd-fzbg (update python-agent example with Agent Mail integration).","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-11-07T22:42:09.356429-08:00","updated_at":"2025-11-08T01:51:40.352231-08:00","closed_at":"2025-11-08T00:20:30.888756-08:00","source_repo":".","dependencies":[{"issue_id":"bd-wfmw","depends_on_id":"bd-spmx","type":"blocks","created_at":"2025-11-07T22:42:09.357488-08:00","created_by":"daemon"}]} {"id":"bd-wgu4","content_hash":"31cf5cc105fee5de26f4c2756b8368c90b18eb5f65c656eb0d90f96b23daf21d","title":"Standardize daemon detection: use tryDaemonLock probe before RPC","description":"Before attempting RPC connection, call tryDaemonLock() to check if lock is held:\n- If lock NOT held: skip RPC attempt (no daemon running)\n- If lock IS held: proceed with RPC + short timeout\n\nThis is extremely cheap and eliminates unnecessary connection attempts.\n\nApply across all client entry points that probe for daemon.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T16:42:12.709802-08:00","updated_at":"2025-11-07T20:15:23.282181-08:00","closed_at":"2025-11-07T20:15:23.282181-08:00","source_repo":".","dependencies":[{"issue_id":"bd-wgu4","depends_on_id":"bd-ndyz","type":"discovered-from","created_at":"2025-11-07T16:42:12.710564-08:00","created_by":"daemon"}]} -{"id":"bd-wta","content_hash":"b72f31183e057a3ccb8b428f40475921570d47ed61b50d2bb4875829757d6b2c","title":"Add performance benchmarks for multi-repo hydration","description":"The contributor-workflow-analysis.md asserts sub-second queries (line 702) and describes smart caching via file mtime tracking (Decision #4, lines 584-618), but doesn't provide concrete performance benchmarks.\n\nVC's requirement (from VC feedback section):\n- Executor polls GetReadyWork() every 5-10 seconds\n- Queries must be sub-second (ideally \u003c100ms)\n- Smart caching must avoid re-parsing JSONLs on every query\n\nSuggested performance targets to validate:\n- File stat overhead: \u003c1ms per repo\n- Hydration (when needed): \u003c500ms for typical JSONL (\u003c25k)\n- Query (from cache): \u003c10ms\n- Total GetReadyWork(): \u003c100ms (VC's requirement)\n\nAlso test at scale:\n- N=1 repo (baseline)\n- N=3 repos (typical)\n- N=10 repos (edge case)\n\nThese benchmarks are critical for library consumers like VC that run automated polling loops.","acceptance_criteria":"- Performance benchmark suite created for multi-repo hydration\n- Benchmarks cover file stat, hydration, and query times\n- Tests at N=1, N=3, N=10 repo scales\n- Results documented in contributor-workflow-analysis.md\n- Performance targets met or issues filed for optimization","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:39.331528-08:00","updated_at":"2025-11-05T14:17:15.079226-08:00","closed_at":"2025-11-05T14:17:15.079226-08:00","source_repo":"."} +{"id":"bd-wta","content_hash":"eee40bbe4e00af632ad46e1461a25e4b0e5508bea115422aea0772381eec0d84","title":"Add performance benchmarks for multi-repo hydration","description":"The contributor-workflow-analysis.md asserts sub-second queries (line 702) and describes smart caching via file mtime tracking (Decision #4, lines 584-618), but doesn't provide concrete performance benchmarks.\n\nVC's requirement (from VC feedback section):\n- Executor polls GetReadyWork() every 5-10 seconds\n- Queries must be sub-second (ideally \u003c100ms)\n- Smart caching must avoid re-parsing JSONLs on every query\n\nSuggested performance targets to validate:\n- File stat overhead: \u003c1ms per repo\n- Hydration (when needed): \u003c500ms for typical JSONL (\u003c25k)\n- Query (from cache): \u003c10ms\n- Total GetReadyWork(): \u003c100ms (VC's requirement)\n\nAlso test at scale:\n- N=1 repo (baseline)\n- N=3 repos (typical)\n- N=10 repos (edge case)\n\nThese benchmarks are critical for library consumers like VC that run automated polling loops.","acceptance_criteria":"- Performance benchmark suite created for multi-repo hydration\n- Benchmarks cover file stat, hydration, and query times\n- Tests at N=1, N=3, N=10 repo scales\n- Results documented in contributor-workflow-analysis.md\n- Performance targets met or issues filed for optimization","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:39.331528-08:00","updated_at":"2025-11-05T14:17:15.079226-08:00","closed_at":"2025-11-05T14:17:15.079226-08:00","source_repo":"."} {"id":"bd-ww0g","content_hash":"973e5e6eb58975fcbe80f804b69a900cde824af4b51243737ef5fca404d0b1c1","title":"MCP server: \"No workspace set\" and \"chunk longer than limit\" errors","description":"Two related errors reported in beads-mcp v0.21:\n\n**Error 1: \"No workspace set\" after successful set_context**\n```\n✓ Set beads context\n✗ list\n Error calling tool 'list': No workspace set. Either provide workspace_root\n parameter or call set_context() first.\n```\n\nHypothesis: Environment variable persistence issue between MCP tool calls, or ContextVar not being set correctly by @with_workspace decorator.\n\n**Error 2: \"Separator is found, but chunk is longer than limit\"**\n```\n✗ list\n Error calling tool 'list': Separator is found, but chunk is longer than limit\n```\n\nHypothesis: MCP protocol output size limit exceeded. Large issue databases may produce JSON output that exceeds MCP stdio buffer limits.\n\nPlatform: Fedora 43, using copilot-cli with Sonnet 4.5\n\nWorkaround: CLI works fine (`bd list --status open --json`)","notes":"## Fixes Implemented\n\n**Issue 1: \"No workspace set\" after successful set_context** ✅ FIXED\n\nRoot cause: os.environ doesn't persist across MCP tool calls. When set_context() set BEADS_WORKING_DIR in os.environ, that change was lost on the next tool call.\n\nSolution:\n- Added module-level _workspace_context dict for persistent storage (server.py:51)\n- Modified set_context() to store in both persistent dict and os.environ (server.py:265-287)\n- Modified with_workspace() decorator to check persistent context first (server.py:129-133)\n- Updated where_am_i() to check persistent context (server.py:302-330)\n\n**Issue 2: \"chunk longer than limit\"** ✅ FIXED\n\nRoot cause: MCP stdio protocol has buffer limits. Large issue lists with full dependencies/dependents exceed this.\n\nSolution:\n- Reduced default list limit from 50 to 20 (server.py:356, models.py:122)\n- Reduced max list limit from 1000 to 100 (models.py:122)\n- Strip dependencies/dependents from list() and ready() responses (server.py:343-350, 368-373)\n- Full dependency details still available via show() command\n\n## Testing\n\n✅ Python syntax validated with py_compile\n✅ Changes are backward compatible\n✅ Persistent context falls back to os.environ for compatibility\n\nUsers should now be able to call set_context() once and have it persist across all subsequent tool calls. Large databases will no longer cause buffer overflow errors.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-07T14:32:18.315155-08:00","updated_at":"2025-11-07T21:02:55.470937-08:00","closed_at":"2025-11-07T16:53:46.929942-08:00","source_repo":"."} -{"id":"bd-x47","content_hash":"0b5f05ca037293f7be36f9a080da731e67bec96ba68e2b7cbeb589cc60343225","title":"Add guidance for self-hosting projects","description":"The contributor-workflow-analysis.md is optimized for OSS contributors making PRs to upstream projects. However, it doesn't address projects like VC that use beads for their own development (self-hosting).\n\nSelf-hosting projects differ from OSS contributors:\n- No upstream/downstream distinction (they ARE the project)\n- May run automated executors (not just humans)\n- In bootstrap/early phase (stability matters)\n- Single team/owner (not multiple contributors with permissions)\n\nGuidance needed on:\n- When self-hosting projects should stay single-repo (default, recommended)\n- When they should adopt multi-repo (team planning, multi-phase dev)\n- How automated executors should handle multi-repo (if at all)\n- Special considerations for projects in bootstrap phase\n\nExamples of self-hosting projects: VC (building itself with beads), internal tools, pet projects","acceptance_criteria":"- Section added: 'For Projects Using Beads for Self-Hosting'\n- Clear guidance on when to stay single-repo vs adopt multi-repo\n- Recommendations for automated executor behavior with multi-repo\n- Bootstrap phase considerations documented","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:27.805341-08:00","updated_at":"2025-11-05T14:16:34.69662-08:00","closed_at":"2025-11-05T14:16:34.69662-08:00","source_repo":"."} +{"id":"bd-x47","content_hash":"e363d887fa6693c1c748d78ea9cdaaa97606889d910f318fbd29584576da57e9","title":"Add guidance for self-hosting projects","description":"The contributor-workflow-analysis.md is optimized for OSS contributors making PRs to upstream projects. However, it doesn't address projects like VC that use beads for their own development (self-hosting).\n\nSelf-hosting projects differ from OSS contributors:\n- No upstream/downstream distinction (they ARE the project)\n- May run automated executors (not just humans)\n- In bootstrap/early phase (stability matters)\n- Single team/owner (not multiple contributors with permissions)\n\nGuidance needed on:\n- When self-hosting projects should stay single-repo (default, recommended)\n- When they should adopt multi-repo (team planning, multi-phase dev)\n- How automated executors should handle multi-repo (if at all)\n- Special considerations for projects in bootstrap phase\n\nExamples of self-hosting projects: VC (building itself with beads), internal tools, pet projects","acceptance_criteria":"- Section added: 'For Projects Using Beads for Self-Hosting'\n- Clear guidance on when to stay single-repo vs adopt multi-repo\n- Recommendations for automated executor behavior with multi-repo\n- Bootstrap phase considerations documented","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-03T20:24:27.805341-08:00","updated_at":"2025-11-05T14:16:34.69662-08:00","closed_at":"2025-11-05T14:16:34.69662-08:00","source_repo":"."} {"id":"bd-xo6b","content_hash":"a8f6100ae8d6569c75565d5a1aacbc0e55806fab917399ab473fb212fa694b80","title":"Review multi-repo deletion tracking implementation","description":"Thoroughly review the multi-repo deletion tracking fix (bd-4oob):\n\nFiles changed:\n- cmd/bd/deletion_tracking.go: Added getMultiRepoJSONLPaths() helper\n- cmd/bd/daemon_sync.go: Updated snapshot capture/update logic for multi-repo\n- cmd/bd/deletion_tracking_test.go: Added 2 new tests (287 lines)\n\nReview focus areas:\n1. Correctness: Does getMultiRepoJSONLPaths() handle all edge cases?\n2. Performance: Calling getMultiRepoJSONLPaths() 3x per sync (snapshot capture, merge, base update) - should we cache?\n3. Error handling: What if some repos fail snapshot operations but others succeed?\n4. Race conditions: Multiple daemons in different repos?\n5. Test coverage: Are TestMultiRepoDeletionTracking and TestMultiRepoSnapshotIsolation sufficient?\n6. Path handling: Absolute vs relative paths, tilde expansion\n\nThis is fresh code - needs careful review before considering deletion tracking production-ready.","notes":"Code review completed. Overall assessment: Core deletion tracking logic is sound, but error handling and path handling issues make this not yet production-ready for multi-repo scenarios.\n\nKey findings:\n\nCRITICAL ISSUES (Priority 1):\n1. Inconsistent error handling in daemon_sync.go - snapshot/merge fail hard but base update warns. Can leave DB in inconsistent state with no rollback. See bd-sjmr.\n2. No path normalization in getMultiRepoJSONLPaths() - tilde expansion, relative paths, duplicates not handled. See bd-iye7.\n\nSHOULD FIX (Priority 2):\n3. Missing test coverage for edge cases - empty paths, duplicates, partial failures. See bd-kdoh.\n4. Performance - getMultiRepoJSONLPaths() called 3x per sync (minor issue). See bd-we4p.\n\nWHAT WORKS WELL:\n- Atomic file operations with PID-based temp files\n- Good snapshot isolation between repos\n- Race condition protection via exclusive locks\n- Solid test coverage for happy path scenarios\n\nVERDICT: Address bd-iye7 and bd-sjmr before considering deletion tracking production-ready for multi-repo mode.\n\nDetailed review notes available in conversation history.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-06T19:23:52.402949-08:00","updated_at":"2025-11-06T19:32:34.160341-08:00","closed_at":"2025-11-06T19:32:34.160341-08:00","source_repo":".","dependencies":[{"issue_id":"bd-xo6b","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T19:23:52.403723-08:00","created_by":"daemon"}]} -{"id":"bd-xzrv","content_hash":"bc0097eb1382f92d5f2a80189a9a7da19a4cc2a11ac3beda5af4c93a55692227","title":"Write Agent Mail integration guide","description":"Comprehensive guide for setting up and using Agent Mail with Beads.\n\nAcceptance Criteria:\n- Installation instructions\n- Configuration (environment variables)\n- Architecture diagram\n- Benefits and tradeoffs\n- When to use vs not use\n- Troubleshooting section\n- Migration from git-only mode\n\nFile: docs/AGENT_MAIL.md\n\nSections:\n- Quick start\n- How it works\n- Integration points\n- Graceful degradation\n- Multi-machine deployment\n- FAQ","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:42:51.231066-08:00","updated_at":"2025-11-08T00:40:38.798162-08:00","closed_at":"2025-11-08T00:40:38.798162-08:00","source_repo":".","dependencies":[{"issue_id":"bd-xzrv","depends_on_id":"bd-fzbg","type":"blocks","created_at":"2025-11-07T22:42:51.232246-08:00","created_by":"daemon"}]} +{"id":"bd-xzrv","content_hash":"45b45aaa47b9fc254ce74750b92f5527862672d9826c7ad59e006bdb1bc9939f","title":"Write Agent Mail integration guide","description":"Comprehensive guide for setting up and using Agent Mail with Beads.\n\nAcceptance Criteria:\n- Installation instructions\n- Configuration (environment variables)\n- Architecture diagram\n- Benefits and tradeoffs\n- When to use vs not use\n- Troubleshooting section\n- Migration from git-only mode\n\nFile: docs/AGENT_MAIL.md\n\nSections:\n- Quick start\n- How it works\n- Integration points\n- Graceful degradation\n- Multi-machine deployment\n- FAQ","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:42:51.231066-08:00","updated_at":"2025-11-08T01:51:40.352442-08:00","closed_at":"2025-11-08T00:40:38.798162-08:00","source_repo":".","dependencies":[{"issue_id":"bd-xzrv","depends_on_id":"bd-fzbg","type":"blocks","created_at":"2025-11-07T22:42:51.232246-08:00","created_by":"daemon"}]} {"id":"bd-ybv5","content_hash":"52f6d2143a3e9d63937e7dee2cfb4055740132d3c0831c3e948210179336820f","title":"Refactor AGENTS.md to use external references","description":"Suggestion to use external references (e.g., \"ALWAYS REFER TO ./beads/prompt.md\") instead of including all instructions directly within AGENTS.md.\nReasons:\n1. Agents can follow external references.\n2. Prevents context pollution/stuffing in AGENTS.md as more tools append instructions.\n","status":"open","priority":3,"issue_type":"task","created_at":"2025-11-20T18:55:53.259144-05:00","updated_at":"2025-11-20T18:55:53.259144-05:00","source_repo":"."} {"id":"bd-yek6","content_hash":"f155913af8c58c0a7ea3da6a7d9e232e8cb29c3825f2d6f272a5417a449692a9","title":"CLI tests (cli_fast_test.go) are slow and should be integration tests","description":"The TestCLI_* tests in cmd/bd/cli_fast_test.go are taking 4-5 seconds each (40+ seconds total), making them the slowest part of the fast test suite.\n\nCurrent timings:\n- TestCLI_Import: 4.73s\n- TestCLI_Blocked: 4.33s \n- TestCLI_DepTree: 4.15s\n- TestCLI_Close: 3.59s\n- TestCLI_DepAdd: 3.50s\n- etc.\n\nThese tests compile the bd binary once in init(), but then execute it multiple times per test with filesystem operations. Despite being named \"fast\", they're actually end-to-end CLI integration tests.\n\nOptions:\n1. Tag with //go:build integration (move to integration suite)\n2. Optimize: Use in-memory databases, reduce exec calls, better parallelization\n3. Keep as-is but understand they're the baseline for \"fast\" tests\n\nTotal test suite currently: 13.8s (cmd/bd alone is 12.8s, and most of that is these CLI tests)","notes":"Fixed by reusing existing bd binary from repo root instead of rebuilding.\n\nBefore: 15+ minutes (rebuilding binary for every test package)\nAfter: ~12 seconds (reuses pre-built binary)\n\nThe init() function now checks for ../../bd first before falling back to building. This means `go build \u0026\u0026 go test` is now fast.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T20:19:12.822543-08:00","updated_at":"2025-11-05T20:31:19.321787-08:00","closed_at":"2025-11-05T20:31:19.321787-08:00","source_repo":"."} {"id":"bd-ykd9","content_hash":"f1446ecf58b117dae936c32d30370b5a42a2c081ffae6ce749d87300a893fa72","title":"Add bd doctor --fix flag to automatically repair issues","description":"Implement a --fix flag for bd doctor that can automatically repair detected issues.\n\nRequirements:\n- Add --fix flag to bd doctor command\n- Show all fixable issues and prompt for confirmation before applying fixes\n- Organize fix implementations under doctor/fix/\u003ctype_of_fix\u003e.go\n- Each fix type should have its own file (e.g., doctor/fix/hooks.go, doctor/fix/sync.go)\n- Display what will be fixed and ask user to confirm (Y/n) before proceeding\n- Support fixing issues like:\n - Missing or broken git hooks\n - Sync problems with remote\n - File permission issues\n - Any other auto-repairable issues doctor detects\n\nImplementation notes:\n- Maintain separation between detection (existing doctor code) and repair (new fix code)\n- Each fix should be idempotent and safe to run multiple times\n- Provide clear output about what was fixed\n- Log any fixes that fail with actionable error messages","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-14T18:17:48.411264-08:00","updated_at":"2025-11-14T18:17:58.88609-08:00","source_repo":"."} -{"id":"bd-yuf7","content_hash":"8f96207ab949593a520f1e0bdab992931e48f39097b77b40837372a7d25cd9b9","title":"bd config set succeeds but doesn't persist to config.toml","description":"Commands like `bd config set daemon.auto_push true` return \"Set daemon.auto_push = true\" but the config file is never created and `bd info --json | jq '.config'` returns null.\n\n**Steps to reproduce:**\n1. Run `bd config set daemon.auto_push true`\n2. See success message: \"Set daemon.auto_push = true\"\n3. Check `cat .beads/config.toml` → file doesn't exist\n4. Check `bd info --json | jq '.config'` → returns null\n\n**Expected:**\n- .beads/config.toml should be created with the setting\n- bd info should show the config value\n\n**Impact:**\nUsers can't enable auto-push/auto-commit via CLI as documented in AGENTS.md","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-08T01:14:58.726198-08:00","updated_at":"2025-11-08T01:17:41.377912-08:00","closed_at":"2025-11-08T01:17:41.377912-08:00","source_repo":"."} +{"id":"bd-yuf7","content_hash":"97e18d89914d698df5ec673d40ff980a87a29e1435a887ec2b5dd77d7d412a79","title":"bd config set succeeds but doesn't persist to config.toml","description":"Commands like `bd config set daemon.auto_push true` return \"Set daemon.auto_push = true\" but the config file is never created and `bd info --json | jq '.config'` returns null.\n\n**Steps to reproduce:**\n1. Run `bd config set daemon.auto_push true`\n2. See success message: \"Set daemon.auto_push = true\"\n3. Check `cat .beads/config.toml` → file doesn't exist\n4. Check `bd info --json | jq '.config'` → returns null\n\n**Expected:**\n- .beads/config.toml should be created with the setting\n- bd info should show the config value\n\n**Impact:**\nUsers can't enable auto-push/auto-commit via CLI as documented in AGENTS.md","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-08T01:14:58.726198-08:00","updated_at":"2025-11-08T01:17:41.377912-08:00","closed_at":"2025-11-08T01:17:41.377912-08:00","source_repo":"."} {"id":"bd-yvlc","content_hash":"7447f9c24de76b56a3e753619c20571c3ca4ec0fb69a12b917def9d9580b1854","title":"URGENT: main branch has failing tests (syncbranch migration error)","description":"The main branch has failing tests that are blocking CI for all PRs.\n\n## Problem\nAll syncbranch_test.go tests failing with:\n\"migration external_ref_column failed: failed to create index on external_ref: sqlite3: SQL logic error: no such table: main.issues\"\n\n## Evidence\n- Last 5 CI runs on main: ALL FAILED\n- Tests fail locally on current main (bd6dca5)\n- Affects: TestGet, TestSet, TestUnset in internal/syncbranch\n\n## Impact\n- Blocking all PR merges\n- CI shows red for all branches\n- Can't trust test results\n\n## Root Cause\nMigration order issue - trying to create index on external_ref column before the issues table exists, or before the external_ref column is added to the issues table.\n\n## Quick Fix Needed\nNeed to investigate migration order in internal/storage/sqlite/migrations.go and ensure:\n1. issues table is created first\n2. external_ref column is added to issues table\n3. THEN index on external_ref is created\n\nThis is CRITICAL - main should never have breaking tests.","design":"Investigation steps:\n1. Check internal/storage/sqlite/migrations.go\n2. Verify migration order and dependencies\n3. Look at external_ref_column migration specifically\n4. Ensure proper table/column creation before index\n5. Test fix locally with fresh database\n6. Push fix to main\n7. Verify CI passes","acceptance_criteria":"- All tests pass on main branch\n- CI is green\n- syncbranch_test.go tests all passing","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-15T12:25:31.51688-08:00","updated_at":"2025-11-15T12:43:11.489612-08:00","closed_at":"2025-11-15T12:43:11.489612-08:00","source_repo":"."} {"id":"bd-z0yn","content_hash":"1bb2f4940363e921d71f45e202cbadc1d90c4985ce5a048bb97d352f0a3ad9d0","title":"Channel isolation test - beads","description":"","status":"in_progress","priority":2,"issue_type":"task","created_at":"2025-11-08T04:21:17.327983-08:00","updated_at":"2025-11-08T04:21:17.365854-08:00","source_repo":"."} {"id":"bd-z3s3","content_hash":"24d99dc1a9a5f35af962137f5709d4b0f1b6a9ec91511c30a2517d790640cce8","title":"Create deployment scripts for GCP","description":"Automated provisioning scripts for GCP Compute Engine deployment.\n\nAcceptance Criteria:\n- Terraform/gcloud scripts\n- Static IP allocation\n- Firewall rules\n- NGINX reverse proxy config\n- TLS setup (Let's Encrypt)\n- Systemd service file\n\nFile: deployment/agent-mail/gcp/","status":"open","priority":3,"issue_type":"task","created_at":"2025-11-07T22:43:43.294839-08:00","updated_at":"2025-11-07T22:43:43.294839-08:00","source_repo":".","dependencies":[{"issue_id":"bd-z3s3","depends_on_id":"bd-9li4","type":"blocks","created_at":"2025-11-07T23:04:27.982336-08:00","created_by":"daemon"}]} -{"id":"bd-z528","content_hash":"3f332e9997d2b7eb0af23885820df5f607fe08671a2615cadec941bbe7d36f68","title":"Prevent test pollution in production database","description":"The bd-vxdr cleanup revealed test issues were created during manual testing in the production workspace (Nov 2-4, template feature development).\n\n**Root cause:** Manual testing with `./bd create \"Test issue\"` pollutes the production .beads database.\n\n**Prevention strategies:**\n1. Use TEST_DB environment variable for manual testing\n2. Add warning when creating issues with \"Test\" prefix\n3. Improve developer docs about testing workflow\n4. Consider adding `bd test-mode` command for isolated testing","notes":"**Implementation completed:**\n\n1. ✅ Added warning when creating issues with \"Test\" prefix in production database\n - Shows yellow warning with ⚠ symbol\n - Suggests using BEADS_DB for isolated testing\n - Warning appears in create.go after title validation\n\n2. ✅ Documented BEADS_DB testing workflow in AGENTS.md\n - Added \"Testing Workflow\" section in Development Guidelines\n - Includes manual testing examples with BEADS_DB\n - Includes automated testing examples with t.TempDir()\n - Clear warning about not polluting production database\n\n3. ⚠️ Decided against bd test-mode command\n - BEADS_DB already provides simple, flexible isolation\n - Additional command would add complexity without much benefit\n - Current approach follows Unix philosophy (env vars for config)\n\n**Files modified:**\n- cmd/bd/create.go - Added Test prefix warning\n- AGENTS.md - Added Testing Workflow section\n\n**Testing:**\n- Verified warning appears when creating \"Test\" prefix issues\n- Verified BEADS_DB isolation works correctly\n- Built successfully with `go build`","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-07T16:07:28.255289-08:00","updated_at":"2025-11-07T23:18:08.386514-08:00","closed_at":"2025-11-07T22:43:28.669908-08:00","source_repo":"."} +{"id":"bd-z528","content_hash":"3f332e9997d2b7eb0af23885820df5f607fe08671a2615cadec941bbe7d36f68","title":"Prevent test pollution in production database","description":"The bd-vxdr cleanup revealed test issues were created during manual testing in the production workspace (Nov 2-4, template feature development).\n\n**Root cause:** Manual testing with `./bd create \"Test issue\"` pollutes the production .beads database.\n\n**Prevention strategies:**\n1. Use TEST_DB environment variable for manual testing\n2. Add warning when creating issues with \"Test\" prefix\n3. Improve developer docs about testing workflow\n4. Consider adding `bd test-mode` command for isolated testing","notes":"**Implementation completed:**\n\n1. ✅ Added warning when creating issues with \"Test\" prefix in production database\n - Shows yellow warning with ⚠ symbol\n - Suggests using BEADS_DB for isolated testing\n - Warning appears in create.go after title validation\n\n2. ✅ Documented BEADS_DB testing workflow in AGENTS.md\n - Added \"Testing Workflow\" section in Development Guidelines\n - Includes manual testing examples with BEADS_DB\n - Includes automated testing examples with t.TempDir()\n - Clear warning about not polluting production database\n\n3. ⚠️ Decided against bd test-mode command\n - BEADS_DB already provides simple, flexible isolation\n - Additional command would add complexity without much benefit\n - Current approach follows Unix philosophy (env vars for config)\n\n**Files modified:**\n- cmd/bd/create.go - Added Test prefix warning\n- AGENTS.md - Added Testing Workflow section\n\n**Testing:**\n- Verified warning appears when creating \"Test\" prefix issues\n- Verified BEADS_DB isolation works correctly\n- Built successfully with `go build`","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-07T16:07:28.255289-08:00","updated_at":"2025-11-08T01:49:23.463399-08:00","closed_at":"2025-11-07T22:43:28.669908-08:00","source_repo":"."} {"id":"bd-zbq2","content_hash":"56dfd7f2c09dafd232a1ae26063744c89a1ba317e50a3429ec19b73ee1402993","title":"bd export should verify JSONL line count matches database count","description":"After export completes, bd should verify that the JSONL file line count matches the number of issues exported. This would catch silent failures where the export appears to succeed but doesn't actually write all issues.\n\nReal-world scenario from VC project:\n- Ran direct SQL DELETE to remove 240 issues \n- Ran 'bd export -o .beads/issues.jsonl'\n- No error shown, appeared to succeed\n- But JSONL file was not updated (still had old line count)\n- Later session found all 240 issues still in JSONL\n- Had to repeat the cleanup\n\nIf export had verified line count, it would have immediately shown:\n Error: Export verification failed\n Expected: 276 issues\n JSONL file: 516 lines\n Mismatch indicates export failed to write all issues\n\nThis is especially important because:\n1. JSONL is source of truth in git\n2. Silent export failures cause data inconsistency\n3. Users assume export succeeded if no error shown\n4. The verification is cheap (just count lines)\n\nImplementation:\n- After writing JSONL, count lines in file\n- Compare to len(exportedIDs)\n- If mismatch, remove temp file and return error\n- Show clear error message with both counts","design":"In cmd/bd/export.go, after atomic rename (line ~301):\n\n1. Count lines in final JSONL file:\n - Read file and count newlines\n - Or reuse countIssuesInJSONL() helper (already exists)\n\n2. Compare to len(exportedIDs)\n\n3. If mismatch:\n - Log error with both counts\n - Optionally: remove the bad JSONL file (or leave for debugging?)\n - Return error (exit 1)\n\n4. Consider adding --skip-verify flag for edge cases\n\nEdge cases:\n- Partial line writes (corrupted file)\n- File system issues\n- Race conditions (another process modifying JSONL during export)\n\nThe countIssuesInJSONL() function already exists at line 20, can reuse it.","acceptance_criteria":"1. bd export verifies JSONL line count after write\n2. Clear error shown if mismatch detected\n3. Test case that simulates partial write failure\n4. Does not affect export performance significantly (line counting is fast)","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-05T14:24:56.278249-08:00","updated_at":"2025-11-05T15:09:41.636141-08:00","closed_at":"2025-11-05T14:31:24.494885-08:00","source_repo":"."} -{"id":"bd-zi1v","content_hash":"287940ef62ffbf69c6a603cace0ae22bd507d15833423e40ed5726f140019d74","title":"Test Agent Mail server failure scenarios","description":"Verify graceful degradation across various failure modes.\n\nTest Cases:\n- Server never started\n- Server crashes during operation\n- Network partition (timeout)\n- Server returns 500 error\n- Invalid bearer token\n- SQLite corruption\n\nAcceptance Criteria:\n- Agents continue working in all scenarios\n- Clear log messages about degradation\n- No crashes or data loss\n- Beads JSONL remains consistent\n\nFile: tests/integration/test_mail_failures.py","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:43:21.41983-08:00","updated_at":"2025-11-08T01:49:13.742653-08:00","closed_at":"2025-11-08T01:49:13.742653-08:00","source_repo":".","dependencies":[{"issue_id":"bd-zi1v","depends_on_id":"bd-fzbg","type":"blocks","created_at":"2025-11-07T22:43:21.420725-08:00","created_by":"daemon"}]} +{"id":"bd-zi1v","content_hash":"6b07bd91f55d69f556fb43d7a590896393190f42a9f0afe6b9140a1b81fde815","title":"Test Agent Mail server failure scenarios","description":"Verify graceful degradation across various failure modes.\n\nTest Cases:\n- Server never started\n- Server crashes during operation\n- Network partition (timeout)\n- Server returns 500 error\n- Invalid bearer token\n- SQLite corruption\n\nAcceptance Criteria:\n- Agents continue working in all scenarios\n- Clear log messages about degradation\n- No crashes or data loss\n- Beads JSONL remains consistent\n\nFile: tests/integration/test_mail_failures.py","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-07T22:43:21.41983-08:00","updated_at":"2025-11-08T02:20:46.951997-08:00","closed_at":"2025-11-08T01:49:13.742653-08:00","source_repo":".","dependencies":[{"issue_id":"bd-zi1v","depends_on_id":"bd-fzbg","type":"blocks","created_at":"2025-11-07T22:43:21.420725-08:00","created_by":"daemon"}]} {"id":"bd-zj8e","content_hash":"655c761aaf4d5b0c9edfba7d96d23e608de94760148715667738d35c2033e110","title":"Performance Testing Documentation","description":"Create docs/performance-testing.md documenting the performance testing framework.\n\nSections:\n1. Overview - What the framework does, goals\n2. Running Benchmarks\n - make bench command\n - Running specific benchmarks\n - Interpreting output (ns/op, allocs/op)\n3. Profiling and Analysis\n - Viewing CPU profiles with pprof\n - Reading flamegraphs\n - Memory profiling\n - Finding hotspots\n4. User Diagnostics\n - bd doctor --perf usage\n - Sharing profiles with bug reports\n - Understanding the report output\n5. Comparing Performance\n - Using benchstat for before/after comparisons\n - Detecting regressions\n6. Tips for Optimization\n - Common patterns\n - When to profile vs benchmark\n\nStyle:\n- Concise, practical examples\n- Screenshots/examples of pprof output\n- Clear command-line examples\n- Focus on workflow, not theory","status":"open","priority":2,"issue_type":"task","created_at":"2025-11-13T22:23:38.99897-08:00","updated_at":"2025-11-13T22:23:38.99897-08:00","source_repo":"."} -{"id":"bd-zkl","content_hash":"cb299b73577814802df3a99dc6c100be59b62cad83511abf65015ca3b66a2f33","title":"Add tests for daemon vs non-daemon parity in list filters","description":"After bd-o43 RPC integration, we need tests to verify daemon mode behaves identically to direct mode for all new filter flags.\n\nTest coverage needed:\n- Pattern matching: --title-contains, --desc-contains, --notes-contains\n- Date ranges: all 6 date filter flags (created/updated/closed after/before)\n- Empty/null checks: --empty-description, --no-assignee, --no-labels\n- Priority ranges: --priority-min, --priority-max\n- Status normalization: --status all vs no status flag\n- Date parsing: YYYY-MM-DD, RFC3339, and error cases\n- Backward compat: deprecated --label flag still works\n\nOracle review findings (bd-o43):\n- Date parsing should support multiple formats\n- Status 'all' should be treated as unset\n- NoLabels field was missing from RPC protocol\n- Error messages should be clear and actionable\n\nTest approach:\n- Create RPC integration tests in internal/rpc/server_issues_epics_test.go\n- Compare daemon client.List() vs direct store.SearchIssues() for same filters\n- Verify error messages match between modes\n- Test with real daemon instance, not just unit tests","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T00:43:53.369457-08:00","updated_at":"2025-11-05T00:55:31.318526-08:00","closed_at":"2025-11-05T00:55:31.318526-08:00","source_repo":".","dependencies":[{"issue_id":"bd-zkl","depends_on_id":"bd-o43","type":"discovered-from","created_at":"2025-11-05T00:43:53.371274-08:00","created_by":"daemon"}]} -{"id":"bd-zo7o","content_hash":"5dfdb66d88f6d950ef07ae225d11cc39e250f3f36eed2b6b62996d81dfca2bc4","title":"Create multi-agent race condition test","description":"Automated test that runs 2+ agents simultaneously to verify collision prevention.\n\nAcceptance Criteria:\n- Script spawns 2 agents in parallel\n- Both try to claim same issue\n- Only one succeeds (via reservation)\n- Other agent skips to different work\n- Verify in JSONL that no duplicate claims\n- Test with Agent Mail enabled/disabled\n\nFile: tests/integration/test_agent_race.py\n\nSuccess Metric: Zero duplicate claims with Agent Mail, collisions without it","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-07T22:43:21.360663-08:00","updated_at":"2025-11-08T00:34:14.40119-08:00","closed_at":"2025-11-08T00:34:14.40119-08:00","source_repo":".","dependencies":[{"issue_id":"bd-zo7o","depends_on_id":"bd-fzbg","type":"blocks","created_at":"2025-11-07T22:43:21.361571-08:00","created_by":"daemon"}]} +{"id":"bd-zkl","content_hash":"27227f7f9b8b03d312d483686711551bcf227c263f935d94d1a8f2c377969d2e","title":"Add tests for daemon vs non-daemon parity in list filters","description":"After bd-o43 RPC integration, we need tests to verify daemon mode behaves identically to direct mode for all new filter flags.\n\nTest coverage needed:\n- Pattern matching: --title-contains, --desc-contains, --notes-contains\n- Date ranges: all 6 date filter flags (created/updated/closed after/before)\n- Empty/null checks: --empty-description, --no-assignee, --no-labels\n- Priority ranges: --priority-min, --priority-max\n- Status normalization: --status all vs no status flag\n- Date parsing: YYYY-MM-DD, RFC3339, and error cases\n- Backward compat: deprecated --label flag still works\n\nOracle review findings (bd-o43):\n- Date parsing should support multiple formats\n- Status 'all' should be treated as unset\n- NoLabels field was missing from RPC protocol\n- Error messages should be clear and actionable\n\nTest approach:\n- Create RPC integration tests in internal/rpc/server_issues_epics_test.go\n- Compare daemon client.List() vs direct store.SearchIssues() for same filters\n- Verify error messages match between modes\n- Test with real daemon instance, not just unit tests","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T00:43:53.369457-08:00","updated_at":"2025-11-05T00:55:31.318526-08:00","closed_at":"2025-11-05T00:55:31.318526-08:00","source_repo":".","dependencies":[{"issue_id":"bd-zkl","depends_on_id":"bd-o43","type":"discovered-from","created_at":"2025-11-05T00:43:53.371274-08:00","created_by":"daemon"}]} +{"id":"bd-zo7o","content_hash":"91c443d3b156b374a4d2359ca34bfdf53acbe377e8988eed17123b9400657539","title":"Create multi-agent race condition test","description":"Automated test that runs 2+ agents simultaneously to verify collision prevention.\n\nAcceptance Criteria:\n- Script spawns 2 agents in parallel\n- Both try to claim same issue\n- Only one succeeds (via reservation)\n- Other agent skips to different work\n- Verify in JSONL that no duplicate claims\n- Test with Agent Mail enabled/disabled\n\nFile: tests/integration/test_agent_race.py\n\nSuccess Metric: Zero duplicate claims with Agent Mail, collisions without it","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-07T22:43:21.360663-08:00","updated_at":"2025-11-08T01:51:40.352657-08:00","closed_at":"2025-11-08T00:34:14.40119-08:00","source_repo":".","dependencies":[{"issue_id":"bd-zo7o","depends_on_id":"bd-fzbg","type":"blocks","created_at":"2025-11-07T22:43:21.361571-08:00","created_by":"daemon"}]} {"id":"bd-zpnq","content_hash":"e96e651c806b522dfc4dfffe17f44e75a5a690bd6fcfe4c6471920e4a715103e","title":"Daemons don't exit when parent process dies, causing accumulation and race conditions","description":"Multiple daemon processes accumulate over time because daemons don't automatically stop when their parent process (e.g., coding agent) is killed. This causes:\n\n1. Race conditions: 8+ daemons watching same .beads/beads.db, each with own 30s debounce timer\n2. Git conflicts: Multiple daemons racing to commit/push .beads/issues.jsonl\n3. Resource waste: Orphaned daemons from sessions days/hours old still running\n\nExample: User had 8 daemons from multiple sessions (12:37AM, 7:20PM, 7:22PM, 7:47PM, 9:19PM yesterday + 9:54AM, 10:55AM today).\n\nSolutions to consider:\n1. Track parent PID and exit when parent dies\n2. Use single global daemon instead of per-session\n3. Document manual cleanup: pkill -f \"bd daemon\"\n4. Add daemon lifecycle management (auto-cleanup of stale daemons)","notes":"Implementation complete:\n\n1. Added ParentPID field to DaemonLockInfo struct (stored in daemon.lock JSON)\n2. Daemon now tracks parent PID via os.Getppid() at startup\n3. Both event loops (polling and event-driven) check parent process every 10 seconds\n4. Daemon gracefully exits if parent process dies (detected via isProcessRunning check)\n5. Handles edge cases:\n - ParentPID=0: Older daemons without tracking (ignored)\n - ParentPID=1: Adopted by init means parent died (exits)\n - Otherwise checks if parent process is still running\n\nThe fix prevents daemon accumulation by ensuring orphaned daemons automatically exit within 10 seconds of parent death.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-07T18:48:41.65456-08:00","updated_at":"2025-11-07T18:53:26.382573-08:00","closed_at":"2025-11-07T18:53:26.382573-08:00","source_repo":"."} {"id":"bd-zqmb","content_hash":"252347e3b30b33a1d0529e9d4e3c4c5402f5e32449967f704b7fc9ec09f02c0d","title":"Fix goroutine leak in daemon restart","description":"Fire-and-forget goroutine in daemon restart leaks on every restart.\n\nLocation: cmd/bd/daemons.go:251\n\nProblem:\ngo func() { _ = daemonCmd.Wait() }()\n\n- Spawns goroutine without timeout or cancellation\n- If daemon command never completes, goroutine leaks forever\n- Each daemon restart leaks one more goroutine\n\nSolution: Add timeout and cleanup:\ngo func() {\n done := make(chan struct{})\n go func() {\n _ = daemonCmd.Wait()\n close(done)\n }()\n \n select {\n case \u003c-done:\n // Exited normally\n case \u003c-time.After(10 * time.Second):\n // Timeout - daemon should have forked by now\n _ = daemonCmd.Process.Kill()\n }\n}()\n\nImpact: Goroutine leak on every daemon restart\n\nEffort: 2 hours","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-16T14:52:01.897215-08:00","updated_at":"2025-11-16T15:04:00.497517-08:00","closed_at":"2025-11-16T15:04:00.497517-08:00","source_repo":"."} {"id":"bd-zwpw","content_hash":"f08173f44c8454bf15b265aa9d3242004e7ee2bc25867b02676746154a9cc6fe","title":"Test dependency child","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T11:23:05.998311-08:00","updated_at":"2025-11-05T11:23:30.389454-08:00","closed_at":"2025-11-05T11:23:30.389454-08:00","source_repo":".","dependencies":[{"issue_id":"bd-zwpw","depends_on_id":"bd-k0j9","type":"blocks","created_at":"2025-11-05T11:23:05.998981-08:00","created_by":"daemon"}]} diff --git a/cmd/bd/cli_fast_test.go b/cmd/bd/cli_fast_test.go index 4d1e01f0..8b326f7d 100644 --- a/cmd/bd/cli_fast_test.go +++ b/cmd/bd/cli_fast_test.go @@ -579,6 +579,17 @@ func TestCLI_PriorityFormats(t *testing.T) { if issue["priority"].(float64) != 3 { t.Errorf("Expected priority 3, got: %v", issue["priority"]) } + + // Test update with P-format + id := issue["id"].(string) + runBDInProcess(t, tmpDir, "update", id, "-p", "P1") + + out = runBDInProcess(t, tmpDir, "show", id, "--json") + var updated []map[string]interface{} + json.Unmarshal([]byte(out), &updated) + if updated[0]["priority"].(float64) != 1 { + t.Errorf("Expected priority 1 after update, got: %v", updated[0]["priority"]) + } } func TestCLI_Reopen(t *testing.T) { diff --git a/cmd/bd/create.go b/cmd/bd/create.go index 09121cae..f666cfc4 100644 --- a/cmd/bd/create.go +++ b/cmd/bd/create.go @@ -14,6 +14,7 @@ import ( "github.com/steveyegge/beads/internal/routing" "github.com/steveyegge/beads/internal/rpc" "github.com/steveyegge/beads/internal/types" + "github.com/steveyegge/beads/internal/validation" ) var createCmd = &cobra.Command{ @@ -94,7 +95,7 @@ var createCmd = &cobra.Command{ // Parse priority (supports both "1" and "P1" formats) priorityStr, _ := cmd.Flags().GetString("priority") - priority := parsePriority(priorityStr) + priority := validation.ParsePriority(priorityStr) if priority == -1 { fmt.Fprintf(os.Stderr, "Error: invalid priority %q (expected 0-4 or P0-P4)\n", priorityStr) os.Exit(1) @@ -394,18 +395,14 @@ func init() { createCmd.Flags().StringP("file", "f", "", "Create multiple issues from markdown file") createCmd.Flags().String("from-template", "", "Create issue from template (e.g., 'epic', 'bug', 'feature')") createCmd.Flags().String("title", "", "Issue title (alternative to positional argument)") - createCmd.Flags().StringP("description", "d", "", "Issue description") - createCmd.Flags().String("design", "", "Design notes") - createCmd.Flags().String("acceptance", "", "Acceptance criteria") - createCmd.Flags().StringP("priority", "p", "2", "Priority (0-4 or P0-P4, 0=highest)") + registerPriorityFlag(createCmd, "2") createCmd.Flags().StringP("type", "t", "task", "Issue type (bug|feature|task|epic|chore)") - createCmd.Flags().StringP("assignee", "a", "", "Assignee") + registerCommonIssueFlags(createCmd) createCmd.Flags().StringSliceP("labels", "l", []string{}, "Labels (comma-separated)") createCmd.Flags().StringSlice("label", []string{}, "Alias for --labels") _ = createCmd.Flags().MarkHidden("label") createCmd.Flags().String("id", "", "Explicit issue ID (e.g., 'bd-42' for partitioning)") createCmd.Flags().String("parent", "", "Parent issue ID for hierarchical child (e.g., 'bd-a3f8e9')") - createCmd.Flags().String("external-ref", "", "External reference (e.g., 'gh-9', 'jira-ABC')") createCmd.Flags().StringSlice("deps", []string{}, "Dependencies in format 'type:id' or 'id' (e.g., 'discovered-from:bd-20,blocks:bd-15' or 'bd-20')") createCmd.Flags().Bool("force", false, "Force creation even if prefix doesn't match database prefix") createCmd.Flags().String("repo", "", "Target repository for issue (overrides auto-routing)") diff --git a/cmd/bd/flags.go b/cmd/bd/flags.go new file mode 100644 index 00000000..a5368f0e --- /dev/null +++ b/cmd/bd/flags.go @@ -0,0 +1,17 @@ +package main + +import "github.com/spf13/cobra" + +// registerCommonIssueFlags registers flags common to create and update commands. +func registerCommonIssueFlags(cmd *cobra.Command) { + cmd.Flags().StringP("assignee", "a", "", "Assignee") + cmd.Flags().StringP("description", "d", "", "Issue description") + cmd.Flags().String("design", "", "Design notes") + cmd.Flags().String("acceptance", "", "Acceptance criteria") + cmd.Flags().String("external-ref", "", "External reference (e.g., 'gh-9', 'jira-ABC')") +} + +// registerPriorityFlag registers the priority flag with a specific default value. +func registerPriorityFlag(cmd *cobra.Command, defaultVal string) { + cmd.Flags().StringP("priority", "p", defaultVal, "Priority (0-4 or P0-P4, 0=highest)") +} diff --git a/cmd/bd/markdown.go b/cmd/bd/markdown.go index a938c9fb..63177510 100644 --- a/cmd/bd/markdown.go +++ b/cmd/bd/markdown.go @@ -14,6 +14,7 @@ import ( "github.com/fatih/color" "github.com/spf13/cobra" "github.com/steveyegge/beads/internal/types" + "github.com/steveyegge/beads/internal/validation" ) var ( @@ -39,47 +40,7 @@ type IssueTemplate struct { Dependencies []string } -// parsePriority extracts and validates a priority value from content. -// Supports both numeric (0-4) and P-prefix format (P0-P4). -// Returns the parsed priority (0-4) or -1 if invalid. -func parsePriority(content string) int { - content = strings.TrimSpace(content) - - // Handle "P1", "P0", etc. format - if strings.HasPrefix(strings.ToUpper(content), "P") { - content = content[1:] // Strip the "P" prefix - } - - var p int - if _, err := fmt.Sscanf(content, "%d", &p); err == nil && p >= 0 && p <= 4 { - return p - } - return -1 // Invalid -} -// parseIssueType extracts and validates an issue type from content. -// Returns the validated type or empty string if invalid. -func parseIssueType(content, issueTitle string) types.IssueType { - issueType := types.IssueType(strings.TrimSpace(content)) - - // Validate issue type - validTypes := map[types.IssueType]bool{ - types.TypeBug: true, - types.TypeFeature: true, - types.TypeTask: true, - types.TypeEpic: true, - types.TypeChore: true, - } - - if !validTypes[issueType] { - // Warn but continue with default - fmt.Fprintf(os.Stderr, "Warning: invalid issue type '%s' in '%s', using default 'task'\n", - issueType, issueTitle) - return types.TypeTask - } - - return issueType -} // parseStringList extracts a list of strings from content, splitting by comma or whitespace. // This is a generic helper used by parseLabels and parseDependencies. @@ -116,11 +77,18 @@ func processIssueSection(issue *IssueTemplate, section, content string) { switch strings.ToLower(section) { case "priority": - if p := parsePriority(content); p != -1 { + if p := validation.ParsePriority(content); p != -1 { issue.Priority = p } case "type": - issue.IssueType = parseIssueType(content, issue.Title) + t, err := validation.ParseIssueType(content) + if err != nil { + fmt.Fprintf(os.Stderr, "Warning: invalid issue type '%s' in '%s', using default 'task'\n", + strings.TrimSpace(content), issue.Title) + issue.IssueType = types.TypeTask + } else { + issue.IssueType = t + } case "description": issue.Description = content case "design": diff --git a/cmd/bd/show.go b/cmd/bd/show.go index 8c982076..7ae34fb8 100644 --- a/cmd/bd/show.go +++ b/cmd/bd/show.go @@ -13,6 +13,7 @@ import ( "github.com/steveyegge/beads/internal/rpc" "github.com/steveyegge/beads/internal/types" "github.com/steveyegge/beads/internal/utils" + "github.com/steveyegge/beads/internal/validation" ) var showCmd = &cobra.Command{ @@ -343,7 +344,12 @@ var updateCmd = &cobra.Command{ updates["status"] = status } if cmd.Flags().Changed("priority") { - priority, _ := cmd.Flags().GetInt("priority") + priorityStr, _ := cmd.Flags().GetString("priority") + priority := validation.ParsePriority(priorityStr) + if priority == -1 { + fmt.Fprintf(os.Stderr, "Error: invalid priority %q (expected 0-4 or P0-P4)\n", priorityStr) + os.Exit(1) + } updates["priority"] = priority } if cmd.Flags().Changed("title") { @@ -802,16 +808,13 @@ func init() { rootCmd.AddCommand(showCmd) updateCmd.Flags().StringP("status", "s", "", "New status") - updateCmd.Flags().IntP("priority", "p", 0, "New priority") + registerPriorityFlag(updateCmd, "") updateCmd.Flags().String("title", "", "New title") - updateCmd.Flags().StringP("assignee", "a", "", "New assignee") - updateCmd.Flags().StringP("description", "d", "", "Issue description") - updateCmd.Flags().String("design", "", "Design notes") + registerCommonIssueFlags(updateCmd) updateCmd.Flags().String("notes", "", "Additional notes") - updateCmd.Flags().String("acceptance", "", "Acceptance criteria") updateCmd.Flags().String("acceptance-criteria", "", "DEPRECATED: use --acceptance") _ = updateCmd.Flags().MarkHidden("acceptance-criteria") - updateCmd.Flags().String("external-ref", "", "External reference (e.g., 'gh-9', 'jira-ABC')") + updateCmd.Flags().Bool("json", false, "Output JSON format") rootCmd.AddCommand(updateCmd) diff --git a/internal/validation/bead.go b/internal/validation/bead.go new file mode 100644 index 00000000..c310b1f9 --- /dev/null +++ b/internal/validation/bead.go @@ -0,0 +1,47 @@ +package validation + +import ( + "fmt" + "strings" + + "github.com/steveyegge/beads/internal/types" +) + +// ParsePriority extracts and validates a priority value from content. +// Supports both numeric (0-4) and P-prefix format (P0-P4). +// Returns the parsed priority (0-4) or -1 if invalid. +func ParsePriority(content string) int { + content = strings.TrimSpace(content) + + // Handle "P1", "P0", etc. format + if strings.HasPrefix(strings.ToUpper(content), "P") { + content = content[1:] // Strip the "P" prefix + } + + var p int + if _, err := fmt.Sscanf(content, "%d", &p); err == nil && p >= 0 && p <= 4 { + return p + } + return -1 // Invalid +} + +// ParseIssueType extracts and validates an issue type from content. +// Returns the validated type or error if invalid. +func ParseIssueType(content string) (types.IssueType, error) { + issueType := types.IssueType(strings.TrimSpace(content)) + + // Validate issue type + validTypes := map[types.IssueType]bool{ + types.TypeBug: true, + types.TypeFeature: true, + types.TypeTask: true, + types.TypeEpic: true, + types.TypeChore: true, + } + + if !validTypes[issueType] { + return types.TypeTask, fmt.Errorf("invalid issue type: %s", content) + } + + return issueType, nil +} diff --git a/cmd/bd/priority_test.go b/internal/validation/bead_test.go similarity index 87% rename from cmd/bd/priority_test.go rename to internal/validation/bead_test.go index ffe67e63..6cea9ffc 100644 --- a/cmd/bd/priority_test.go +++ b/internal/validation/bead_test.go @@ -1,4 +1,4 @@ -package main +package validation import ( "testing" @@ -43,9 +43,9 @@ func TestParsePriority(t *testing.T) { for _, tt := range tests { t.Run(tt.input, func(t *testing.T) { - got := parsePriority(tt.input) + got := ParsePriority(tt.input) if got != tt.expected { - t.Errorf("parsePriority(%q) = %d, want %d", tt.input, got, tt.expected) + t.Errorf("ParsePriority(%q) = %d, want %d", tt.input, got, tt.expected) } }) }