bd sync: 2026-01-06 19:05:44

This commit is contained in:
beads/crew/dave
2026-01-06 19:05:44 -08:00
committed by Steve Yegge
parent dde0b6f613
commit 60c1b4dcb4

View File

@@ -47,7 +47,7 @@
{"id":"bd-20j","title":"sync branch not match config","description":"./bd sync\n→ Exporting pending changes to JSONL...\n→ No changes to commit\n→ Pulling from sync branch 'gh-386'...\nError pulling from sync branch: failed to create worktree: failed to create worktree parent directory: mkdir /var/home/matt/dev/beads/worktree-db-fail/.git: not a directory\nmatt@blufin-framation ~/d/b/worktree-db-fail (worktree-db-fail) [1]\u003e bd config list\n\nConfiguration:\n auto_compact_enabled = false\n compact_batch_size = 50\n compact_model = claude-3-5-haiku-20241022\n compact_parallel_workers = 5\n compact_tier1_days = 30\n compact_tier1_dep_levels = 2\n compact_tier2_commits = 100\n compact_tier2_days = 90\n compact_tier2_dep_levels = 5\n compaction_enabled = false\n issue_prefix = worktree-db-fail\n sync.branch = worktree-db-fail","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T06:49:04.449094018-07:00","updated_at":"2025-12-29T14:03:14.980166-08:00","closed_at":"2025-12-29T14:03:14.980166-08:00","close_reason":"Config mismatch: added warning to bd config list when config.yaml overrides database settings. Worktree issue was already fixed by GH#639."}
{"id":"bd-23z9","title":"Upgrade beads-mcp to 0.33.2","description":"Upgrade the MCP server via pip:\n\n```bash\npip install --upgrade beads-mcp\npip show beads-mcp | grep Version # Verify 0.33.2\n```\n\nNote: Restart Claude Code or MCP session to use new version.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-21T16:10:13.761057-08:00","updated_at":"2025-12-21T17:29:31.791368-08:00","deleted_at":"2025-12-21T17:29:31.791368-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
{"id":"bd-28db","title":"Add 'bd status' command for issue database overview","description":"Implement a bd status command that provides a quick snapshot of the issue database state, similar to how git status shows working tree state.\n\nExpected output: Show summary including counts by state (open, in-progress, blocked, closed), recent activity (last 7 days), and quick overview without needing multiple queries.\n\nExample output showing issue counts, recent activity stats, and pointer to bd list for details.\n\nProposed options: --all (show all issues), --assigned (show issues assigned to current user), --json (JSON format output)\n\nUse cases: Quick project health check, onboarding for new contributors, integration with shell prompts or CI/CD, daily standup reference","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-02T17:25:59.203549-08:00","updated_at":"2025-12-21T17:54:00.205191-08:00","closed_at":"2025-12-21T17:54:00.205191-08:00"}
{"id":"bd-28r5","title":"doctor: add deep integration check for pre-commit framework","description":"Add config parsing for .pre-commit-config.yaml to detect if bd hooks are configured. Pre-commit is popular enough to warrant full support like lefthook/husky.","status":"open","priority":3,"issue_type":"feature","created_at":"2026-01-05T19:19:10.322442-08:00","created_by":"beads/crew/giles","updated_at":"2026-01-05T19:19:10.322442-08:00"}
{"id":"bd-28r5","title":"doctor: add deep integration check for pre-commit framework","description":"Add config parsing for .pre-commit-config.yaml to detect if bd hooks are configured. Pre-commit is popular enough to warrant full support like lefthook/husky.","status":"closed","priority":3,"issue_type":"feature","created_at":"2026-01-05T19:19:10.322442-08:00","created_by":"beads/crew/giles","updated_at":"2026-01-05T21:09:44.238926-08:00","closed_at":"2026-01-05T21:09:44.238926-08:00","close_reason":"Implemented - pre-commit framework now has deep integration checks"}
{"id":"bd-28sq","title":"Fix JSON error output consistency across all commands","description":"## Problem\n\nWhen `--json` flag is specified, error output should return JSON format, not plain text. Currently only `bd show` uses `FatalErrorRespectJSON` - all other commands use direct `fmt.Fprintf(os.Stderr, ...)`.\n\n## Audit Findings (bd-au0.7)\n\n| File | stderr writes | Commands affected |\n|------|---------------|-------------------|\n| show.go | 51 | update, close, edit |\n| dep.go | 41 | dep add/remove/tree/cycles |\n| label.go | 19 | label add/remove/list |\n| comments.go | ~10 | comments add/list |\n| epic.go | ~5 | epic status/close-eligible |\n\n## Solution\n\nReplace `fmt.Fprintf(os.Stderr, ...) + os.Exit(1)` patterns with `FatalErrorRespectJSON()` in all commands that support `--json` flag.\n\n## Pattern\n\n```go\n// Before (inconsistent)\nfmt.Fprintf(os.Stderr, \"Error: %v\\n\", err)\nos.Exit(1)\n\n// After (respects --json)\nFatalErrorRespectJSON(\"%v\", err)\n```\n\n## Success Criteria\n\n- All commands return JSON errors when `--json` flag is set\n- Error format: `{\"error\": \"message\"}`\n- Exit code 1 preserved for errors","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-25T13:31:52.287048-08:00","updated_at":"2025-12-25T13:55:51.017355-08:00","closed_at":"2025-12-25T13:55:51.017355-08:00","dependencies":[{"issue_id":"bd-28sq","depends_on_id":"bd-au0.7","type":"discovered-from","created_at":"2025-12-25T13:32:18.23319-08:00","created_by":"daemon"}]}
{"id":"bd-28sq.1","title":"Fix JSON errors in show.go (update/close/edit commands)","description":"Replace ~51 direct stderr writes with FatalErrorRespectJSON() in show.go.\n\nCommands affected:\n- updateCmd (~10 error handlers)\n- closeCmd (~15 error handlers) \n- editCmd (~10 error handlers)\n- showCmd (already uses FatalErrorRespectJSON in some places)\n\nKey error paths:\n- ID resolution errors (lines 565, 570, 579)\n- Validation errors (lines 474, 515, 524, 545)\n- RPC/daemon errors (line 639+)\n- Store operation errors","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T13:32:06.867368-08:00","updated_at":"2025-12-25T13:40:38.388723-08:00","closed_at":"2025-12-25T13:40:38.388723-08:00","dependencies":[{"issue_id":"bd-28sq.1","depends_on_id":"bd-28sq","type":"parent-child","created_at":"2025-12-25T13:32:06.867875-08:00","created_by":"daemon"}]}
{"id":"bd-28sq.2","title":"Fix JSON errors in dep.go (dependency commands)","description":"Replace ~41 direct stderr writes with FatalErrorRespectJSON() in dep.go.\n\nCommands affected:\n- depAddCmd\n- depRemoveCmd\n- depTreeCmd\n- depCyclesCmd\n\nKey error paths:\n- ID resolution errors\n- Cycle detection errors\n- External reference validation","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T13:32:07.823549-08:00","updated_at":"2025-12-25T13:51:23.552241-08:00","closed_at":"2025-12-25T13:51:23.552241-08:00","dependencies":[{"issue_id":"bd-28sq.2","depends_on_id":"bd-28sq","type":"parent-child","created_at":"2025-12-25T13:32:07.826881-08:00","created_by":"daemon"}]}
@@ -302,11 +302,11 @@
{"id":"bd-b6xo","title":"Remove or fix ClearDirtyIssues() - race condition risk (bd-52)","description":"Code health review found internal/storage/sqlite/dirty.go still exposes old ClearDirtyIssues() method (lines 103-108) which clears ALL dirty issues without checking what was actually exported.\n\nData loss risk: If export fails after some issues written to JSONL but before ClearDirtyIssues called, changes to remaining dirty issues will be lost.\n\nThe safer ClearDirtyIssuesByID() (lines 113-132) exists and clears only exported issues.\n\nFix: Either remove old method or mark it deprecated and ensure no code paths use it.","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-16T18:17:20.534625-08:00","updated_at":"2025-12-25T01:21:01.952723-08:00","dependencies":[{"issue_id":"bd-b6xo","depends_on_id":"bd-tggf","type":"blocks","created_at":"2025-12-16T18:19:05.633738-08:00","created_by":"daemon"}],"deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"bug"}
{"id":"bd-bdc9","title":"Update Homebrew formula","description":"Update the Homebrew tap with new version:\n\n```bash\n./scripts/update-homebrew.sh 0.33.2\n```\n\nThis script waits for GitHub Actions to complete (~5 min), then updates the formula with new SHA256 hashes.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-21T16:10:13.762399-08:00","updated_at":"2025-12-21T17:29:31.791368-08:00","deleted_at":"2025-12-21T17:29:31.791368-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
{"id":"bd-beads-crew-dave","title":"Crew worker dave in beads - human-managed persistent workspace.","description":"Crew worker dave in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.538389-08:00","created_by":"deacon","updated_at":"2026-01-05T19:16:27.292061-08:00"}
{"id":"bd-beads-crew-emma","title":"Crew worker emma in beads - human-managed persistent workspace.","description":"Crew worker emma in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.604042-08:00","created_by":"deacon","updated_at":"2026-01-05T16:25:05.801106-08:00"}
{"id":"bd-beads-crew-fang","title":"Crew worker fang in beads - human-managed persistent workspace.","description":"Crew worker fang in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.672037-08:00","created_by":"deacon","updated_at":"2026-01-05T19:17:03.446916-08:00"}
{"id":"bd-beads-crew-giles","title":"Crew worker giles in beads - human-managed persistent workspace.","description":"Crew worker giles in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null\nactive_mr: null\nnotification_level: null","status":"open","priority":2,"issue_type":"agent","created_at":"2026-01-04T11:22:11.009942-08:00","created_by":"mayor","updated_at":"2026-01-05T16:31:04.53481-08:00"}
{"id":"bd-beads-crew-grip","title":"Crew worker grip in beads - human-managed persistent workspace.","description":"Crew worker grip in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.739788-08:00","created_by":"deacon","updated_at":"2026-01-05T19:13:06.015961-08:00"}
{"id":"bd-beads-crew-wolf","title":"Crew worker wolf in beads - human-managed persistent workspace.","description":"Crew worker wolf in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.805884-08:00","created_by":"deacon","updated_at":"2026-01-05T19:54:38.244365-08:00"}
{"id":"bd-beads-crew-emma","title":"Crew worker emma in beads - human-managed persistent workspace.","description":"Crew worker emma in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.604042-08:00","created_by":"deacon","updated_at":"2026-01-05T21:01:24.359572-08:00"}
{"id":"bd-beads-crew-fang","title":"Crew worker fang in beads - human-managed persistent workspace.","description":"Crew worker fang in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.672037-08:00","created_by":"deacon","updated_at":"2026-01-06T12:51:58.829455-08:00"}
{"id":"bd-beads-crew-giles","title":"Crew worker giles in beads - human-managed persistent workspace.","description":"Crew worker giles in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null\nactive_mr: null\nnotification_level: null","status":"open","priority":2,"issue_type":"agent","created_at":"2026-01-04T11:22:11.009942-08:00","created_by":"mayor","updated_at":"2026-01-05T21:51:22.71593-08:00"}
{"id":"bd-beads-crew-grip","title":"Crew worker grip in beads - human-managed persistent workspace.","description":"Crew worker grip in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.739788-08:00","created_by":"deacon","updated_at":"2026-01-06T18:43:31.123737-08:00"}
{"id":"bd-beads-crew-wolf","title":"Crew worker wolf in beads - human-managed persistent workspace.","description":"Crew worker wolf in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.805884-08:00","created_by":"deacon","updated_at":"2026-01-05T20:05:35.606753-08:00"}
{"id":"bd-beads-polecat-amber","title":"bd-beads-polecat-amber","description":"bd-beads-polecat-amber\n\nrole_type: polecat\nrig: beads\nagent_state: spawning\nhook_bead: bd-uuo9\nrole_bead: hq-polecat-role\ncleanup_status: has_stash\nactive_mr: bd-3mky\nnotification_level: null","status":"closed","priority":2,"issue_type":"agent","created_at":"2026-01-04T16:17:26.278115-08:00","created_by":"mayor","updated_at":"2026-01-05T19:45:45.481449-08:00","closed_at":"2026-01-05T19:45:45.481449-08:00","close_reason":"Polecat cleaned up"}
{"id":"bd-beads-polecat-garnet","title":"bd-beads-polecat-garnet","description":"bd-beads-polecat-garnet\n\nrole_type: polecat\nrig: beads\nagent_state: spawning\nhook_bead: bd-hmeb\nrole_bead: hq-polecat-role\ncleanup_status: null\nactive_mr: bd-f1xm\nnotification_level: null","status":"closed","priority":2,"issue_type":"agent","created_at":"2026-01-04T15:12:49.812132-08:00","created_by":"mayor","updated_at":"2026-01-05T19:45:45.484195-08:00","closed_at":"2026-01-05T19:45:45.484195-08:00","close_reason":"Polecat cleaned up"}
{"id":"bd-beads-polecat-jasper","title":"bd-beads-polecat-jasper","description":"bd-beads-polecat-jasper\n\nrole_type: polecat\nrig: beads\nagent_state: spawning\nhook_bead: bd-oos3\nrole_bead: gt-polecat-role\ncleanup_status: null\nactive_mr: bd-srhu\nnotification_level: null","status":"tombstone","priority":2,"issue_type":"agent","created_at":"2026-01-02T12:41:56.3782-08:00","created_by":"mayor","updated_at":"2026-01-04T11:27:04.41339-08:00","deleted_at":"2026-01-02T16:57:50.038825-08:00","deleted_by":"mayor","delete_reason":"delete","original_type":"agent"}
@@ -460,6 +460,7 @@
{"id":"bd-gocx","title":"Run bump-version.sh 0.32.1","description":"Execute ./scripts/bump-version.sh 0.32.1 to update all version references","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-20T21:53:18.470174-08:00","updated_at":"2025-12-20T21:54:54.500836-08:00","closed_at":"2025-12-20T21:54:54.500836-08:00","dependencies":[{"issue_id":"bd-gocx","depends_on_id":"bd-an4s","type":"parent-child","created_at":"2025-12-20T21:53:18.471793-08:00","created_by":"daemon"},{"issue_id":"bd-gocx","depends_on_id":"bd-x3j8","type":"blocks","created_at":"2025-12-20T21:53:29.688436-08:00","created_by":"daemon"}]}
{"id":"bd-gqxd","title":"Enrich MutationEvent with title and assignee","description":"Current MutationEvent only has IssueID, no context. Add Title and Assignee fields so activity feeds can display meaningful info without extra lookups. Emit these fields when creating mutation events in server_core.go.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-23T16:26:34.907259-08:00","updated_at":"2025-12-23T16:39:39.229462-08:00","closed_at":"2025-12-23T16:39:39.229462-08:00"}
{"id":"bd-gr4q","title":"Gate await fields cleared by auto-flush/auto-import cycle","description":"## Problem\n\nWhen creating a gate with `--await` fields (e.g., `gh:run:123`), the await_type and await_id are initially stored correctly in the SQLite database. However, they get cleared (set to empty strings) during subsequent bd commands due to the auto-flush/auto-import cycle.\n\n## Reproduction Steps\n\n1. Create a gate with await:\n ```\n bd gate create --molecule test-mol --await gh:run:20517738002\n ```\n Output shows correct `await_type: gh:run, await_id: 20517738002`\n\n2. Check database - fields are present\n\n3. Run any bd command (e.g., `bd list`)\n\n4. Check database again - await_type and await_id are now empty\n\n## Root Cause\n\nGates are wisps (ephemeral issues). During the auto-flush cycle:\n1. Auto-flush exports issues to JSONL (filtering out wisps)\n2. Auto-import reads JSONL and updates DB rows\n3. The update clears fields that weren't in the JSONL (including await fields)\n\n## Workaround\n\nUsing `--no-auto-import --no-auto-flush` flags preserves the fields, but this isn't practical for normal use.\n\n## Impact\n\nGitHub gate evaluation (`bd gate eval`) cannot work because by the time eval runs, the await fields have been cleared.\n\n## Suggested Fix\n\nEither:\n1. Don't clear await fields during auto-import if they weren't in the source\n2. Store wisp fields separately from the main JSONL export\n3. Include wisps in export but filter them at sync time","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-25T22:59:11.309657-08:00","updated_at":"2025-12-25T23:20:20.33151-08:00","closed_at":"2025-12-25T23:20:20.33151-08:00"}
{"id":"bd-gxaf","title":"BUG: gt rig shutdown doesn't kill tmux sessions","description":"## Problem\n\n`gt rig shutdown wyvern` updates runtime JSON to `state: stopped` but does NOT kill the tmux sessions (`gt-wyvern-witness`, `gt-wyvern-refinery`).\n\nSince `gt rig status` checks for tmux sessions (correctly), it shows them as running.\n\n## Evidence\n\nAfter `gt rig shutdown wyvern`:\n- Runtime JSON: `state: stopped` ✓\n- tmux sessions: still exist ✗\n\n## Impact\n\n- Rig appears running after shutdown\n- tmux status shows green icon for 'stopped' rigs\n- User confusion\n\n## Root Cause\n\n`gt rig shutdown` in internal/cmd/rig.go updates runtime state but doesn't call `tmux kill-session` for witness/refinery.\n\n## Fix\n\nIn shutdown logic, after setting state to stopped, kill:\n- `gt-{rig}-witness` session\n- `gt-{rig}-refinery` session","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-06T13:07:49.503732-08:00","created_by":"mayor","updated_at":"2026-01-06T13:17:46.264981-08:00","closed_at":"2026-01-06T13:17:46.264981-08:00","close_reason":"Fixed: Added tmux kill-session to witness.Manager.Stop() matching refinery's implementation"}
{"id":"bd-gxb4","title":"gt done --phase-complete: gastown changes for phase handoff","description":"The gt done --phase-complete flag and Witness handling changes need to be\napplied to the gastown project. These changes are already written and tested\nin the mayor/rig but need to be properly committed through a gastown worktree.\n\nFiles changed:\n- internal/cmd/done.go: Add --phase-complete and --gate flags\n- internal/beads/beads.go: Add AddGateWaiter method\n- internal/witness/protocol.go: Add Gate field to PolecatDonePayload\n- internal/witness/handlers.go: Handle PHASE_COMPLETE exit type\n\nThis is a dependency for bd-quw1 (polecat phase handoff).\n\nThe beads changes (bd gate add-waiter, bd gate show) are committed in bd-quw1.","status":"closed","priority":1,"issue_type":"task","assignee":"gastown/polecats/nux","created_at":"2026-01-02T16:36:47.633276-08:00","created_by":"beads/polecats/jasper","updated_at":"2026-01-02T16:41:46.202082-08:00","closed_at":"2026-01-02T16:41:46.202082-08:00","close_reason":"Committed phase-complete flag changes to gastown"}
{"id":"bd-gxq","title":"Simplify bd onboard to minimal AGENTS.md snippet pointing to bd prime","description":"## Context\nGH#604 raised concerns about bd onboard bloating AGENTS.md with ~100+ lines of static instructions that:\n- Load every session whether beads is being used or not\n- Get stale when bd upgrades\n- Waste tokens\n\n## Solution\nSimplify `bd onboard` to output a minimal snippet (~2 lines) that points to `bd prime`:\n\n```markdown\n## Issue Tracking\nThis project uses beads (`bd`) for issue tracking.\nRun `bd prime` for workflow context, or hooks auto-inject it.\n```\n\n## Rationale\n- `bd prime` is dynamic, concise (~80 lines), and always matches installed bd version\n- Hooks already auto-inject `bd prime` at session start when .beads/ detected\n- AGENTS.md only needs to mention beads exists, not contain full instructions\n\n## Implementation\n1. Update `cmd/bd/onboard.go` to output minimal snippet\n2. Keep `--output` flag for BD_GUIDE.md generation (may still be useful)\n3. Update help text to explain the new approach","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-18T11:42:38.604891-08:00","updated_at":"2025-12-18T11:47:28.020419-08:00","closed_at":"2025-12-18T11:47:28.020419-08:00"}
{"id":"bd-h048","title":"Refactor sync_test to use direct import logic","description":"In cmd/bd/sync_test.go:444, there's a TODO to refactor the test to use direct import logic instead of subprocess calls. This would make the test more reliable and faster.\n\nFile: cmd/bd/sync_test.go:444","status":"closed","priority":4,"issue_type":"chore","created_at":"2025-12-28T16:32:55.612958-08:00","created_by":"stevey","updated_at":"2025-12-30T18:12:30.968094-08:00","closed_at":"2025-12-30T16:00:09.642672-08:00","close_reason":"Refactored test to use direct import logic via importIssuesCore instead of subprocess. Test now passes."}
@@ -761,7 +762,7 @@
{"id":"bd-oy7n","title":"Merge: jasper-mjw4bxkx","description":"branch: polecat/jasper-mjw4bxkx\ntarget: main\nsource_issue: jasper-mjw4bxkx\nrig: beads\nagent_bead: gt-beads-polecat-jasper","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2026-01-01T16:25:12.663026-08:00","created_by":"beads/polecats/jasper","updated_at":"2026-01-01T16:26:55.339728-08:00","closed_at":"2026-01-01T16:26:55.339728-08:00","close_reason":"Merged to main"}
{"id":"bd-p5za","title":"mol-christmas-launch: 3-day execution plan","description":"Christmas Launch Molecule - execute phases in order, survive restarts.\n\nPIN THIS BEAD. Check progress each session start.\n\n## Step: phase0-beads-foundation\nFix blocking issues before swarming:\n1. Verify gastown beads schema works: bd list --status=open\n2. Ensure bd mol bond exists (check bd-usro)\n3. Verify bd-2vh3 (squash) is filed\n\n## Step: phase1-polecat-loop\nSerial work on polecat execution:\n1. gt-9nf: Fresh polecats only\n2. gt-975: Molecule execution support\n3. gt-8v8: Refuse uncommitted work\nThen swarm: gt-e1y, gt-f8v, gt-eu9\nNeeds: phase0-beads-foundation\n\n## Step: phase2-refinery\nSerial work on refinery autonomy:\n1. gt-5gkd: Refinery CLAUDE.md\n2. gt-bj6f: Refinery context in gt prime\n3. gt-0qki: Refinery-Witness protocol\nNeeds: phase1-polecat-loop\n\n## Step: phase3-deacon\nHealth monitoring infrastructure:\n1. gt-5af.4: Simplify daemon\n2. gt-5af.7: Crew session patterns\n3. gt-976: Crew lifecycle\nNeeds: phase2-refinery\n\n## Step: phase4-code-review\nSelf-improvement flywheel:\n1. Define mol-code-review (gt-fjvo)\n2. Test on open MRs\n3. Integrate with Refinery\nNeeds: phase3-deacon\n\n## Step: phase5-polish\nDemo readiness:\n1. gt-b2hj: Find orphaned work\n2. Doctor checks\n3. Clean up open MRs\nNeeds: phase4-code-review\n\n## Step: verify-flywheel\nSuccess criteria:\n- gt spawn works with molecules\n- Refinery processes MRs autonomously\n- mol-code-review runs on a PR\n- bd cleanup --ephemeral works\nNeeds: phase5-polish","status":"closed","priority":0,"issue_type":"epic","created_at":"2025-12-20T21:20:02.462889-08:00","updated_at":"2025-12-21T17:23:25.471749-08:00","closed_at":"2025-12-21T17:23:25.471749-08:00"}
{"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":"open","priority":2,"issue_type":"task","created_at":"2026-01-05T19:19:08.98544-08:00","created_by":"beads/crew/giles","updated_at":"2026-01-05T19:19:08.98544-08:00"}
{"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"}
{"id":"bd-pbh","title":"Release v0.30.4","description":"## Version Bump Workflow\n\nCoordinating release from 0.30.3 to 0.30.4.\n\n### Components Updated\n- Go CLI (cmd/bd/version.go)\n- Claude Plugin (.claude-plugin/*.json)\n- MCP Server (integrations/beads-mcp/)\n- npm Package (npm-package/package.json)\n- Git hooks (cmd/bd/templates/hooks/)\n\n### Release Channels\n- GitHub Releases (GoReleaser)\n- PyPI (beads-mcp)\n- npm (@beads/cli)\n- Homebrew (homebrew-beads tap)\n","status":"tombstone","priority":1,"issue_type":"epic","created_at":"2025-12-17T21:19:10.926133-08:00","updated_at":"2025-12-25T01:21:01.952723-08:00","labels":["release","v0.30.4","workflow"],"deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"epic"}
{"id":"bd-pbh.1","title":"Update cmd/bd/version.go to 0.30.4","description":"Update the Version constant in cmd/bd/version.go:\n```go\nVersion = \"0.30.4\"\n```\n\n\n```verify\ngrep -q 'Version = \"0.30.4\"' cmd/bd/version.go\n```","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-17T21:19:10.9462-08:00","updated_at":"2025-12-25T01:21:01.952723-08:00","labels":["workflow"],"dependencies":[{"issue_id":"bd-pbh.1","depends_on_id":"bd-pbh","type":"parent-child","created_at":"2025-12-17T21:19:10.946633-08:00","created_by":"daemon"}],"deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
{"id":"bd-pbh.10","title":"Run check-versions.sh - all must pass","description":"Run the version consistency check:\n```bash\n./scripts/check-versions.sh\n```\n\nAll versions must match 0.30.4.\n\n\n```verify\n./scripts/check-versions.sh\n```","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-17T21:19:11.047311-08:00","updated_at":"2025-12-25T01:21:01.952723-08:00","labels":["workflow"],"dependencies":[{"issue_id":"bd-pbh.10","depends_on_id":"bd-pbh","type":"parent-child","created_at":"2025-12-17T21:19:11.047888-08:00","created_by":"daemon"},{"issue_id":"bd-pbh.10","depends_on_id":"bd-pbh.1","type":"blocks","created_at":"2025-12-17T21:19:11.159084-08:00","created_by":"daemon"},{"issue_id":"bd-pbh.10","depends_on_id":"bd-pbh.4","type":"blocks","created_at":"2025-12-17T21:19:11.168248-08:00","created_by":"daemon"},{"issue_id":"bd-pbh.10","depends_on_id":"bd-pbh.5","type":"blocks","created_at":"2025-12-17T21:19:11.177869-08:00","created_by":"daemon"},{"issue_id":"bd-pbh.10","depends_on_id":"bd-pbh.6","type":"blocks","created_at":"2025-12-17T21:19:11.187629-08:00","created_by":"daemon"},{"issue_id":"bd-pbh.10","depends_on_id":"bd-pbh.7","type":"blocks","created_at":"2025-12-17T21:19:11.199955-08:00","created_by":"daemon"},{"issue_id":"bd-pbh.10","depends_on_id":"bd-pbh.8","type":"blocks","created_at":"2025-12-17T21:19:11.211479-08:00","created_by":"daemon"},{"issue_id":"bd-pbh.10","depends_on_id":"bd-pbh.9","type":"blocks","created_at":"2025-12-17T21:19:11.224059-08:00","created_by":"daemon"}],"deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
@@ -1004,6 +1005,7 @@
{"id":"bd-ymqn","title":"Code review: bd mol bond --ref and bd activity (bd-xo1o work)","description":"Review dave's recent commits for bd-xo1o (Dynamic Molecule Bonding):\n\n## Commits to Review\n- ee04b1ea: feat: add dynamic molecule bonding with --ref flag (bd-xo1o.1)\n- be520d90: feat: add bd activity command for real-time state feed (bd-xo1o.3)\n\n## Review Focus\n1. Code quality and correctness\n2. Error handling\n3. Edge cases\n4. Test coverage\n5. Documentation\n\n## Deliverables\n- File beads for any issues found\n- Note any concerns or suggestions\n- Verify the implementation matches the bd-xo1o epic requirements","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-23T03:47:55.217363-08:00","updated_at":"2025-12-23T04:11:00.226326-08:00","closed_at":"2025-12-23T04:11:00.226326-08:00"}
{"id":"bd-ypvj","title":"Fix sync.remote config not being respected (GH#872)","description":"bd config set sync.remote \u003cname\u003e sets the value but bd sync still tries to use 'origin'. Need to check where the sync code reads the remote name and ensure it uses the configured value.","status":"closed","priority":1,"issue_type":"bug","assignee":"beads/crew/dave","created_at":"2026-01-03T13:12:50.777534-08:00","created_by":"beads/crew/grip","updated_at":"2026-01-03T13:24:46.723563-08:00","closed_at":"2026-01-03T13:24:46.723563-08:00","close_reason":"Fixed: gitPull/gitPush now respect sync.remote config (GH#872)"}
{"id":"bd-yqhh","title":"bd list --parent: filter by parent issue","description":"Add --parent flag to bd list to filter issues by parent.\n\nExample:\n```bash\nbd list --parent=gt-h5n --status=open\n```\n\nWould show all open children of gt-h5n.\n\nUseful for:\n- Checking epic progress\n- Finding swarmable work within an epic\n- Molecule step listing","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-23T01:51:26.830952-08:00","updated_at":"2025-12-23T02:10:12.909803-08:00","closed_at":"2025-12-23T02:10:12.909803-08:00"}
{"id":"bd-ysal","title":"bd sync --import-only silently fails when run from redirected .beads directory","description":"## Problem\n\nWhen running `bd sync --import-only` from a directory that has a `.beads/redirect` file pointing elsewhere, the command reports success but doesn't actually fix the staleness check.\n\n## Reproduction\n\n1. Have a clone with `.beads/redirect` pointing to another location (e.g., `../../mayor/rig/.beads`)\n2. Run `bd sync --import-only` from the clone directory\n3. Command reports: `Import complete: 0 created, 0 updated, N unchanged, M skipped`\n4. But subsequent `bd list` still fails with: `Error: Database out of sync with JSONL`\n\n## Expected Behavior\n\nEither:\n- The sync should follow the redirect and actually sync the target database\n- Or the command should error/warn that it can't sync a redirected beads location\n\n## Workaround\n\nRun `bd sync --import-only` from the actual beads directory (the redirect target), not the redirected clone.","status":"closed","priority":2,"issue_type":"bug","created_at":"2026-01-06T18:38:46.308049-08:00","created_by":"gastown/crew/george","updated_at":"2026-01-06T18:50:40.939761-08:00","closed_at":"2026-01-06T18:50:40.939761-08:00","close_reason":"Fixed by using inline import instead of subprocess for --import-only mode. This ensures path resolution is consistent when running from directories with .beads/redirect."}
{"id":"bd-yuxq","title":"Code smell: 262 uses of interface{} reduce type safety","description":"Heavy use of interface{} across 92 files (262 occurrences) in:\n- RPC update arguments: updatesFromArgs() returns map[string]interface{}\n- JSON unmarshaling and formatting\n- Storage query helpers\n\n**Example in internal/rpc/server_issues_epics.go:45:**\n```go\nfunc updatesFromArgs(a UpdateArgs) map[string]interface{} {\n // Returns map with interface{} values - types must be asserted at use sites\n}\n```\n\n**Problem:**\n- Loss of type safety\n- Runtime type assertions required\n- Harder to catch errors at compile time\n\n**Acceptance Criteria:**\n- [ ] Define typed update structs for specific field groups\n- [ ] Use generics where possible (Go 1.18+)\n- [ ] Reduce interface{} count by at least 50%\n- [ ] Document expected types where interface{} remains necessary\n- [ ] Tests pass","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-28T19:00:01.896147-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-30T15:44:43.347739-08:00","closed_at":"2025-12-30T07:04:41.376731-08:00","close_reason":"Implemented type safety improvements:\n\n1. Created IssueUpdate struct with typed fields and ToMap() for backward compatibility\n2. Created 15+ typed response structs (StatusMessage, DeleteResult, CompactResult, etc.)\n3. Refactored updatesFromArgs to use typed IssueUpdate internally\n4. Updated RPC delete handler to use typed DeleteResult\n5. Updated migrate.go to use StatusMessage for errors\n\nThe typed structs provide compile-time checking and reduce runtime type assertions. This foundation enables further cleanup of interface{} usage over time.\n\nNote: Many remaining interface{} usages are inherent to Go's JSON handling and external APIs (GraphQL, SQL). The acceptance criteria of 50% reduction applies to the refactorable patterns, not the total count.","dependencies":[{"issue_id":"bd-yuxq","depends_on_id":"bd-ox1o","type":"blocks","created_at":"2025-12-28T19:00:23.812412-08:00","created_by":"daemon"}]}
{"id":"bd-yx22","title":"Merge: bd-d28c","description":"branch: polecat/testcat\ntarget: main\nsource_issue: bd-d28c\nrig: beads","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-23T21:33:15.490412-08:00","updated_at":"2025-12-23T21:36:38.584933-08:00","closed_at":"2025-12-23T21:36:38.584933-08:00"}
{"id":"bd-yy1h","title":"Witness Patrol","description":"Per-rig worker monitor patrol loop with progressive nudging.","status":"tombstone","priority":2,"issue_type":"molecule","created_at":"2025-12-26T13:08:21.271692-08:00","updated_at":"2025-12-27T00:10:54.178645-08:00","deleted_at":"2025-12-27T00:10:54.178645-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"molecule"}