bd daemon sync: 2026-01-11 18:17:44
This commit is contained in:
committed by
Steve Yegge
parent
63f66c1223
commit
e08910123c
@@ -5,7 +5,7 @@
|
||||
{"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-02gts","title":"Digest: mol-refinery-patrol","description":"Patrol complete: MQ empty, 0 branches processed, no issues","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-10T18:25:13.410273-08:00","updated_at":"2026-01-10T18:25:13.410273-08:00","closed_at":"2026-01-10T18:25:13.410234-08:00","close_reason":"Squashed from 11 wisps","dependencies":[{"issue_id":"bd-02gts","depends_on_id":"bd-wisp-xwx","type":"parent-child","created_at":"2026-01-10T18:25:13.41112-08:00","created_by":"beads/refinery"}]}
|
||||
{"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-03z45","title":"Review \u0026 merge PR #1019: feat(ui) Markdown in comments","description":"dispatched_by: beads/crew/emma\n\nReview and merge PR #1019: https://github.com/steveyegge/beads/pull/1019\n\n## Summary\nApply ui.RenderMarkdown() to comment text in bd show and bd comments commands. Enables syntax highlighting and code blocks in comments.\n\n## Changes\n- cmd/bd/comments.go - Use RenderMarkdown for comment text\n- cmd/bd/show.go - Use RenderMarkdown for comment display (2 places)\n\n## Review Checklist\n- [ ] Pull the branch locally\n- [ ] Run tests: go test ./...\n- [ ] Test manually: create a comment with markdown, verify it renders\n- [ ] Merge with gh pr merge 1019 --repo steveyegge/beads --squash","status":"hooked","priority":2,"issue_type":"task","assignee":"beads/crew/giles","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:14:20.034175-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-11T18:14:48.563669-08:00"}
|
||||
{"id":"bd-03z45","title":"Review \u0026 merge PR #1019: feat(ui) Markdown in comments","description":"dispatched_by: beads/crew/emma\n\nReview and merge PR #1019: https://github.com/steveyegge/beads/pull/1019\n\n## Summary\nApply ui.RenderMarkdown() to comment text in bd show and bd comments commands. Enables syntax highlighting and code blocks in comments.\n\n## Changes\n- cmd/bd/comments.go - Use RenderMarkdown for comment text\n- cmd/bd/show.go - Use RenderMarkdown for comment display (2 places)\n\n## Review Checklist\n- [ ] Pull the branch locally\n- [ ] Run tests: go test ./...\n- [ ] Test manually: create a comment with markdown, verify it renders\n- [ ] Merge with gh pr merge 1019 --repo steveyegge/beads --squash","status":"closed","priority":2,"issue_type":"task","assignee":"beads/crew/giles","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:14:20.034175-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-11T18:17:39.763095-08:00","closed_at":"2026-01-11T18:17:39.763095-08:00","close_reason":"PR #1019 reviewed, tested, and merged. All CI checks passed. Manual testing confirmed markdown rendering works in both bd comments and bd show commands.","comments":[{"id":15,"issue_id":"bd-03z45","author":"beads/crew/giles","text":"Testing markdown:\n\n- Bullet 1\n- Bullet 2\n\n```go\nfunc hello() {\n fmt.Println(\"Hello\")\n}\n```\n\n**Bold** and *italic*","created_at":"2026-01-12T02:16:51Z"}]}
|
||||
{"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"}
|
||||
@@ -148,6 +148,7 @@
|
||||
{"id":"bd-27ea","title":"Improve cmd/bd test coverage from 21% to 40% (multi-session effort)","description":"Current coverage: 21.0% of statements in cmd/bd\nTarget: 40%\nThis is a multi-session incremental effort.\n\nFocus areas:\n- Command handler tests (create, update, close, list, etc.)\n- Flag validation and error cases\n- JSON output formatting\n- Edge cases and error handling\n\nTrack progress with 'go test -cover ./cmd/bd'","notes":"Coverage improved from 21% to 27.4% (package) and 42.9% (total function coverage).\n\nAdded tests for:\n- compact.go test coverage (eligibility checks, dry run scenarios)\n- epic.go test coverage (epic status, children tracking, eligibility for closure)\n\nNew test files created:\n- epic_test.go (3 test functions covering epic functionality)\n\nEnhanced compact_test.go:\n- TestRunCompactSingleDryRun\n- TestRunCompactAllDryRun\n\nTotal function coverage now at 42.9%, exceeding the 40% target.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-10-31T19:35:57.558346-07:00","updated_at":"2025-11-01T12:23:39.158922-07:00","closed_at":"2025-11-01T12:23:39.158926-07:00"}
|
||||
{"id":"bd-27xm","title":"Debug MCP Agent Mail tool execution errors","description":"**EXTERNAL WORK**: Debug the standalone MCP Agent Mail server (separate from beads integration).\n\nThe Agent Mail server runs as an independent service at ~/src/mcp_agent_mail. This is NOT beads code - it's a separate GitHub project we're evaluating for optional coordination features.\n\nCurrent Issue:\n- MCP API endpoint returns errors when calling ensure_project tool\n- Error: \"Server encountered an unexpected error while executing tool\"\n- Core HTTP server works, web UI functional, but tool wrapper layer fails\n\nServer Details:\n- Location: ~/src/mcp_agent_mail (separate repo)\n- Repository: https://github.com/Dicklesworthstone/mcp_agent_mail\n- Runs on: http://127.0.0.1:8765\n- Bearer token: In .env file\n\nInvestigation Steps:\n1. Check tool execution logs for full stack trace\n2. Verify Git storage initialization at ~/.mcp_agent_mail_git_mailbox_repo\n3. Review database setup (storage.sqlite3)\n4. Test with simpler MCP tools if available\n5. Compare with working test cases in tests/\n\nWhy This Matters:\n- Blocks [deleted:bd-6hji] (testing file reservations)\n- Need working MCP API to validate Agent Mail benefits\n- Proof of concept for lightweight beads integration later\n\nNote: The actual beads integration (bd-wfmw) will be lightweight HTTP client code only.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-07T23:20:10.973891-08:00","updated_at":"2025-11-08T03:12:04.151537-08:00","closed_at":"2025-11-07T23:40:19.309202-08:00","dependencies":[{"issue_id":"bd-27xm","depends_on_id":"bd-muls","type":"discovered-from","created_at":"2025-11-07T23:20:21.895654-08:00","created_by":"daemon"}]}
|
||||
{"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-28gwn","title":"Review \u0026 merge PR #1019: Markdown rendering in comments","description":"## PR Review Task\n\n**PR:** https://github.com/steveyegge/beads/pull/1019\n**Author:** sukhodolin\n\n## Summary\nApply ui.RenderMarkdown() to comment text in bd show and bd comments commands.\n\n## Changes\n- cmd/bd/comments.go: Render comment text with Markdown\n- cmd/bd/show.go: Render comment text with Markdown (2 locations)\n- Uses existing ui.RenderMarkdown() function\n\n## Review Checklist\n1. Pull branch locally: `gh pr checkout 1019 --repo steveyegge/beads`\n2. Run tests: `go test ./...`\n3. Test manually: create an issue with markdown comment, verify rendering\n4. If all good, merge: `gh pr merge 1019 --repo steveyegge/beads --squash`\n\n## Classification\nEasy-win: Simple feature, uses existing patterns, small focused change.","status":"open","priority":2,"issue_type":"task","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:17:31.58204-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-11T18:17:31.58204-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"}]}
|
||||
@@ -286,7 +287,7 @@
|
||||
{"id":"bd-3zm7","title":"bd mol advance: Step through molecule execution","description":"Implement bd mol advance for stepping through molecules.\n\n## Command\n\n```bash\nbd mol advance \u003cmol-id\u003e\n```\n\n## Behavior\n\n1. Load molecule state from .beads/molecules/\u003cmol-id\u003e.state.yaml\n2. Find current step\n3. Mark current step completed\n4. Find next available step (respecting needs/deps)\n5. Update state file\n6. Output next step info (or COMPLETE if done)\n\n## Step State Machine\n\n```\npending → in_progress → completed\n```\n\nWhen advancing:\n- Current step: in_progress → completed\n- Next step: pending → in_progress\n\n## Output\n\n```bash\n$ bd mol advance mol-deacon-patrol\n✓ Step inbox-check completed\n→ Next step: spawn-work\n\nTitle: Spawn polecat for ready work\nDescription: ...\n```\n\nOr if complete:\n```bash\n$ bd mol advance mol-deacon-patrol\n✓ Step self-inspect completed\n✓ Molecule COMPLETE\n\nRun bd mol reset to loop, or gt handoff to cycle.\n```\n\n## Files\n\n- cmd/bd/mol_advance.go\n- internal/mol/state.go","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-24T15:53:31.832867-08:00","updated_at":"2025-12-24T16:53:13.244739-08:00","closed_at":"2025-12-24T16:53:13.244739-08:00","dependencies":[{"issue_id":"bd-3zm7","depends_on_id":"bd-hulf","type":"blocks","created_at":"2025-12-24T15:53:49.233523-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-3zzh","title":"Merge: bd-tvu3","description":"branch: polecat/Beader\ntarget: main\nsource_issue: bd-tvu3\nrig: beads","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-23T13:36:55.016496-08:00","updated_at":"2025-12-23T19:12:08.347363-08:00","closed_at":"2025-12-23T19:12:08.347363-08:00"}
|
||||
{"id":"bd-401h","title":"Work on beads-7jl: Fix Windows installer file locking iss...","description":"Work on beads-7jl: Fix Windows installer file locking issue (GH#652). Close file handle before extraction in postinstall.js. When done, submit MR (not PR) to integration branch for Refinery.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-19T22:55:57.873767-08:00","updated_at":"2025-12-19T23:20:05.747664-08:00","closed_at":"2025-12-19T23:20:05.747664-08:00"}
|
||||
{"id":"bd-404kp","title":"Review \u0026 merge PR #1023: fix(mcp) custom issue types","description":"dispatched_by: beads/crew/emma\n\nReview and merge PR #1023: https://github.com/steveyegge/beads/pull/1023\n\n## Summary\nMCP server fails with Pydantic validation when listing custom issue types (agent, molecule, event). Changed IssueType/IssueStatus from Literal to str.\n\n## Changes\n- integrations/beads-mcp/src/beads_mcp/models.py - Change Literal to str\n- integrations/beads-mcp/src/beads_mcp/server.py - Update help text\n- integrations/beads-mcp/src/beads_mcp/tools.py - Update annotations\n\n## Review Checklist\n- [ ] Pull the branch locally\n- [ ] Verify MCP tests pass (if any)\n- [ ] Test with custom issue types\n- [ ] Merge with gh pr merge 1023 --repo steveyegge/beads --squash","status":"hooked","priority":2,"issue_type":"task","assignee":"beads/crew/wolf","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:14:13.637488-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-11T18:14:57.620521-08:00"}
|
||||
{"id":"bd-404kp","title":"Review \u0026 merge PR #1023: fix(mcp) custom issue types","description":"dispatched_by: beads/crew/emma\n\nReview and merge PR #1023: https://github.com/steveyegge/beads/pull/1023\n\n## Summary\nMCP server fails with Pydantic validation when listing custom issue types (agent, molecule, event). Changed IssueType/IssueStatus from Literal to str.\n\n## Changes\n- integrations/beads-mcp/src/beads_mcp/models.py - Change Literal to str\n- integrations/beads-mcp/src/beads_mcp/server.py - Update help text\n- integrations/beads-mcp/src/beads_mcp/tools.py - Update annotations\n\n## Review Checklist\n- [ ] Pull the branch locally\n- [ ] Verify MCP tests pass (if any)\n- [ ] Test with custom issue types\n- [ ] Merge with gh pr merge 1023 --repo steveyegge/beads --squash","status":"closed","priority":2,"issue_type":"task","assignee":"beads/crew/wolf","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:14:13.637488-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-11T18:17:19.336854-08:00","closed_at":"2026-01-11T18:17:19.336854-08:00","close_reason":"Merged PR #1023 with squash. Changes allow MCP to support custom issue types/statuses configured via bd config."}
|
||||
{"id":"bd-40a0","title":"bd doctor should check for multiple DBs, multiple JSONLs, daemon health","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-10-31T21:16:47.042913-07:00","updated_at":"2025-10-31T21:21:27.093525-07:00","closed_at":"2025-10-31T21:21:27.093525-07:00"}
|
||||
{"id":"bd-40c2","title":"bd init --from-jsonl: Skip git history scan","description":"## Problem\n\n`bd init` scans git history to find all issues ever created, which:\n- Resurrects deleted/compacted issues\n- Takes a long time on large repos\n- Defeats manual JSONL cleanup\n\n## Solution\n\nAdd `bd init --from-jsonl` flag that:\n1. Creates fresh database\n2. Imports ONLY from current .beads/issues.jsonl\n3. Skips git history scan entirely\n\n## Use Case\n\nAfter manually cleaning JSONL or receiving a clean JSONL from another source:\n```bash\n# Clean JSONL manually or via script\nbd init --from-jsonl # Use current JSONL as-is\n```\n\n(Moved from hq-c21fj)","status":"closed","priority":3,"issue_type":"feature","created_at":"2026-01-02T01:37:20.481211-08:00","created_by":"gastown/crew/joe","updated_at":"2026-01-02T12:41:30.784964-08:00","closed_at":"2026-01-02T12:41:30.784964-08:00","close_reason":"Duplicate of bd-c0b6"}
|
||||
{"id":"bd-40ceb","title":"Session ended: gt-beads-crew-emma","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-09T18:37:41.200328-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-09T18:37:41.240457-08:00","closed_at":"2026-01-09T18:37:41.240457-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
|
||||
@@ -765,7 +766,6 @@
|
||||
{"id":"bd-au0.7","title":"Audit and standardize JSON output across all commands","description":"Ensure consistent JSON format and error handling when --json flag is used.\n\n**Scope:**\n1. Verify all commands respect --json flag\n2. Standardize success response format\n3. Standardize error response format\n4. Document JSON schemas\n\n**Commands to audit:**\n- Core CRUD: create, update, delete, show, list, search ✓\n- Queries: ready, blocked, stale, count, stats, status\n- Deps: dep add/remove/tree/cycles\n- Labels: label commands\n- Comments: comments add/list/delete\n- Epics: epic status/close-eligible\n- Export/import: already support --json ✓\n\n**Testing:**\n- Success cases return valid JSON\n- Error cases return valid JSON (not plain text)\n- Consistent field naming (snake_case vs camelCase)\n- Array vs object wrapping consistency","notes":"## Audit Complete (2025-12-25)\n\n### Findings\n\n**✓ All commands support --json flag**\n- Query commands: ready, blocked, stale, count, stats, status\n- Dep commands: add, remove, tree, cycles \n- Label commands: add, remove, list, list-all\n- Comments: list, add\n- Epic: status, close-eligible\n\n**✓ Field naming is consistent**\n- All fields use snake_case: created_at, issue_type, dependency_count, etc.\n\n**✗ Error output is INCONSISTENT**\n- Only bd show uses FatalErrorRespectJSON (returns JSON errors)\n- All other commands use fmt.Fprintf(os.Stderr, ...) (returns plain text)\n\n### Files needing fixes\n\n| File | stderr writes | Commands |\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### Follow-up\n\nCreated epic bd-28sq to track fixing all error handlers.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-21T21:07:35.304424-05:00","updated_at":"2025-12-25T13:32:32.460786-08:00","closed_at":"2025-12-25T13:32:32.460786-08:00","dependencies":[{"issue_id":"bd-au0.7","depends_on_id":"bd-au0","type":"parent-child","created_at":"2025-11-21T21:07:35.305663-05:00","created_by":"daemon"}],"comments":[{"id":4,"issue_id":"bd-au0.7","author":"stevey","text":"Progress on JSON standardization:\n\n## Completed\n1. **Fixed `bd comments list` null output** - Now returns `[]` instead of `null` for empty comments\n2. **Added `FatalErrorRespectJSON` helper** in errors.go - Pattern for JSON-aware error output\n3. **Fixed flag shadowing** - Removed local `--json` flags from show/update/close that shadowed the global persistent flag\n4. **Updated show command** - Error handlers now use `FatalErrorRespectJSON` as reference implementation\n\n## Audit Results\n- Query commands (ready, blocked, stale, count, stats, status): ✓ All support --json correctly\n- Dep commands (tree, cycles): ✓ All support --json correctly \n- Label commands: ✓ Returns [] for empty\n- Comments: ✓ Fixed null→[]\n- Epic commands (status, close-eligible): ✓ All support --json correctly\n\n## Remaining Work\n- Other commands (list, create, etc.) still use `fmt.Fprintf(os.Stderr, ...)` for errors - could be updated to use `FatalErrorRespectJSON` for JSON error output\n- JSON schema documentation not yet created","created_at":"2025-12-24T07:53:38Z"}]}
|
||||
{"id":"bd-au0.8","title":"Improve clean vs cleanup command naming/documentation","description":"Clarify the difference between bd clean and bd cleanup to reduce user confusion.\n\n**Current state:**\n- bd clean: Remove temporary artifacts (.beads/bd.sock, logs, etc.)\n- bd cleanup: Delete old closed issues from database\n\n**Options:**\n1. Rename for clarity:\n - bd clean → bd clean-temp\n - bd cleanup → bd cleanup-issues\n \n2. Keep names but improve help text and documentation\n\n3. Add prominent warnings in help output\n\n**Preferred approach:** Option 2 (improve documentation)\n- Update short/long descriptions in commands\n- Add examples to help text\n- Update README.md\n- Add cross-references in help output\n\n**Files to modify:**\n- cmd/bd/clean.go\n- cmd/bd/cleanup.go\n- README.md or ADVANCED.md","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-21T21:07:49.960534-05:00","updated_at":"2025-12-23T23:48:00.594734-08:00","closed_at":"2025-12-23T23:48:00.594734-08:00","dependencies":[{"issue_id":"bd-au0.8","depends_on_id":"bd-au0","type":"parent-child","created_at":"2025-11-21T21:07:49.962743-05:00","created_by":"daemon"}]}
|
||||
{"id":"bd-au0.9","title":"Review and document rarely-used commands","description":"Document use cases or consider deprecation for infrequently-used commands.\n\n**Commands to review:**\n1. bd rename-prefix - How often is this used? Document use cases\n2. bd detect-pollution - Consider integrating into bd validate\n3. bd migrate-hash-ids - One-time migration, keep but document as legacy\n\n**For each command:**\n- Document typical use cases\n- Add examples to help text\n- Consider if it should be a subcommand instead\n- Add deprecation warning if appropriate\n\n**Not changing:**\n- duplicates ✓ (useful for data quality)\n- repair-deps ✓ (useful for fixing broken refs)\n- restore ✓ (critical for compacted issues)\n- compact ✓ (performance feature)\n\n**Deliverable:**\n- Updated help text\n- Documentation in ADVANCED.md\n- Deprecation plan if needed","status":"closed","priority":3,"issue_type":"task","created_at":"2025-11-21T21:08:05.588275-05:00","updated_at":"2025-12-23T23:50:04.180989-08:00","closed_at":"2025-12-23T23:50:04.180989-08:00","dependencies":[{"issue_id":"bd-au0.9","depends_on_id":"bd-au0","type":"parent-child","created_at":"2025-11-21T21:08:05.59003-05:00","created_by":"daemon"}]}
|
||||
{"id":"bd-auegr","title":"Issue 1 to reopen","status":"open","priority":1,"issue_type":"task","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:16:00.416589-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:16:00.693488-08:00"}
|
||||
{"id":"bd-auf1","title":"Clean up snapshot files after successful merge","description":"After a successful 3-way merge and import during 'bd sync', the snapshot files (beads.base.jsonl, beads.left.jsonl, and their .meta.json files) are left in the .beads/ directory indefinitely.\n\nThese files are only needed temporarily during the merge process:\n- beads.base.jsonl: snapshot from last successful import\n- beads.left.jsonl: snapshot before git pull\n\nOnce the merge succeeds and the new JSONL is imported, these files serve no purpose and should be cleaned up.\n\nCurrent behavior:\n- sync.go:269 calls updateBaseSnapshot() after successful import\n- UpdateBase() updates beads.base.jsonl to the new state\n- beads.left.jsonl is never removed\n- Both files accumulate in .beads/ directory\n\nExpected behavior:\n- After successful merge and import, clean up both snapshot files\n- Only retain snapshots between sync operations (create on export, use during merge, clean up after import)\n\nThe cleanup logic exists (SnapshotManager.Cleanup()) but is only called on validation failures (deletion_tracking.go:48), not on success.\n\nDiscovered in vc project where stale snapshot files from Nov 8 merge were still present.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-11-08T22:39:56.460778-08:00","updated_at":"2025-11-08T22:45:40.5809-08:00","closed_at":"2025-11-08T22:45:40.5809-08:00"}
|
||||
{"id":"bd-avxi","title":"Merge: opal-mjwb5yov","description":"branch: polecat/opal-mjwb5yov\ntarget: main\nsource_issue: opal-mjwb5yov\nrig: beads\nagent_bead: gt-beads-polecat-opal","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2026-01-01T19:25:41.421501-08:00","created_by":"beads/polecats/opal","updated_at":"2026-01-01T19:27:07.580453-08:00","closed_at":"2026-01-01T19:27:07.580453-08:00","close_reason":"No branch pushed - verification task with no code changes"}
|
||||
{"id":"bd-awmf","title":"Merge: bd-dtl8","description":"branch: polecat/dag\ntarget: main\nsource_issue: bd-dtl8\nrig: beads","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-23T20:47:15.147476-08:00","updated_at":"2025-12-23T21:21:57.690692-08:00","closed_at":"2025-12-23T21:21:57.690692-08:00"}
|
||||
@@ -813,7 +813,7 @@
|
||||
{"id":"bd-bdhn","title":"bd message: Add input validation for --importance flag","description":"The --importance flag accepts any string without validation, leading to confusing server errors.\n\n**Location:** cmd/bd/message.go:256-258\n\n**Fix:**\n- Add flag validation for: low, normal, high, urgent\n- Add shell completion support\n- Validate in runMessageSend before sending\n\n**Impact:** Better UX, prevents confusing errors","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-08T12:54:26.43027-08:00","updated_at":"2025-11-08T12:57:59.65367-08:00","closed_at":"2025-11-08T12:57:59.65367-08:00","dependencies":[{"issue_id":"bd-bdhn","depends_on_id":"bd-6uix","type":"parent-child","created_at":"2025-11-08T12:55:54.910841-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-bdmwf","title":"Session ended: gt-beads-refinery","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-11T00:21:01.891501-08:00","created_by":"beads/refinery","updated_at":"2026-01-11T00:21:01.932445-08:00","closed_at":"2026-01-11T00:21:01.932445-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
|
||||
{"id":"bd-be7a","title":"Create npm package structure with package.json","description":"Set up initial npm package structure for @beads/bd:\n\n## Files to create\n- npm/package.json - Package metadata, dependencies, scripts\n- npm/bin/bd - CLI wrapper script that invokes native binary\n- npm/.gitignore - Ignore downloaded binaries\n- npm/README.md - Installation and usage instructions\n\n## package.json structure\n- Name: @beads/bd (scoped package)\n- Main: index.js (exports binary path)\n- Bin: bin/bd (CLI entry point)\n- Scripts: postinstall (download binary)\n- Keywords: issue-tracker, cli, beads, bd\n- License: MIT\n\n## Bin wrapper\nSimple Node.js script that:\n- Spawns native binary with child_process.spawn\n- Passes through all arguments and stdio\n- Exits with binary's exit code","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T23:39:47.416779-08:00","updated_at":"2025-11-03T10:31:45.381258-08:00","closed_at":"2025-11-03T10:31:45.381258-08:00","dependencies":[{"issue_id":"bd-be7a","depends_on_id":"bd-febc","type":"parent-child","created_at":"2025-11-02T23:40:32.923859-08:00","created_by":"daemon"}]}
|
||||
{"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-11T18:14:44.788479-08:00"}
|
||||
{"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-11T18:17:43.565846-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-06T23:51:55.013518-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-11T18:09:25.79245-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-11T18:14:48.452835-08:00"}
|
||||
@@ -932,9 +932,10 @@
|
||||
{"id":"bd-cn56","title":"Update merge_slot.go to use labels instead of type","description":"Change merge slot bead management to use gt:slot label instead of TypeSlot.\n\n## Work\n- Change IssueType=slot to IssueType=task when creating slots\n- Add gt:slot label when creating slot beads \n\n## Files\n- cmd/bd/merge_slot.go","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-06T20:40:21.878624-08:00","created_by":"beads/crew/dave","updated_at":"2026-01-06T22:11:03.563553-08:00","closed_at":"2026-01-06T22:11:03.563553-08:00","close_reason":"Migrated merge_slot.go to use gt:slot label instead of type","dependencies":[{"issue_id":"bd-cn56","depends_on_id":"bd-i54l","type":"parent-child","created_at":"2026-01-06T20:41:11.610957-08:00","created_by":"beads/crew/dave"}]}
|
||||
{"id":"bd-cnwx","title":"Refactor mol.go: split 1200+ line file into subcommands","description":"## Problem\n\ncmd/bd/mol.go has grown to 1200+ lines with all molecule subcommands in one file.\n\n## Current State\n- mol.go: 1218 lines (bond, spawn, run, distill, catalog, show, etc.)\n- Hard to navigate, review, and maintain\n\n## Proposed Structure\nSplit into separate files by subcommand:\n```\ncmd/bd/\n├── mol.go # Root command, shared helpers\n├── mol_bond.go # bd mol bond\n├── mol_spawn.go # bd mol spawn \n├── mol_run.go # bd mol run\n├── mol_distill.go # bd mol distill\n├── mol_catalog.go # bd mol catalog\n├── mol_show.go # bd mol show\n└── mol_test.go # Tests (already separate)\n```\n\n## Benefits\n- Easier code review\n- Better separation of concerns\n- Simpler navigation\n- Each subcommand self-contained","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-12-21T11:30:58.832192-08:00","updated_at":"2025-12-21T11:42:49.390824-08:00","closed_at":"2025-12-21T11:42:49.390824-08:00"}
|
||||
{"id":"bd-co29","title":"Merge: bd-n386","description":"branch: polecat/immortan\ntarget: main\nsource_issue: bd-n386\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T20:41:45.644113-08:00","updated_at":"2025-12-23T21:21:57.70152-08:00","closed_at":"2025-12-23T21:21:57.70152-08:00"}
|
||||
{"id":"bd-coh0k","title":"Blocked issue","status":"open","priority":1,"issue_type":"task","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:16:01.649522-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:16:01.649522-08:00","dependencies":[{"issue_id":"bd-coh0k","depends_on_id":"bd-x2u7r","type":"blocks","created_at":"2026-01-11T18:16:01.723484-08:00","created_by":"beads/crew/wolf"}]}
|
||||
{"id":"bd-coh0k","title":"Blocked issue","status":"open","priority":1,"issue_type":"task","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:16:01.649522-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:16:01.649522-08:00"}
|
||||
{"id":"bd-crgr","title":"GH#517: Claude sets priority wrong on new install","description":"Claude uses 'medium/high/low' for priority instead of P0-P4. Update bd prime/onboard output to be clearer about priority syntax. See GitHub issue #517.","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-16T01:03:34.803084-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-crncp","title":"Session ended: gt-beads-crew-emma","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-09T14:06:30.524914-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-09T14:06:30.558713-08:00","closed_at":"2026-01-09T14:06:30.558713-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
|
||||
{"id":"bd-crv06","title":"Issue 1","status":"open","priority":1,"issue_type":"task","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:16:14.494763-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:16:14.494763-08:00","dependencies":[{"issue_id":"bd-crv06","depends_on_id":"bd-r53nt","type":"related","created_at":"2026-01-11T18:16:14.690959-08:00","created_by":"beads/crew/wolf"}]}
|
||||
{"id":"bd-cs2l","title":"Test Agent","status":"tombstone","priority":2,"issue_type":"agent","created_at":"2025-12-28T01:55:35.621013-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T02:21:06.391783-08:00","deleted_at":"2025-12-28T02:21:06.391783-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"agent"}
|
||||
{"id":"bd-csnep","title":"Session ended: gt-beads-refinery","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-10T16:27:05.392572-08:00","created_by":"beads/refinery","updated_at":"2026-01-10T16:27:05.428055-08:00","closed_at":"2026-01-10T16:27:05.428055-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
|
||||
{"id":"bd-csnr","title":"activity --follow: Silent error handling","description":"In activity.go:175-179, when the daemon is down or errors occur during polling in --follow mode, errors are silently ignored:\n\n```go\nnewEvents, err := fetchMutations(lastPoll)\nif err != nil {\n // Daemon might be down, continue trying\n continue\n}\n```\n\nThis means:\n- Users won't know if the daemon is unreachable\n- Could appear frozen when actually failing\n- No indication of lost events\n\nShould at least show a warning after N consecutive failures, or show '...' indicator to show polling status.\n\nDiscovered during code review of bd-xo1o implementation.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-23T04:06:18.590743-08:00","updated_at":"2025-12-23T04:16:04.64978-08:00","closed_at":"2025-12-23T04:16:04.64978-08:00"}
|
||||
@@ -1023,6 +1024,7 @@
|
||||
{"id":"bd-e1085716","title":"bd validate - Comprehensive health check","description":"Run all validation checks in one command.\n\nChecks:\n- Duplicates\n- Orphaned dependencies\n- Test pollution\n- Git conflicts\n\nSupports --fix-all for auto-repair.\n\nDepends on bd-cbed9619.1, bd-0dcea000, bd-31aab707, bd-9826b69a.\n\nFiles: cmd/bd/validate.go (new)","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-10-29T23:05:13.980679-07:00","updated_at":"2025-12-25T01:21:01.952723-08:00","deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
{"id":"bd-e166","title":"Improve timestamp comparison readability in import","description":"The timestamp comparison logic uses double-negative which can be confusing:\n\nCurrent code:\nif !incoming.UpdatedAt.After(existing.UpdatedAt) {\n // skip update\n}\n\nMore readable:\nif incoming.UpdatedAt.After(existing.UpdatedAt) {\n // perform update\n} else {\n // skip (local is newer)\n}\n\nThis is a minor refactor for code clarity.\n\nRelated: bd-1022\nFiles: internal/importer/importer.go:411, 488","status":"closed","priority":4,"issue_type":"chore","created_at":"2025-11-02T15:32:12.27108-08:00","updated_at":"2025-12-09T18:38:37.688877572-05:00","closed_at":"2025-11-26T22:25:27.124071-08:00"}
|
||||
{"id":"bd-e16b","title":"Replace BEADS_DB with BEADS_DIR environment variable","description":"Implement BEADS_DIR as a replacement for BEADS_DB to point to the .beads directory instead of the database file directly.\n\nRationale:\n- With --no-db mode, there's no .db file to point to\n- The .beads directory is the logical unit (contains config.yaml, db files, jsonl files)\n- More intuitive: point to the beads directory not the database file\n\nImplementation:\n1. Add BEADS_DIR environment variable support\n2. Maintain backward compatibility with BEADS_DB\n3. Priority order: BEADS_DIR \u003e BEADS_DB \u003e auto-discovery\n4. If BEADS_DIR is set, look for config.yaml in that directory to find actual database path\n5. Update documentation and migration guide\n\nFiles to modify:\n- beads.go (FindDatabasePath function)\n- cmd/bd/main.go (initialization)\n- Documentation (CLI_REFERENCE.md, TROUBLESHOOTING.md, etc.)\n- MCP integration (integrations/beads-mcp/src/beads_mcp/config.py)\n\nTesting:\n- Ensure BEADS_DB still works (backward compatibility)\n- Test BEADS_DIR with both db and --no-db modes\n- Test priority order when both are set\n- Update integration tests\n\nRelated to GitHub issue #179","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-02T18:19:26.131948-08:00","updated_at":"2025-11-02T18:27:14.545162-08:00","closed_at":"2025-11-02T18:27:14.545162-08:00"}
|
||||
{"id":"bd-e1bp5","title":"Review \u0026 merge PR #1013: Hyphenated prefix support","description":"## PR Review Task\n\n**PR:** https://github.com/steveyegge/beads/pull/1013\n**Author:** sukhodolin\n\n## Summary\nFix ValidateIDFormat to support hyphenated prefixes (e.g., 'bead-me-up-3e9').\n\n## Changes\n- internal/validation/bead.go: Use utils.ExtractIssuePrefix instead of naive first-hyphen split\n- internal/validation/bead_test.go: Add comprehensive test cases\n\n## The Bug\nBefore: 'bead-me-up-3e9' → prefix 'bead' (wrong)\nAfter: 'bead-me-up-3e9' → prefix 'bead-me-up' (correct)\n\nThis fixes `bd create --parent` failing for projects with hyphenated prefixes.\n\n## Review Checklist\n1. Pull branch locally: `gh pr checkout 1013 --repo steveyegge/beads`\n2. Run tests: `go test ./internal/validation/...`\n3. Verify all new test cases pass\n4. If all good, merge: `gh pr merge 1013 --repo steveyegge/beads --squash`\n\n## Classification\nEasy-win: Bug fix using existing utility, excellent test coverage.","status":"open","priority":2,"issue_type":"task","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:17:33.24321-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-11T18:17:33.24321-08:00"}
|
||||
{"id":"bd-e1d645e8","title":"Rapid 4","status":"closed","priority":3,"issue_type":"task","created_at":"2025-10-29T19:11:57.484329-07:00","updated_at":"2025-12-14T12:12:46.554853-08:00","closed_at":"2025-11-07T23:18:52.316948-08:00"}
|
||||
{"id":"bd-e2e6","title":"Implement postinstall script for binary download","description":"Create npm/scripts/postinstall.js that downloads platform-specific binaries:\n\n## Platform detection\n- Detect os.platform() and os.arch()\n- Map to GitHub release asset names:\n - linux-amd64 → bd-linux-amd64\n - linux-arm64 → bd-linux-arm64\n - darwin-amd64 → bd-darwin-amd64\n - darwin-arm64 → bd-darwin-arm64\n - win32-x64 → bd-windows-amd64.exe\n\n## Download logic\n- Fetch from GitHub releases: https://github.com/steveyegge/beads/releases/latest/download/${asset}\n- Save to npm/bin/bd (or bd.exe on Windows)\n- Set executable permissions (chmod +x)\n- Handle errors gracefully with helpful messages\n\n## Error handling\n- Check for unsupported platforms\n- Retry on network failures\n- Provide manual download instructions if automated fails\n- Skip download if binary already exists (for local development)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-02T23:39:56.652829-08:00","updated_at":"2025-11-03T10:31:45.382215-08:00","closed_at":"2025-11-03T10:31:45.382215-08:00","dependencies":[{"issue_id":"bd-e2e6","depends_on_id":"bd-febc","type":"parent-child","created_at":"2025-11-02T23:40:32.94671-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-e2q9","title":"bd sync fails when run from directory with beads redirect","description":"\n## Bug\n\n`bd sync` fails with 'git status failed in worktree: exit status 128' when run from a directory that uses a beads redirect (e.g., crew/gus/.beads/redirect pointing to mayor/rig/.beads).\n\n## Reproduction\n\n1. Be in gastown/crew/gus (has .beads/redirect → ../../mayor/rig/.beads)\n2. Run `bd sync`\n3. Error: 'git status failed in worktree: exit status 128'\n\n## Workaround\n\nRun `bd sync` from the actual beads location:\n```bash\ncd /Users/stevey/gt/gastown/mayor/rig \u0026\u0026 bd sync\n```\n\n## Root Cause\n\nThe worktree path resolution in `getBeadsWorktreePath()` likely uses the crew/gus repo root instead of following the redirect to mayor/rig. The git worktree for beads-sync is in mayor/rig/.git/beads-worktrees/, not crew/gus/.git/beads-worktrees/.\n\n## Impact\n\nCrew workers with redirected beads cannot sync directly from their workspace.\n","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-31T11:58:39.875764-08:00","created_by":"gastown/crew/gus","updated_at":"2025-12-31T13:31:39.510735-08:00","closed_at":"2025-12-31T13:31:39.510735-08:00","close_reason":"Fixed: use getRepoRootFromPath(ctx, beadsDir) instead of syncbranch.GetRepoRoot(ctx) to resolve repo root from redirect target"}
|
||||
@@ -1244,7 +1246,6 @@
|
||||
{"id":"bd-hobo","title":"Distinct prefixes for protos, molecules, wisps","description":"Template/workflow entities should have visually distinct prefixes from regular issues.\n\n**Problem:**\n- Protos (bd-7bs4) look like regular issues - invites squashing\n- Molecules (poured instances) also use bd- prefix\n- Wisps are in separate DB but still use bd- when referenced\n\n**Proposed Prefixes:**\n- `proto-` for templates (e.g., proto-release, proto-review)\n- `mol-` for active molecules (poured from protos)\n- `wisp-` for ephemeral wisps (vapor phase)\n\n**Benefits:**\n- Instant visual recognition of entity type\n- Prevents accidental modification of templates\n- Clear lifecycle: proto → mol → wisp → digest\n\n**Implementation options:**\n1. Separate databases with different prefixes\n2. Issue type determines prefix generation\n3. Naming convention enforced by bd pour/wisp commands","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-24T16:45:24.940809-08:00","updated_at":"2025-12-25T02:04:52.459233-08:00","closed_at":"2025-12-25T02:04:52.459233-08:00","labels":["workflow"]}
|
||||
{"id":"bd-hp8g","title":"gt sling should look up formulas from .beads/formulas/ registry","description":"## Problem\n\ngt sling \u003cformula-name\u003e doesn't find formulas from the registry that bd formula list shows.\n\n## What I tried\n\n1. gt sling beads/crew/emma --formula beads-release --var version=0.42.0\n - Problem: --formula flag doesn't exist\n\n2. gt sling beads-release beads/crew/emma --var version=0.42.0\n - Error: open .../beads-release: no such file or directory\n - Problem: Looks for file in cwd, not formula registry\n\n## What worked\n\nbd mol wisp beads-release --var version=0.42.0 - correctly finds formula from .beads/formulas/\n\n## Expected\n\ngt sling should use the same formula lookup as bd mol wisp - checking .beads/formulas/*.formula.json\n\n## Documentation gap\n\nThe help shows examples like 'gt sling mol-release mayor/' suggesting formula slinging works, but it doesn't find registry formulas.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-30T21:18:17.251292-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-04T15:22:07.76793-08:00","closed_at":"2025-12-30T22:06:27.153176-08:00","close_reason":"Fixed in both repos: bd cook now looks up formulas from registry, and gt sling uses bd mol wisp"}
|
||||
{"id":"bd-hpt5","title":"show commit hash in 'bd version' when built from source'\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-13T13:26:14.662089379-07:00","updated_at":"2025-11-14T09:18:09.721428859-07:00","closed_at":"2025-11-14T09:18:09.721428859-07:00"}
|
||||
{"id":"bd-hq3cm","title":"Test issue 0","status":"open","priority":0,"issue_type":"task","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:15:59.252868-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:15:59.252868-08:00"}
|
||||
{"id":"bd-hr39","title":"bd cook: needs field not converted to step dependencies","description":"When cooking a formula with `needs` fields on steps, the dependencies are not created between sibling steps.\n\n## Expected\n\nFormula:\n```yaml\nsteps:\n - id: inbox-check\n title: Check inbox\n - id: trigger-spawns\n title: Nudge polecats\n needs: [inbox-check]\n```\n\nShould create:\n- mol-foo.inbox-check (no deps)\n- mol-foo.trigger-spawns → depends on → mol-foo.inbox-check\n\n## Actual\n\nBoth steps only depend on the parent proto:\n- mol-foo.inbox-check → depends on → mol-foo\n- mol-foo.trigger-spawns → depends on → mol-foo\n\nThe `needs` field is ignored.\n\n## Impact\n\nThis breaks the step execution order. Steps that should wait for predecessors will run in parallel or out of order.\n\n## Reproduction\n\n```bash\nbd cook mol-deacon-patrol.formula.yaml\nbd show mol-deacon-patrol.trigger-pending-spawns\n# Shows: Depends on mol-deacon-patrol (parent only)\n# Should show: Depends on mol-deacon-patrol.inbox-check\n```","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-24T13:49:59.023514-08:00","updated_at":"2025-12-24T13:59:09.929298-08:00","closed_at":"2025-12-24T13:59:09.929298-08:00"}
|
||||
{"id":"bd-hsebc","title":"Session ended: gt-beads-refinery","status":"closed","priority":2,"issue_type":"event","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T09:34:40.429935-08:00","created_by":"beads/refinery","updated_at":"2026-01-11T09:34:40.492171-08:00","closed_at":"2026-01-11T09:34:40.492171-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
|
||||
{"id":"bd-hsl3","title":"Updated title","status":"closed","priority":0,"issue_type":"feature","created_at":"2025-11-07T19:07:12.92354-08:00","updated_at":"2025-11-07T22:07:17.346243-08:00","closed_at":"2025-11-07T21:57:59.911411-08:00"}
|
||||
@@ -1497,7 +1498,6 @@
|
||||
{"id":"bd-mjzs3","title":"Session ended: gt-beads-refinery","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-10T14:37:01.471314-08:00","created_by":"beads/refinery","updated_at":"2026-01-10T14:37:01.50657-08:00","closed_at":"2026-01-10T14:37:01.50657-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
|
||||
{"id":"bd-mlbzl","title":"Session ended: gt-beads-refinery","status":"closed","priority":2,"issue_type":"event","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T10:40:21.862871-08:00","created_by":"beads/refinery","updated_at":"2026-01-11T10:40:21.925733-08:00","closed_at":"2026-01-11T10:40:21.925733-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
|
||||
{"id":"bd-mlcz","title":"Implement bd migrate command","description":"Add bd migrate command to move issues between repos with filtering. Should support: filtering by status/priority/labels, dry-run mode, preserving dependencies, handling source_repo field updates.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-11-05T18:04:29.902151-08:00","updated_at":"2025-11-05T18:42:52.536951-08:00","closed_at":"2025-11-05T18:42:52.536951-08:00","dependencies":[{"issue_id":"bd-mlcz","depends_on_id":"bd-8rd","type":"parent-child","created_at":"2025-11-05T18:04:39.072312-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-mltz2","title":"Bug P0","status":"open","priority":0,"issue_type":"bug","assignee":"alice","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:16:02.540361-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:16:02.540361-08:00"}
|
||||
{"id":"bd-mn9p","title":"bd-hv01: Brittle string comparison breaks with JSON field reordering","description":"## Problem\ndeletion_tracking.go:125 uses string comparison to detect unchanged issues:\n\n```go\nif leftLine, existsInLeft := leftIndex[id]; existsInLeft \u0026\u0026 leftLine == baseLine {\n deletions = append(deletions, id)\n}\n```\n\nThis breaks if:\n- JSON field order changes (legal in JSON)\n- Timestamps updated by import/export\n- Whitespace/formatting changes\n- Floating point precision varies\n\n## Example Failure\n```json\n// baseLine\n{\"id\":\"bd-1\",\"priority\":1,\"status\":\"open\"}\n// leftLine (same data, different order)\n{\"id\":\"bd-1\",\"status\":\"open\",\"priority\":1}\n```\nThese are semantically identical but string comparison fails.\n\n## Fix\nParse and compare JSON semantically:\n```go\nfunc jsonEquals(a, b string) bool {\n var objA, objB map[string]interface{}\n json.Unmarshal([]byte(a), \u0026objA)\n json.Unmarshal([]byte(b), \u0026objB)\n return reflect.DeepEqual(objA, objB)\n}\n```\n\n## Files Affected\n- cmd/bd/deletion_tracking.go:125\n- cmd/bd/deletion_tracking.go:134-170 (buildIDToLineMap)","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-06T18:15:35.090716-08:00","updated_at":"2025-11-06T18:46:55.889888-08:00","closed_at":"2025-11-06T18:46:55.889888-08:00","dependencies":[{"issue_id":"bd-mn9p","depends_on_id":"bd-rbxi","type":"parent-child","created_at":"2025-11-06T18:19:14.790898-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-mnap","title":"Investigate performance issues in VS Code Copilot (Windows)","description":"Beads unusable in Windows 11 VS Code Copilot chat with Sonnet 4.5.\nSummary event happens every 3-4 turns, taking 3 minutes.\nCopilot summarizes after ~125k tokens despite model supporting 1M.\nLarge context size of beads might be triggering aggressive summarization.\nNeed workaround or optimization for context size.\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-20T18:56:30.124918-05:00","updated_at":"2025-12-09T18:38:37.700698972-05:00","closed_at":"2025-11-28T23:37:52.199294-08:00"}
|
||||
{"id":"bd-mol-02i","title":"Update info.go versionChanges","description":"Add entry to versionChanges in cmd/bd/info.go.\n\nThis powers `bd info --whats-new` for agents.\n\n```go\n\"0.44.0\": {\n \"summary\": \"Brief description\",\n \"changes\": []string{\n \"Key change 1\",\n \"Key change 2\",\n },\n},\n```\n\nFocus on workflow-impacting changes agents need to know.\n","status":"tombstone","priority":2,"issue_type":"task","created_at":"2026-01-04T23:05:15.391697-08:00","updated_at":"2026-01-04T23:49:29.777567-08:00","close_reason":"Added versionChanges for 0.43.0 and 0.44.0","dependencies":[{"issue_id":"bd-mol-02i","depends_on_id":"bd-mol-wba","type":"parent-child","created_at":"2026-01-04T23:05:15.397246-08:00","created_by":"beads/crew/dave"},{"issue_id":"bd-mol-02i","depends_on_id":"bd-mol-bgp","type":"blocks","created_at":"2026-01-04T23:05:15.40805-08:00","created_by":"beads/crew/dave"}],"deleted_at":"2026-01-04T23:49:29.777567-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
@@ -1628,7 +1628,6 @@
|
||||
{"id":"bd-nhkh","title":"bd blocked shows empty (GH#545)","description":"bd blocked only shows dependency-blocked issues, not status=blocked issues.\n\nEither:\n- Include status=blocked issues, OR\n- Document/rename to clarify behavior\n\nFix in: cmd/bd/blocked.go","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-14T23:00:33.19049-08:00","updated_at":"2025-12-14T23:07:43.313267-08:00","closed_at":"2025-12-14T23:07:43.313267-08:00"}
|
||||
{"id":"bd-nib2","title":"Add tests for bd create --dry-run flag","description":"dispatched_by: gastown/crew/max\n\nCommit 744d2a7d added --dry-run flag to bd create but lacks tests.\n\nTest cases needed:\n- Basic dry-run outputs preview without creating issue\n- Dry-run with --json outputs valid JSON (with empty ID)\n- Dry-run with --rig/--prefix shows target rig\n- Dry-run with --file returns error\n- Dry-run includes labels and deps in preview\n- Dry-run with --type=event includes event fields\n\nLocation: cmd/bd/create.go:181-254\nSuggested test file: cmd/bd/create_test.go","status":"closed","priority":2,"issue_type":"task","assignee":"beads/crew/giles","created_at":"2026-01-07T01:18:08.338705-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-08T20:08:34.078988-08:00","closed_at":"2026-01-08T20:08:34.078988-08:00","close_reason":"Tests already added in commit 66ab0ccd. All 7 test cases pass: BasicDryRunPreview, DryRunWithJSONOutput, DryRunWithLabelsAndDeps, DryRunWithRigPrefix, DryRunWithFileReturnsError, DryRunWithEventType, DryRunWithExplicitID"}
|
||||
{"id":"bd-nim5","title":"Detect/prevent child→parent dependency anti-pattern","description":"## Problem\n\nWhen filing issues with dependencies, it's easy to fall into the \"temporal trap\":\n- Thinking \"Phase 1 comes before Phase 2\"\n- Writing `bd dep add phase1 phase2`\n- But that means \"phase1 depends on phase2\" (backwards!)\n\nA specific variant: children depending on their parent epic. This is ALWAYS wrong because:\n1. Parent-child relationship already captures the dependency (parent closes when children done)\n2. Child→parent dep creates a block: child can't start because parent is \"open\"\n3. Parent can't close because children aren't done\n4. Deadlock\n\n## Solution\n\n### 1. Prevent at creation (`bd dep add`)\n\nWhen user runs `bd dep add X Y`:\n- Check if X is a child of Y (X.id starts with Y.id + \".\")\n- If so, error: \"Cannot add dependency: X is already a child of Y. Children inherit dependency on parent completion via hierarchy.\"\n\n### 2. Detect in `bd doctor`\n\nAdd a check that finds all cases where:\n- Issue A depends on Issue B\n- A.id matches pattern B.id + \".*\" (A is child of B)\n\nReport as: \"Child→parent dependency detected (anti-pattern)\"\nOffer repair: \"Remove N backwards dependencies? [y/N]\"\n\n## Implementation\n\n- `dep_add.go`: Add parent-child check before adding dependency\n- `doctor.go`: Add backwards-dep detection to health checks\n","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-24T12:51:15.788796-08:00","updated_at":"2025-12-24T13:02:44.079093-08:00","closed_at":"2025-12-24T13:02:44.079093-08:00"}
|
||||
{"id":"bd-njaol","title":"Issue 2 to reopen","status":"open","priority":1,"issue_type":"task","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:16:00.486987-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:16:00.702514-08:00"}
|
||||
{"id":"bd-njrm","title":"Work on gt-8tmz.34: Expansion var overrides not implement...","description":"Work on gt-8tmz.34: Expansion var overrides not implemented. The ExpandRule.Vars field exists in internal/formula/types.go but is ignored during expansion in internal/formula/expand.go. Implement: 1) Pass rule.Vars to expandStep in ApplyExpansions, 2) Merge vars with formula defaults (rule.Vars wins), 3) Substitute vars in template placeholders, 4) Add test in expand_test.go. When done, commit and push to main.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T20:01:13.586558-08:00","updated_at":"2025-12-25T20:06:11.099142-08:00","closed_at":"2025-12-25T20:06:11.099142-08:00"}
|
||||
{"id":"bd-njs96","title":"Session ended: gt-beads-refinery","status":"closed","priority":2,"issue_type":"event","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T09:09:29.792196-08:00","created_by":"beads/refinery","updated_at":"2026-01-11T09:09:29.852959-08:00","closed_at":"2026-01-11T09:09:29.852959-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
|
||||
{"id":"bd-nkqx","title":"bd swarm validate command","description":"Add bd swarm validate to check epic structure for swarming.\n\n## Context\nBefore running a swarm, we need to validate the epic structure:\n- Are dependencies correct (not inverted)?\n- Are there orphaned issues?\n- Is the DAG well-formed?\n\nThe Ready Front model (not phases!) means dependencies define execution order.\nCommon mistake: 'Phase 1 before Phase 2' → inverted deps.\nCorrect thinking: 'Phase 2 needs Phase 1' → bd dep add phase2 phase1\n\n## Implementation\n1. New command: bd swarm validate \u003cepic-id\u003e\n2. Walk the dependency DAG from epic children\n3. Detect issues:\n - Root issues with no dependents (orphans?)\n - Leaf issues depending on nothing (missing deps?)\n - Cycles (impossible)\n - Disconnected subgraphs\n4. Report:\n - Ready fronts (waves of parallel work)\n - Estimated worker-sessions\n - Max parallelism\n - Warnings for potential issues\n\n## Reference\n~/gt/docs/swarm-architecture.md - 'The Ready Front Model' section\n\n## Acceptance\n- bd swarm validate \u003cepic\u003e runs\n- Reports ready fronts accurately\n- Warns about structural issues\n- Returns success/failure exit code","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-28T19:11:08.788203-08:00","created_by":"mayor","updated_at":"2025-12-28T19:34:57.218009-08:00","closed_at":"2025-12-28T19:34:57.218009-08:00"}
|
||||
@@ -1694,6 +1693,7 @@
|
||||
{"id":"bd-ov1","title":"Doctor: exclude merge artifacts from 'multiple JSONL' warning","description":"## Problem\n`bd doctor` warns about 'Multiple JSONL files found' when merge artifact files exist:\n```\nJSONL Files: Multiple JSONL files found: beads.base.jsonl, beads.left.jsonl, issues.jsonl ⚠\n```\n\nThis is confusing because these aren't real issue JSONL files - they're temporary snapshots for deletion tracking.\n\n## Fix\nExclude known merge artifact patterns from the multiple-JSONL warning:\n\n```go\n// In doctor JSONL check\nskipPatterns := map[string]bool{\n \"beads.base.jsonl\": true,\n \"beads.left.jsonl\": true, \n \"beads.right.jsonl\": true,\n}\n```\n\n## Files\n- cmd/bd/doctor/ (JSONL check logic)","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-28T17:06:26.266097-08:00","updated_at":"2025-12-02T17:11:19.747094858-05:00","closed_at":"2025-11-28T21:52:13.632029-08:00"}
|
||||
{"id":"bd-ov1u","title":"Clean repo cruft: bd_new, @AGENTS.md, state.json","description":"Remove tracked cruft:\n- git rm bd_new (31MB old binary)\n- git rm @AGENTS.md (duplicate, was 'removed' but still tracked)\n- Add state.json to .gitignore, git rm --cached state.json\n- Consider moving history/EPHEMERAL_MOLECULES_DESIGN.md to docs/ or removing","status":"closed","priority":2,"issue_type":"chore","assignee":"beads/polecats/obsidian","created_at":"2026-01-01T11:09:49.833027-08:00","created_by":"mayor","updated_at":"2026-01-01T11:12:22.320022-08:00","closed_at":"2026-01-01T11:12:22.320022-08:00","close_reason":"Removed bd_new (31MB) and @AGENTS.md. state.json already gitignored, history/EPHEMERAL_MOLECULES_DESIGN.md did not exist."}
|
||||
{"id":"bd-ovfoz","title":"Session ended: gt-beads-crew-emma","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-08T20:12:32.02034-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-08T20:12:32.055007-08:00","closed_at":"2026-01-08T20:12:32.055007-08:00","close_reason":"auto-closed session event"}
|
||||
{"id":"bd-ovypp","title":"Review \u0026 merge PR #1023: MCP custom issue types fix","description":"dispatched_by: beads/crew/emma\n\n## PR Review Task\n\n**PR:** https://github.com/steveyegge/beads/pull/1023\n**Author:** marvin-bitterlich\n\n## Summary\nFix Pydantic validation errors when MCP lists issues with custom types (agent, molecule, event, convoy).\n\n## Changes\n- Change IssueType and IssueStatus from Literal to str in models.py\n- Update parameter descriptions in server.py and tools.py\n- Bump version in uv.lock from 0.34.0 to 0.47.0\n\n## Review Checklist\n1. Pull branch locally: `gh pr checkout 1023 --repo steveyegge/beads`\n2. Run tests: `go test ./... \u0026\u0026 cd integrations/beads-mcp \u0026\u0026 uv run pytest`\n3. Verify MCP works with custom types\n4. If all good, merge: `gh pr merge 1023 --repo steveyegge/beads --squash`\n\n## Classification\nEasy-win: Clear bug fix, minimal changes, well-documented reasoning.","status":"hooked","priority":2,"issue_type":"task","assignee":"beads/crew/dave","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:17:30.36625-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-11T18:17:43.678078-08:00"}
|
||||
{"id":"bd-ox1o","title":"Code Review Round 2: Beads Refactoring","description":"Second pass code review of Beads codebase. Found 10 HIGH/MEDIUM priority issues.\n\n**HIGH (P2):**\n- bd-6dnt: Duplicated IssueDetails struct (4 definitions)\n- bd-vqh9: init.go is 1928 lines\n- bd-it19: show.go is 1592 lines\n\n**MEDIUM (P3):**\n- bd-qobn: 20+ global variables in main.go\n- bd-0e02: Inconsistent error handling patterns\n- bd-g6m5: Mixed daemon/direct mode logic\n- bd-qe7j: Incomplete TODOs in formula/types.go\n- bd-4sxh: Issue struct ~100 fields\n- bd-yuxq: 262 uses of interface{}\n- bd-jbqx: Repeated validation patterns","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-28T19:00:15.483532-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-29T13:40:29.721916-08:00","closed_at":"2025-12-29T13:40:29.721916-08:00","close_reason":"Stale/spurious - test artifacts, merged PRs, or auto-close candidates"}
|
||||
{"id":"bd-oxgi","title":"Add mol_type schema field to beads","description":"Add mol_type field to distinguish molecule types (swarm/patrol/work).\n\n## Context\nSwarms need to be distinguishable from regular work molecules. The mol_type field enables:\n- Filtering: bd list --type=swarm \n- Queries: Find all active swarm molecules\n- Coordinator logic: Different handling for different mol types\n\n## Implementation\n1. Add mol_type column to SQLite schema (nullable, default null = work)\n2. Add mol_type to JSONL format\n3. Update create command to accept --mol-type\n4. Update list/ready commands to filter by mol_type\n5. Values: 'swarm', 'patrol', 'work', null (null = work)\n\n## Reference\n~/gt/docs/swarm-architecture.md - 'Data Model' section\n\n## Acceptance\n- bd create --mol-type=swarm works\n- bd list --mol-type=swarm filters correctly\n- Existing molecules work unchanged (backward compatible)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-28T19:11:07.616818-08:00","created_by":"mayor","updated_at":"2025-12-28T19:50:33.213538-08:00","closed_at":"2025-12-28T19:50:33.213538-08:00"}
|
||||
{"id":"bd-oy6c","title":"Bump version in all files","description":"Run ./scripts/bump-version.sh 0.33.2 to update 10 version files. Then run with --commit after info.go is updated.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-21T16:10:13.759706-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"}
|
||||
@@ -1757,7 +1757,7 @@
|
||||
{"id":"bd-pspk","title":"Fix: Empty coordinator shows blank in bd swarm create output","description":"Line 992 prints 'Coordinator: ' even when coordinator is empty string.\n\nShould either:\n- Print 'Coordinator: (none)' \n- Skip the line entirely when empty\n\nMinor polish issue.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-28T21:38:28.651591-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T22:00:57.569797-08:00","closed_at":"2025-12-28T22:00:57.569797-08:00","dependencies":[{"issue_id":"bd-pspk","depends_on_id":"bd-2ubv","type":"parent-child","created_at":"2025-12-28T21:38:44.844669-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-pu5do","title":"Issue with labels","status":"open","priority":1,"issue_type":"feature","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:16:13.486564-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:16:13.486564-08:00","labels":["backend","urgent"]}
|
||||
{"id":"bd-pvu0","title":"Merge: bd-4opy","description":"branch: polecat/angharad\ntarget: main\nsource_issue: bd-4opy\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T00:24:44.057267-08:00","updated_at":"2025-12-23T01:33:25.730271-08:00","closed_at":"2025-12-23T01:33:25.730271-08:00"}
|
||||
{"id":"bd-pwjkr","title":"Review \u0026 merge PR #1013: fix(validation) hyphenated prefixes","description":"dispatched_by: beads/crew/emma\n\nReview and merge PR #1013: https://github.com/steveyegge/beads/pull/1013\n\n## Summary\nFixes ValidateIDFormat to support hyphenated prefixes like 'bead-me-up-3e9'. Uses utils.ExtractIssuePrefix instead of naive first-hyphen splitting.\n\n## Changes\n- internal/validation/bead.go - Use ExtractIssuePrefix \n- internal/validation/bead_test.go - Add comprehensive test cases\n\n## Review Checklist\n- [ ] Pull the branch locally\n- [ ] Run tests: go test ./internal/validation/...\n- [ ] Verify hyphenated prefix tests pass\n- [ ] Merge with gh pr merge 1013 --repo steveyegge/beads --squash","status":"hooked","priority":2,"issue_type":"task","assignee":"beads/crew/grip","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:14:25.726482-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-11T18:14:50.983183-08:00"}
|
||||
{"id":"bd-pwjkr","title":"Review \u0026 merge PR #1013: fix(validation) hyphenated prefixes","description":"dispatched_by: beads/crew/emma\n\nReview and merge PR #1013: https://github.com/steveyegge/beads/pull/1013\n\n## Summary\nFixes ValidateIDFormat to support hyphenated prefixes like 'bead-me-up-3e9'. Uses utils.ExtractIssuePrefix instead of naive first-hyphen splitting.\n\n## Changes\n- internal/validation/bead.go - Use ExtractIssuePrefix \n- internal/validation/bead_test.go - Add comprehensive test cases\n\n## Review Checklist\n- [ ] Pull the branch locally\n- [ ] Run tests: go test ./internal/validation/...\n- [ ] Verify hyphenated prefix tests pass\n- [ ] Merge with gh pr merge 1013 --repo steveyegge/beads --squash","status":"closed","priority":2,"issue_type":"task","assignee":"beads/crew/grip","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:14:25.726482-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-11T18:17:42.313978-08:00","closed_at":"2026-01-11T18:17:42.313978-08:00","close_reason":"PR #1013 reviewed and merged. Fix uses ExtractIssuePrefix for correct hyphenated prefix parsing."}
|
||||
{"id":"bd-pzw7","title":"gt handoff deadlock at handoff.go:125","notes":"When running 'gt handoff -m \"message\"' after successful MR submit, go panics with 'fatal error: all goroutines are asleep - deadlock\\!' at handoff.go:125. The shutdown request still appears to be sent successfully but the command crashes. Stack trace shows issue is in runHandoff select statement.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-19T23:22:12.46315-08:00","updated_at":"2025-12-21T17:51:25.817355-08:00","closed_at":"2025-12-21T17:51:25.817355-08:00"}
|
||||
{"id":"bd-q13h","title":"Makefile Integration for Benchmarks","description":"Add a single 'bench' target to the Makefile for running performance benchmarks.\n\nTarget:\n.PHONY: bench\n\nbench:\n\tgo test -bench=. -benchtime=3s -tags=bench \\\n\t\t-cpuprofile=cpu.prof -memprofile=mem.prof \\\n\t\t./internal/storage/sqlite/\n\t@echo \"\"\n\t@echo \"Profiles generated. View flamegraph:\"\n\t@echo \" go tool pprof -http=:8080 cpu.prof\"\n\nFeatures:\n- Single simple target, no complexity\n- Always generates CPU and memory profiles\n- Clear output on how to view results\n- 3 second benchmark time for reliable results\n- Uses bench build tag for heavy benchmarks\n\nUsage:\n make bench # Run all benchmarks\n go test -bench=BenchmarkGetReadyWork... # Run specific benchmark","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-13T22:23:25.922916-08:00","updated_at":"2025-11-14T08:55:17.620824-08:00","closed_at":"2025-11-14T08:55:17.620824-08:00","dependencies":[{"issue_id":"bd-q13h","depends_on_id":"bd-zj8e","type":"blocks","created_at":"2025-11-13T22:24:06.371947-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-q2b8","title":"Review PR #916: fix(doctor) metadata table query","description":"dispatched_by: beads/crew/emma\n\nReview and merge PR #916 from aaron-sangster.\n\nPR: https://github.com/anthropics/beads/pull/916\nChanges: +48/-7, 2 files (cmd/bd/doctor/sync_divergence.go, test)\n\nFix: query metadata table instead of config for last_import_time\n\nReview checklist:\n- [ ] Code quality and style\n- [ ] Tests pass\n- [ ] Logic is correct\n- [ ] Approve or request changes","status":"closed","priority":2,"issue_type":"task","assignee":"beads/crew/dave","created_at":"2026-01-05T19:09:16.832569-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-05T19:11:44.812241-08:00","closed_at":"2026-01-05T19:11:44.812241-08:00","close_reason":"Reviewed and merged PR #916"}
|
||||
@@ -1818,6 +1818,7 @@
|
||||
{"id":"bd-r46","title":"Support --reason flag in daemon mode for reopen command","description":"The reopen.go command has a TODO at line 61 to add reason as a comment once RPC supports AddComment. Currently --reason flag is ignored in daemon mode with a warning.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-21T18:55:10.773626-05:00","updated_at":"2025-12-21T21:47:15.43375-08:00","closed_at":"2025-12-21T21:47:15.43375-08:00"}
|
||||
{"id":"bd-r4od","title":"Parameterize SQLite busy_timeout in store.go","description":"Modify sqlite.New() to accept configurable busy_timeout.\n\n## Current State\n`internal/storage/sqlite/store.go` hardcodes:\n```go\nconnStr = \"file:\" + path + \"?_pragma=foreign_keys(ON)\u0026_pragma=busy_timeout(30000)\u0026...\"\n```\n\n## Implementation Options\n\n### Option A: Add timeout parameter to New()\n```go\nfunc New(ctx context.Context, path string, busyTimeout time.Duration) (*SQLiteStorage, error)\n```\nPro: Simple, explicit\nCon: Changes function signature (breaking change for callers)\n\n### Option B: Options struct pattern\n```go\ntype Options struct {\n BusyTimeout time.Duration // default 30s\n}\nfunc New(ctx context.Context, path string, opts *Options) (*SQLiteStorage, error)\n```\nPro: Extensible, nil means defaults\nCon: More boilerplate\n\n### Recommendation: Option A with default\n```go\nfunc New(ctx context.Context, path string) (*SQLiteStorage, error) {\n return NewWithOptions(ctx, path, 30*time.Second)\n}\n\nfunc NewWithOptions(ctx context.Context, path string, busyTimeout time.Duration) (*SQLiteStorage, error)\n```\n\n## Acceptance Criteria\n- busy_timeout is parameterized in connection string\n- 0 timeout means no waiting (immediate SQLITE_BUSY)\n- All existing callers continue to work (via default wrapper)\n\nPart of bd-olc1","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-13T17:54:46.896222-08:00","updated_at":"2025-12-13T18:05:19.443831-08:00","closed_at":"2025-12-13T18:05:19.443831-08:00","dependencies":[{"issue_id":"bd-r4od","depends_on_id":"bd-59er","type":"blocks","created_at":"2025-12-13T17:55:26.550018-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-r4sn","title":"Phase 2.5: TOON-based daemon sync","description":"Implement TOON-native daemon sync (replaces JSONL sync machinery).\n\n## Overview\nDaemon sync is the final integration point. Replace export/import/merge machinery with TOON-native sync, building on deletion tracking (2.3) and merge optimization (2.4).\n\n## Required Work\n\n### 2.5.1 TOON-based Daemon Sync\n- [ ] Understand current JSONL sync machinery (export.go, import.go, merge.go)\n- [ ] Replace export step with TOON encoding (EncodeTOON)\n- [ ] Replace import step with TOON decoding (DecodeTOON)\n- [ ] Replace merge step with TOON-aware 3-way merge\n- [ ] Update daemon auto-sync to read/write TOON\n- [ ] Verify 5-second debounce still works\n\n### 2.5.2 Deletion Sync Integration\n- [ ] Load deletions.toon during import phase\n- [ ] Apply deletions after merging issues\n- [ ] Ensure deletion TTL respects daemon schedule\n\n### 2.5.3 Testing\n- [ ] Unit tests for daemon sync with TOON\n- [ ] Integration tests with actual daemon operations\n- [ ] Multi-clone sync scenarios with concurrent edits\n- [ ] Performance comparison with JSONL sync\n- [ ] Long-running daemon stability tests\n\n## Success Criteria\n- Daemon reads/writes TOON format (not JSONL)\n- Sync latency comparable to JSONL (\u003c100ms)\n- All 70+ tests passing\n- bdt commands work seamlessly with daemon\n- Multi-clone sync scenarios work correctly","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-19T14:43:20.33132177-07:00","updated_at":"2025-12-21T14:42:25.274362-08:00","closed_at":"2025-12-21T14:42:25.274362-08:00","dependencies":[{"issue_id":"bd-r4sn","depends_on_id":"bd-uz8r","type":"blocks","created_at":"2025-12-19T14:43:20.347724699-07:00","created_by":"daemon"},{"issue_id":"bd-r4sn","depends_on_id":"bd-uwkp","type":"blocks","created_at":"2025-12-19T14:43:20.355379309-07:00","created_by":"daemon"}]}
|
||||
{"id":"bd-r53nt","title":"Issue 2","status":"open","priority":1,"issue_type":"task","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:16:14.587222-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:16:14.587222-08:00"}
|
||||
{"id":"bd-r6a","title":"Redesign workflow system: templates as native Beads","description":"## Problem\n\nThe current workflow system (YAML templates in cmd/bd/templates/workflows/) is architecturally flawed:\n\n1. **Out-of-band data plane** - YAML files are a parallel system outside Beads itself\n2. **Heavyweight DSL** - YAML is gross; even TOML would have been better, but neither is ideal\n3. **Not graph-native** - Beads IS already a dependency graph with priorities, so why reinvent it?\n4. **Can't use bd commands on templates** - They're opaque YAML, not viewable/editable Beads\n\n## The Right Design\n\n**Templates should be Beads themselves.**\n\nA \"workflow template\" should be:\n- An epic marked as a template (via label, type, or prefix like `tpl-`)\n- Child issues with dependencies between them (using normal bd dep)\n- Titles and descriptions containing `{{variable}}` placeholders\n- Normal priorities that control serialization order\n\n\"Instantiation\" becomes:\n1. Clone the template subgraph (epic + children + dependencies)\n2. Substitute variables in titles/descriptions\n3. Generate new IDs for all cloned issues\n4. Return the new epic ID\n\n## Benefits\n\n- **No YAML** - Templates are just Beads\n- **Use existing tools** - `bd show`, `bd edit`, `bd dep` work on templates\n- **Graph-native** - Dependencies are real Beads dependencies\n- **Simpler codebase** - Remove all the YAML parsing/workflow code\n- **Composable** - Templates can reference other templates\n\n## Tasks\n\n1. Delete the YAML workflow system code (revert recent push + remove existing workflow code)\n2. Design template marking convention (label? type? id prefix?)\n3. Implement `bd template create` or `bd clone --as-template`\n4. Implement `bd template instantiate \u003ctemplate-id\u003e --var key=value`\n5. Migrate version-bump workflow to native Beads template\n6. Update documentation","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-17T22:41:57.359643-08:00","updated_at":"2025-12-18T17:42:26.000769-08:00","closed_at":"2025-12-18T13:47:04.632525-08:00"}
|
||||
{"id":"bd-r6a.1","title":"Revert/remove YAML workflow system","description":"Revert the recent commit and remove all YAML workflow code:\n\n1. `git revert aae8407a` (the commit we just pushed with workflow fixes)\n2. Remove `cmd/bd/templates/workflows/` directory\n3. Remove workflow.go or gut it to minimal stub\n4. Remove WorkflowTemplate types from internal/types/workflow.go\n5. Remove any workflow-related RPC handlers\n\nKeep only minimal scaffolding if needed for the new template system.","status":"tombstone","priority":0,"issue_type":"task","created_at":"2025-12-17T22:42:07.339684-08:00","updated_at":"2025-12-25T01:21:01.952723-08:00","dependencies":[{"issue_id":"bd-r6a.1","depends_on_id":"bd-r6a","type":"parent-child","created_at":"2025-12-17T22:42:07.340117-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-r6a.2","title":"Implement subgraph cloning with variable substitution","description":"Core implementation of template instantiation:\n\n1. Add `bd template instantiate \u003ctemplate-id\u003e [--var key=value]...` command\n2. Implement subgraph loading:\n - Load template epic\n - Recursively load all children (and their children)\n - Load all dependencies between issues in the subgraph\n3. Implement variable substitution:\n - Scan titles and descriptions for `{{name}}` patterns\n - Replace with provided values\n - Error on missing required variables (or prompt interactively)\n4. Implement cloning:\n - Generate new IDs for all issues\n - Create cloned issues with substituted text\n - Remap and create dependencies\n5. Return the new epic ID\n\nConsider adding `--dry-run` flag to preview what would be created.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-17T22:43:25.179848-08:00","updated_at":"2025-12-25T01:21:01.952723-08:00","dependencies":[{"issue_id":"bd-r6a.2","depends_on_id":"bd-r6a","type":"parent-child","created_at":"2025-12-17T22:43:25.180286-08:00","created_by":"daemon"},{"issue_id":"bd-r6a.2","depends_on_id":"bd-r6a.1","type":"blocks","created_at":"2025-12-17T22:44:03.15413-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"}
|
||||
@@ -1888,7 +1889,6 @@
|
||||
{"id":"bd-siz1","title":"GH#532: bd sync circular error (suggests running bd sync)","description":"bd sync error message recommends running bd sync to fix the bd sync error. Fix error handling to provide useful guidance. See GitHub issue #532.","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-16T01:04:00.543573-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-sj5y","title":"Daemon should be singleton and aggressively kill stale instances","description":"Found 2 bd daemons running (PIDs 76868, 77515) during shutdown. The daemon should:\n\n1. Be a singleton - only one instance per rig allowed\n2. On startup, check for existing daemon and kill it before starting\n3. Use a PID file or lock file to enforce this\n\nCurrently stale daemons can accumulate, causing confusion and resource waste.","notes":"**Investigation 2025-12-21:**\n\nThe singleton mechanism is already implemented and working correctly:\n\n1. **daemon.lock** uses flock (exclusive non-blocking) to prevent duplicate daemons\n2. **bd.sock.startlock** coordinates concurrent auto-starts via O_CREATE|O_EXCL\n3. **Registry** tracks all daemons globally in ~/.beads/registry.json\n\nTesting shows:\n- Trying to start a second daemon gives: 'Error: daemon already running (PID X)'\n- Multiple daemons for *different* rigs is expected/correct behavior\n\nThe original report ('Found 2 bd daemons running PIDs 76868, 77515') was likely:\n1. Two daemons for different rigs (expected), OR\n2. An edge case that's since been fixed\n\nConsider closing as RESOLVED or clarifying the original scenario.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-21T01:29:14.778949-08:00","updated_at":"2025-12-21T11:27:34.302585-08:00","closed_at":"2025-12-21T11:27:34.302585-08:00"}
|
||||
{"id":"bd-sjmr","title":"Fix inconsistent error handling in multi-repo deletion tracking","description":"From bd-xo6b code review: Multi-repo deletion tracking has mixed failure modes that can leave system in inconsistent state.\n\n**Current behavior (daemon_sync.go):**\n- Snapshot capture (L505-514): Hard fail → aborts sync\n- Merge/prune (L575-584): Hard fail → aborts sync \n- Base snapshot update (L613-619): Soft fail → logs warning, continues\n\n**Critical problem:**\nIf merge fails on repo 3 of 5:\n- Repos 1-2 have already merged and deleted issues (irreversible)\n- Repos 3-5 are untouched\n- Database is in partially-updated state\n- No rollback mechanism\n\n**Real-world scenario:**\n```\nSync with repos [A, B, C]:\n1. Capture snapshots A ✓, B ✓, C ✗ → ABORT (good)\n2. Merge A ✓, B ✗ → ABORT but A already deleted issues (BAD - no rollback)\n3. Update base A ⚠, B ⚠ → Warnings only (inconsistent with 1 \u0026 2)\n```\n\n**Solution options:**\n1. **Two-phase commit:**\n - Phase 1: Validate all repos (check files exist, readable, parseable)\n - Phase 2: Apply changes atomically (or fail entirely before any mutations)\n\n2. **Fail-fast validation:**\n - Before any snapshot/merge operations, validate all repos upfront\n - Abort entire sync if any repo fails validation\n\n3. **Make base snapshot update consistent:**\n - Either make it hard-fail like the others, or make all soft-fail\n\n**Files:**\n- cmd/bd/daemon_sync.go:505-514 (snapshot capture)\n- cmd/bd/daemon_sync.go:575-584 (merge/prune)\n- cmd/bd/daemon_sync.go:613-619 (base snapshot update)\n\n**Recommendation:** Use option 1 (two-phase) or option 2 (fail-fast validation) + fix base snapshot inconsistency.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-11-06T19:31:29.538092-08:00","updated_at":"2025-11-06T19:35:41.268584-08:00","closed_at":"2025-11-06T19:35:41.268584-08:00","dependencies":[{"issue_id":"bd-sjmr","depends_on_id":"bd-xo6b","type":"discovered-from","created_at":"2025-11-06T19:32:12.310033-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-sjobk","title":"Test issue 2","status":"open","priority":2,"issue_type":"task","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:15:59.385093-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:15:59.385093-08:00"}
|
||||
{"id":"bd-slz28","title":"Session ended: gt-beads-refinery","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-10T15:14:50.852321-08:00","created_by":"beads/refinery","updated_at":"2026-01-10T15:14:50.887542-08:00","closed_at":"2026-01-10T15:14:50.887542-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
|
||||
{"id":"bd-soig","title":"Sling reports 'already pinned' but mol status shows empty hook","description":"During swarm operations, gt sling reported beads were 'already pinned' but gt mol status showed nothing on the hook.\n\n**Observed:**\n```\n$ gt sling bd-9btu beads/Nux\nError: bead bd-9btu is already pinned to gt-beads-nux\n\n$ gt mol status beads/Nux\nNothing on hook - no work slung\n```\n\n**Expected:**\nIf a bead is pinned, mol status should show it. If mol status shows empty, sling should work.\n\n**Workaround:**\nUsed --force flag to re-sling, which worked.\n\n**Root cause hypothesis:**\nAgent bead state may be stored in town beads but polecat's local view doesn't see it, or the pin record exists but session state is stale.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-28T16:17:50.561021-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T22:14:22.838484-08:00","closed_at":"2025-12-28T22:14:22.838484-08:00"}
|
||||
{"id":"bd-sojqc","title":"Session ended: gt-beads-crew-grip","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-09T23:08:24.273721-08:00","created_by":"beads/crew/grip","updated_at":"2026-01-09T23:08:24.308524-08:00","closed_at":"2026-01-09T23:08:24.308524-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
|
||||
@@ -2031,7 +2031,6 @@
|
||||
{"id":"bd-vnwnz","title":"Session ended: gt-beads-crew-fang","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-09T13:48:33.025101-08:00","created_by":"beads/crew/fang","updated_at":"2026-01-09T13:48:33.060533-08:00","closed_at":"2026-01-09T13:48:33.060533-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
|
||||
{"id":"bd-vpan","title":"Re: Thread Test 2","description":"Got your message. Testing reply feature.","status":"tombstone","priority":2,"issue_type":"message","created_at":"2025-12-16T18:21:29.144352-08:00","updated_at":"2025-12-17T16:11:17.070763-08:00","dependencies":[{"issue_id":"bd-vpan","depends_on_id":"bd-x36g","type":"replies-to","created_at":"2025-12-18T13:45:31.137191-08:00","created_by":"migration"}],"deleted_at":"2025-12-17T16:11:17.070763-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"message"}
|
||||
{"id":"bd-vpx7","title":"Add tests for bd update prefix routing","description":"Commit e2126831 added prefix routing to bd update but there are no update tests at all.\n\nbd update now uses resolveAndGetIssueWithRouting in direct mode, enabling\ncross-rig issue updates via prefix-based routing (like bd show).\n\nTest cases needed:\n- Update issue in current rig works\n- Update issue in different rig via prefix routing\n- Multiple ID updates with mixed routing\n- Error handling for non-existent IDs\n- Status update propagates correctly\n- Multiple field updates in single call\n\nLocation: cmd/bd/update.go\nSuggested test file: cmd/bd/update_test.go (new file needed)","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-07T01:18:13.499616-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-07T01:18:13.499616-08:00"}
|
||||
{"id":"bd-vqfjo","title":"Test integration issue","description":"This is a real integration test","status":"open","priority":1,"issue_type":"bug","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:15:59.04102-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:15:59.04102-08:00"}
|
||||
{"id":"bd-vqh9","title":"Code smell: init.go is 1928 lines - needs splitting","description":"cmd/bd/init.go is 1928 lines covering multiple init modes, contributor/team setup, hooks setup, and stealth mode.\n\n**Problem:**\n- File is too large to understand and maintain\n- Multiple responsibilities within single file\n- Harder to test individual components\n\n**Acceptance Criteria:**\n- [ ] Split into logical files (init_setup.go, init_hooks.go, init_stealth.go, etc.)\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:58:59.37092-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T19:01:18.403417-08:00","closed_at":"2025-12-28T19:01:18.403417-08:00","dependencies":[{"issue_id":"bd-vqh9","depends_on_id":"bd-ox1o","type":"blocks","created_at":"2025-12-28T19:00:23.586968-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-vqm0","title":"Swarm: Code Review: Swarm commands consolidation","description":"Swarm molecule orchestrating epic bd-2ubv.\n\nEpic: bd-2ubv\nCoordinator: ","status":"closed","priority":2,"issue_type":"molecule","created_at":"2025-12-28T22:06:58.82489-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-29T13:40:29.709541-08:00","closed_at":"2025-12-29T13:40:29.709541-08:00","close_reason":"Stale/spurious - test artifacts, merged PRs, or auto-close candidates","dependencies":[{"issue_id":"bd-vqm0","depends_on_id":"bd-2ubv","type":"relates-to","created_at":"2025-12-28T22:06:58.825608-08:00","created_by":"beads/crew/dave"}]}
|
||||
{"id":"bd-vs9","title":"Fix unparam unused parameter in cmd/bd/doctor.go:541","description":"Linting issue: checkHooksQuick - path is unused (unparam) at cmd/bd/doctor.go:541:22. Error: func checkHooksQuick(path string) string {","status":"tombstone","priority":0,"issue_type":"bug","created_at":"2025-12-07T15:35:17.02177046-07:00","updated_at":"2025-12-25T01:21:01.952723-08:00","deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"bug"}
|
||||
@@ -2062,7 +2061,6 @@
|
||||
{"id":"bd-wcfeu","title":"Review and test PR #975: sync --import-only fix","description":"dispatched_by: beads/crew/emma\n\nReview PR #975 from juanre that fixes sync --import-only failing with 'no database store available' when daemon was connected.\n\n## PR Details\n- URL: https://github.com/steveyegge/beads/pull/975\n- Author: juanre\n- Additions: 143 (mostly test code), Deletions: 0\n\n## Fix Summary\nWhen running bd sync --import-only while daemon is connected:\n1. PersistentPreRun connects to daemon, returns early without initializing store\n2. sync command closes daemon connection\n3. sync --import-only calls importFromJSONLInline which requires store != nil\n4. Fix: call ensureStoreActive() after closing daemon in sync.go\n\n## Your Task\n1. Fetch and checkout the PR branch locally\n2. Run tests: go test ./...\n3. Verify the specific test passes: go test -run TestImportFromJSONLInlineAfterDaemonDisconnect ./cmd/bd/\n4. Review the code change in cmd/bd/sync.go (6 lines)\n5. If everything looks good, approve and merge the PR\n\n## Commands\ngit fetch origin pull/975/head:pr-975\ngit checkout pr-975\ngo test ./...\ngh pr review 975 --repo steveyegge/beads --approve\ngh pr merge 975 --repo steveyegge/beads --squash","status":"closed","priority":2,"issue_type":"task","assignee":"beads/crew/dave","created_at":"2026-01-09T13:44:11.403407-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-09T13:45:43.994469-08:00","closed_at":"2026-01-09T13:45:43.994469-08:00","close_reason":"PR #975 already merged by steveyegge. Verified fix adds ensureStoreActive() after daemon disconnect in sync.go, with comprehensive test."}
|
||||
{"id":"bd-wcgla","title":"Digest: mol-refinery-patrol","description":"Patrol: queue empty, 0 branches merged, no issues","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-11T01:23:15.769966-08:00","updated_at":"2026-01-11T01:23:15.769966-08:00","closed_at":"2026-01-11T01:23:15.769922-08:00","close_reason":"Squashed from 11 wisps"}
|
||||
{"id":"bd-wcl","title":"Document CLI + hooks as recommended approach over MCP","description":"Update documentation to position CLI + bd prime hooks as the primary recommended approach over MCP server, explaining why minimizing context matters even with large context windows (compute cost, energy, environment, latency).","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-12T00:15:25.923025-08:00","updated_at":"2025-12-09T18:38:37.707666172-05:00","closed_at":"2025-11-26T18:06:51.020351-08:00"}
|
||||
{"id":"bd-wcvqa","title":"Ready issue","status":"open","priority":1,"issue_type":"task","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:16:01.503343-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:16:01.503343-08:00"}
|
||||
{"id":"bd-wdn03","title":"Session ended: gt-beads-witness","status":"closed","priority":2,"issue_type":"event","created_at":"2026-01-10T21:32:30.54266-08:00","created_by":"beads/witness","updated_at":"2026-01-10T21:32:30.585178-08:00","closed_at":"2026-01-10T21:32:30.585178-08:00","close_reason":"auto-closed session cost wisp","ephemeral":true}
|
||||
{"id":"bd-wdp83","title":"Add 'quality_score' field for aggregate quality metric","description":"dispatched_by: beads/crew/emma\n\nAdd float32 field (0.0-1.0) for aggregate quality score on issues. Validators (Refineries) can populate on merge. Foundation for proof-of-stake reputation. Distinct from per-Validation.Score.","status":"closed","priority":2,"issue_type":"task","assignee":"beads/crew/wolf","created_at":"2026-01-10T16:34:07.238429-08:00","created_by":"gastown/crew/max","updated_at":"2026-01-10T19:34:18.170174-08:00","closed_at":"2026-01-10T19:34:18.170174-08:00","close_reason":"Implementation complete","dependencies":[{"issue_id":"bd-wdp83","depends_on_id":"bd-imi7w","type":"parent-child","created_at":"2026-01-10T16:34:21.616554-08:00","created_by":"gastown/crew/max"}]}
|
||||
{"id":"bd-we4p","title":"Cache getMultiRepoJSONLPaths() result during sync to avoid redundant calls","description":"From bd-xo6b code review: getMultiRepoJSONLPaths() is called 3x per sync cycle.\n\n**Current behavior:**\ndaemon_sync.go calls getMultiRepoJSONLPaths() three times per sync:\n- Line 505: Snapshot capture before pull\n- Line 575: Merge/prune after pull\n- Line 613: Base snapshot update after import\n\n**Cost per call:**\n- Config lookup (likely cached, but still overhead)\n- Path construction: O(N) where N = number of repos\n- String allocations: (N + 1) × filepath.Join() calls\n\n**Total per sync:** 3N path constructions + 3 config lookups + 3 slice allocations\n\n**Impact:**\n- For N=3 repos: Negligible (\u003c 1ms)\n- For N=10 repos: Still minimal\n- For N=100+ repos: Wasteful\n\n**Solution:**\nCall once at sync start, reuse result:\n\n```go\nfunc createSyncFunc(...) func() {\n return func() {\n // ... existing setup ...\n \n // Call once at start\n multiRepoPaths := getMultiRepoJSONLPaths()\n \n // Snapshot capture\n if multiRepoPaths != nil {\n for _, path := range multiRepoPaths {\n if err := captureLeftSnapshot(path); err != nil { ... }\n }\n }\n \n // ... later ...\n \n // Merge/prune - reuse same paths\n if multiRepoPaths != nil {\n for _, path := range multiRepoPaths { ... }\n }\n \n // ... later ...\n \n // Base snapshot update - reuse same paths\n if multiRepoPaths != nil {\n for _, path := range multiRepoPaths { ... }\n }\n }\n}\n```\n\n**Files:**\n- cmd/bd/daemon_sync.go:449-636 (createSyncFunc)\n\n**Note:** This is a performance optimization, not a correctness fix. Low priority unless multi-repo usage scales significantly.","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-11-06T19:31:32.128674-08:00","updated_at":"2025-11-06T19:40:50.871176-08:00","closed_at":"2025-11-06T19:40:50.871176-08:00","dependencies":[{"issue_id":"bd-we4p","depends_on_id":"bd-xo6b","type":"discovered-from","created_at":"2025-11-06T19:32:12.39754-08:00","created_by":"daemon"}]}
|
||||
@@ -2143,7 +2141,6 @@
|
||||
{"id":"bd-x2bd","title":"Merge: bd-likt","description":"branch: polecat/Gater\ntarget: main\nsource_issue: bd-likt\nrig: beads","status":"closed","priority":3,"issue_type":"merge-request","created_at":"2025-12-23T13:46:27.091846-08:00","updated_at":"2025-12-23T19:12:08.355637-08:00","closed_at":"2025-12-23T19:12:08.355637-08:00"}
|
||||
{"id":"bd-x2ht","title":"Add BD_AGENT_MODE for ultra-compact output","description":"Optional agent-optimized output mode triggered by BD_AGENT_MODE=1 env var:\n\n- Compact format: just ID and title per line\n- Default to open/in_progress only\n- No colors, no emojis\n- Lower default limit (~20)\n- One-line summaries\n\nThis is independent but benefits from TTY detection infrastructure.\n\nConsider auto-detecting agent context via CLAUDE_CODE or similar env vars.","notes":"## Implementation Plan\n\n### Trigger\n```bash\nBD_AGENT_MODE=1 bd list\n```\n\nOr auto-detect common agent environments:\n```go\nfunc IsAgentMode() bool {\n if os.Getenv(\"BD_AGENT_MODE\") != \"\" {\n return true\n }\n // Auto-detect known agent contexts\n if os.Getenv(\"CLAUDE_CODE\") != \"\" {\n return true\n }\n // Add other agent env vars as discovered\n return false\n}\n```\n\n### Code Changes\n\n1. **Add agent output format** (cmd/bd/list.go):\n```go\nif ui.IsAgentMode() {\n // Ultra-compact: just ID and title\n for _, issue := range issues {\n fmt.Printf(\"%s: %s\\n\", issue.ID, issue.Title)\n }\n return\n}\n```\n\n2. **Agent mode defaults**:\n```go\nif ui.IsAgentMode() {\n if limit == 0 {\n limit = 20 // Lower default for agents\n }\n if status == \"\" {\n // Only actionable work\n filter.Status = []types.Status{\"open\", \"in_progress\"}\n }\n}\n```\n\n### Output Format (Agent Mode)\n```\nbd-mypl: Default bd list to non-closed issues\nbd-v5fn: Add default limit to bd list (50 issues)\nbd-jdz3: Add pager support to bd list\n```\n\nNo colors, no emojis, no brackets, no priority display.\nJust ID + title for maximum context efficiency.\n\n### Testing\n- `BD_AGENT_MODE=1 bd list` outputs compact format\n- Verify no ANSI codes in output\n- Verify default limit is 20\n- Verify only open/in_progress shown by default","status":"closed","priority":4,"issue_type":"feature","created_at":"2025-12-29T15:25:11.057467-08:00","created_by":"stevey","updated_at":"2025-12-30T18:12:30.979385-08:00","closed_at":"2025-12-30T15:59:24.474412-08:00","close_reason":"Implemented: BD_AGENT_MODE=1 triggers ultra-compact output format"}
|
||||
{"id":"bd-x2i","title":"Add bd deleted command for audit trail","description":"Parent: bd-imj\n\nAdd command to view deletion history.\n\nUsage:\n bd deleted # Show recent deletions (last 7 days)\n bd deleted --since=30d # Show deletions in last 30 days\n bd deleted --all # Show all tracked deletions\n bd deleted bd-xxx # Show deletion details for specific issue\n\nOutput format:\n bd-xxx 2025-11-25 10:00 stevey duplicate of bd-yyy\n bd-yyy 2025-11-25 10:05 claude cleanup\n\nAcceptance criteria:\n- List deletions with timestamp, actor, reason\n- Filter by time range\n- Lookup specific issue ID\n- JSON output option for scripting","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-25T09:57:21.113861-08:00","updated_at":"2025-11-25T15:13:53.781519-08:00","closed_at":"2025-11-25T15:13:53.781519-08:00"}
|
||||
{"id":"bd-x2u7r","title":"Blocking issue","status":"open","priority":1,"issue_type":"task","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:16:01.579113-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:16:01.579113-08:00"}
|
||||
{"id":"bd-x36g","title":"Thread Test 2","description":"Testing direct mode","status":"tombstone","priority":2,"issue_type":"message","created_at":"2025-12-16T18:21:16.470631-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":"message"}
|
||||
{"id":"bd-x3hi","title":"Support redirect files in .beads/ directory","description":"Gas Town creates polecat worktrees with .beads/redirect files that point to a shared beads database. The bd CLI should:\n\n1. When finding a .beads/ directory, check if it contains a 'redirect' file\n2. If redirect exists, read the relative path and use that as the beads directory\n3. This allows multiple git worktrees to share a single beads database\n\nExample:\n- polecats/alpha/.beads/redirect contains '../../mayor/rig/.beads'\n- bd commands from alpha should use mayor/rig/.beads\n\nCurrently bd ignores redirect files and either uses the local .beads/ or walks up to find a parent .beads/.\n\nRelated: gt-nriy (test message that can't be retrieved due to missing redirect support)","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-20T21:46:23.415172-08:00","updated_at":"2025-12-20T21:59:25.759664-08:00","closed_at":"2025-12-20T21:59:25.759664-08:00"}
|
||||
{"id":"bd-x3j8","title":"Update info.go versionChanges","description":"Add 0.32.1 entry to versionChanges map in cmd/bd/info.go","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-20T21:53:17.344841-08:00","updated_at":"2025-12-20T21:54:31.906761-08:00","closed_at":"2025-12-20T21:54:31.906761-08:00","dependencies":[{"issue_id":"bd-x3j8","depends_on_id":"bd-an4s","type":"parent-child","created_at":"2025-12-20T21:53:17.346736-08:00","created_by":"daemon"},{"issue_id":"bd-x3j8","depends_on_id":"bd-rgd7","type":"blocks","created_at":"2025-12-20T21:53:29.62309-08:00","created_by":"daemon"}]}
|
||||
@@ -2272,7 +2269,6 @@
|
||||
{"id":"bd-zsz","title":"Add --parent flag to bd onboard output","description":"bd onboard didn't document --parent flag for epic subtasks, causing AI agents to guess wrong syntax. Added --parent example and CLI help section pointing to bd \u003ccmd\u003e --help.\n\nFixes: https://github.com/steveyegge/beads/issues/402","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-27T13:01:51.366625-08:00","updated_at":"2025-11-27T13:02:02.018003-08:00","closed_at":"2025-11-27T13:02:02.018003-08:00"}
|
||||
{"id":"bd-zt59","title":"Deferred HOP schema additions (P2/P3)","description":"Deferred from bd-7pwh after review. Add when semantics are clearer and actually needed:\n\n- assignee_ref: Structured EntityRef alongside string assignee\n- work_type: 'mutex' vs 'open_competition' (everything is mutex in v0.1)\n- crystallizes: bool for work that compounds vs evaporates (can derive from issue_type)\n- cross_refs: URIs to beads in other repos (needs federation first)\n- skill_vector: []float32 embeddings placeholder (YAGNI)\n\nThese can be added later without breaking changes (all optional fields).","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-22T17:54:20.02496-08:00","updated_at":"2026-01-06T19:29:46.239397-08:00","closed_at":"2026-01-06T19:29:46.239397-08:00","close_reason":"Moved to town HQ: hq-my0dy9 (HOP-specific concerns are out of scope for beads tool)"}
|
||||
{"id":"bd-ztnzl","title":"Fix bd init spins forever creating C:\\.beads outside git (GH#996)","description":"dispatched_by: mayor\n\nbd init on Windows spins forever trying to create C:\\.beads when run outside of .git. See https://github.com/steveyegge/beads/issues/996","status":"closed","priority":2,"issue_type":"task","assignee":"beads/crew/giles","created_at":"2026-01-10T12:18:38.637359-08:00","created_by":"mayor","updated_at":"2026-01-10T12:28:14.994264-08:00","closed_at":"2026-01-10T12:28:14.994264-08:00","close_reason":"Fixed infinite loop in findLocalBeadsDir() and findOriginalBeadsDir() on Windows - same pattern as PR #991 fix for FindBeadsDir(). On Windows, filepath.Dir(\"C:\\\\\") returns \"C:\\\\\" (not \"/\" or \".\"), so the loop condition must check if parent == dir to detect filesystem root.","labels":["bug"]}
|
||||
{"id":"bd-zubk6","title":"Test issue 1","status":"open","priority":1,"issue_type":"task","owner":"steve.yegge@gmail.com","created_at":"2026-01-11T18:15:59.317367-08:00","created_by":"beads/crew/wolf","updated_at":"2026-01-11T18:15:59.317367-08:00"}
|
||||
{"id":"bd-zw72","title":"Investigate incremental blocked_issues_cache updates at scale","description":"Current blocked_issues_cache strategy does full DELETE + INSERT on every dependency/status change.\n\n**Problem at scale:**\n- 10K issues: ~50ms rebuild (acceptable)\n- 100K issues: ~500ms rebuild (noticeable)\n- 1M issues: multi-second rebuilds (problematic)\n\n**Current implementation (blocked_cache.go:104-154):**\n- DELETE FROM blocked_issues_cache\n- INSERT with recursive CTE\n\n**Potential optimizations:**\n1. **Incremental updates:** Only add/remove affected issue IDs instead of full rebuild\n2. **Dirty tracking:** Skip rebuild if cache is already valid\n3. **Async rebuild:** Rebuild in background, serve stale cache briefly\n4. **Partial invalidation:** Only invalidate affected subtree\n\n**Decision needed:** Is this premature optimization? Current target is \u003c100K issues.\n\n**Benchmark:** Add benchmark for cache rebuild at 100K scale to measure actual impact.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-22T22:58:55.165718-08:00","updated_at":"2026-01-02T00:17:14.280698-08:00","dependencies":[{"issue_id":"bd-zw72","depends_on_id":"bd-h0we","type":"discovered-from","created_at":"2025-12-22T22:58:55.166427-08:00","created_by":"daemon"}],"comments":[{"id":10,"issue_id":"bd-zw72","author":"beads/crew/wolf","text":"## Benchmark Investigation Results (2026-01-02)\n\n**Cache rebuild timing:**\n- 10K issues: 773ms (Go benchmark), ~270ms (raw SQL)\n- 20K issues: 1,298ms\n- Extrapolated 100K: ~6.5 seconds\n\nOriginal estimates were 15x too optimistic. Go/CGO/WAL adds ~3x overhead.\n\n**Key insight:** Most dependency changes only affect a localized subgraph. Incremental updates could reduce 773ms to \u003c50ms for typical ops.\n\n**Added:** BenchmarkRebuildBlockedCache_Large/XLarge in sqlite_bench_test.go","created_at":"2026-01-03T01:29:51Z"},{"id":11,"issue_id":"bd-zw72","author":"beads/crew/wolf","text":"## Incremental Update Design Sketch\n\n**When to update cache:**\n1. Add blocks dep → add blocked issue + descendants to cache\n2. Remove blocks dep → check if still blocked, remove if not + propagate to descendants \n3. Close issue → check dependents, remove unblocked + descendants\n4. Reopen issue → add dependents + descendants back\n\n**Key insight:** Adding to cache is simple (just insert). Removing is complex (must verify no alternate blocking path).\n\n**Proposed approach:**\n- For additions: \\`INSERT OR IGNORE\\` the affected subgraph (fast, O(affected_nodes))\n- For removals: Rebuild only for the affected subgraph, not entire cache\n- Keep full rebuild as fallback for complex cases (waits-for, conditional-blocks)\n\n**Estimated improvement:**\n- Typical add/remove: O(affected_nodes) vs O(all_issues)\n- 10K DB with 1 affected node: ~5ms vs 773ms (150x faster)\n- Worst case (unblock entire graph): same as now\n\n**Implementation complexity:** Medium - need to handle transitive parent-child correctly","created_at":"2026-01-03T01:30:30Z"}]}
|
||||
{"id":"bd-zwpw","title":"Test dependency child","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-05T11:23:05.998311-08:00","updated_at":"2025-11-05T11:23:30.389454-08:00","closed_at":"2025-11-05T11:23:30.389454-08:00","dependencies":[{"issue_id":"bd-zwpw","depends_on_id":"bd-k0j9","type":"blocks","created_at":"2025-11-05T11:23:05.998981-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-zwtq","title":"Run bd doctor at end of bd init to verify setup","description":"Run bd doctor diagnostics at end of bd init (after line 398 in init.go). If issues found, warn user immediately: '⚠ Setup incomplete. Run bd doctor --fix to complete setup.' Catches configuration problems before user encounters them in normal workflow.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-21T23:16:09.596778-08:00","updated_at":"2025-12-23T04:20:51.887338-08:00","closed_at":"2025-12-23T04:20:51.887338-08:00","dependencies":[{"issue_id":"bd-zwtq","depends_on_id":"bd-tbz3","type":"parent-child","created_at":"2025-11-21T23:16:09.597617-08:00","created_by":"daemon"}]}
|
||||
|
||||
Reference in New Issue
Block a user