bd sync: 2025-10-30 22:30:33
This commit is contained in:
@@ -114,6 +114,7 @@
|
||||
{"id":"bd-a1691807","content_hash":"23f0119ee9df98f1bf6d648dba06065c156963064ef1c7308dfb02c8bdd5bc58","title":"Integration test: mutation to export latency","description":"Measure time from bd create to JSONL update. Verify \u003c500ms latency. Test with multiple rapid mutations to verify batching.","status":"open","priority":1,"issue_type":"task","created_at":"2025-10-29T20:49:49.105247-07:00","updated_at":"2025-10-30T17:05:26.040312-07:00"}
|
||||
{"id":"bd-a40f374f","content_hash":"599448515198700decd2494cf0cea3335b013c573bdcbda90a151564585cf845","title":"bd validate - Comprehensive health check","description":"Run all validation checks in one command.\n\nChecks:\n- Duplicates\n- Orphaned dependencies\n- Test pollution\n- Git conflicts\n\nSupports --fix-all for auto-repair.\n\nDepends on bd-cbed9619.1, bd-0dcea000, bd-31aab707, bd-9826b69a.\n\nFiles: cmd/bd/validate.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T20:02:47.956664-07:00","updated_at":"2025-10-30T17:05:26.003643-07:00","closed_at":"2025-10-29T20:02:15.318966-07:00"}
|
||||
{"id":"bd-a5251b1a","content_hash":"1a158c823c7152ddd5dbd11e11df32a85b699a4f05bfd2effbf4c4a3655cca6b","title":"Test RPC mutation event","description":"","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-29T19:08:03.315443-07:00","updated_at":"2025-10-30T17:05:25.998693-07:00"}
|
||||
{"id":"bd-a58f","content_hash":"1ad5a25551a831608ba67a8ab2a1c2cf9e5326f3a5731e83c2b51123e67befa1","title":"Fix or remove TestRemapCollisions test","description":"TestRemapCollisions in internal/storage/sqlite/collision_test.go is failing because we removed the collision remapping implementation (bd-8e05).\n\nOptions:\n1. Remove the test entirely (collision remapping no longer supported)\n2. Update test to verify the new behavior (error when collisions detected)\n\nThe test expects RemapCollisions to work, but now it returns an error because hash IDs don't need collision remapping.\n\nFile: internal/storage/sqlite/collision_test.go:730","status":"open","priority":1,"issue_type":"chore","created_at":"2025-10-30T22:30:33.13258-07:00","updated_at":"2025-10-30T22:30:33.13258-07:00","labels":["cleanup","hash-ids","tests"],"dependencies":[{"issue_id":"bd-a58f","depends_on_id":"bd-8e05","type":"blocks","created_at":"2025-10-30T22:30:33.135067-07:00","created_by":"stevey"}]}
|
||||
{"id":"bd-a599b676","content_hash":"919b081fad12885acfc2ff1defd8beb20b737db1372eff62306740371ab3b05e","title":"Test hash ID v2","description":"","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-30T14:24:38.507863-07:00","updated_at":"2025-10-30T17:05:26.038418-07:00","closed_at":"2025-10-30T14:24:47.272891-07:00"}
|
||||
{"id":"bd-a5a8bec0","content_hash":"fb509cc456ea9de6000129ad7780e417d2f06361e577738709a9ccf1c3b1f3b1","title":"bd find-duplicates - AI-powered duplicate detection","description":"Find semantically duplicate issues.\n\nApproaches:\n1. Mechanical: Exact title/description matching\n2. Embeddings: Cosine similarity (cheap, scalable)\n3. AI: LLM-based semantic comparison (expensive, accurate)\n\nUses embeddings by default for \u003e100 issues.\n\nFiles: cmd/bd/find_duplicates.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T19:42:29.853269-07:00","updated_at":"2025-10-30T17:05:26.001063-07:00","closed_at":"2025-10-29T16:43:30.367455-07:00"}
|
||||
{"id":"bd-a5e2bd80","content_hash":"d429410e478f428289b91d4fd258797d1140adf105b54a05fb6b7fa62c91f67f","title":"Hash-based IDs with hierarchical children","description":"Replace sequential auto-increment IDs (bd-1c63eb84, bd-9063acda) with content-hash based IDs (bd-af78e9a2) and hierarchical sequential children (bd-af78e9a2.1, .2, .3).\n\n## Motivation\nCurrent sequential IDs cause collision problems when multiple clones work offline:\n- Non-deterministic convergence in N-way scenarios (bd-cbed9619.1, bd-e6d71828)\n- Complex collision resolution logic (~2,100 LOC)\n- UNIQUE constraint violations during import\n- Requires coordination between workers\n\nHash-based IDs eliminate collisions entirely at the top level, while hierarchical sequential children provide human-friendly IDs within naturally-coordinated contexts (epic ownership).\n\n## Benefits\n- ✅ Collision-free distributed ID generation (top-level)\n- ✅ Human-friendly IDs for related work (epic children)\n- ✅ Eliminates ~2,100 LOC of collision handling code\n- ✅ Better git merge behavior (different IDs = different JSONL lines)\n- ✅ True offline-first workflows\n- ✅ Simpler than dual-system (no alias counter to coordinate)\n- ✅ Natural work breakdown structure encoding in IDs\n- ✅ Enables parallel CI/CD workers without coordination\n\n## Design\n\n### ID Structure\n- **Storage:** bd-af78e9a2 (prefix + 8-char SHA256)\n- **CLI input:** Both bd-af78e9a2 AND a3f8e9 accepted (prefix optional)\n- **CLI output:** bd-af78e9a2 (always show prefix for copy-paste clarity)\n- **External refs:** bd-af78e9a2 (in commits, docs, unambiguous)\n\n**Why keep prefix in storage:**\n- Clear in external contexts (git commits, docs, Slack)\n- Grep-able across files\n- Distinguishable from git commit SHAs\n- Supports multiple databases (bd-, ticket-, bug- prefixes)\n\n**Why make optional in CLI:**\n- Less typing: bd show a3f8e9 works\n- Git-style convenience\n- Prefix inferred from context (bd command)\n\n### Hierarchical Children\n- **Epic children:** bd-af78e9a2.1, bd-af78e9a2.2, bd-af78e9a2.3 (sequential per parent)\n- **Nested epics:** bd-af78e9a2.1.1, bd-af78e9a2.1.2 (up to 3 levels deep)\n- **Leaf tasks:** Any issue without children\n\n### Example Hierarchy\n```\nbd-a3f8e9 [epic] \"Auth System\"\n ├─ bd-a3f8e9.1 [epic] \"Login Flow\"\n │ ├─ bd-a3f8e9.1.1 [task] \"Design login UI\"\n │ ├─ bd-a3f8e9.1.2 [task] \"Backend validation\"\n │ └─ bd-a3f8e9.1.3 [task] \"Integration tests\"\n ├─ bd-a3f8e9.2 [epic] \"Password Reset\"\n │ └─ bd-a3f8e9.2.1 [task] \"Email templates\"\n └─ bd-a3f8e9.3 [task] \"Update documentation\"\n```\n\n### CLI Usage\n```bash\n# All of these work (prefix optional in input):\nbd show a3f8e9\nbd show bd-a3f8e9\nbd show a3f8e9.1\nbd show bd-a3f8e9.1.2\n\n# Output always shows prefix:\nbd-a3f8e9 [epic] Auth System\n Status: open\n ...\n\n# External references use full ID:\ngit commit -m \"Implement login (bd-a3f8e9.1)\"\n```\n\n### Collision Characteristics\n- **Top-level:** NONE (content-based hash)\n- **Epic children:** RARE (epics have natural ownership, sequential creation)\n- **When they occur:** Easy to resolve (small scope, clear context)\n\n### Storage\n- JSONL stores full hierarchical IDs with prefix: bd-a3f8e9.1.2\n- Child counters table: child_counters(parent_id, last_child)\n- Counter per parent at any depth\n\n### Limits\n- Max depth: 3 levels (prevents over-decomposition)\n- Max breadth: Unlimited (tested up to 347 children)\n- Max ID length: ~20 chars at depth 3 (bd-a3f8e9.12.34.56)\n\n## Breaking Change\nThis is a v2.0 feature requiring migration. Provide bd migrate --hash-ids tool.\n\n## Timeline\n~8 weeks (Phase 1: Hash IDs 3w, Phase 2: Hierarchical children 3w, Phase 3: Testing 2w)\nSimplified from original 9-week estimate due to removal of alias system.\n\n## Dependencies\nShould complete after bd-7c5915ae (cleanup validation).","status":"open","priority":1,"issue_type":"epic","created_at":"2025-10-29T21:23:49.592315-07:00","updated_at":"2025-10-30T17:05:26.008001-07:00"}
|
||||
@@ -171,6 +172,7 @@
|
||||
{"id":"bd-ce37850f","content_hash":"3ef2872c3fcb1e5acc90d33fd5a76291742cbcecfbf697b611aa5b4d8ce80078","title":"Add embedding generation for duplicate detection","description":"Use embeddings for scalable duplicate detection.\n\nModel: text-embedding-3-small (OpenAI) or all-MiniLM-L6-v2 (local)\nStorage: SQLite vector extension or in-memory\nCost: ~/bin/bash.0002 per 100 issues\n\nMuch cheaper than LLM comparisons for large databases.\n\nFiles: internal/embeddings/ (new package)","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-28T14:48:29.072913-07:00","updated_at":"2025-10-30T17:05:26.036978-07:00"}
|
||||
{"id":"bd-cf349eb3","content_hash":"1b42289a0cb1da0626a69c6f004bf62fc9ba6e3a0f8eb70159c5f1446497020b","title":"Update LINTING.md with current baseline","description":"After cleanup, document the remaining acceptable baseline in LINTING.md so we can track regression.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-10-27T23:20:10.39272-07:00","updated_at":"2025-10-30T17:05:26.027672-07:00","closed_at":"2025-10-27T23:05:31.945614-07:00"}
|
||||
{"id":"bd-d355a07d","content_hash":"cd92b47a0f379c6f12d046658ec147e07fe8bc3ab1992f68f5570b7388014024","title":"Import validation falsely reports data loss on collision resolution","description":"## Problem\n\nPost-import validation reports 'data loss detected!' when import count reduces due to legitimate collision resolution.\n\n## Example\n\n```\nImport complete: 1 created, 8 updated, 142 unchanged, 19 skipped, 1 issues remapped\nPost-import validation failed: import reduced issue count: 165 → 164 (data loss detected!)\n```\n\nThis was actually successful collision resolution (bd-70419816 duplicated → remapped to bd-5dae5504), not data loss.\n\n## Impact\n\n- False alarms waste investigation time\n- Undermines confidence in import validation\n- Confuses users/agents about sync health\n\n## Solution\n\nImprove validation to distinguish:\n- Collision-resolution merges (expected count reduction)\n- Actual data loss (unexpected disappearance)\n\nTrack remapped issue count and adjust expected post-import count accordingly.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-10-29T23:15:00.815227-07:00","updated_at":"2025-10-30T17:05:26.017684-07:00"}
|
||||
{"id":"bd-d48f","content_hash":"0a646de50eb39bc5c49e8087b00b859feaf6a341a20115004a14d0612c23e769","title":"Fix dep_add.txt scripttest failure","description":"The dep_add.txt scripttest is failing because it references test-2 which doesn't exist:\n\nError: no issue found matching \"test-2\"\n\nThis appears to be a test data issue where the test expects sequential IDs (test-1, test-2) but we're now using hash IDs (test-d8a8, etc.).\n\nFile: cmd/bd testdata/dep_add.txt:5\n\nNeed to either:\n1. Update test to use actual created issue IDs\n2. Update test to create issues with explicit IDs\n3. Fix test to capture the generated IDs and use them","status":"open","priority":1,"issue_type":"bug","created_at":"2025-10-30T22:30:33.137581-07:00","updated_at":"2025-10-30T22:30:33.137581-07:00","labels":["hash-ids","tests"]}
|
||||
{"id":"bd-d4ec5a82","content_hash":"872448809bfa26d39d68ba6cac5071379756c30bcd3b08dc75de6da56c133956","title":"Add MCP functions for repair commands","description":"Add repair commands to beads-mcp for agent access:\n- beads_resolve_conflicts()\n- beads_find_duplicates()\n- beads_detect_pollution()\n- beads_validate()\n\nFiles: integrations/beads-mcp/src/beads_mcp/server.py","status":"open","priority":2,"issue_type":"task","created_at":"2025-10-28T14:48:29.071495-07:00","updated_at":"2025-10-30T17:05:26.036309-07:00"}
|
||||
{"id":"bd-d7266f21","content_hash":"a44dbe61a808cd010cca529064732476742a1d39bfad4187b3e7fe43a8c5e6ea","title":"Port N-way test to verify hash IDs prevent collisions","description":"Create TestHashIDsNClones that:\n- Sets up 5 clones like TestFiveCloneCollision\n- Each clone creates 10 issues offline (different titles)\n- Sync in random order\n- Verify all clones converge to 50 issues with ZERO collisions\n- Verify all IDs are hash-based (bd-a3f8e9a2 format)\n- Prove we need zero collision resolution rounds\n\nThis replaces bd-a5e2bd80.10 which was too abstract. We can port the existing beads_nway_test.go structure but expect zero collisions.","status":"open","priority":1,"issue_type":"task","created_at":"2025-10-30T16:14:59.126766-07:00","updated_at":"2025-10-30T17:05:26.038644-07:00","dependencies":[{"issue_id":"bd-d7266f21","depends_on_id":"bd-a5e2bd80.8","type":"blocks","created_at":"2025-10-30T16:14:59.128072-07:00","created_by":"stevey"},{"issue_id":"bd-d7266f21","depends_on_id":"bd-a5e2bd80.11","type":"blocks","created_at":"2025-10-30T16:15:01.963945-07:00","created_by":"stevey"}]}
|
||||
{"id":"bd-d7e88238","content_hash":"b69ec861618b03129fad7807b085ee6365860cfd2e9901b49eb846e192b95a0d","title":"Rapid 3","description":"","status":"open","priority":3,"issue_type":"task","created_at":"2025-10-29T19:11:57.459655-07:00","updated_at":"2025-10-30T17:05:25.999957-07:00"}
|
||||
|
||||
Reference in New Issue
Block a user