Clean up wrong-project issues and test data

Removed 237 issues that were accidentally added from wyvern project:
- 225 test issues (Test incremental 2, Test merged features)
- 12 wyvern deployment issues (SSL certs, Docker, OAuth, GCR, etc.)

Now down to 107 legitimate beads issues (IDs 1-344 with gaps).
Next step: renumber to compact ID space.
This commit is contained in:
Steve Yegge
2025-10-16 21:12:05 -07:00
parent 2fd0b85232
commit 86cbcbfd3a

View File

@@ -1,243 +1,28 @@
{"id":"bd-1","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:16:08.107546-07:00"}
{"id":"bd-10","title":"Add PostgreSQL backend","description":"Implement PostgreSQL storage backend as alternative to SQLite for larger teams","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:33.961565-07:00","dependencies":[{"issue_id":"bd-10","depends_on_id":"bd-9","type":"blocks","created_at":"2025-10-16T20:46:08.982732-07:00","created_by":"import"}]}
{"id":"bd-100","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.467034-07:00"}
{"id":"bd-101","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-102","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:50.604471-07:00"}
{"id":"bd-103","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-104","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.467514-07:00"}
{"id":"bd-105","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-106","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:50.630571-07:00"}
{"id":"bd-107","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-108","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.035941-07:00"}
{"id":"bd-109","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-11","title":"Test issue to verify fix","description":"This should be bd-11 if the fix works","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:33.971732-07:00"}
{"id":"bd-110","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.036347-07:00"}
{"id":"bd-111","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-112","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.036886-07:00"}
{"id":"bd-113","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-114","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.037295-07:00"}
{"id":"bd-115","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-116","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.038297-07:00"}
{"id":"bd-117","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-118","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.038925-07:00"}
{"id":"bd-119","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-12","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.461107-07:00","dependencies":[{"issue_id":"bd-12","depends_on_id":"bd-9","type":"parent-child","created_at":"2025-10-16T20:46:08.983332-07:00","created_by":"import"}]}
{"id":"bd-120","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.039316-07:00"}
{"id":"bd-121","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-122","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.039656-07:00"}
{"id":"bd-123","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-124","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.465177-07:00"}
{"id":"bd-125","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-126","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:50.756487-07:00"}
{"id":"bd-127","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-128","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.486363-07:00"}
{"id":"bd-129","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-13","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T02:51:52.198288-07:00","dependencies":[{"issue_id":"bd-13","depends_on_id":"bd-9","type":"parent-child","created_at":"2025-10-16T20:46:08.983861-07:00","created_by":"import"}]}
{"id":"bd-130","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:50.781554-07:00"}
{"id":"bd-131","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-132","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.041871-07:00"}
{"id":"bd-133","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-134","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.46657-07:00"}
{"id":"bd-135","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-136","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.465886-07:00"}
{"id":"bd-137","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-138","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:50.832042-07:00"}
{"id":"bd-139","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-14","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T02:51:52.198356-07:00","dependencies":[{"issue_id":"bd-14","depends_on_id":"bd-9","type":"parent-child","created_at":"2025-10-16T20:46:08.984478-07:00","created_by":"import"}]}
{"id":"bd-140","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.497193-07:00"}
{"id":"bd-141","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-142","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.467269-07:00"}
{"id":"bd-143","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-144","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.020946-07:00"}
{"id":"bd-145","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-146","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.499388-07:00"}
{"id":"bd-147","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-148","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:50.896552-07:00"}
{"id":"bd-149","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-15","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.003238-07:00","dependencies":[{"issue_id":"bd-15","depends_on_id":"bd-9","type":"parent-child","created_at":"2025-10-16T20:46:08.985332-07:00","created_by":"import"}]}
{"id":"bd-150","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:50.909458-07:00"}
{"id":"bd-151","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-152","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.50017-07:00"}
{"id":"bd-153","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-154","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:50.934475-07:00"}
{"id":"bd-155","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-156","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:50.946976-07:00"}
{"id":"bd-157","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-158","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:50.959559-07:00"}
{"id":"bd-159","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-16","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.007864-07:00","dependencies":[{"issue_id":"bd-16","depends_on_id":"bd-9","type":"parent-child","created_at":"2025-10-16T20:46:08.985993-07:00","created_by":"import"}]}
{"id":"bd-160","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:50.972516-07:00"}
{"id":"bd-161","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-162","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.029985-07:00"}
{"id":"bd-163","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-164","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.031047-07:00"}
{"id":"bd-165","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-166","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.031401-07:00"}
{"id":"bd-167","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-168","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.032547-07:00"}
{"id":"bd-169","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-17","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.028648-07:00","dependencies":[{"issue_id":"bd-17","depends_on_id":"bd-9","type":"parent-child","created_at":"2025-10-16T20:46:08.986573-07:00","created_by":"import"}]}
{"id":"bd-170","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.033525-07:00"}
{"id":"bd-171","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-172","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.502285-07:00"}
{"id":"bd-173","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-174","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.061742-07:00"}
{"id":"bd-175","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-176","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.074121-07:00"}
{"id":"bd-177","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-178","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.086736-07:00"}
{"id":"bd-179","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-18","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.00541-07:00"}
{"id":"bd-180","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.099355-07:00"}
{"id":"bd-181","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-182","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.112338-07:00"}
{"id":"bd-183","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-184","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.124844-07:00"}
{"id":"bd-185","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-186","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.137214-07:00"}
{"id":"bd-187","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-188","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.491972-07:00"}
{"id":"bd-189","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-19","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T02:51:52.198697-07:00"}
{"id":"bd-190","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.162068-07:00"}
{"id":"bd-191","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-192","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.040474-07:00"}
{"id":"bd-193","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-194","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.041702-07:00"}
{"id":"bd-195","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-196","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.200333-07:00"}
{"id":"bd-197","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-198","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.212823-07:00"}
{"id":"bd-199","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-2","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:16:09.268591-07:00"}
{"id":"bd-20","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.035752-07:00"}
{"id":"bd-200","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.225345-07:00"}
{"id":"bd-201","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-202","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.471295-07:00"}
{"id":"bd-203","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-204","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.250061-07:00"}
{"id":"bd-205","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-206","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.262941-07:00"}
{"id":"bd-207","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-208","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.476637-07:00"}
{"id":"bd-209","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-21","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.038708-07:00"}
{"id":"bd-210","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.472926-07:00"}
{"id":"bd-211","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-212","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.493881-07:00"}
{"id":"bd-213","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-214","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.045725-07:00"}
{"id":"bd-215","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-216","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.046122-07:00"}
{"id":"bd-217","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-218","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.541145-07:00"}
{"id":"bd-219","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-22","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T02:51:52.198988-07:00"}
{"id":"bd-220","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.474365-07:00"}
{"id":"bd-221","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-222","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.566807-07:00"}
{"id":"bd-223","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-224","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.579978-07:00"}
{"id":"bd-225","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-226","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.592862-07:00"}
{"id":"bd-227","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-228","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.047142-07:00"}
{"id":"bd-229","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-23","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T02:51:52.19905-07:00"}
{"id":"bd-230","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.04747-07:00"}
{"id":"bd-231","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-232","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.052204-07:00"}
{"id":"bd-233","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-234","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.060356-07:00","dependencies":[{"issue_id":"bd-234","depends_on_id":"bd-235","type":"blocks","created_at":"2025-10-16T20:46:08.98713-07:00","created_by":"import"},{"issue_id":"bd-234","depends_on_id":"bd-236","type":"blocks","created_at":"2025-10-16T20:46:08.987632-07:00","created_by":"import"}]}
{"id":"bd-235","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","dependencies":[{"issue_id":"bd-235","depends_on_id":"bd-237","type":"blocks","created_at":"2025-10-16T20:46:08.988156-07:00","created_by":"import"}]}
{"id":"bd-236","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.060964-07:00","dependencies":[{"issue_id":"bd-236","depends_on_id":"bd-237","type":"blocks","created_at":"2025-10-16T20:46:08.988745-07:00","created_by":"import"}]}
{"id":"bd-237","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-238","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.668477-07:00","dependencies":[{"issue_id":"bd-238","depends_on_id":"bd-239","type":"parent-child","created_at":"2025-10-16T20:46:08.989319-07:00","created_by":"import"},{"issue_id":"bd-238","depends_on_id":"bd-240","type":"parent-child","created_at":"2025-10-16T20:46:08.989814-07:00","created_by":"import"}]}
{"id":"bd-239","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","dependencies":[{"issue_id":"bd-239","depends_on_id":"bd-241","type":"blocks","created_at":"2025-10-16T20:46:08.990258-07:00","created_by":"import"}]}
{"id":"bd-24","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T02:51:52.199176-07:00"}
{"id":"bd-240","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.680892-07:00","dependencies":[{"issue_id":"bd-240","depends_on_id":"bd-242","type":"blocks","created_at":"2025-10-16T20:46:08.990693-07:00","created_by":"import"}]}
{"id":"bd-241","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-242","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.061568-07:00"}
{"id":"bd-243","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-244","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.706225-07:00"}
{"id":"bd-245","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-246","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.718834-07:00"}
{"id":"bd-247","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-248","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.731239-07:00"}
{"id":"bd-249","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-25","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":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-250","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.743528-07:00"}
{"id":"bd-251","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-252","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.513232-07:00"}
{"id":"bd-253","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-254","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.76915-07:00"}
{"id":"bd-255","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-256","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T20:31:20.579849-07:00"}
{"id":"bd-257","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-258","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.514251-07:00"}
{"id":"bd-259","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-26","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.469891-07:00"}
{"id":"bd-260","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.808206-07:00"}
{"id":"bd-261","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-262","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.514762-07:00"}
{"id":"bd-263","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-264","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.515582-07:00"}
{"id":"bd-265","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-266","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.477721-07:00"}
{"id":"bd-267","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-268","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.495108-07:00"}
{"id":"bd-269","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-27","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":"open","priority":3,"issue_type":"bug","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-270","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.872919-07:00"}
{"id":"bd-271","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-272","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.885486-07:00"}
{"id":"bd-273","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-274","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.89796-07:00"}
{"id":"bd-275","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-276","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:51.91111-07:00"}
{"id":"bd-277","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-278","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.064553-07:00"}
{"id":"bd-279","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-28","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":"open","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-280","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.067334-07:00"}
{"id":"bd-281","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-282","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.067628-07:00"}
{"id":"bd-283","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-284","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.070921-07:00"}
{"id":"bd-285","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-286","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.074953-07:00"}
{"id":"bd-287","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-288","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.079833-07:00"}
{"id":"bd-289","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-29","title":"Remove unused issueMap in scoreCollisions","description":"scoreCollisions() creates issueMap and populates it (lines 135-138) but never uses it. Either remove it or add a TODO comment explaining future use. Located in collision.go:135-138. Cosmetic cleanup.","status":"open","priority":4,"issue_type":"chore","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-290","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:52.001632-07:00"}
{"id":"bd-291","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-292","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.479774-07:00"}
{"id":"bd-293","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-294","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.081133-07:00"}
{"id":"bd-295","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-296","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.081665-07:00"}
{"id":"bd-297","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-298","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T20:31:21.45131-07:00"}
{"id":"bd-299","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-3","title":"Normal task","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-30","title":"Test issue for design field","description":"Testing the new update flags","design":"## Design Plan\\n- Add flags to update command\\n- Test thoroughly\\n- Document changes","acceptance_criteria":"- All three fields (design, notes, acceptance-criteria) can be updated\\n- Changes persist in database\\n- bd show displays the fields correctly","notes":"Implementation complete. All tests passing.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T02:51:52.199634-07:00"}
{"id":"bd-300","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T20:31:20.136831-07:00"}
{"id":"bd-301","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-302","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:52.079457-07:00"}
{"id":"bd-303","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-304","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T20:31:20.324043-07:00"}
{"id":"bd-305","title":"Test incremental 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T20:31:19.525428-07:00"}
{"id":"bd-306","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T20:31:21.579749-07:00"}
{"id":"bd-307","title":"Test incremental 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T20:31:19.64135-07:00"}
{"id":"bd-308","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:52.117601-07:00"}
{"id":"bd-309","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-31","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.046944-07:00"}
{"id":"bd-310","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T20:31:19.851838-07:00"}
{"id":"bd-311","title":"Test incremental 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T20:31:21.876332-07:00"}
{"id":"bd-312","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:52.143114-07:00"}
{"id":"bd-313","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-314","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T20:31:20.55199-07:00"}
{"id":"bd-315","title":"Test performance - issue 1","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-316","title":"Performance test 1","description":"","status":"open","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-317","title":"Performance test 2","description":"","status":"open","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
@@ -262,13 +47,7 @@
{"id":"bd-334","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.130241-07:00"}
{"id":"bd-335","title":"Test auto-export timing","description":"","status":"open","priority":4,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-336","title":"test_from_22561","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T20:31:20.075645-07:00"}
{"id":"bd-337","title":"Set up automated SSL certificate renewal monitoring","description":"SSL cert expired on Dec 14, 2024 causing multi-day outage. Prevent future issues by:\n- Setting up monitoring/alerts for cert expiration (30 days before)\n- Documenting cert renewal process in AGENTS.md\n- Consider automating cert regeneration and deployment\n- Test cert renewal process in staging","status":"open","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-338","title":"Complete migration from GCR to Artifact Registry","description":"Container Registry is deprecated and being shut down. While the auto-migration has been triggered, properly complete the migration:\n- Update all references from gcr.io to Artifact Registry URLs\n- Update documentation and scripts\n- Verify all services are pulling from Artifact Registry\n- Clean up old GCR images","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T20:31:19.369698-07:00"}
{"id":"bd-339","title":"Modernize Docker base image and reduce image size","description":"Current Docker image is 909MB and uses openjdk:17-bullseye. Modernize by implementing multi-stage builds, consider distroless/alpine base images, remove unnecessary dependencies, optimize layer caching","status":"open","priority":2,"issue_type":"chore","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-34","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-32.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.493112-07:00"}
{"id":"bd-340","title":"Add Docker healthcheck to game server container","description":"Add HEALTHCHECK instruction to Dockerfile to detect when game server is unhealthy. Check port 2222 listening, XMLRPC endpoint responding, or Redis connection","status":"open","priority":2,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-341","title":"Improve secrets management in Docker deployment","description":"Remove hardcoded passwords from Dockerfile and use Docker secrets or GCP Secret Manager. Consider Vault for secrets management","status":"open","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-342","title":"Fix Docker image architecture build on Apple Silicon","description":"Add platform specification to build scripts for x86_64 GCE VMs and document in AGENTS.md","status":"open","priority":2,"issue_type":"bug","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-343","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","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-344","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T20:31:19.174534-07:00"}
{"id":"bd-35","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T02:51:52.199959-07:00"}
@@ -284,7 +63,6 @@
{"id":"bd-44","title":"Test flush tracking","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.502637-07:00"}
{"id":"bd-45","title":"Test export cancels timer","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:52.155473-07:00"}
{"id":"bd-46","title":"Test incremental export","description":"Testing bd-38 implementation","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.50945-07:00"}
{"id":"bd-47","title":"Test incremental 2","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T02:51:52.200786-07:00"}
{"id":"bd-48","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.488597-07:00"}
{"id":"bd-49","title":"Test label dirty tracking","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:52.155733-07:00"}
{"id":"bd-5","title":"Test issue","description":"Testing prefix","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T13:39:55.828804-07:00","dependencies":[{"issue_id":"bd-5","depends_on_id":"bd-8","type":"parent-child","created_at":"2025-10-16T20:46:08.992747-07:00","created_by":"import"}]}
@@ -304,7 +82,7 @@
{"id":"bd-62","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T13:12:16.610152-07:00"}
{"id":"bd-63","title":"Document hierarchical blocking behavior in README","description":"The fix for bd-59 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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T13:10:38.482538-07:00"}
{"id":"bd-64","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-60 (composite index on depends_on_id, type)","status":"open","priority":3,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-65","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":"open","priority":1,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-65","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-16T21:03:25.525342-07:00","closed_at":"2025-10-16T21:03:25.525342-07:00"}
{"id":"bd-66","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T13:55:59.178075-07:00"}
{"id":"bd-67","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T13:42:38.577529-07:00"}
{"id":"bd-68","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-67 (version sync issue)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T13:49:22.368581-07:00"}
@@ -320,25 +98,3 @@
{"id":"bd-77","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":"open","priority":4,"issue_type":"feature","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-78","title":"Test issue with --deps flag","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.027923-07:00"}
{"id":"bd-79","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.028111-07:00"}
{"id":"bd-8","title":"Reach 1.0 release milestone","description":"Stabilize API, finalize documentation, comprehensive testing","status":"open","priority":1,"issue_type":"epic","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-80","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":"open","priority":2,"issue_type":"bug","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-81","title":"Add OAuth2 support","description":"Implement OAuth2 authentication flow with support for Google and GitHub providers.","design":"- Create OAuth2 provider interface\n- Implement Google provider\n- Implement GitHub provider\n- Add callback handler\n- Store tokens securely","acceptance_criteria":"- Users can authenticate with Google\n- Users can authenticate with GitHub\n- Tokens are stored securely in database\n- Token refresh works automatically","status":"closed","priority":1,"issue_type":"feature","assignee":"alice","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.029821-07:00"}
{"id":"bd-82","title":"Add rate limiting to auth endpoints","description":"Auth endpoints are vulnerable to brute force attacks. Need to add rate limiting.","status":"closed","priority":0,"issue_type":"bug","assignee":"bob","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:17.463042-07:00"}
{"id":"bd-83","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:17.463188-07:00"}
{"id":"bd-84","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:17.463352-07:00"}
{"id":"bd-85","title":"Add OAuth2 support","description":"Implement OAuth2 authentication flow with support for Google and GitHub providers.","design":"- Create OAuth2 provider interface\n- Implement Google provider\n- Implement GitHub provider\n- Add callback handler\n- Store tokens securely","acceptance_criteria":"- Users can authenticate with Google\n- Users can authenticate with GitHub\n- Tokens are stored securely in database\n- Token refresh works automatically","status":"closed","priority":1,"issue_type":"feature","assignee":"alice","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:17.46355-07:00"}
{"id":"bd-86","title":"Add rate limiting to auth endpoints","description":"Auth endpoints are vulnerable to brute force attacks. Need to add rate limiting.","status":"closed","priority":0,"issue_type":"bug","assignee":"bob","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:17.463886-07:00"}
{"id":"bd-87","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.46194-07:00"}
{"id":"bd-88","title":"Add OAuth2 support","description":"Implement OAuth2 authentication flow with support for Google and GitHub providers.","design":"- Create OAuth2 provider interface\n- Implement Google provider\n- Implement GitHub provider\n- Add callback handler\n- Store tokens securely","acceptance_criteria":"- Users can authenticate with Google\n- Users can authenticate with GitHub\n- Tokens are stored securely in database\n- Token refresh works automatically","status":"closed","priority":1,"issue_type":"feature","assignee":"alice","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:17.464143-07:00"}
{"id":"bd-89","title":"Add rate limiting to auth endpoints","description":"Auth endpoints are vulnerable to brute force attacks. Need to add rate limiting.","status":"closed","priority":0,"issue_type":"bug","assignee":"bob","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.004697-07:00"}
{"id":"bd-9","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-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:16:10.559862-07:00"}
{"id":"bd-90","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-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.005199-07:00"}
{"id":"bd-91","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-92","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:34.006762-07:00"}
{"id":"bd-93","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-94","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:50.552324-07:00"}
{"id":"bd-95","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-96","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-14T14:37:50.565027-07:00"}
{"id":"bd-97","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}
{"id":"bd-98","title":"Test merged features","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00","closed_at":"2025-10-16T10:07:22.463184-07:00"}
{"id":"bd-99","title":"Test incremental 2","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-16T20:46:08.971822-07:00","updated_at":"2025-10-16T20:46:08.971822-07:00"}