bd sync: 2025-12-23 23:41:32

This commit is contained in:
Steve Yegge
2025-12-23 23:41:32 -08:00
parent 6a65468fae
commit fc026d3635

View File

@@ -173,7 +173,7 @@
{"id":"bd-by0d","title":"Work on beads-ldv: Fix bd graph crashes with nil pointer ...","description":"Work on beads-ldv: Fix bd graph crashes with nil pointer dereference (GH#657). Fix nil pointer in computeDependencyCounts at graph.go:428. When done, submit MR (not PR) to integration branch for Refinery.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-19T22:55:27.829359-08:00","updated_at":"2025-12-19T23:28:32.428314-08:00","closed_at":"2025-12-19T23:20:49.038441-08:00","close_reason":"Fixed nil pointer in computeDependencyCounts by passing subgraph instead of nil"}
{"id":"bd-c2xs","title":"Exclude pinned issues from bd blocked","description":"Update bd blocked to exclude pinned issues. Pinned issues are context markers and should not appear in the blocked work list.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-18T23:33:44.684242-08:00","updated_at":"2025-12-21T11:29:42.179389-08:00","closed_at":"2025-12-21T11:29:42.179389-08:00","close_reason":"Already implemented in SQLite (line 299) and memory (line 1084). Pinned issues excluded from blocked.","dependencies":[{"issue_id":"bd-c2xs","depends_on_id":"bd-0vg","type":"blocks","created_at":"2025-12-18T23:33:56.521323-08:00","created_by":"daemon"},{"issue_id":"bd-c2xs","depends_on_id":"bd-7h5","type":"blocks","created_at":"2025-12-18T23:34:07.736681-08:00","created_by":"daemon"}]}
{"id":"bd-c3u","title":"Review PR #512: clarify bd ready docs","description":"Review and merge PR #512 from aspiers. This PR clarifies what bd ready does after git pull in README.md. Simple 1-line change. URL: https://github.com/anthropics/beads/pull/512","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T08:15:13.405161+11:00","updated_at":"2025-12-13T07:07:29.641265-08:00","closed_at":"2025-12-13T07:07:29.641265-08:00"}
{"id":"bd-c7y5","title":"Optimization: Tombstones still synced, adding overhead","description":"Tombstoned (deleted) issues are still processed during sync, adding overhead.\n\n## Evidence\n```\nImport complete: 0 created, 0 updated, 407 unchanged, 100 skipped\n```\nThose 100 skipped are tombstones - they're read from JSONL, parsed, then filtered out.\n\n## Current State (Beads repo)\n- 408 total issues\n- 99 tombstones (24% of database)\n- Every sync reads and skips these 99 entries\n\n## Impact\n- Sync time increases with tombstone count\n- JSONL file size grows indefinitely\n- Git history accumulates tombstone churn\n\n## Proposed Solutions\n\n### 1. JSONL Compaction (`bd compact`)\nPeriodically rewrite JSONL without tombstones:\n```bash\nbd compact # Removes tombstones, rewrites issues.jsonl\n```\nTrade-off: Loses delete history, but that's in git anyway.\n\n### 2. Tombstone TTL\nAuto-remove tombstones older than N days during sync:\n```go\nif issue.Deleted \u0026\u0026 time.Since(issue.UpdatedAt) \u003e 7*24*time.Hour {\n // Skip writing to new JSONL\n}\n```\n\n### 3. Archive File\nMove old closed issues to `issues-archive.jsonl`:\n- Not synced regularly\n- Available for historical queries\n- Main JSONL stays small\n\n### 4. Lazy Tombstone Handling \nDon't write tombstones to JSONL at all - just remove the line:\n- Simpler, but loses cross-clone delete propagation\n- Would need different delete propagation mechanism\n\n## Recommendation\nStart with `bd compact` command - simple, explicit, user-controlled.\n\n## Related\n- gt-tnss: Analysis - Beads database size and hygiene strategy\n- gt-ox67: Maintenance - Regular cleanup of closed MR/gate beads","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T14:41:16.925212-08:00","updated_at":"2025-12-23T21:22:26.662604-08:00"}
{"id":"bd-c7y5","title":"Optimization: Tombstones still synced, adding overhead","description":"Tombstoned (deleted) issues are still processed during sync, adding overhead.\n\n## Evidence\n```\nImport complete: 0 created, 0 updated, 407 unchanged, 100 skipped\n```\nThose 100 skipped are tombstones - they're read from JSONL, parsed, then filtered out.\n\n## Current State (Beads repo)\n- 408 total issues\n- 99 tombstones (24% of database)\n- Every sync reads and skips these 99 entries\n\n## Impact\n- Sync time increases with tombstone count\n- JSONL file size grows indefinitely\n- Git history accumulates tombstone churn\n\n## Proposed Solutions\n\n### 1. JSONL Compaction (`bd compact`)\nPeriodically rewrite JSONL without tombstones:\n```bash\nbd compact # Removes tombstones, rewrites issues.jsonl\n```\nTrade-off: Loses delete history, but that's in git anyway.\n\n### 2. Tombstone TTL\nAuto-remove tombstones older than N days during sync:\n```go\nif issue.Deleted \u0026\u0026 time.Since(issue.UpdatedAt) \u003e 7*24*time.Hour {\n // Skip writing to new JSONL\n}\n```\n\n### 3. Archive File\nMove old closed issues to `issues-archive.jsonl`:\n- Not synced regularly\n- Available for historical queries\n- Main JSONL stays small\n\n### 4. Lazy Tombstone Handling \nDon't write tombstones to JSONL at all - just remove the line:\n- Simpler, but loses cross-clone delete propagation\n- Would need different delete propagation mechanism\n\n## Recommendation\nStart with `bd compact` command - simple, explicit, user-controlled.\n\n## Related\n- gt-tnss: Analysis - Beads database size and hygiene strategy\n- gt-ox67: Maintenance - Regular cleanup of closed MR/gate beads","status":"in_progress","priority":2,"issue_type":"task","assignee":"beads/dag","created_at":"2025-12-23T14:41:16.925212-08:00","updated_at":"2025-12-23T23:41:31.837865-08:00"}
{"id":"bd-c83r","title":"Prevent multiple daemons from running on the same repo","description":"Multiple bd daemons running on the same repo clone causes race conditions and data corruption risks.\n\n**Problem:**\n- Nothing prevents spawning multiple daemons for the same repository\n- Multiple daemons watching the same files can conflict during sync operations\n- Observed: 4 daemons running simultaneously caused sync race condition\n\n**Solution:**\nImplement daemon singleton enforcement per repo:\n1. Use a lock file (e.g., .beads/.daemon.lock) with PID\n2. On daemon start, check if lock exists and process is alive\n3. If stale lock (dead PID), clean up and acquire lock\n4. If active daemon exists, either:\n - Exit with message 'daemon already running (PID xxx)'\n - Or offer --replace flag to kill existing and take over\n5. Release lock on graceful shutdown\n\n**Edge cases to handle:**\n- Daemon crashes without releasing lock (stale PID detection)\n- Multiple repos in same directory tree (each repo gets own lock)\n- Race between two daemons starting simultaneously (atomic lock acquisition)","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-13T06:37:23.377131-08:00","updated_at":"2025-12-16T01:14:49.50347-08:00","closed_at":"2025-12-14T17:34:14.990077-08:00"}
{"id":"bd-cb64c226.1","title":"Performance Validation","description":"Confirm no performance regression from cache removal","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-10-28T10:50:15.126019-07:00","updated_at":"2025-12-17T23:18:29.108883-08:00","close_reason":"Closed","deleted_at":"2025-12-17T23:18:29.108883-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
{"id":"bd-cb64c226.10","title":"Delete server_cache_storage.go","description":"Remove the entire cache implementation file (~286 lines)","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-10-27T22:55:38.729299-07:00","updated_at":"2025-12-17T23:18:29.110716-08:00","close_reason":"Closed","deleted_at":"2025-12-17T23:18:29.110716-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}