bd daemon sync: 2026-01-11 22:18:10

This commit is contained in:
beads/refinery
2026-01-11 22:18:10 -08:00
committed by Steve Yegge
parent ff449be613
commit 39de16cd1c

View File

@@ -1757,6 +1757,7 @@
{"id":"bd-p68qt","title":"Session ended: gt-beads-refinery","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-10T14:01:23.65416-08:00","created_by":"beads/refinery","updated_at":"2026-01-10T14:01:23.687195-08:00","closed_at":"2026-01-10T14:01:23.687195-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
{"id":"bd-p68x","title":"Create examples for common workflows","description":"Add examples/ subdirectories: OSS contributor workflow, team branch workflow, multi-phase development, multiple personas (architect/implementer). Each with README and sample configs.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T18:04:30.128257-08:00","updated_at":"2025-11-05T19:27:33.07555-08:00","closed_at":"2025-11-05T19:08:39.035904-08:00","dependencies":[{"issue_id":"bd-p68x","depends_on_id":"bd-8rd","type":"parent-child","created_at":"2025-11-05T18:04:39.247515-08:00","created_by":"daemon"}]}
{"id":"bd-p6vp","title":"Clarify .beads/.gitattributes handling in Protected Branches docs","description":"Protected Branches docs quick start leaves untracked `.beads` directory and `.gitattributes`.\nQuestion: Are these changes meant to be checked into the protected branch?\nNeed to clarify if these should be ignored or committed, or if the instructions are missing a step.\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-20T18:56:25.79407-05:00","updated_at":"2025-12-09T18:38:37.703285472-05:00","closed_at":"2025-11-26T22:25:47.574326-08:00"}
{"id":"bd-p72za","title":"Session ended: gt-beads-refinery","status":"closed","priority":2,"issue_type":"event","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T22:18:09.370645-08:00","created_by":"beads/refinery","updated_at":"2026-01-11T22:18:09.436566-08:00","closed_at":"2026-01-11T22:18:09.436566-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
{"id":"bd-p76kv","title":"bd list can hang indefinitely due to missing timeouts","description":"dispatched_by: gastown/crew/max\n\n## Problem\n\nWhen `bd list` hangs, it can block forever due to missing timeouts at multiple layers:\n\n### 1. No timeout in gastown's `runBdCommand` \n**File:** `internal/mail/bd.go:42-54`\n```go\ncmd := exec.Command(\"bd\", args...)\nif err := cmd.Run(); err != nil { // Waits forever!\n```\nIf `bd` hangs for any reason, gt commands hang forever.\n\n### 2. No timeout in RPC request processing (beads daemon)\n**File:** `internal/rpc/server_routing_validation_diagnostics.go:262-264`\n```go\nfunc (s *Server) reqCtx(_ *Request) context.Context {\n return context.Background() // No deadline!\n}\n```\nIf a database query hangs, the RPC handler hangs forever.\n\n### 3. Mutex starvation potential\n`SearchIssues` takes a read lock on `reconnectMu`, while `reconnect()` takes a write lock. With Go's RWMutex, if there's a steady stream of readers, the writer can starve indefinitely.\n\n## Evidence\n\nObserved stuck processes running for 13+ hours:\n```\nbd list --type message --label cc:mayor/ --status open --json\nbd list --type message --label cc:mayor --status open --json\n```\n\nThe SQLite `busy_timeout` (30s) should have caused failures, not hangs. The processes were likely stuck on the Go `reconnectMu` mutex or a blocked daemon.\n\n## Proposed Fixes\n\n1. **Add timeout to daemon request processing** - Use `context.WithTimeout` in `reqCtx()` (e.g., 60 seconds)\n2. **Consider request timeout propagation** from client to server\n3. **Review reconnectMu usage** for potential starvation scenarios\n\nNote: The gastown side (`runBdCommand`) also needs a fix, but that's a separate repo.","status":"closed","priority":2,"issue_type":"bug","assignee":"beads/crew/dave","created_at":"2026-01-10T11:56:34.750531-08:00","created_by":"gastown/crew/max","updated_at":"2026-01-10T23:44:36.578483-08:00","closed_at":"2026-01-10T23:44:36.578483-08:00","close_reason":"Fixed in commit 69dae103. reqCtx() now applies requestTimeout (30s default) to context, preventing indefinite hangs."}
{"id":"bd-p7i2","title":"Add unit test for gitHasUncommittedBeadsChanges()","description":"The new helper function from bd-vd8e needs unit tests in sync_git_test.go to verify:\n- Returns false when no changes\n- Returns true for M (modified)\n- Returns true for A (added)\n- Returns false for ?? (untracked)\n- Returns false for D (deleted)\n\nPart of GH#885 follow-up.","status":"closed","priority":2,"issue_type":"task","assignee":"beads/polecats/ruby","created_at":"2026-01-04T16:15:53.96425-08:00","created_by":"beads/crew/fang","updated_at":"2026-01-04T16:20:40.004117-08:00","closed_at":"2026-01-04T16:20:40.004117-08:00","close_reason":"Added parseGitStatusForBeadsChanges helper function and 14 unit tests covering: empty status, modified (staged/unstaged/both), added, untracked, deleted, renamed, copied, and edge cases"}
{"id":"bd-par1","title":"doctor: improve messaging for detection-only hook managers","description":"When bd doctor detects hook managers we can't fully check (pre-commit, overcommit, yorkie, simple-git-hooks), the current warning suggests they're broken. Change to informational: 'pre-commit detected, cannot verify bd integration' rather than implying misconfiguration.","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-05T19:19:08.98544-08:00","created_by":"beads/crew/giles","updated_at":"2026-01-05T21:06:05.953116-08:00","closed_at":"2026-01-05T21:06:05.953116-08:00","close_reason":"Implemented - detection-only managers now show informational message"}