bd sync: 2025-12-29 18:48:59
This commit is contained in:
@@ -66,13 +66,14 @@
|
||||
{"id":"bd-2wh","title":"Test pinned for stats","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-18T21:47:09.334108-08:00","updated_at":"2025-12-18T21:47:25.17917-08:00","deleted_at":"2025-12-18T21:47:25.17917-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"bd-2wm2","title":"bd repair: Check comments and events tables for orphans","description":"bd repair currently checks dependencies and labels tables, but the schema also has comments and events tables with issue_id foreign keys that could be orphaned.\n\nAdd orphan detection and cleanup for:\n- comments table (issue_id not in issues)\n- events table (issue_id not in issues)","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-29T12:48:11.563302-08:00","created_by":"stevey","updated_at":"2025-12-29T12:57:43.745176-08:00","closed_at":"2025-12-29T12:57:43.745176-08:00","close_reason":"Implemented in repair.go: added orphan detection for comments/events tables and --json output flag"}
|
||||
{"id":"bd-313v","title":"rpc: Rich mutation events not emitted","description":"The activity command (activity.go) references rich mutation event types (MutationBonded, MutationSquashed, MutationBurned, MutationStatus) that include metadata like OldStatus, NewStatus, ParentID, and StepCount.\n\nHowever, the emitMutation() function in server_core.go:141 only accepts (eventType, issueID) and only populates Type, IssueID, and Timestamp. The additional metadata fields are never set.\n\nNeed to either:\n1. Add an emitRichMutation() function that accepts the additional metadata\n2. Update call sites (close, bond, squash, burn operations) to emit rich events\n\nWithout this fix, the activity feed will never show:\n- Status transitions (in_progress -\u003e closed)\n- Bonded events with step counts\n- Parent molecule relationships\n\nDiscovered during code review of bd-xo1o implementation.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-23T04:06:17.39523-08:00","updated_at":"2025-12-23T04:13:19.205249-08:00","closed_at":"2025-12-23T04:13:19.205249-08:00"}
|
||||
{"id":"bd-34q1","title":"Give --all flag actual meaning in bd list","description":"The --all flag exists but is currently a no-op ('flag provided for CLI familiarity'). Once we change the default to non-closed, --all should override to show all issues including closed.\n\nThis provides backwards compatibility for scripts that depend on seeing all issues.","notes":"## Implementation Plan\n\n### Code Changes (cmd/bd/list.go)\n\n1. **Update --all flag handling** (~line 889):\n```go\n// Currently: listCmd.Flags().Bool(\"all\", false, \"Show all issues (default behavior; flag provided for CLI familiarity)\")\n// Change to:\nlistCmd.Flags().Bool(\"all\", false, \"Show all issues including closed (overrides default filter)\")\n```\n\n2. **Check for --all in Run function** (before applying default filter):\n```go\nallFlag, _ := cmd.Flags().GetBool(\"all\")\nif status == \"\" \u0026\u0026 !allFlag {\n // Apply default non-closed filter\n filter.ExcludeStatus = []types.Status{\"closed\"}\n}\n// If --all is set, no ExcludeStatus applied = show everything\n```\n\n### Testing\n- `bd list --all` shows all issues including closed\n- `bd list` shows non-closed (from bd-mypl)\n- `bd list --all --status=open` - --all is ignored when explicit status given\n\n### Documentation\n- Update --help text\n- Add to migration guide: \"Use --all for previous default behavior\"","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-29T15:25:07.522236-08:00","created_by":"stevey","updated_at":"2025-12-29T15:26:44.938088-08:00","labels":["gh:788"],"dependencies":[{"issue_id":"bd-34q1","depends_on_id":"bd-mypl","type":"blocks","created_at":"2025-12-29T15:25:20.671576-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-34q1","title":"Give --all flag actual meaning in bd list","description":"The --all flag exists but is currently a no-op ('flag provided for CLI familiarity'). Once we change the default to non-closed, --all should override to show all issues including closed.\n\nThis provides backwards compatibility for scripts that depend on seeing all issues.","notes":"## Implementation Plan\n\n### Code Changes (cmd/bd/list.go)\n\n1. **Update --all flag handling** (~line 889):\n```go\n// Currently: listCmd.Flags().Bool(\"all\", false, \"Show all issues (default behavior; flag provided for CLI familiarity)\")\n// Change to:\nlistCmd.Flags().Bool(\"all\", false, \"Show all issues including closed (overrides default filter)\")\n```\n\n2. **Check for --all in Run function** (before applying default filter):\n```go\nallFlag, _ := cmd.Flags().GetBool(\"all\")\nif status == \"\" \u0026\u0026 !allFlag {\n // Apply default non-closed filter\n filter.ExcludeStatus = []types.Status{\"closed\"}\n}\n// If --all is set, no ExcludeStatus applied = show everything\n```\n\n### Testing\n- `bd list --all` shows all issues including closed\n- `bd list` shows non-closed (from bd-mypl)\n- `bd list --all --status=open` - --all is ignored when explicit status given\n\n### Documentation\n- Update --help text\n- Add to migration guide: \"Use --all for previous default behavior\"","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-29T15:25:07.522236-08:00","created_by":"stevey","updated_at":"2025-12-29T17:53:30.241263-08:00","closed_at":"2025-12-29T17:53:30.241263-08:00","close_reason":"Implemented in single commit","labels":["gh:788"],"dependencies":[{"issue_id":"bd-34q1","depends_on_id":"bd-mypl","type":"blocks","created_at":"2025-12-29T15:25:20.671576-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-379","title":"Implement `bd setup cursor` for Cursor IDE integration","description":"Create a `bd setup cursor` command that integrates Beads workflow into Cursor IDE via .cursorrules file. Unlike Claude Code (which has hooks), Cursor uses a static rules file to provide context to its AI.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-11-11T23:32:22.170083-08:00","updated_at":"2025-12-25T22:26:54.445182-08:00","closed_at":"2025-12-25T22:26:54.445182-08:00"}
|
||||
{"id":"bd-3852","title":"Add orphan detection migration","description":"Create migration to detect orphaned children in existing databases. Query: SELECT id FROM issues WHERE id LIKE '%.%' AND substr(id, 1, instr(id || '.', '.') - 1) NOT IN (SELECT id FROM issues). Log results, let user decide action (delete orphans or convert to top-level).","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-04T12:32:30.727044-08:00","updated_at":"2025-12-21T21:00:05.041582-08:00","closed_at":"2025-12-21T21:00:05.041582-08:00"}
|
||||
{"id":"bd-396j","title":"GetBlockedIssues shows external deps as blocking even when satisfied","description":"GetBlockedIssues (ready.go:385-493) shows external:* refs in the blocked_by list but doesn't check if they're actually satisfied using CheckExternalDep.\n\nThis can be confusing - an issue shows as blocked by external:project:capability even if that capability has been shipped (closed issue with provides: label exists).\n\nOptions:\n1. Call CheckExternalDep for each external ref and filter satisfied ones from blocked_by\n2. Add a note in output indicating external deps need lazy resolution\n3. Document this is expected behavior (bd blocked shows all deps, bd ready shows resolved state)\n\nRelated: GetReadyWork correctly filters by external deps, but GetBlockedIssues doesn't.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-21T23:45:05.286304-08:00","updated_at":"2025-12-22T21:48:38.086451-08:00","closed_at":"2025-12-22T21:48:38.086451-08:00","dependencies":[{"issue_id":"bd-396j","depends_on_id":"bd-zmmy","type":"discovered-from","created_at":"2025-12-21T23:45:05.286971-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-3bsz","title":"gt mail send: support reading message body from stdin","description":"Currently gt mail send -m requires the message as a command-line argument, which causes shell escaping issues with backticks, quotes, and special characters.\n\nAdd support for reading message body from stdin:\n- gt mail send addr -s 'Subject' --stdin # Read body from stdin\n- echo 'body' | gt mail send addr -s 'Subject' -m - # Convention: -m - means stdin\n\nThis would allow:\ncat \u003c\u003c'EOF' | gt mail send addr -s 'Subject' --stdin\nMessage with `backticks` and 'quotes' safely\nEOF\n\nWithout this, agents struggle to send handoff messages containing code snippets.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-23T03:21:39.496208-08:00","updated_at":"2025-12-23T12:19:44.443554-08:00","closed_at":"2025-12-23T12:19:44.443554-08:00"}
|
||||
{"id":"bd-3ggb","title":"Rebuild local binary","description":"Build and verify: go build -o bd ./cmd/bd \u0026\u0026 ./bd version","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-18T22:43:03.101428-08:00","updated_at":"2025-12-24T16:25:30.089869-08:00","dependencies":[{"issue_id":"bd-3ggb","depends_on_id":"bd-qqc","type":"parent-child","created_at":"2025-12-18T22:43:16.748289-08:00","created_by":"daemon"},{"issue_id":"bd-3ggb","depends_on_id":"bd-4y4g","type":"blocks","created_at":"2025-12-18T22:43:20.950376-08:00","created_by":"daemon"}],"deleted_at":"2025-12-24T16:25:30.089869-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"bd-3jcw","title":"activity.go: Missing test coverage","description":"The new activity.go command (from bd-xo1o.3) has no test coverage. At minimum, tests should cover:\n- parseDurationString() for various formats (5m, 1h, 2d, invalid)\n- filterEvents() for --mol and --type filtering\n- formatEvent() and getEventDisplay() for all mutation types\n\nDiscovered during code review of bd-xo1o implementation.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T04:06:15.563579-08:00","updated_at":"2025-12-23T04:14:56.150151-08:00","closed_at":"2025-12-23T04:14:56.150151-08:00"}
|
||||
{"id":"bd-3roq","title":"Add 'tracks' relation type for convoy tracking","description":"Add a new relation type 'tracks' for convoy → issue relationships.\n\nUnlike 'depends_on':\n- Non-blocking (tracked issue doesn't block convoy)\n- Cross-prefix capable (convoy in hq-* tracks issues in gt-*, bd-*)\n- Supports reverse lookup ('what convoys track this issue?')\n\nUsed by convoys to track issues across project chains without creating dependencies.\n\nRelated: hq-7h8jx (Convoy System epic in town beads)","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-29T18:47:00.581639-08:00","created_by":"mayor","updated_at":"2025-12-29T18:47:00.581639-08:00"}
|
||||
{"id":"bd-3sz0","title":"Auto-repair stale merge driver configs with invalid placeholders","description":"Old bd versions (\u003c0.24.0) installed merge driver with invalid placeholders %L %R instead of %A %B. Add detection to bd doctor --fix: check if git config merge.beads.driver contains %L or %R, auto-repair to 'bd merge %A %O %A %B'. One-time migration for users who initialized with old versions.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-21T23:16:10.762808-08:00","updated_at":"2025-12-23T23:48:18.11858-08:00","closed_at":"2025-12-23T23:48:18.11858-08:00","dependencies":[{"issue_id":"bd-3sz0","depends_on_id":"bd-tbz3","type":"parent-child","created_at":"2025-11-21T23:16:10.763612-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-3u8m","title":"Create bd admin parent command and nest cleanup/compact/reset","description":"## Task\nCreate new `bd admin` parent command and move:\n- `bd cleanup` → `bd admin cleanup`\n- `bd compact` → `bd admin compact`\n- `bd reset` → `bd admin reset`\n\n## Implementation\n\n### 1. Create admin.go\nNew file with parent command:\n```go\nvar adminCmd = \u0026cobra.Command{\n Use: \"admin\",\n Short: \"Administrative commands for database maintenance\",\n Long: `Administrative commands for beads database maintenance.\n\nThese commands are for advanced users and should be used carefully:\n cleanup Delete closed issues and prune expired tombstones\n compact Compact old closed issues to save space\n reset Remove all beads data and configuration\n\nFor routine operations, prefer 'bd doctor --fix'.`,\n}\n\nfunc init() {\n rootCmd.AddCommand(adminCmd)\n adminCmd.AddCommand(cleanupCmd)\n adminCmd.AddCommand(compactCmd)\n adminCmd.AddCommand(resetCmd)\n}\n```\n\n### 2. Update cleanup.go, compact.go, reset.go\n- Remove `rootCmd.AddCommand()` from each init()\n- Keep all existing functionality\n\n### 3. Create hidden aliases for backwards compatibility\nTop-level hidden commands that forward to admin subcommands.\n\n### 4. Update docs (major updates)\n- docs/CLI_REFERENCE.md - cleanup, compact references\n- docs/QUICKSTART.md - compact, cleanup references\n- docs/FAQ.md - compact references\n- docs/TROUBLESHOOTING.md - compact references\n- docs/DELETIONS.md - compact reference\n- docs/CONFIG.md - compact reference\n- skills/beads/SKILL.md - compact reference\n- commands/compact.md - update all examples\n- examples/compaction/README.md - update examples\n\n## Files to create\n- cmd/bd/admin.go\n\n## Files to modify\n- cmd/bd/cleanup.go\n- cmd/bd/compact.go\n- cmd/bd/reset.go\n- cmd/bd/main.go (aliases)\n- Multiple docs (see list above)\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-27T15:10:41.836341-08:00","created_by":"mayor","updated_at":"2025-12-27T16:07:30.707323-08:00","closed_at":"2025-12-27T16:07:30.707323-08:00"}
|
||||
{"id":"bd-3uje","title":"Test issue for pin --for","description":"Testing the pin --for flag","status":"tombstone","priority":3,"issue_type":"task","created_at":"2025-12-22T02:53:43.075522-08:00","updated_at":"2025-12-22T02:54:07.973855-08:00","deleted_at":"2025-12-22T02:54:07.973855-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -315,6 +316,7 @@
|
||||
{"id":"bd-du9h","title":"Add Validation type and validations field to Issue","description":"Add Validation struct (Validator *EntityRef, Outcome string, Timestamp time.Time, Score *float32) and Validations []Validation field to Issue. Tracks who validated/approved work completion. Core to HOP proof-of-stake concept - validators stake reputation on approvals.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-22T17:53:37.725701-08:00","updated_at":"2025-12-22T20:08:59.925028-08:00","closed_at":"2025-12-22T20:08:59.925028-08:00","dependencies":[{"issue_id":"bd-du9h","depends_on_id":"bd-7pwh","type":"parent-child","created_at":"2025-12-22T17:53:43.470984-08:00","created_by":"daemon"},{"issue_id":"bd-du9h","depends_on_id":"bd-nmch","type":"blocks","created_at":"2025-12-22T17:53:47.896552-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-duyg","title":"Feature: bd swarm list - discover existing swarm molecules","description":"No command to list existing swarm molecules.\n\nAdd `bd swarm list` to show all swarm molecules:\n\n```\nbd swarm list\n\nActive swarms:\n bd-xyz: Swarm: Feature X (3/10 complete, 2 active)\n bd-abc: Swarm: Bug fixes (0/5 complete)\n```\n\nCould also be achieved via `bd list --mol-type=swarm` but dedicated command would show richer info.","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-28T21:38:11.773961-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T22:03:49.97246-08:00","closed_at":"2025-12-28T22:03:49.97246-08:00","dependencies":[{"issue_id":"bd-duyg","depends_on_id":"bd-2ubv","type":"parent-child","created_at":"2025-12-28T21:38:44.775264-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-dwh","title":"Implement or remove ExpectExit/ExpectStdout verification fields","description":"The Verification struct in internal/types/workflow.go has ExpectExit and ExpectStdout fields that are never used by workflowVerifyCmd. Either implement the functionality or remove the dead fields.","status":"tombstone","priority":3,"issue_type":"task","created_at":"2025-12-17T22:23:02.708627-08: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-dx6e","title":"bd activity --town: Aggregated town feed","description":"Add --town flag to bd activity for aggregated cross-rig feed.\n\nBehavior:\n- Uses routes.jsonl to discover all rigs\n- Aggregates activity from all rig beads\n- Essential for Deacon's convoy tracking and cross-rig dep resolution\n\nUsage:\n bd activity --follow --town # Stream all rig activity\n\nRelated: hq-7h8jx (Convoy System epic in town beads)","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-29T18:47:03.057447-08:00","created_by":"mayor","updated_at":"2025-12-29T18:47:03.057447-08:00"}
|
||||
{"id":"bd-dxtc","title":"Test daemon RPC delete handler","description":"Add tests for the daemon-side RPC delete handler that processes delete requests from clients.\n\n## What needs testing\n- Daemon's Delete RPC handler implementation\n- Processing delete requests from RPC clients\n- Cascade deletion at daemon level\n- Force deletion at daemon level\n- Dry-run mode validation\n- Error responses to clients\n- Dependency validation before deletion\n- Tombstone creation via daemon\n\n## Test scenarios\n1. Delete single issue via RPC\n2. Delete multiple issues via RPC\n3. Cascade deletion of dependents\n4. Force delete with orphaned dependents\n5. Dry-run returns what would be deleted without actual deletion\n6. Error: invalid issue IDs\n7. Error: insufficient permissions\n8. Error: dependency blocks deletion (without force/cascade)\n\n## Related\n- Parent epic: bd-kyll\n- Original issue: bd-7z4","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-18T13:08:33.532111042-07:00","updated_at":"2025-12-23T23:48:47.399582-08:00","closed_at":"2025-12-23T23:48:47.399582-08:00","dependencies":[{"issue_id":"bd-dxtc","depends_on_id":"bd-kyll","type":"parent-child","created_at":"2025-12-18T13:08:33.534367367-07:00","created_by":"mhwilkie"}]}
|
||||
{"id":"bd-dyy","title":"Review PR #513: fix hooks install docs","description":"Review and merge PR #513 from aspiers. This PR fixes incorrect docs for how to install git hooks - updates README to use bd hooks install instead of removed install.sh. Simple 1-line change. URL: https://github.com/anthropics/beads/pull/513","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-13T08:15:14.838772+11: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-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"}
|
||||
@@ -373,6 +375,7 @@
|
||||
{"id":"bd-haxi","title":"Restart running daemons","description":"Kill and restart any running bd daemons to pick up new version: pkill -f 'bd daemon' \u0026\u0026 bd daemon --start","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-21T13:52:33.066262-08:00","updated_at":"2025-12-21T13:53:49.757078-08:00","deleted_at":"2025-12-21T13:53:49.757078-08:00","deleted_by":"stevey","delete_reason":"manual delete","original_type":"task"}
|
||||
{"id":"bd-haze","title":"Fix beads-9yc: pinned column missing from schema. gt mail...","description":"Fix beads-9yc: pinned column missing from schema. gt mail send fails because some beads DBs lack the pinned column. Add migration to ensure it exists.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-19T15:05:33.394801-08:00","updated_at":"2025-12-21T15:26:35.171757-08:00","closed_at":"2025-12-21T15:26:35.171757-08:00"}
|
||||
{"id":"bd-hhv3","title":"Test and document molecular chemistry commands","description":"## Context\n\nImplemented the molecular chemistry UX commands per the design docs:\n- gastown/mayor/rig/docs/molecular-chemistry.md\n- gastown/mayor/rig/docs/chemistry-design-changes.md\n\nCommit: cadf798b\n\n## New Commands to Test\n\n| Command | Purpose |\n|---------|---------|\n| `bd pour \u003cproto\u003e` | Instantiate proto as persistent mol |\n| `bd wisp create \u003cproto\u003e` | Instantiate proto as ephemeral wisp |\n| `bd hook [--agent]` | Inspect what's on an agent's hook |\n\n## Enhanced Commands to Test\n\n| Command | Changes |\n|---------|---------|\n| `bd mol spawn --pour` | New flag, `--persistent` deprecated |\n| `bd mol bond --pour` | Force liquid phase on wisp target |\n| `bd pin --for \u003cagent\u003e --start` | Chemistry workflow support |\n\n## Test Scenarios\n\n1. **bd pour**: Create persistent mol from a proto\n - Verify creates in .beads/ (not .beads-wisp/)\n - Verify variable substitution works\n - Verify --dry-run works\n\n2. **bd wisp create**: Create ephemeral wisp from proto\n - Verify creates in .beads-wisp/\n - Verify bd wisp list shows it\n - Verify bd mol squash works\n - Verify bd mol burn works\n\n3. **bd hook**: Inspect pinned work\n - Pin something, verify bd hook shows it\n - Test --agent flag\n - Test --json output\n\n4. **bd pin --for**: Assign work to agent\n - Verify sets pinned=true\n - Verify sets assignee\n - Verify --start sets status=in_progress\n\n5. **bd mol bond --pour**: Force liquid on wisp target\n - Bond a proto to a wisp with --pour\n - Verify spawned issues are in .beads/\n\n## Documentation\n\n- Update CLAUDE.md with new commands\n- Add examples to --help output (already done)\n- Consider adding to docs/CLI_REFERENCE.md\n\n## Code Review\n\n- Check for edge cases\n- Verify error messages are helpful\n- Ensure --json output is consistent","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-22T02:22:10.906646-08:00","updated_at":"2025-12-22T02:55:37.983703-08:00","closed_at":"2025-12-22T02:55:37.983703-08:00"}
|
||||
{"id":"bd-hj0s","title":"Add 'convoy' issue type with reactive completion","description":"Add convoy as a new issue type with reactive completion semantics.\n\nBehavior:\n- Convoy has list of tracked issues (via 'tracks' relation)\n- When all tracked issues close (including wontfix), convoy auto-closes\n- Supports cross-prefix tracking (convoy in hq-* tracks gt-*, bd-*)\n\nImplementation:\n- New type: convoy\n- Reactive completion trigger on tracked issue closure\n- Query support: 'bd list --type=convoy'\n\nRelated: hq-7h8jx (Convoy System epic in town beads)","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-29T18:47:02.011011-08:00","created_by":"mayor","updated_at":"2025-12-29T18:47:02.011011-08:00","dependencies":[{"issue_id":"bd-hj0s","depends_on_id":"bd-3roq","type":"blocks","created_at":"2025-12-29T18:47:10.59211-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-hkr6","title":"GH#518: Document bd setup command","description":"bd setup is undiscoverable. Add to README/docs. Currently only findable by grepping source. See GitHub issue #518.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-16T01:03:54.664668-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":"task"}
|
||||
{"id":"bd-hlsw","title":"Add sync resilience guardrails for forced pushes and prefix mismatches","description":"Beads can get into unrecoverable sync states when remote forces pushes occur (e.g., rebases) combined with prefix mismatches from multi-worker scenarios. Add detection, prevention, and auto-recovery features to handle this gracefully.","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-14T10:40:14.872875259-07:00","updated_at":"2025-12-14T10:40:14.872875259-07:00"}
|
||||
{"id":"bd-hlsw.3","title":"Auto-recovery mode (bd sync --auto-recover)","description":"Add bd sync --auto-recover flag that: detects problematic sync state, backs up .beads/issues.db with timestamp, rebuilds DB from JSONL atomically, verifies consistency, reports what was fixed. Provides safety valve when sync integrity fails.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-14T10:40:20.599836875-07:00","updated_at":"2025-12-14T10:40:20.599836875-07:00","dependencies":[{"issue_id":"bd-hlsw.3","depends_on_id":"bd-hlsw","type":"parent-child","created_at":"2025-12-14T10:40:20.600435888-07:00","created_by":"daemon"}]}
|
||||
@@ -424,7 +427,7 @@
|
||||
{"id":"bd-kff0","title":"Integrate detect-pollution into bd doctor","description":"## Task\nMove `bd detect-pollution` → `bd doctor --check=pollution`\n\n## Current state\n- detect-pollution already shows deprecation hint pointing to doctor\n- Doctor command exists with multiple checks\n\n## Implementation\n\n### 1. Update doctor.go\n- Add pollution check to the doctor checks\n- Add `--check=pollution` flag option\n- Integrate detect-pollution logic\n\n### 2. Update detect_pollution.go\n- Mark as hidden (deprecated)\n- Forward to doctor --check=pollution\n- Keep for one release cycle\n\n### 3. Update docs\n- Remove detect-pollution from any command lists\n- Update doctor docs to include pollution check\n\n## Files to modify\n- cmd/bd/doctor.go\n- cmd/bd/detect_pollution.go\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-27T15:11:10.46326-08:00","created_by":"mayor","updated_at":"2025-12-27T16:04:58.471341-08:00","closed_at":"2025-12-27T16:04:58.471341-08:00"}
|
||||
{"id":"bd-kkka","title":"Dead code: fetchAndRebaseInWorktree() marked DEPRECATED but still exists","description":"attached_args: Remove dead code fetchAndRebaseInWorktree\n\nThe function fetchAndRebaseInWorktree() in internal/syncbranch/worktree.go (lines 811-830) is marked as DEPRECATED with a comment:\n\n```go\n// fetchAndRebaseInWorktree is DEPRECATED - kept for reference only.\n// Use contentMergeRecovery instead to avoid tombstone resurrection.\n```\n\nSince contentMergeRecovery() is the replacement and is being used, this dead code should be removed to reduce maintenance burden.\n\nLocation: internal/syncbranch/worktree.go:811-830","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-28T15:32:21.97865-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T16:41:36.721496-08:00","closed_at":"2025-12-28T16:41:36.721496-08:00","dependencies":[{"issue_id":"bd-kkka","depends_on_id":"bd-784c","type":"parent-child","created_at":"2025-12-28T15:38:04.241483-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-knta","title":"Deacon Patrol","description":"Mayor's daemon patrol loop for handling callbacks, health checks, and cleanup.","status":"tombstone","priority":2,"issue_type":"molecule","created_at":"2025-12-26T13:08:21.233771-08:00","updated_at":"2025-12-27T00:10:54.179341-08:00","deleted_at":"2025-12-27T00:10:54.179341-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"molecule"}
|
||||
{"id":"bd-kp9y","title":"gt swarm dispatch command not working","description":"The 'gt swarm dispatch' command shown in help doesn't appear to work as expected.\n\n**Observed:**\n```\n$ gt swarm dispatch bd-784c\n[prints help text instead of dispatching]\n```\n\n**Expected:**\nShould dispatch the next ready task from the epic to an available worker.\n\n**Workaround:**\nHad to manually use 'gt sling \u003cissue\u003e \u003cpolecat\u003e' for each task dispatch.\n\n**Impact:**\n- Manual task dispatch defeats swarm automation\n- Coordinator has to track which tasks are ready and which polecats are free\n\n**Suggestion:**\nImplement or fix 'gt swarm dispatch' to:\n1. Find next unassigned task in epic\n2. Find idle polecat in swarm\n3. Sling task to polecat automatically","status":"open","priority":3,"issue_type":"bug","created_at":"2025-12-28T16:18:10.320094-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T16:18:10.320094-08:00"}
|
||||
{"id":"bd-kp9y","title":"gt swarm dispatch command not working","description":"The 'gt swarm dispatch' command shown in help doesn't appear to work as expected.\n\n**Observed:**\n```\n$ gt swarm dispatch bd-784c\n[prints help text instead of dispatching]\n```\n\n**Expected:**\nShould dispatch the next ready task from the epic to an available worker.\n\n**Workaround:**\nHad to manually use 'gt sling \u003cissue\u003e \u003cpolecat\u003e' for each task dispatch.\n\n**Impact:**\n- Manual task dispatch defeats swarm automation\n- Coordinator has to track which tasks are ready and which polecats are free\n\n**Suggestion:**\nImplement or fix 'gt swarm dispatch' to:\n1. Find next unassigned task in epic\n2. Find idle polecat in swarm\n3. Sling task to polecat automatically","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-28T16:18:10.320094-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-29T18:30:05.386394-08:00","closed_at":"2025-12-29T18:30:05.386394-08:00","close_reason":"Moved to gastown: gt-s94gq (this is a gt command, not beads)"}
|
||||
{"id":"bd-kptp","title":"Merge: bd-qioh","description":"branch: polecat/Errata\ntarget: main\nsource_issue: bd-qioh\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T13:46:08.832073-08:00","updated_at":"2025-12-23T19:12:08.350136-08:00","closed_at":"2025-12-23T19:12:08.350136-08:00"}
|
||||
{"id":"bd-kpy","title":"Sync race: rebase-based divergence recovery resurrects tombstones","description":"## Problem\nWhen two repos sync simultaneously, tombstones can be resurrected:\n\n1. Repo A deletes issue (creates tombstone), pushes to sync branch\n2. Repo B (with 'closed' status) exports and tries to push\n3. Push fails (non-fast-forward)\n4. fetchAndRebaseInWorktree does git rebase\n5. Git rebase applies B's 'closed' patch on top of A's 'tombstone'\n6. TEXT-level rebase doesn't invoke beads merge driver\n7. 'closed' overwrites 'tombstone' = resurrection\n\n## Root Cause\nCommitToSyncBranch uses git rebase for divergence recovery, but rebase is text-level, not content-level. The proper content-level merge in PullFromSyncBranch handles tombstones correctly, but it runs AFTER the problematic push.\n\n## Proposed Fix\nOption 1: Don't push in CommitToSyncBranch - let PullFromSyncBranch handle merge+push\nOption 2: Replace git rebase with content-level merge in fetchAndRebaseInWorktree\nOption 3: Reorder sync steps: Export → Pull/Merge → Commit → Push\n\n## Workaround Applied\nExcluded tombstones from orphan detection warnings (commit 1e97d9cc).\n\nSee also: bd-3852 (Add orphan detection migration)","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-17T23:29:33.049272-08:00","updated_at":"2025-12-24T22:41:09.184574-08:00","closed_at":"2025-12-24T22:41:09.184574-08:00"}
|
||||
{"id":"bd-kqo1","title":"Show pin indicator in bd list output","description":"Add a visual indicator (e.g., pin emoji or [P] marker) for pinned issues in bd list output so users can easily identify them.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-18T23:33:47.402549-08:00","updated_at":"2025-12-21T11:30:27.272768-08:00","closed_at":"2025-12-21T11:30:27.272768-08:00","dependencies":[{"issue_id":"bd-kqo1","depends_on_id":"bd-0vg","type":"blocks","created_at":"2025-12-18T23:33:56.771791-08:00","created_by":"daemon"},{"issue_id":"bd-kqo1","depends_on_id":"bd-7h5","type":"blocks","created_at":"2025-12-18T23:34:07.985271-08:00","created_by":"daemon"}]}
|
||||
@@ -551,7 +554,7 @@
|
||||
{"id":"bd-muw","title":"Add empty tasks validation in workflow create","description":"workflow.go:321 will panic if wf.Tasks is empty. Add validation that len(wf.Tasks) \u003e 0 before accessing wf.Tasks[0].","status":"tombstone","priority":3,"issue_type":"bug","created_at":"2025-12-17T22:23:00.75707-08: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"}
|
||||
{"id":"bd-mv6h","title":"Add test coverage for external dep edge cases","description":"During code review of bd-zmmy, identified missing test coverage:\n\n1. RemoveDependency with external ref target (will fail - see bd-a3sj)\n2. GetBlockedIssues with mix of local and external blockers\n3. GetDependencyTree with external deps\n4. AddDependency cycle detection with external refs (should be skipped?)\n5. External dep resolution with WAL mode database\n6. External dep resolution when target project has no .beads directory\n7. External dep resolution with invalid external: format variations\n\nPriority 2 because bd-a3sj is a real bug that tests would catch.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T23:45:37.50093-08:00","updated_at":"2025-12-22T22:32:09.515096-08:00","closed_at":"2025-12-22T22:32:09.515096-08:00","dependencies":[{"issue_id":"bd-mv6h","depends_on_id":"bd-zmmy","type":"discovered-from","created_at":"2025-12-21T23:45:37.501495-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-mwl7","title":"Mol Mall: Formula marketplace using GitHub as backend","description":"Create a marketplace for sharing molecule formulas using GitHub repos as the hosting backend.\n\n## Why GitHub?\n\nGitHub solves multiple problems at once:\n- **Hosting**: Raw file URLs for formula.json\n- **Versioning**: Git tags (v1.0.0, v1.2.0)\n- **Auth**: GitHub tokens for private formulas\n- **Discovery**: GitHub search, topics, stars\n- **Collaboration**: PRs for contributions, issues for bugs\n- **Organizations**: Natural scoping (@anthropic/, @gastown/)\n\n## URL Scheme\n\n```bash\n# Direct GitHub URL\nbd mol install github.com/anthropics/mol-code-review\n\n# With version tag\nbd mol install github.com/anthropics/mol-code-review@v1.2.0\n\n# Shorthand (via registry lookup)\nbd mol install @anthropic/mol-code-review\n```\n\n## Architecture\n\n### Distributed Model (like Go modules)\nEach formula lives in its own repo:\n```\ngithub.com/anthropics/mol-code-review/\n├── formula.json # The formula\n├── README.md # Documentation\n└── CHANGELOG.md # Version history\n```\n\n### Optional Registry (for discovery)\n```\ngithub.com/anthropics/mol-mall/\n└── registry.json # Index pointing to formula repos\n```\n\n## Child Issues\n\n1. `bd mol export` - Proto → Formula file\n2. `bd mol promote` - Distilled proto → Catalog proto (one step)\n3. `bd mol install` - GitHub → Local proto\n4. `bd mol update` - Check for newer versions\n5. `bd mol search` - Find formulas (GitHub API)\n6. `bd mol publish` - Push formula to GitHub repo\n7. Formula versioning - Version field + git tag integration\n8. Installation tracking - .beads/installed.json\n\n## ID Namespace Design\n\n| Entity | ID Format | Example |\n|--------|-----------|---------|\n| Formula (GitHub) | `github.com/org/repo` | `github.com/anthropics/mol-code-review` |\n| Catalog proto (local) | `mol-name` | `mol-code-review` |\n| Distilled proto | `\u003cdb\u003e-proto-xxx` | `bd-proto-a7f` |\n| Poured instance | `\u003cdb\u003e-mol-xxx` | `gt-mol-b8c` |\n| Wisp instance | `\u003cdb\u003e-wisp-xxx` | `hq-wisp-d9e` |\n","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-25T12:05:05.848017-08:00","updated_at":"2025-12-25T12:09:39.767832-08:00","closed_at":"2025-12-25T12:09:39.767832-08:00"}
|
||||
{"id":"bd-mypl","title":"Default bd list to non-closed issues","description":"Change bd list default from showing all issues to showing only actionable issues (open, in_progress, blocked, deferred). This addresses GH#788 where agents get context blown out by closed issues.\n\nCurrent: bd list shows everything including closed\nProposed: bd list shows non-closed by default\n\nThis is the core fix - other enhancements depend on this change.","notes":"## Implementation Plan\n\n### Code Changes (cmd/bd/list.go)\n\n1. **Add new filter logic in Run function** (~line 393-399):\n```go\n// Default to non-closed if no status filter specified\nif status == \"\" \u0026\u0026 \\!cmd.Flags().Changed(\"all\") {\n // Show actionable issues by default (GH#788)\n filter.ExcludeStatus = []types.Status{\"closed\"}\n}\n```\n\n2. **Need to add ExcludeStatus to IssueFilter** (internal/types/types.go):\n```go\ntype IssueFilter struct {\n // ... existing fields ...\n ExcludeStatus []Status // Exclude these statuses\n}\n```\n\n3. **Update SearchIssues query** (internal/storage/sqlite/issues.go):\n```go\nif len(filter.ExcludeStatus) \u003e 0 {\n placeholders := make([]string, len(filter.ExcludeStatus))\n for i, s := range filter.ExcludeStatus {\n placeholders[i] = \"?\"\n args = append(args, string(s))\n }\n conditions = append(conditions, \n fmt.Sprintf(\"status NOT IN (%s)\", strings.Join(placeholders, \",\")))\n}\n```\n\n### Testing\n- Verify `bd list` shows open, in_progress, blocked, deferred (not closed)\n- Verify `bd list --status=closed` still works\n- Verify `bd list --all` shows everything (requires bd-34q1)\n\n### Backwards Compatibility\n- Scripts using `bd list | grep` may get fewer results\n- Document in changelog: \"bd list now defaults to non-closed issues\"","status":"open","priority":1,"issue_type":"feature","created_at":"2025-12-29T15:25:06.38667-08:00","created_by":"stevey","updated_at":"2025-12-29T15:25:57.241819-08:00","labels":["gh:788"]}
|
||||
{"id":"bd-mypl","title":"Default bd list to non-closed issues","description":"Change bd list default from showing all issues to showing only actionable issues (open, in_progress, blocked, deferred). This addresses GH#788 where agents get context blown out by closed issues.\n\nCurrent: bd list shows everything including closed\nProposed: bd list shows non-closed by default\n\nThis is the core fix - other enhancements depend on this change.","notes":"## Implementation Plan\n\n### Code Changes (cmd/bd/list.go)\n\n1. **Add new filter logic in Run function** (~line 393-399):\n```go\n// Default to non-closed if no status filter specified\nif status == \"\" \u0026\u0026 \\!cmd.Flags().Changed(\"all\") {\n // Show actionable issues by default (GH#788)\n filter.ExcludeStatus = []types.Status{\"closed\"}\n}\n```\n\n2. **Need to add ExcludeStatus to IssueFilter** (internal/types/types.go):\n```go\ntype IssueFilter struct {\n // ... existing fields ...\n ExcludeStatus []Status // Exclude these statuses\n}\n```\n\n3. **Update SearchIssues query** (internal/storage/sqlite/issues.go):\n```go\nif len(filter.ExcludeStatus) \u003e 0 {\n placeholders := make([]string, len(filter.ExcludeStatus))\n for i, s := range filter.ExcludeStatus {\n placeholders[i] = \"?\"\n args = append(args, string(s))\n }\n conditions = append(conditions, \n fmt.Sprintf(\"status NOT IN (%s)\", strings.Join(placeholders, \",\")))\n}\n```\n\n### Testing\n- Verify `bd list` shows open, in_progress, blocked, deferred (not closed)\n- Verify `bd list --status=closed` still works\n- Verify `bd list --all` shows everything (requires bd-34q1)\n\n### Backwards Compatibility\n- Scripts using `bd list | grep` may get fewer results\n- Document in changelog: \"bd list now defaults to non-closed issues\"","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-29T15:25:06.38667-08:00","created_by":"stevey","updated_at":"2025-12-29T17:53:30.217188-08:00","closed_at":"2025-12-29T17:53:30.217188-08:00","close_reason":"Implemented in single commit","labels":["gh:788"]}
|
||||
{"id":"bd-n386","title":"Improve test coverage for internal/daemon (27.3% → 60%)","description":"The daemon package has only 27.3% test coverage. The daemon is critical for background operations and reliability.\n\nKey areas needing tests:\n- Daemon autostart logic\n- Socket handling\n- PID file management\n- Health checks\n\nCurrent coverage: 27.3%\nTarget coverage: 60%","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T20:43:00.895238-08:00","updated_at":"2025-12-23T22:36:08.583672-08:00","closed_at":"2025-12-23T22:36:08.583672-08:00"}
|
||||
{"id":"bd-n3v","title":"Error committing to sync branch: failed to create worktree","description":"\u003e bd sync --no-daemon\n→ Exporting pending changes to JSONL...\n→ Committing changes to sync branch 'beads-sync'...\nError committing to sync branch: failed to create worktree: failed to create worktree parent directory: mkdir /var/home/matt/dev/beads/fix-ci/.git: not a directory","notes":"**Problem Diagnosed**: The `bd sync` command was failing with \"mkdir /var/home/matt/dev/beads/fix-ci/.git: not a directory\" because it was being executed from the wrong directory.\n\n**Root Cause**: The command was run from `/var/home/matt/dev/beads` (where the `fix-ci` worktree exists) instead of the main repository directory `/var/home/matt/dev/beads/main`. Since `fix-ci` is a git worktree with a `.git` file (not directory), the worktree creation logic failed when trying to create `\u003ccurrent_dir\u003e/.git/beads-worktrees/\u003cbranch\u003e`.\n\n**Solution Verified**: Execute `bd sync` from the main repository directory:\n```bash\ncd main \u0026\u0026 bd sync --dry-run\n```\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-05T15:25:24.514998248-07:00","updated_at":"2025-12-24T00:25:13.040406-08:00","closed_at":"2025-12-24T00:25:13.040406-08:00"}
|
||||
{"id":"bd-n4td","title":"Add warning when staleness check errors","description":"## Problem\n\nWhen ensureDatabaseFresh() calls CheckStaleness() and it errors (corrupted metadata, permission issues, etc.), we silently proceed with potentially stale data.\n\n**Location:** cmd/bd/staleness.go:27-32\n\n**Scenarios:**\n- Corrupted metadata table\n- Database locked by another process \n- Permission issues reading JSONL file\n- Invalid last_import_time format in DB\n\n## Current Code\n\n```go\nisStale, err := autoimport.CheckStaleness(ctx, store, dbPath)\nif err \\!= nil {\n // If we can't determine staleness, allow operation to proceed\n // (better to show potentially stale data than block user)\n return nil\n}\n```\n\n## Fix\n\n```go\nisStale, err := autoimport.CheckStaleness(ctx, store, dbPath)\nif err \\!= nil {\n fmt.Fprintf(os.Stderr, \"Warning: Could not verify database freshness: %v\\n\", err)\n fmt.Fprintf(os.Stderr, \"Proceeding anyway. Data may be stale.\\n\\n\")\n return nil\n}\n```\n\n## Impact\nMedium - users should know when staleness check fails\n\n## Effort\nEasy - 5 minutes","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-11-20T20:16:34.889997-05:00","updated_at":"2025-12-25T01:21:01.952723-08:00","dependencies":[{"issue_id":"bd-n4td","depends_on_id":"bd-2q6d","type":"blocks","created_at":"2025-11-20T20:18:20.154723-05:00","created_by":"stevey"}],"deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"bug"}
|
||||
@@ -580,7 +583,7 @@
|
||||
{"id":"bd-o91r","title":"Polymorphic bond command: bd mol bond A B","description":"Implement proto-to-proto bonding to create compound protos.\n\nCOMMAND: bd mol bond proto-feature proto-testing [--as proto-feature-tested] [--type sequential]\n\nBEHAVIOR:\n- Load both proto subgraphs\n- Create new compound proto with combined structure\n- B's root becomes child of A's root (sequential) or sibling (parallel)\n- Wire dependencies: B depends on A's leaf nodes (sequential) or runs parallel\n- Store bonded_from metadata for lineage tracking\n\nFLAGS:\n- --as NAME: Custom ID for compound proto (default: generates hash)\n- --type: sequential (default) or parallel\n- --dry-run: Preview compound structure\n\nOUTPUT:\n- New compound proto in catalog\n- Shows combined variable requirements","notes":"UPDATE: bond is now polymorphic - handles proto+proto, proto+mol, and mol+mol based on operand types. Separate 'attach' command eliminated.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-21T00:58:55.604705-08:00","updated_at":"2025-12-21T10:10:25.385995-08:00","closed_at":"2025-12-21T10:10:25.385995-08:00","dependencies":[{"issue_id":"bd-o91r","depends_on_id":"bd-o5xe","type":"parent-child","created_at":"2025-12-21T00:59:51.30026-08:00","created_by":"daemon"},{"issue_id":"bd-o91r","depends_on_id":"bd-mh4w","type":"blocks","created_at":"2025-12-21T00:59:51.569391-08:00","created_by":"daemon"},{"issue_id":"bd-o91r","depends_on_id":"bd-rnnr","type":"blocks","created_at":"2025-12-21T00:59:51.652397-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-o9o","title":"Exclude pinned issues from bd ready","description":"Update bd ready to exclude pinned issues. Pinned issues are context markers, not work items, and should never appear in the ready-to-work list.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-18T23:33:41.979073-08:00","updated_at":"2025-12-21T11:29:41.190567-08:00","closed_at":"2025-12-21T11:29:41.190567-08:00","dependencies":[{"issue_id":"bd-o9o","depends_on_id":"bd-0vg","type":"blocks","created_at":"2025-12-18T23:33:56.392931-08:00","created_by":"daemon"},{"issue_id":"bd-o9o","depends_on_id":"bd-7h5","type":"blocks","created_at":"2025-12-18T23:34:07.612655-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-obep","title":"Spawn-time bonding: --attach flag","description":"Add --attach flag to bd mol spawn for on-the-fly composition.\n\nCOMMAND: bd mol spawn proto-feature --attach proto-docs --attach proto-testing\n\nBEHAVIOR:\n- Spawn the primary proto as normal\n- For each --attach: spawn that proto and wire to primary\n- Attachments become children of primary's root epic\n- Dependencies wired based on bond type (default: sequential)\n\nFLAGS:\n- --attach PROTO: Attach a proto (can repeat)\n- --attach-type TYPE: sequential (default) or parallel for all attachments\n- --after ISSUE: Attachment point for attached protos\n\nVARIABLE HANDLING:\n- All attached protos share variable namespace\n- Warn on variable name conflicts\n- All --var flags apply to all protos","notes":"DESIGN NOTE: This is syntactic sugar. Equivalent to:\n bd mol spawn proto-A\n bd mol bond $new_epic_id proto-B\n \nKeeping as separate task because it's a common UX pattern worth optimizing.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T00:59:06.178092-08:00","updated_at":"2025-12-21T10:42:50.554816-08:00","closed_at":"2025-12-21T10:42:50.554816-08:00","dependencies":[{"issue_id":"bd-obep","depends_on_id":"bd-o5xe","type":"parent-child","created_at":"2025-12-21T00:59:51.368491-08:00","created_by":"daemon"},{"issue_id":"bd-obep","depends_on_id":"bd-o91r","type":"blocks","created_at":"2025-12-21T00:59:51.733369-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-oehv","title":"Add 'rm' as alias for 'remove' in bd dep subcommand","description":"Cobra supports command aliases. Add 'rm' as a short alias for 'remove' in the dep subcommand for convenience.\n\nExample: bd dep rm issue1 issue2 should work the same as bd dep remove issue1 issue2\n\nImplementation: Add Aliases: []string{\"rm\"} to the depRemoveCmd definition.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-29T17:28:04.489734-08:00","created_by":"mayor","updated_at":"2025-12-29T17:28:14.014013-08:00"}
|
||||
{"id":"bd-oehv","title":"Add 'rm' as alias for 'remove' in bd dep subcommand","description":"Cobra supports command aliases. Add 'rm' as a short alias for 'remove' in the dep subcommand for convenience.\n\nExample: bd dep rm issue1 issue2 should work the same as bd dep remove issue1 issue2\n\nImplementation: Add Aliases: []string{\"rm\"} to the depRemoveCmd definition.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-29T17:28:04.489734-08:00","created_by":"mayor","updated_at":"2025-12-29T17:50:11.910495-08:00","closed_at":"2025-12-29T17:50:11.910495-08:00","close_reason":"Added Aliases: []string{\"rm\"} to depRemoveCmd"}
|
||||
{"id":"bd-of2p","title":"Improve version bump molecule with missing steps","description":"During v0.32.1 release, discovered missing steps in the release molecule:\n\n**Missing from molecule:**\n1. Rebuild ~/go/bin/bd (only did ~/.local/bin/bd)\n2. Install beads-mcp from local source: `uv tool install --reinstall ./integrations/beads-mcp`\n3. Restart daemons with `bd daemons killall`\n4. (Optional) Publish beads-mcp to PyPI\n\n**Current molecule steps (bd-6s61):**\n1. Update CHANGELOG.md\n2. Update info.go versionChanges \n3. Run bump-version.sh\n4. Run tests and linting\n5. Update local installation\n6. Commit and push release\n7. Wait for CI\n8. Verify release artifacts\n\n**Proposed additions:**\n- After \"Update local installation\": rebuild BOTH ~/.local/bin/bd AND ~/go/bin/bd\n- Add: \"Install beads-mcp from source\" step\n- Add: \"Restart daemons\" step\n- Add: \"Verify all versions match\" step that checks all artifacts\n\n**Also learned:**\n- Must run from mayor/rig to avoid git conflicts with bd sync (already documented in bump-version.sh)","notes":"CORRECTION: npm publishing IS automated and working!\n\n**Package naming:**\n- OLD: `beads` (npm) - deprecated, stuck at 0.2.1\n- CURRENT: `@beads/bd` (npm) - scoped package, auto-published by CI\n\n**How it works:**\n- CI uses OIDC trusted publishing (no token needed)\n- Workflow: .github/workflows/release.yml → publish-npm job\n- Permissions: `id-token: write` enables GitHub OIDC\n- To install: `npm install -g @beads/bd` (not `npm install beads`)\n\n**All publishing is automated on tag push:**\n1. GitHub Release - goreleaser ✓\n2. PyPI - publish-pypi job ✓\n3. Homebrew - update-homebrew job ✓\n4. npm (@beads/bd) - publish-npm job ✓\n\n**Remaining molecule improvements (local steps only):**\n- Rebuild BOTH ~/.local/bin/bd AND ~/go/bin/bd\n- Install beads-mcp from source: `uv tool install --reinstall ./integrations/beads-mcp`\n- Restart daemons: `bd daemons killall`\n- Run from mayor/rig to avoid git conflicts with bd sync\n- Final verification step to check all local versions match","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-20T22:09:11.845787-08:00","updated_at":"2025-12-22T16:01:18.199132-08:00","closed_at":"2025-12-22T16:01:18.199132-08:00"}
|
||||
{"id":"bd-ohil","title":"refinery Handoff","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-23T04:35:07.488226-08:00","updated_at":"2025-12-29T12:41:09.337507-08:00","deleted_at":"2025-12-29T12:41:09.337507-08:00","deleted_by":"daemon","delete_reason":"orphaned handoff stubs from crash","original_type":"task"}
|
||||
{"id":"bd-ola6","title":"Implement transaction retry logic for SQLITE_BUSY","description":"BEGIN IMMEDIATE fails immediately on SQLITE_BUSY instead of retrying with exponential backoff.\n\nLocation: internal/storage/sqlite/sqlite.go:223-225\n\nProblem:\n- Under concurrent write load, BEGIN IMMEDIATE can fail with SQLITE_BUSY\n- Current implementation fails immediately instead of retrying\n- Results in spurious failures under normal concurrent usage\n\nSolution: Implement exponential backoff retry:\n- Retry up to N times (e.g., 5)\n- Backoff: 10ms, 20ms, 40ms, 80ms, 160ms\n- Check for context cancellation between retries\n- Only retry on SQLITE_BUSY/database locked errors\n\nImpact: Spurious failures under concurrent write load\n\nEffort: 3 hours","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-16T14:51:31.247147-08:00","updated_at":"2025-12-21T21:39:23.071036-08:00","closed_at":"2025-12-21T21:39:23.071036-08:00"}
|
||||
@@ -739,7 +742,7 @@
|
||||
{"id":"bd-uxlb","title":"Add bd agent state command for ZFC-compliant state reporting","description":"Add command for agents to write their own state to agent beads.\n\n```bash\nbd agent state \u003cagent-id\u003e \u003cstate\u003e\n# Example: bd agent state gt-mayor running\n# States: idle | running | stuck | stopped | dead\n```\n\nImplementation:\n1. Lookup agent bead by ID (type=agent)\n2. Update agent_state field in description\n3. Update last_activity timestamp\n4. Trigger bd sync if configured\n\nAlso add:\n- bd agent heartbeat \u003cagent-id\u003e - just updates last_activity\n- bd agent show \u003cagent-id\u003e - show agent bead details\n\nThis is the ZFC-compliant way for agents to self-report state.\n\nCross-ref: gt-p2vyo in gastown","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-28T01:49:46.325964-08:00","created_by":"mayor","updated_at":"2025-12-28T01:57:05.839623-08:00","closed_at":"2025-12-28T01:57:05.839623-08:00"}
|
||||
{"id":"bd-uz8r","title":"Phase 2.3: TOON deletion tracking","description":"Implement deletion tracking in TOON format.\n\n## Overview\nPhase 2.2 switched storage to TOON format. Phase 2.3 adds deletion tracking in TOON format for propagating deletions across clones.\n\n## Required Work\n\n### 2.3.1 Deletion Tracking (TOON Format)\n- [ ] Implement deletions.toon file (tracking deleted issue records)\n- [ ] Add DeleteTracker struct to record deleted issue IDs and metadata\n- [ ] Update bdt delete command to record in deletions.toon\n- [ ] Design deletion record format (ID, timestamp, reason, hash)\n- [ ] Implement auto-prune of old deletion records (configurable TTL)\n\n### 2.3.2 Sync Propagation\n- [ ] Load deletions.toon during import\n- [ ] Remove deleted issues from local database when imported from remote\n- [ ] Handle edge cases (delete same issue in multiple clones)\n- [ ] Deletion ordering and conflict resolution\n\n### 2.3.3 Testing\n- [ ] Unit tests for deletion tracking\n- [ ] Integration tests for deletion propagation\n- [ ] Multi-clone deletion scenarios\n- [ ] TTL expiration tests\n\n## Success Criteria\n- deletions.toon stores deletion records in TOON format\n- Deletions propagate across clones via git sync\n- Old records auto-prune after TTL\n- All 70+ tests still passing\n- bdt delete command works seamlessly","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-19T14:37:23.722066816-07:00","updated_at":"2025-12-21T14:42:27.491932-08:00","closed_at":"2025-12-21T14:42:27.491932-08:00","dependencies":[{"issue_id":"bd-uz8r","depends_on_id":"bd-iic1","type":"discovered-from","created_at":"2025-12-19T14:37:23.726825771-07:00","created_by":"daemon"}]}
|
||||
{"id":"bd-v55y","title":"bd repair: Limit verbose output for large orphan counts","description":"When there are thousands of orphaned references, bd repair prints them all, flooding the terminal.\n\nFix: Add --verbose flag; default to summary only (e.g., 'Found 1,234 orphaned dependencies'). Only print individual items with --verbose or when count is small (\u003c20).","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-29T12:48:10.496115-08:00","created_by":"stevey","updated_at":"2025-12-29T12:59:05.123618-08:00","closed_at":"2025-12-29T12:59:05.123618-08:00","close_reason":"Fixed in commit d7a67ad6"}
|
||||
{"id":"bd-v5fn","title":"Add default limit to bd list (50 issues)","description":"Add a sensible default limit of 50 issues to bd list output, matching patterns from gh cli (30) and jira-cli (50).\n\n- Default to 50 when no --limit specified\n- --limit 0 means unlimited (explicit override)\n- Protects both agents and humans from overwhelming output\n\nThis is independent of the filter change but complementary.","notes":"## Implementation Plan\n\n### Code Changes (cmd/bd/list.go)\n\n1. **Change default limit** (init function, ~line 887):\n```go\n// Currently: listCmd.Flags().IntP(\"limit\", \"n\", 0, \"Limit results\")\n// Change to:\nlistCmd.Flags().IntP(\"limit\", \"n\", 50, \"Limit results (0 for unlimited)\")\n```\n\n2. **Update help text**:\n```go\n\"Limit results (default: 50, use 0 for unlimited)\"\n```\n\n3. **Handle explicit 0** in Run function:\n```go\n// --limit 0 means unlimited\nif cmd.Flags().Changed(\"limit\") \u0026\u0026 limit == 0 {\n filter.Limit = 0 // No limit applied\n} else if limit \u003e 0 {\n filter.Limit = limit\n} else {\n filter.Limit = 50 // Default\n}\n```\n\n### Testing\n- `bd list` shows max 50 issues\n- `bd list --limit 10` shows max 10\n- `bd list --limit 0` shows unlimited\n- Verify output indicates truncation: \"Showing 50 of 499 issues (use --limit 0 for all)\"\n\n### Documentation\n- Note in help: default changed from unlimited to 50","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-29T15:25:08.299726-08:00","created_by":"stevey","updated_at":"2025-12-29T15:26:47.565007-08:00","labels":["gh:788"]}
|
||||
{"id":"bd-v5fn","title":"Add default limit to bd list (50 issues)","description":"Add a sensible default limit of 50 issues to bd list output, matching patterns from gh cli (30) and jira-cli (50).\n\n- Default to 50 when no --limit specified\n- --limit 0 means unlimited (explicit override)\n- Protects both agents and humans from overwhelming output\n\nThis is independent of the filter change but complementary.","notes":"## Implementation Plan\n\n### Code Changes (cmd/bd/list.go)\n\n1. **Change default limit** (init function, ~line 887):\n```go\n// Currently: listCmd.Flags().IntP(\"limit\", \"n\", 0, \"Limit results\")\n// Change to:\nlistCmd.Flags().IntP(\"limit\", \"n\", 50, \"Limit results (0 for unlimited)\")\n```\n\n2. **Update help text**:\n```go\n\"Limit results (default: 50, use 0 for unlimited)\"\n```\n\n3. **Handle explicit 0** in Run function:\n```go\n// --limit 0 means unlimited\nif cmd.Flags().Changed(\"limit\") \u0026\u0026 limit == 0 {\n filter.Limit = 0 // No limit applied\n} else if limit \u003e 0 {\n filter.Limit = limit\n} else {\n filter.Limit = 50 // Default\n}\n```\n\n### Testing\n- `bd list` shows max 50 issues\n- `bd list --limit 10` shows max 10\n- `bd list --limit 0` shows unlimited\n- Verify output indicates truncation: \"Showing 50 of 499 issues (use --limit 0 for all)\"\n\n### Documentation\n- Note in help: default changed from unlimited to 50","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-29T15:25:08.299726-08:00","created_by":"stevey","updated_at":"2025-12-29T17:53:30.23005-08:00","closed_at":"2025-12-29T17:53:30.23005-08:00","close_reason":"Implemented in single commit","labels":["gh:788"]}
|
||||
{"id":"bd-v8ku","title":"bd: Add town-level activity signal in PersistentPreRun","description":"Add activity signaling to beads so Gas Town daemon can detect bd usage.\n\nIn cmd/bd/main.go PersistentPreRun, add a call to write activity to\nthe Gas Town daemon directory if running inside a Gas Town workspace.\n\nThe signal file is ~/gt/daemon/activity.json (or detected town root).\n\nFormat:\n{\n \"last_command\": \"bd create ...\",\n \"actor\": \"gastown/crew/max\",\n \"timestamp\": \"2025-12-26T19:30:00Z\"\n}\n\nShould be best-effort (silent failure) to avoid breaking bd outside Gas Town.\n\nCross-rig ref: gastown gt-ws8ol (Deacon exponential backoff epic)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T19:25:13.537055-08:00","updated_at":"2025-12-26T19:28:44.919491-08:00","closed_at":"2025-12-26T19:28:44.919491-08:00"}
|
||||
{"id":"bd-vdw4","title":"Enhancement: bd swarm status accepts swarm molecule ID","description":"Currently `bd swarm status` only accepts an epic ID.\n\nWould be more intuitive to also accept the swarm molecule ID and follow the relates-to link to find the epic:\n\n```bash\nbd swarm status bd-swarm-xyz # Follow link to epic, show status\nbd swarm status bd-epic-123 # Direct epic lookup (current behavior)\n```\n\nDetect by checking if the issue has mol_type=swarm.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-28T21:38:20.692476-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T22:05:10.112717-08:00","closed_at":"2025-12-28T22:05:10.112717-08:00","dependencies":[{"issue_id":"bd-vdw4","depends_on_id":"bd-2ubv","type":"parent-child","created_at":"2025-12-28T21:38:44.809594-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-vgi5","title":"Push version bump to GitHub","description":"git push origin main - triggers CI but no release yet.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-18T22:43:05.363604-08:00","updated_at":"2025-12-24T16:25:30.019895-08:00","dependencies":[{"issue_id":"bd-vgi5","depends_on_id":"bd-qqc","type":"parent-child","created_at":"2025-12-18T22:43:16.87736-08:00","created_by":"daemon"},{"issue_id":"bd-vgi5","depends_on_id":"bd-3ggb","type":"blocks","created_at":"2025-12-18T22:43:21.078208-08:00","created_by":"daemon"}],"deleted_at":"2025-12-24T16:25:30.019895-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
|
||||
Reference in New Issue
Block a user