bd daemon sync: 2026-01-08 17:57:40
This commit is contained in:
@@ -1349,6 +1349,7 @@
|
||||
{"id":"bd-n97g","title":"bump-version.sh should detect pre-staged release notes","description":"When running the release workflow, I staged CHANGELOG.md and info.go changes before running bump-version.sh. The script:\n\n1. Warned about uncommitted changes (correct)\n2. Required stash/pop to proceed\n3. After pop, the [Unreleased] header wasn't converted to version/date\n\nThe script could be smarter:\n- Detect if staged changes are to CHANGELOG.md/info.go (expected for releases)\n- Or provide a --allow-staged flag\n- Or at minimum, re-apply the [Unreleased] → [X.Y.Z] transformation after detecting manual edits\n\nWorkaround: manually edit [Unreleased] to [0.39.1] - 2025-12-27 after stash pop.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-27T22:51:23.239642-08:00","created_by":"beads/crew/emma","updated_at":"2025-12-27T23:36:47.949197-08:00","closed_at":"2025-12-27T23:36:47.949197-08:00"}
|
||||
{"id":"bd-nbc","title":"Add security tests for file path validation in clean command","description":"Test coverage gap identified by automated analysis (vc-217).\n\n**Original Issue:** [deleted:bd-da96-baseline-lint]\n\nIn cmd/bd/clean.go:118, os.Open(gitignorePath) is flagged by gosec G304 for potential file inclusion via variable without validation.\n\nAdd tests covering:\n- Path traversal attempts (../../etc/passwd)\n- Absolute paths outside project directory\n- Symlink following behavior\n- Non-existent file handling\n- Validation that only .gitignore files in valid locations are opened\n\nThis is a security-sensitive code path that needs validation to prevent unauthorized file access.\n\n_This issue was automatically created by AI test coverage analysis._","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-21T10:25:33.526884-05:00","updated_at":"2025-11-21T21:29:36.988132396-05:00","closed_at":"2025-11-21T19:31:21.864673-05:00","dependencies":[{"issue_id":"bd-nbc","depends_on_id":"bd-da96-baseline-lint","type":"discovered-from","created_at":"2025-11-21T10:25:33.528582-05:00","created_by":"ai-supervisor"}]}
|
||||
{"id":"bd-ncwo","title":"Ghost resurrection: remote status:closed wins during git merge","description":"During bd sync, the 3-way git merge sometimes keeps remote's status:closed instead of local's status:tombstone. This causes ghost issues to resurrect even when tombstones exist.\n\nRoot cause: Git 3-way merge doesn't understand tombstone semantics. If base had closed, local changed to tombstone, and remote has closed, git might keep remote's version.\n\nThe early tombstone check in importer.go only prevents CREATION when tombstones exist in DB. But if applyDeletionsFromMerge hard-deletes the tombstones before import runs (because they're not in the merged result), the check doesn't help.\n\nPotential fixes:\n1. Make tombstones 'win' in the beads merge driver (internal/merge/merge.go)\n2. Don't hard-delete tombstones in applyDeletionsFromMerge if they're in the DB\n3. Export tombstones to a separate file that's not subject to merge\n\nGhost issues: bd-cb64c226.*, bd-cbed9619.*","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-16T22:01:03.56423-08:00","updated_at":"2025-12-17T16:11:17.070763-08:00","deleted_at":"2025-12-17T16:11:17.070763-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"bug"}
|
||||
{"id":"bd-ndmvd","title":"Session ended: gt-beads-crew-emma","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-08T17:57:40.007306-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-08T17:57:40.0448-08:00","closed_at":"2026-01-08T17:57:40.0448-08:00","close_reason":"auto-closed session event"}
|
||||
{"id":"bd-ndye","title":"mergeDependencies uses union instead of 3-way merge","description":"## Critical Bug\n\nThe `mergeDependencies` function in internal/merge/merge.go performs a UNION of left and right dependencies instead of a proper 3-way merge. This causes removed dependencies to be resurrected.\n\n### Root Cause\n\n```go\n// Current code (lines 795-816):\nfunc mergeDependencies(left, right []Dependency) []Dependency {\n // Just unions left + right\n // NEVER REMOVES anything\n // Doesn't even look at base!\n}\n```\n\nAnd `mergeIssue` (line 579) doesn't pass `base`:\n```go\nresult.Dependencies = mergeDependencies(left.Dependencies, right.Dependencies)\n```\n\n### Impact\n\nIf:\n- Base has dependency D\n- Left removes D (intentional)\n- Right still has D (stale)\n\nCurrent: D is in result (resurrection!)\nCorrect: Left removed it, D should NOT be in result\n\nThis breaks Gas Town's workflow and data integrity. Closed means closed.\n\n### Fix\n\nChange `mergeDependencies` to take `base` and do proper 3-way merge:\n- If dep was in base and removed by left → exclude (left wins)\n- If dep was in base and removed by right → exclude (right wins)\n- If dep wasn't in base and added by either → include\n- If dep was in base and both still have it → include\n\nKey principle: **REMOVALS ARE AUTHORITATIVE**\n\n### Files to Change\n\n1. internal/merge/merge.go:\n - `mergeDependencies(left, right)` → `mergeDependencies(base, left, right)`\n - `mergeIssue` line 579: pass `base.Dependencies`\n\n### Related\n\nThis also explains why `ProtectLocalExportIDs` in importer is defined but never used - the protection was never actually implemented.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-18T23:15:54.475872-08:00","updated_at":"2025-12-18T23:21:10.709571-08:00","closed_at":"2025-12-18T23:21:10.709571-08:00"}
|
||||
{"id":"bd-ndyz","title":"GH#243: Recurring stale daemon.lock causes 5s delays","description":"User reports daemon.lock keeps becoming stale after running Claude with beads.\n\nSymptom:\n- bd ready takes 5 seconds (exact)\n- daemon.lock exists but socket is missing\n- bd daemons killall temporarily fixes it\n- Problem recurs after using beads with AI agents\n\nUser on v0.22.0, Macbook M2, 132 issues (89 closed)\n\nHypothesis: Daemon is crashing or exiting uncleanly during agent sessions, leaving stale lock file.\n\nNeed to:\n1. Add crash logging to daemon to understand why it's exiting\n2. Improve cleanup on daemon exit (ensure lock is always removed)\n3. Add automatic stale lock detection/cleanup\n4. Consider making daemon more resilient to crashes","notes":"Oracle analysis complete. Converting to epic with 5 focused sub-issues:\n1. RPC fast-fail with socket stat + short timeouts (P0)\n2. Standardize daemon detection with lock probe (P1) \n3. Crash recovery improvements (P2)\n4. Self-heal stale artifacts (P2)\n5. Diagnostics and debugging (P3)","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-07T16:32:23.576171-08:00","updated_at":"2025-11-07T22:07:17.347419-08:00","closed_at":"2025-11-07T21:29:56.009737-08:00"}
|
||||
{"id":"bd-ne0h","title":"GHI #891: close_reason field dropped during merge/sync","description":"GitHub Issue #891: close_reason field dropped during merge/sync\n\nhttps://github.com/steveyegge/beads/issues/891","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-04T11:22:12.270387-08:00","created_by":"mayor","updated_at":"2026-01-04T15:22:07.769236-08:00","closed_at":"2026-01-04T11:28:48.394697-08:00","close_reason":"Fixed: Added CloseReason and ClosedBySession fields to merge.Issue struct with proper merge logic"}
|
||||
|
||||
Reference in New Issue
Block a user