bd daemon sync: 2026-01-07 19:20:05

This commit is contained in:
mayor
2026-01-07 19:20:05 -08:00
committed by Steve Yegge
parent 2eef55eaed
commit 91345e8363

View File

@@ -3,6 +3,7 @@
{"id":"bd-0134cc5a","title":"Fix auto-import creating duplicates instead of updating issues","description":"ROOT CAUSE: server_export_import_auto.go line 221 uses ResolveCollisions: true for ALL auto-imports. This is wrong.\n\nProblem:\n- ResolveCollisions is for branch merges (different issues with same ID)\n- Auto-import should UPDATE existing issues, not create duplicates\n- Every git pull creates NEW duplicate issues with different IDs\n- Two agents ping-pong creating endless duplicates\n\nEvidence:\n- 31 duplicate groups found (bd duplicates)\n- bd-236-246 are duplicates of bd-224-235\n- Both agents keep pulling and creating more duplicates\n- JSONL file grows endlessly with duplicates\n\nThe Fix:\nChange checkAndAutoImportIfStale in server_export_import_auto.go:\n- Remove ResolveCollisions: true (line 221)\n- Use normal import logic that updates existing issues by ID\n- Only use ResolveCollisions for explicit bd import --resolve-collisions\n\nImpact: Critical - makes beads unusable for multi-agent workflows","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-10-27T21:48:57.733846-07:00","updated_at":"2025-10-30T17:12:58.21084-07:00","closed_at":"2025-10-27T22:26:40.627239-07:00"}
{"id":"bd-02a4","title":"Modify CreateIssue to support parent resurrection","description":"Update internal/storage/sqlite/sqlite.go:182-196 to call TryResurrectParent before failing on missing parent. Coordinate with EnsureIDs changes for consistent behavior. Handle edge case where parent never existed in JSONL (fail gracefully).","status":"closed","priority":0,"issue_type":"task","created_at":"2025-11-04T12:31:59.701571-08:00","updated_at":"2025-11-05T00:08:42.811436-08:00","closed_at":"2025-11-05T00:08:42.81144-08:00"}
{"id":"bd-03r","title":"Document deletions manifest in AGENTS.md and README","description":"Parent: bd-imj\n\n## Task\nAdd documentation about the deletions manifest feature.\n\n## Locations to Update\n\n### AGENTS.md\n- Explain that deletions.jsonl is tracked in git\n- Document that `bd delete` records to the manifest\n- Explain cross-clone propagation mechanism\n\n### README.md \n- Brief mention in .beads directory structure section\n- Link to detailed docs if needed\n\n### docs/deletions.md (new file)\n- Full technical documentation\n- Format specification\n- Pruning policy\n- Git history fallback\n- Troubleshooting\n\n## Acceptance Criteria\n- AGENTS.md updated with deletion workflow\n- README.md mentions deletions.jsonl purpose\n- New docs/deletions.md with complete reference","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-25T14:56:49.13027-08:00","updated_at":"2025-11-25T15:17:23.145944-08:00","closed_at":"2025-11-25T15:17:23.145944-08:00"}
{"id":"bd-03ze8","title":"Session ended: gt-beads-crew-grip","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-07T19:20:04.655276-08:00","created_by":"beads/crew/grip","updated_at":"2026-01-07T19:20:04.694807-08:00","closed_at":"2026-01-07T19:20:04.694807-08:00","close_reason":"auto-closed session event"}
{"id":"bd-0447029c","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-29T16:43:28.182327-07:00","updated_at":"2025-10-30T17:12:58.188016-07:00","closed_at":"2025-10-29T16:15:10.64719-07:00"}
{"id":"bd-0458","title":"Consolidate export/import/commit/push into sync.go","description":"Create internal/daemonrunner/sync.go with Syncer type. Add ExportOnce, ImportOnce, CommitAndMaybePush methods. Replace createExportFunc/createAutoImportFunc with thin closures calling Syncer.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-01T11:41:14.874539-07:00","updated_at":"2025-11-02T12:32:00.157369-08:00","closed_at":"2025-11-02T12:32:00.157375-08:00"}
{"id":"bd-05a1","title":"Isolate RPC server startup into rpc_server.go","description":"Create internal/daemonrunner/rpc_server.go with StartRPC function. Move startRPCServer logic here and return typed handle.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-01T11:41:14.876839-07:00","updated_at":"2025-11-02T12:32:00.158054-08:00","closed_at":"2025-11-02T12:32:00.158057-08:00"}
@@ -1073,6 +1074,7 @@
{"id":"bd-is6m","title":"Add gate checking to Deacon patrol loop","description":"Integrate gate checking into Deacon's patrol cycle.\n\n## Patrol Integration\n```go\nfunc (d *Deacon) checkGates(ctx context.Context) {\n gates, _ := d.store.ListOpenGates(ctx)\n \n for _, gate := range gates {\n // Check timeout\n if time.Since(gate.CreatedAt) \u003e gate.Timeout {\n d.notifyWaiters(gate, \"timeout\")\n d.closeGate(gate, \"timed out\")\n continue\n }\n \n // Check condition\n if d.checkCondition(gate.AwaitType, gate.AwaitID) {\n d.notifyWaiters(gate, \"cleared\")\n d.closeGate(gate, \"condition met\")\n }\n }\n}\n```\n\n## Note\nThis task is in Gas Town (gt), not beads. May need to be moved there.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T11:44:36.839709-08:00","updated_at":"2025-12-23T12:19:44.204647-08:00","closed_at":"2025-12-23T12:19:44.204647-08:00","dependencies":[{"issue_id":"bd-is6m","depends_on_id":"bd-udsi","type":"parent-child","created_at":"2025-12-23T11:44:52.909253-08:00","created_by":"daemon"},{"issue_id":"bd-is6m","depends_on_id":"bd-u66e","type":"blocks","created_at":"2025-12-23T11:44:56.428084-08:00","created_by":"daemon"}]}
{"id":"bd-it19","title":"Code smell: show.go is 1592 lines - needs splitting","description":"cmd/bd/show.go is 1592 lines mixing data fetching, transformation, output formatting, and thread reconstruction.\n\n**Problem:**\n- Too large to understand and maintain\n- Poor separation of concerns\n- Hard to test individual components\n\n**Acceptance Criteria:**\n- [ ] Extract formatting into show_formatter.go\n- [ ] Extract thread reconstruction into show_threads.go\n- [ ] Each file under 500 lines\n- [ ] No functionality changes\n- [ ] Tests pass","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-12-28T18:59:00.865612-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T19:01:18.42196-08:00","closed_at":"2025-12-28T19:01:18.42196-08:00","dependencies":[{"issue_id":"bd-it19","depends_on_id":"bd-ox1o","type":"blocks","created_at":"2025-12-28T19:00:23.61907-08:00","created_by":"daemon"}]}
{"id":"bd-it3x","title":"Issue with labels","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-07T19:07:18.388873-08:00","updated_at":"2025-11-07T22:07:17.346541-08:00","closed_at":"2025-11-07T21:55:09.429989-08:00"}
{"id":"bd-iugnm","title":"Session ended: gt-beads-crew-wolf","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-07T19:20:05.05824-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-07T19:20:05.094481-08:00","closed_at":"2026-01-07T19:20:05.094481-08:00","close_reason":"auto-closed session event"}
{"id":"bd-iutu","title":"Test comment display","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T17:50:24.269413-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-27T17:53:39.950742-08:00","comments":[{"id":5,"issue_id":"bd-iutu","author":"beads/crew/dave","text":"This is a test comment","created_at":"2025-12-28T01:50:30Z"}],"deleted_at":"2025-12-27T17:53:39.950742-08:00","deleted_by":"beads/crew/dave","delete_reason":"manual delete","original_type":"task"}
{"id":"bd-iw11","title":"Fix TestCheckMetadataVersionTracking test threshold","description":"The test 'TestCheckMetadataVersionTracking/slightly_outdated_version' fails because:\n\n- Test uses version 0.35.0 as 'slightly outdated'\n- Current version is 0.45.0 (10 minor versions ahead)\n- The 'slightly outdated' threshold has been exceeded, so it now reports 'very old'\n\nThe test's version threshold needs updating, or the threshold logic needs adjusting.\n\n## Error\n```\ndoctor_test.go:984: Expected status ok, got warning (message: Last recorded version is very old: 0.35.0 (current: 0.45.0))\n```\n\n## Fix options\n1. Update test version from 0.35.0 to 0.43.0 (within threshold)\n2. Make test threshold calculation relative to current version","status":"closed","priority":3,"issue_type":"bug","created_at":"2026-01-06T22:47:02.397237-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-06T23:31:14.785508-08:00","closed_at":"2026-01-06T23:31:14.785508-08:00","close_reason":"Fixed by updating test version from 0.35.0 to 0.43.0"}
{"id":"bd-iw4z","title":"Compound visualization in bd mol show","description":"Enhance bd mol show to display compound structure.\n\nENHANCEMENTS:\n- Show constituent protos and how they're bonded\n- Display bond type (sequential/parallel) between components\n- Indicate attachment points\n- Show combined variable requirements across all protos\n\nEXAMPLE OUTPUT:\n\n Compound: proto-feature-with-tests\n Bonded from:\n └─ proto-feature (root)\n └─ proto-testing (sequential, after completion)\n \n Variables: {{name}}, {{version}}, {{test_suite}}\n \n Structure:\n proto-feature-with-tests\n ├─ Design feature {{name}}\n ├─ Implement core\n ├─ Write unit tests ← from proto-testing\n └─ Run test suite {{test_suite}} ← from proto-testing","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T00:59:26.71318-08:00","updated_at":"2026-01-02T13:42:51.390118-08:00","closed_at":"2026-01-02T13:42:51.390118-08:00","close_reason":"Implemented compound visualization in mol show. Added showCompoundBondingInfo() to display bonded-from lineage with bond types. Updated both showMolecule() and showMoleculeWithParallel() to detect compounds and show the 'Bonded from:' section. Added JSON output fields is_compound and bonded_from. Added unit tests for IsCompound(), GetConstituents(), and formatBondType().","dependencies":[{"issue_id":"bd-iw4z","depends_on_id":"bd-o5xe","type":"parent-child","created_at":"2025-12-21T00:59:51.500865-08:00","created_by":"daemon"},{"issue_id":"bd-iw4z","depends_on_id":"bd-rnnr","type":"blocks","created_at":"2025-12-21T00:59:51.891643-08:00","created_by":"daemon"}]}
@@ -1157,6 +1159,7 @@
{"id":"bd-kzxd","title":"Sync protection mechanism resurrects deleted issues","description":"During bd sync, the 'Protecting N issue(s) from left snapshot' logic resurrects issues that are in the deletions manifest, causing UNIQUE constraint failures on subsequent syncs.\n\n## Reproduction\n1. Delete an issue with bd delete (creates tombstone + deletions.jsonl entry)\n2. Run bd sync - succeeds\n3. Run bd sync again - fails with 'UNIQUE constraint failed: issues.id'\n\n## Root Cause\nThe protection mechanism (designed to prevent data loss during 3-way merge) keeps a snapshot of issues before sync. When importing after pull, it restores issues from this snapshot even if they're in the deletions manifest.\n\n## Observed Behavior\n- bd-3pd was deleted and added to deletions.jsonl\n- First sync exports tombstone, commits, pulls, imports - succeeds\n- Second sync: protection restores bd-3pd from left snapshot\n- Import tries to create bd-3pd which already exists → UNIQUE constraint error\n\n## Expected Behavior\nIssues in deletions manifest should NOT be restored by protection mechanism.\n\n## Workaround\nManually delete from DB: sqlite3 .beads/beads.db 'DELETE FROM issues WHERE id = \"bd-xxx\"'\n\n## Files to Investigate\n- cmd/bd/sync.go - protection logic\n- cmd/bd/snapshot_manager.go - left snapshot handling\n- internal/importer/importer.go - import with protection","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-13T10:11:02.550663-08:00","updated_at":"2025-12-13T10:20:51.651662-08:00","closed_at":"2025-12-13T10:20:51.651662-08:00"}
{"id":"bd-l0pg","title":"GH#483: Pre-commit hook should not fail when .beads exists but bd sync fails","description":"Pre-commit hook exit 1 on bd sync --flush-only failure blocks commits even when user removed beads but .beads dir reappears. Should warn not fail. See: https://github.com/steveyegge/beads/issues/483","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-14T16:32:22.759225-08:00","updated_at":"2025-12-16T01:18:02.80947-08:00","closed_at":"2025-12-16T01:09:46.931395-08:00"}
{"id":"bd-l13p","title":"Add GetWorkerStatus RPC endpoint","description":"New RPC endpoint to get all workers and their current molecule/step in one call. Returns: assignee, moleculeID, moleculeTitle, currentStep, totalSteps, stepTitle, lastActivity, status. Enables activity feed TUI to show worker state without multiple round trips.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-23T16:26:36.248654-08:00","updated_at":"2025-12-23T16:40:59.772138-08:00","closed_at":"2025-12-23T16:40:59.772138-08:00"}
{"id":"bd-l1s0v","title":"Session ended: gt-beads-crew-dave","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-07T19:20:04.553542-08:00","created_by":"beads/crew/dave","updated_at":"2026-01-07T19:20:04.592896-08:00","closed_at":"2026-01-07T19:20:04.592896-08:00","close_reason":"auto-closed session event"}
{"id":"bd-l4b6","title":"Add tests for bd init --team wizard","description":"Write integration tests for the team wizard:\n- Test branch detection\n- Test sync branch creation\n- Test protected branch workflow\n- Test auto-sync configuration","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T18:58:18.192425-08:00","updated_at":"2025-11-06T20:06:49.22056-08:00","closed_at":"2025-11-06T19:55:39.687439-08:00"}
{"id":"bd-l5gq","title":"Optimize test suite performance - cut runtime by 50%+","description":"## Problem\nTest suite takes ~20.8 seconds, with 95% of time spent in just 2 tests:\n- TestHashIDs_MultiCloneConverge: 11.08s (53%)\n- TestHashIDs_IdenticalContentDedup: 8.78s (42%)\n\nBoth tests in beads_hash_multiclone_test.go perform extensive Git operations (bare repos, multiple clones, sync rounds).\n\n## Goal\nCut total test time by at least 50% (to ~10 seconds or less).\n\n## Analysis\nTests already have some optimizations:\n- --shared --depth=1 --no-tags for fast cloning\n- Disabled hooks, gc, fsync\n- Support -short flag\n\n## Impact\n- Faster development feedback loop\n- Reduced CI costs and time\n- Better developer experience","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-11-04T01:23:14.410648-08:00","updated_at":"2025-11-04T11:23:13.683213-08:00","closed_at":"2025-11-04T11:23:13.683213-08:00"}
{"id":"bd-l6yk","title":"bd mol burn should work on mols, not just wisps","description":"Currently `bd mol burn` only works on wisps (Ephemeral=true):\n\n```\n$ bd mol burn bd-mol-p7i\nError: molecule bd-mol-p7i is not a wisp (Ephemeral=false)\nHint: mol burn only works with wisp molecules\n Use 'bd delete' to remove non-wisp issues\n```\n\nThe name 'burn' implies destruction - it should work on any molecule, not just wisps. When called on a regular mol, it should convert to `bd delete --cascade`.\n\n**Proposed behavior:**\n- If wisp: current behavior (delete without tombstones)\n- If mol: `bd delete \u003cid\u003e --cascade` (delete with tombstones)\n\nThis makes the metaphor consistent: burn = destroy a molecule, regardless of phase.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-29T17:05:08.115592-08:00","created_by":"beads/crew/emma","updated_at":"2025-12-29T17:10:19.034979-08:00","closed_at":"2025-12-29T17:10:19.034979-08:00","close_reason":"Implemented: mol burn now works on both wisps and mols"}