bd sync: 2025-12-28 22:07:05
This commit is contained in:
@@ -51,7 +51,8 @@
|
||||
{"id":"bd-2oo.3","title":"Update all code to use dependencies API for edges","description":"Find and update all code that reads/writes:\n- replies_to field -\u003e use dependency API\n- relates_to field -\u003e use dependency API\n- duplicate_of field -\u003e use dependency API\n- superseded_by field -\u003e use dependency API\n\nCommands affected: bd mail, bd relate, bd duplicate, bd supersede, bd show, etc.","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-18T02:02:01.317006-08:00","updated_at":"2025-12-18T02:49:10.59233-08:00","closed_at":"2025-12-18T02:49:10.59233-08:00","close_reason":"Phase 4 complete: all edge fields removed, dependencies API used exclusively","dependencies":[{"issue_id":"bd-2oo.3","depends_on_id":"bd-2oo","type":"parent-child","created_at":"2025-12-18T02:02:01.31856-08:00","created_by":"daemon","metadata":"{}"}]}
|
||||
{"id":"bd-2oo.4","title":"Create migration script for edge field to dependency conversion","description":"Migration must:\n1. Read existing JSONL with old fields\n2. Convert field values to dependency records\n3. Write updated JSONL without old fields\n4. Handle edge cases (missing refs, duplicates)\n\nRun via: bd migrate or automatic on bd prime","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-18T02:02:01.760277-08:00","updated_at":"2025-12-18T02:49:10.602446-08:00","closed_at":"2025-12-18T02:49:10.602446-08:00","close_reason":"Phase 4 complete: all edge fields removed, dependencies API used exclusively","dependencies":[{"issue_id":"bd-2oo.4","depends_on_id":"bd-2oo","type":"parent-child","created_at":"2025-12-18T02:02:01.760694-08:00","created_by":"daemon","metadata":"{}"}]}
|
||||
{"id":"bd-2q6d","title":"Beads commands operate on stale database without warning","description":"All beads read operations should validate database is in sync with JSONL before proceeding.\n\n**Current Behavior:**\n- Commands can query/read from stale database\n- Only mutation operations (like 'bd sync') check if JSONL is newer\n- User gets incorrect results without realizing database is out of sync\n\n**Expected Behavior:**\n- All beads commands should have pre-flight check for database freshness\n- If JSONL is newer than database, refuse to operate with error: \"Database out of sync. Run 'bd import' first.\"\n- Same safety check that exists for 'bd sync' should apply to ALL operations\n\n**Impact:**\n- Users make decisions based on incomplete/outdated data\n- Silent failures lead to confusion (e.g., thinking issues don't exist when they do)\n- Similar to running git commands on stale repo without being warned to pull\n\n**Example:**\n- Searched for bd-g9eu issue file: not found\n- Issue exists in .beads/issues.jsonl (in git)\n- Database was stale, but no warning was given\n- Led to incorrect conclusion that issue was already closed/deleted","notes":"## Implementation Complete\n\n**Phase 1: Created staleness check (cmd/bd/staleness.go)**\n- ensureDatabaseFresh() function checks JSONL mtime vs last_import_time\n- Returns error with helpful message when database is stale\n- Auto-skips in daemon mode (daemon has auto-import)\n\n**Phase 2: Added to all read commands**\n- list, show, ready, status, stale, info, duplicates, validate\n- Check runs before database queries in direct mode\n- Daemon mode already protected via checkAndAutoImportIfStale()\n\n**Phase 3: Code Review Findings**\nSee follow-up issues:\n- bd-XXXX: Add warning when staleness check errors\n- bd-YYYY: Improve CheckStaleness error handling\n- bd-ZZZZ: Refactor redundant daemon checks (low priority)\n\n**Testing:**\n- Build successful: go build ./cmd/bd\n- Binary works: ./bd --version\n- Ready for manual testing\n\n**Next Steps:**\n1. Test with stale database scenario\n2. Implement review improvements\n3. Close issue when tests pass","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-11-20T19:33:40.019297-05: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-2ubv","title":"Code Review: Swarm commands consolidation","description":"Code review of bd swarm commands (validate, status, create) identified several improvements.\n\n**Summary:**\n- Duplicated child-fetching logic between commands\n- Missing duplicate swarm check in create\n- Missing swarm list command\n- Minor polish issues\n\nFiled after implementing bd-fa1q (swarm create).","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-28T21:38:36.61291-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T21:38:36.61291-08:00"}
|
||||
{"id":"bd-2rkr","title":"Test coordinator display","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-28T22:00:44.894114-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T22:00:44.894114-08:00"}
|
||||
{"id":"bd-2ubv","title":"Code Review: Swarm commands consolidation","description":"Code review of bd swarm commands (validate, status, create) identified several improvements.\n\n**Summary:**\n- Duplicated child-fetching logic between commands\n- Missing duplicate swarm check in create\n- Missing swarm list command\n- Minor polish issues\n\nFiled after implementing bd-fa1q (swarm create).","status":"closed","priority":2,"issue_type":"epic","assignee":"beads/crew/dave","created_at":"2025-12-28T21:38:36.61291-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T22:05:51.910899-08:00","closed_at":"2025-12-28T22:05:51.910899-08:00","close_reason":"All 5 code review items completed"}
|
||||
{"id":"bd-2v0f","title":"Add gate issue type to beads","description":"Add 'gate' as a new issue type for async coordination.\n\n## Changes Needed\n- Add 'gate' to IssueType enum in internal/types/types.go\n- Update validation to accept gate type\n- Update CLI help text and completion\n\n## Gate Type Semantics\n- Gates are ephemeral (live in wisp storage)\n- Managed by Deacon patrol\n- Have special fields: await_type, await_id, timeout, waiters[]","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-23T11:44:31.331897-08:00","updated_at":"2025-12-23T11:47:06.287781-08:00","closed_at":"2025-12-23T11:47:06.287781-08:00","close_reason":"Added TypeGate constant and IsValid() validation. Updated CLI help text in create.go, list.go, show.go, search.go, count.go, export.go.","dependencies":[{"issue_id":"bd-2v0f","depends_on_id":"bd-udsi","type":"parent-child","created_at":"2025-12-23T11:44:52.659005-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-2vh3","title":"Ephemeral issue cleanup and history compaction","description":"## Problem\n\nBeads history grows without bound. Every message, handoff, work assignment\nstays in issues.jsonl forever. Enterprise users will balk at \"git as database.\"\n\n## Solution: Two-Tier Cleanup\n\n### Tier 1: Ephemeral Cleanup (v1)\n\nbd cleanup --ephemeral --closed\n\n- Deletes closed issues where ephemeral=true from issues.jsonl\n- Safe: only removes explicitly marked ephemeral + closed\n- Preserves git history (commits still exist)\n- Run after swarm completion\n\n### Tier 2: History Compaction (v2)\n\nbd compact --squash\n\n- Rewrites issues.jsonl to remove tombstones\n- Optionally squashes git history (interactive rebase equivalent)\n- Preserves Merkle proofs for deleted items\n- Advanced: cold storage tiering\n\n## HOP Context\n\n| Layer | HOP Role | Persistence |\n|-------|----------|-------------|\n| Execution trace | None | Ephemeral |\n| Work scaffolding | None | Summarizable |\n| Work outcome | CV entry | Permanent |\n| Validation record | Stake proof | Permanent |\n\n\"Execution is ephemeral. Outcomes are permanent. You can't squash your CV.\"\n\n## Success Criteria\n\n- After cleanup --ephemeral: issues.jsonl only contains persistent work\n- Work outcomes preserved (CV entries)\n- Validation records preserved (stake proofs)\n- Execution scaffolding removed (transient coordination)","notes":"## Implementation Plan (REVISED after code review)\n\nSee history/EPHEMERAL_MOLECULES_DESIGN.md for comprehensive design + review.\n\n## Key Simplification\n\nAfter code review, Tier 1 is MUCH simpler than originally designed:\n\n- **Original**: Separate ephemeral repo with routing.ephemeral config\n- **Revised**: Just set Wisp: true in cloneSubgraph()\n\nThe wisp field and bd cleanup --wisp already exist\\!\n\n## Child Tasks (in dependency order)\n\n1. **bd-2vh3.2**: Tier 1 - Ephemeral spawning (SIMPLIFIED) [READY]\n - Just add Wisp: true to template.go:474\n - Add --persistent flag to opt out\n2. **bd-2vh3.3**: Tier 2 - Basic bd mol squash command\n3. **bd-2vh3.4**: Tier 3 - AI-powered squash summarization\n4. **bd-2vh3.5**: Tier 4 - Auto-squash on molecule completion\n5. **bd-2vh3.6**: Tier 5 - JSONL archive rotation (DEFERRED: post-1.0)\n\n## What Already Exists\n\n| Component | Location |\n|-----------|----------|\n| Ephemeral field | internal/types/types.go:45 |\n| bd cleanup --wisp | cmd/bd/cleanup.go:72 |\n| cloneSubgraph() | cmd/bd/template.go:456 |\n| loadTemplateSubgraph() | cmd/bd/template.go |\n\n## HOP Alignment\n\n'Execution is ephemeral. Outcomes are permanent. You can't squash your CV.'","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-20T21:02:20.101367-08:00","updated_at":"2025-12-21T17:50:02.958155-08:00","closed_at":"2025-12-21T17:50:02.958155-08:00","close_reason":"Core feature complete: bd cleanup --wisp works, molecules marked as wisps. bd-2vh3.6 (archive rotation) deferred post-1.0."}
|
||||
{"id":"bd-2vh3.1","title":"Tier 1: Ephemeral repo routing","description":"Add routing.ephemeral config option to route ephemeral=true issues to separate location.\n\n## Changes Required\n\n1. Add `routing.ephemeral` config option (default: empty = disabled)\n2. Update routing logic in `determineRepo()` to check ephemeral flag\n3. Update `bd create` to respect ephemeral routing\n4. Update import/export for multi-location support\n5. Ephemeral repo can be:\n - Separate git repo (~/.beads-ephemeral)\n - Non-git directory (just filesystem)\n - Same repo, different branch (future)\n\n## Config\n\n```bash\nbd config set routing.ephemeral \"~/.beads-ephemeral\"\n```\n\n## Acceptance Criteria\n\n- `bd create \"test\" --ephemeral` creates in ephemeral repo when configured\n- `bd list` shows issues from both repos\n- Ephemeral repo never synced to remote","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-21T12:57:26.648052-08:00","updated_at":"2025-12-21T12:59:01.815357-08:00","deleted_at":"2025-12-21T12:59:01.815357-08:00","deleted_by":"stevey","delete_reason":"manual delete","original_type":"task"}
|
||||
@@ -77,12 +78,13 @@
|
||||
{"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","assignee":"beads/rictus","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","close_reason":"Fixed file handle closure race condition in postinstall.js"}
|
||||
{"id":"bd-411u","title":"Document BEADS_DIR pattern for multi-agent workspaces (Gas Town)","description":"Gas Town and similar multi-agent systems need to configure separate beads databases per workspace/rig, distinct from any project-level beads.\n\n## Use Case\n\nIn Gas Town:\n- Each 'rig' (managed project) has multiple agents (polecats, refinery, witness)\n- All agents in a rig should share a single beads database at the rig level\n- This should be separate from any .beads/ the project itself uses\n- The BEADS_DIR env var enables this\n\n## Documentation Needed\n\n1. Add a section to docs explaining BEADS_DIR for multi-agent setups\n2. Example: setting BEADS_DIR in agent startup scripts/hooks\n3. Clarify interaction with project-level .beads/ (BEADS_DIR takes precedence)\n\n## Current Support\n\nAlready implemented in internal/beads/beads.go:FindDatabasePath():\n- BEADS_DIR env var is checked first (preferred)\n- BEADS_DB env var still supported (deprecated)\n- Falls back to .beads/ search in tree\n\nJust needs documentation for the multi-agent workspace pattern.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-15T22:08:22.158027-08:00","updated_at":"2025-12-15T22:08:22.158027-08:00"}
|
||||
{"id":"bd-43xj","title":"Add thread-safety warning to git.ResetCaches() doc comment","description":"Code review finding from bd-7di fix.\n\nResetCaches() reassigns sync.Once values which is not thread-safe. While this is only used in tests (which are single-threaded), the function is exported and could be misused.\n\nAdd a warning comment:\n```go\n// ResetCaches resets all cached git information.\n// WARNING: Not thread-safe. Only call from single-threaded test contexts.\n```\n\nFile: internal/git/gitdir.go","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-25T22:08:51.125399-08:00","updated_at":"2025-12-25T22:43:54.508097-08:00","closed_at":"2025-12-25T22:43:54.508097-08:00","close_reason":"Closed"}
|
||||
{"id":"bd-45td","title":"Refactor: Extract shared child-fetching logic in swarm.go","description":"Lines 162-181 (analyzeEpicForSwarm) and 630-649 (getSwarmStatus) have identical logic for fetching epic children via parent-child dependencies.\n\nExtract to a shared helper function like:\n\n```go\nfunc getEpicChildren(ctx context.Context, s StorageInterface, epicID string) ([]*types.Issue, error)\n```\n\nThis will reduce duplication and ensure consistent behavior between validate/status/create commands.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-28T21:37:54.16697-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T21:37:54.16697-08:00","dependencies":[{"issue_id":"bd-45td","depends_on_id":"bd-2ubv","type":"parent-child","created_at":"2025-12-28T21:38:44.705879-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-45td","title":"Refactor: Extract shared child-fetching logic in swarm.go","description":"Lines 162-181 (analyzeEpicForSwarm) and 630-649 (getSwarmStatus) have identical logic for fetching epic children via parent-child dependencies.\n\nExtract to a shared helper function like:\n\n```go\nfunc getEpicChildren(ctx context.Context, s StorageInterface, epicID string) ([]*types.Issue, error)\n```\n\nThis will reduce duplication and ensure consistent behavior between validate/status/create commands.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T21:37:54.16697-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T21:54:58.827802-08:00","closed_at":"2025-12-28T21:54:58.827802-08:00","close_reason":"Extracted getEpicChildren helper and SwarmStorage interface. analyzeEpicForSwarm and getSwarmStatus now use the shared helper.","dependencies":[{"issue_id":"bd-45td","depends_on_id":"bd-2ubv","type":"parent-child","created_at":"2025-12-28T21:38:44.705879-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-47qx","title":"bd cook: Proto ID prefix should match project prefix","description":"When `bd cook` creates a proto, it uses the formula name as the proto ID:\n\n```yaml\nformula: mol-deacon-patrol\n```\n\nCreates proto with ID `mol-deacon-patrol`.\n\n## Problem\n\nIf the project uses a different prefix (e.g., `gt-`), the cooked protos have \na different prefix (`mol-`), causing:\n\n1. `bd sync` import warnings about prefix mismatch\n2. Mixed prefix lists in `bd mol list`\n3. Confusion about naming conventions\n\n## Options\n\n1. **Use project prefix**: Cook as `gt-mol-deacon-patrol`\n2. **Allow mol- as special prefix**: Recognize mol-* as valid for protos\n3. **Make prefix configurable**: `bd cook --prefix gt-`\n4. **Keep current behavior**: Document that formulas use their own namespace\n\n## Current Workaround\n\nThe prefix mismatch warning can be ignored, but `bd sync` fails the import step.\n\n## Related\n\ngt-i6k1: Duplicate proto cleanup","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-24T13:50:24.631336-08:00","updated_at":"2025-12-24T13:59:09.933374-08:00","closed_at":"2025-12-24T13:59:09.933374-08:00","close_reason":"Fixed in this session"}
|
||||
{"id":"bd-47tn","title":"Add bd daemon --stop-all command to kill all daemon processes","description":"Currently there's no easy way to stop all running bd daemon processes. Users must resort to pkill -f 'bd daemon' or similar shell commands.\n\nAdd a --stop-all flag to bd daemon that:\n1. Finds all running bd daemon processes (not just the current repo's daemon)\n2. Gracefully stops them all\n3. Reports how many were stopped\n\nThis is useful when:\n- Multiple daemons are running and causing race conditions\n- User wants a clean slate before running bd sync\n- Debugging daemon-related issues","status":"tombstone","priority":2,"issue_type":"feature","created_at":"2025-12-13T06:34:45.080633-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":"feature"}
|
||||
{"id":"bd-49kw","title":"Workaround for FastMCP outputSchema bug in Claude Code","description":"The beads MCP server (v0.23.1) successfully connects to Claude Code, but all tools fail to load with a schema validation error due to a bug in FastMCP 2.13.1.\n\nError: \"Invalid literal value, expected \\\"object\\\"\" in outputSchema.\n\nRoot Cause: FastMCP generates outputSchema with $ref at root level without \"type\": \"object\" for self-referential models (Issue).\n\nWorkaround: Use slash commands (/beads:ready) or wait for FastMCP fix.\n","status":"closed","priority":1,"issue_type":"bug","assignee":"beads/toast","created_at":"2025-11-20T18:55:39.041831-05:00","updated_at":"2025-12-23T23:49:44.371623-08:00","closed_at":"2025-12-23T23:49:44.371623-08:00","close_reason":"Added output_schema=None workaround to 8 MCP tools (ready, list, show, create, update, close, reopen, blocked)"}
|
||||
{"id":"bd-49oe","title":"Cache GetGitDir() for additional optimization","description":"Code review finding from bd-7di fix.\n\nGetGitDir() at line 17 is not cached but is called by:\n- GetGitHooksDir()\n- GetGitRefsDir()\n- GetGitHeadPath()\n\nIf any of those are called multiple times, we still spawn extra git processes. Consider adding sync.Once caching similar to the other functions.\n\nFile: internal/git/gitdir.go","status":"open","priority":4,"issue_type":"task","created_at":"2025-12-25T22:08:52.736529-08:00","updated_at":"2025-12-25T22:08:52.736529-08:00"}
|
||||
{"id":"bd-4bsb","title":"Code review findings: mol squash deletion bypasses tombstones","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-21T13:57:14.154316-08:00","updated_at":"2025-12-21T18:01:06.811216-08:00","closed_at":"2025-12-21T18:01:06.811216-08:00","close_reason":"Won't fix: Wisps are ephemeral by design. They're local-only, never synced to other clones, so tombstones are unnecessary overhead. Hard delete is intentional.","dependencies":[{"issue_id":"bd-4bsb","depends_on_id":"bd-2vh3.3","type":"discovered-from","created_at":"2025-12-21T13:57:14.155488-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-4d9d","title":"Test epic for duplicate swarm","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-28T21:56:57.256997-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T21:56:57.256997-08:00"}
|
||||
{"id":"bd-4ec8","title":"Widespread double JSON encoding bug in daemon mode RPC calls","description":"Multiple CLI commands had the same double JSON encoding bug found in bd-1048. All commands that called ResolveID via RPC used string(resp.Data) instead of properly unmarshaling the JSON response. This caused IDs to retain JSON quotes (\"bd-1048\" instead of bd-1048), which then got double-encoded when passed to subsequent RPC calls.\n\nAffected commands:\n- bd show (3 instances)\n- bd dep add/remove/tree (5 instances)\n- bd label add/remove/list (3 instances)\n- bd reopen (1 instance)\n\nRoot cause: resp.Data is json.RawMessage (already JSON-encoded), so string() conversion preserves quotes.\n\nFix: Replace all string(resp.Data) with json.Unmarshal(resp.Data, \u0026id) for proper deserialization.\n\nAll commands now tested and working correctly with daemon mode.","status":"tombstone","priority":0,"issue_type":"bug","created_at":"2025-11-02T22:33:01.632691-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-4hn","title":"wish: list \u0026 ready show issues as hierarchy tree","description":"`bd ready` and `bd list` just show a flat list, and it's up to the reader to parse which ones are dependent or sub-issues of others. It would be much easier to understand if they were shown in a tree format","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-08T06:38:24.016316945-07:00","updated_at":"2025-12-08T06:39:04.065882225-07:00"}
|
||||
{"id":"bd-4lm3","title":"Correction: Pinned field already in v0.31.0","description":"Quick correction - the Pinned field is already in the current bd v0.31.0:\n\n```go\n// In beads internal/types/types.go\nPinned bool `json:\"pinned,omitempty\"`\n```\n\nSo you just need to:\n1. Add `Pinned bool `json:\"pinned,omitempty\"`` to BeadsMessage in types.go\n2. Sort pinned messages first in listBeads() after fetching\n\nNo migration needed - the field is already there.\n\n-- Mayor","status":"closed","priority":2,"issue_type":"message","assignee":"gastown/crew/max","created_at":"2025-12-20T17:52:27.321458-08:00","updated_at":"2025-12-21T17:52:18.617995-08:00","closed_at":"2025-12-21T17:52:18.617995-08:00","close_reason":"Stale correction message","labels":["from:beads-crew-dave","thread:thread-4dd70157dbc1"]}
|
||||
@@ -297,7 +299,7 @@
|
||||
{"id":"bd-dsp","title":"Test stdin body-file","status":"tombstone","priority":4,"issue_type":"task","created_at":"2025-12-17T17:27:32.098806-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-dtl8","title":"Test deleteViaDaemon RPC client integration","description":"Add comprehensive tests for the deleteViaDaemon function (cmd/bd/delete.go:21) which handles client-side RPC deletion calls.\n\n## Function under test\n- deleteViaDaemon: CLI command handler that sends delete requests to daemon via RPC\n\n## Test scenarios needed\n1. Successful deletion via daemon\n2. Cascade deletion through daemon\n3. Force deletion through daemon\n4. Dry-run mode (no actual deletion)\n5. Error handling:\n - Daemon unavailable\n - Invalid issue IDs\n - Dependency conflicts\n6. JSON output validation\n7. Human-readable output formatting\n\n## Coverage target\nCurrent: 0%\nTarget: \u003e80%\n\n## Related\n- Parent epic: bd-kyll\n- Original issue: bd-7z4","status":"closed","priority":1,"issue_type":"task","assignee":"beads/nux","created_at":"2025-12-18T13:08:29.805706253-07:00","updated_at":"2025-12-23T23:50:35.615163-08:00","closed_at":"2025-12-23T23:50:35.615163-08:00","close_reason":"Added 11 integration tests for deleteViaDaemon. Coverage: 62.5% (os.Exit paths cannot be tested without subprocess handling).","dependencies":[{"issue_id":"bd-dtl8","depends_on_id":"bd-kyll","type":"parent-child","created_at":"2025-12-18T13:08:29.807984381-07:00","created_by":"mhwilkie"}]}
|
||||
{"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","close_reason":"Added Validation type with Validator, Outcome, Timestamp, Score fields. Added Validations []Validation to Issue struct. Included in content hash. Full test coverage.","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":"open","priority":3,"issue_type":"feature","created_at":"2025-12-28T21:38:11.773961-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T21:38:11.773961-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-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","close_reason":"Added bd swarm list command showing all swarm molecules with epic info and progress stats","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-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","assignee":"beads/furiosa","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","close_reason":"Added comprehensive tests for daemon RPC delete handler covering: dry-run mode, error handling (empty IDs, not found, templates), partial success, invalid args, reason field, and cascade/force flags","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"}
|
||||
@@ -346,6 +348,7 @@
|
||||
{"id":"bd-h0we","title":"Review SQLite indexes and scaling bottlenecks","description":"Audit the beads SQLite schema for:\n\n## Index Review\n- Are all frequently-queried columns indexed?\n- Are compound indexes needed for common query patterns?\n- Any missing indexes on foreign keys or filter columns?\n\n## Scaling Bottlenecks\n- How does performance degrade with 10k, 100k, 1M issues?\n- Full table scans in hot paths?\n- JSONL export/import performance at scale\n- Transaction contention in multi-agent scenarios\n\n## Common Query Patterns to Optimize\n- bd ready (status + blocked_by resolution)\n- bd list with filters (status, type, priority, labels)\n- bd show with dependency graph traversal\n- bd sync import/export\n\n## Deliverables\n- Document current indexes\n- Identify missing indexes\n- Benchmark key operations at scale\n- Recommend schema improvements","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T23:41:06.481881-08:00","updated_at":"2025-12-22T22:59:25.178175-08:00","closed_at":"2025-12-22T22:59:25.178175-08:00","close_reason":"Completed comprehensive review. Created 7 follow-up issues:\n- bd-bha9: updated_at index (P2)\n- bd-a9y3: (status, priority) composite (P3) \n- bd-jke6: labels covering index (P3)\n- bd-8x3w: dependencies (issue_id, type) (P3)\n- bd-lk39: events composite (P4)\n- bd-zw72: cache scaling investigation (P3)\n- bd-m964: FTS5 consideration (P4)\n\nKey findings:\n1. Current schema has good coverage for hot paths\n2. blocked_issues_cache provides 25x speedup for GetReadyWork\n3. Main gaps are composite indexes for common filter combinations\n4. Scaling concerns start at 100K+ issues, primarily around text search and cache rebuild"}
|
||||
{"id":"bd-h27p","title":"Merge: bd-g4b4","description":"branch: polecat/Hooker\ntarget: main\nsource_issue: bd-g4b4\nrig: beads","status":"closed","priority":3,"issue_type":"merge-request","created_at":"2025-12-23T13:38:50.707153-08:00","updated_at":"2025-12-23T19:12:08.357806-08:00","closed_at":"2025-12-23T19:12:08.357806-08:00","close_reason":"Stale merge-requests from orphaned polecat branches - refinery not processing"}
|
||||
{"id":"bd-h4tj","title":"Refinery Patrol","description":"Merge queue processor patrol loop with verification gates.","status":"open","priority":2,"issue_type":"molecule","created_at":"2025-12-27T19:24:07.068355-08:00","created_by":"deacon","updated_at":"2025-12-27T19:24:07.068355-08:00"}
|
||||
{"id":"bd-h502","title":"Swarm: Test epic for duplicate swarm","description":"Swarm molecule orchestrating epic bd-4d9d.\n\nEpic: bd-4d9d\nCoordinator: ","status":"open","priority":2,"issue_type":"molecule","created_at":"2025-12-28T21:59:45.597534-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T21:59:45.597534-08:00","dependencies":[{"issue_id":"bd-h502","depends_on_id":"bd-4d9d","type":"relates-to","created_at":"2025-12-28T21:59:45.598237-08:00","created_by":"beads/crew/dave"}]}
|
||||
{"id":"bd-h6bo","title":"Protos should have distinct prefix (e.g., proto-)","description":"Currently protos use the same bd- prefix as regular issues, making them visually indistinguishable. When you see bd-7bs4 it looks like work to squash, not a reusable template.\n\n**Problem:**\n- Protos look like regular issues\n- No visual signal that something is a template vs active work\n- Easy to accidentally close/modify protos thinking they're issues\n\n**Proposed Solution:**\n- Protos should have their own prefix (e.g., `proto-`, `mol-`, or `tpl-`)\n- Could be a separate database/storage for the proto library\n- Or a convention where proto IDs are generated differently\n\n**Alternatives:**\n1. Separate proto database with `proto-` prefix\n2. Special ID format for protos (e.g., `bd:proto:release`)\n3. Visual indicator in bd list/show output (already have labels, but not enough)\n\n**Current workaround:** Label with `template` and `molecule`, but IDs still look like regular issues.","status":"tombstone","priority":2,"issue_type":"feature","created_at":"2025-12-24T16:30:28.677791-08:00","updated_at":"2025-12-24T16:45:24.862627-08:00","deleted_at":"2025-12-24T16:45:24.862627-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"}
|
||||
{"id":"bd-h807","title":"Cross-project dependency support","description":"Enable tracking dependencies across project boundaries.\n\n## Mechanism\n- Producer: `bd ship \u003ccapability\u003e` adds `provides:\u003ccapability\u003e` label\n- Consumer: `blocked_by: external:\u003cproject\u003e:\u003ccapability\u003e`\n- Resolution: `bd ready` checks external deps via config\n\n## Design Doc\nSee: gastown/docs/cross-project-deps.md\n\n## Children\n- bd-eijl: bd ship command\n- bd-om4a: external: prefix in blocked_by\n- bd-66w1: external_projects config\n- bd-zmmy: bd ready resolution","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-21T22:38:01.116241-08:00","updated_at":"2025-12-22T00:02:09.271076-08:00","closed_at":"2025-12-22T00:02:09.271076-08:00","close_reason":"All children completed: bd ship, external: prefix, config, and bd ready resolution"}
|
||||
{"id":"bd-h8q","title":"Add tests for validation functions","description":"Validation functions like ParseIssueType have 0% coverage. These are critical for ensuring data quality and preventing invalid data from entering the system.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-18T07:01:02.843488344-07:00","updated_at":"2025-12-18T07:03:53.561016965-07:00","closed_at":"2025-12-18T07:03:53.561016965-07:00","dependencies":[{"issue_id":"bd-h8q","depends_on_id":"bd-6ss","type":"discovered-from","created_at":"2025-12-18T07:01:02.846419747-07:00","created_by":"matt"}]}
|
||||
@@ -395,6 +398,7 @@
|
||||
{"id":"bd-jke6","title":"Add covering index (label, issue_id) for label queries","description":"GetIssuesByLabel joins labels table but requires table lookup after using idx_labels_label.\n\n**Query (labels.go:165):**\n```sql\nSELECT ... FROM issues i\nJOIN labels l ON i.id = l.issue_id\nWHERE l.label = ?\n```\n\n**Problem:** Current idx_labels_label index doesn't cover issue_id, requiring row lookup.\n\n**Solution:** Add migration:\n```sql\nCREATE INDEX IF NOT EXISTS idx_labels_label_issue ON labels(label, issue_id);\n```\n\nThis is a covering index - query can be satisfied entirely from the index without touching the labels table rows.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-22T22:58:51.485354-08:00","updated_at":"2025-12-22T23:15:13.839904-08:00","closed_at":"2025-12-22T23:15:13.839904-08:00","close_reason":"Implemented in migration 026_additional_indexes.go","dependencies":[{"issue_id":"bd-jke6","depends_on_id":"bd-h0we","type":"discovered-from","created_at":"2025-12-22T22:58:51.485984-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-jv4w","title":"Phase 1.2: Separate bdt executable - Initial structure","description":"Create minimal bdt command structure completely separate from bd. Must not share code, config, or database.\n\n## Subtasks\n1. Create cmd/bdt/ directory with main.go\n2. Implement bdt version, help, and status commands\n3. Configure separate database location: $HOME/.bdt/ (not $HOME/.beads/)\n4. Create separate issues file: issues.toon (not issues.jsonl)\n5. Update build system:\n - Makefile: Add bdt target\n - .goreleaser.yml: Add bdt binary config\n\n## Files to Create\n- cmd/bdt/main.go - Entry point\n- cmd/bdt/version.go - Version handling\n- cmd/bdt/help.go - Help text (separate from bd)\n\n## Success Criteria\n- `make build` produces both `bd` and `bdt` executables\n- `bdt version` shows distinct version output from bd\n- `bdt --help` shows distinct help text\n- bdt uses $HOME/.bdt/ directory (verify with `bdt info`)\n- bd and bdt completely isolated (no shared imports beyond stdlib)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-19T11:48:34.866877282-07:00","updated_at":"2025-12-19T12:59:11.389296015-07:00","closed_at":"2025-12-19T12:59:11.389296015-07:00"}
|
||||
{"id":"bd-jvu","title":"Add bd update --parent flag to change issue parent","description":"Allow changing an issue's parent with bd update --parent \u003cnew-parent-id\u003e. Useful for reorganizing tasks under different epics or moving issues between hierarchies. Should update the parent-child dependency relationship.","status":"tombstone","priority":3,"issue_type":"feature","created_at":"2025-12-17T22:24:07.274485-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":"feature"}
|
||||
{"id":"bd-k0it","title":"Swarm: Test epic for duplicate swarm","description":"Swarm molecule orchestrating epic bd-4d9d.\n\nEpic: bd-4d9d\nCoordinator: ","status":"open","priority":2,"issue_type":"molecule","created_at":"2025-12-28T21:57:03.916887-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T21:57:03.916887-08:00","dependencies":[{"issue_id":"bd-k0it","depends_on_id":"bd-4d9d","type":"relates-to","created_at":"2025-12-28T21:57:03.918187-08:00","created_by":"beads/crew/dave"}]}
|
||||
{"id":"bd-kblo","title":"bd prime should mention when beads is redirected","description":"## Problem\n\nAgents running in a redirected clone don't know they're sharing beads with other clones. This can cause confusion when molecules or issues seem to 'appear' or 'disappear'.\n\n## Proposed Solution\n\nWhen `bd prime` runs and detects a redirect, include it in the output:\n\n```\nBeads: /Users/stevey/gt/beads/mayor/rig/.beads\n (redirected from crew/dave - you share issues with other clones)\n```\n\n## Why\n\nVisibility over magic. If agents can see the redirect, they can reason about it.\n\n## Related\n\n- bd where command (shows this on demand)\n- gt redirect following (ensures gt matches bd behavior)","status":"closed","priority":3,"issue_type":"feature","assignee":"beads/crew/dave","created_at":"2025-12-27T21:15:55.026907-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-27T21:33:33.765635-08:00","closed_at":"2025-12-27T21:33:33.765635-08:00","close_reason":"Closed"}
|
||||
{"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","assignee":"onyx","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","close_reason":"Integrated detect-pollution into bd doctor --check=pollution","pinned":true}
|
||||
{"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","acceptance_criteria":"1. fetchAndRebaseInWorktree() function removed from worktree.go\n2. No remaining references to the function in codebase\n3. All existing tests pass: go test ./internal/syncbranch/...\n4. Sync functionality unchanged (contentMergeRecovery still used)","status":"closed","priority":3,"issue_type":"chore","assignee":"gt-beads-toast","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","close_reason":"Already completed - fetchAndRebaseInWorktree removed in commit 573524a4","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"}]}
|
||||
@@ -509,6 +513,7 @@
|
||||
{"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","close_reason":"Implemented bd swarm validate command with ready front analysis, structural issue detection, and swarmability check"}
|
||||
{"id":"bd-nl2","title":"No logging/debugging for tombstone resurrection events","description":"Per the design document bd-zvg Open Question 1: Should resurrection log a warning? Recommendation was Yes. Currently, when an expired tombstone loses to a live issue (resurrection), there is no logging or debugging output. This makes it hard to understand why an issue reappeared. Recommendation: Add optional debug logging when resurrection occurs, e.g., Issue bd-abc resurrected (tombstone expired). Files: internal/merge/merge.go:359-366, 371-378, 400-405, 410-415","status":"open","priority":4,"issue_type":"feature","created_at":"2025-12-05T16:36:52.27525-08:00","updated_at":"2025-12-05T16:36:52.27525-08:00"}
|
||||
{"id":"bd-nlzv","title":"bd show --short flag for compact output","description":"## Request\nAdd a `--short` flag to `bd show` for compact, one-line output per issue.\n\n## Use Case\nWhen checking multiple issues quickly:\n```bash\nbd show bd-nkqx --short \u0026\u0026 bd show bd-oxgi --short\n```\n\nCurrently fails with \"unknown flag: --short\"\n\n## Expected Output\nSomething like:\n```\nbd-nkqx [closed] P1 task: Validate swarm schema design\nbd-oxgi [closed] P1 task: Add mol_type schema field to beads\n```\n\n## Format Suggestion\n`\u003cid\u003e [\u003cstatus\u003e] \u003cpriority\u003e \u003ctype\u003e: \u003ctitle\u003e`\n\nOptional: include blocker count if any, e.g. `(blocked by 2)`","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-28T21:26:18.955592-08:00","created_by":"mayor","updated_at":"2025-12-28T21:35:06.006865-08:00","closed_at":"2025-12-28T21:35:06.006865-08:00","close_reason":"Implemented --short flag in commit e18cc4dc"}
|
||||
{"id":"bd-nm18","title":"Swarm: Test epic for duplicate swarm","description":"Swarm molecule orchestrating epic bd-4d9d.\n\nEpic: bd-4d9d\nCoordinator: ","status":"open","priority":2,"issue_type":"molecule","created_at":"2025-12-28T21:57:11.058032-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T21:57:11.058032-08:00","dependencies":[{"issue_id":"bd-nm18","depends_on_id":"bd-4d9d","type":"relates-to","created_at":"2025-12-28T21:57:11.058738-08:00","created_by":"beads/crew/dave"}]}
|
||||
{"id":"bd-nmch","title":"Add EntityRef type for structured entity references","description":"Create EntityRef struct with Name, Platform, Org, ID fields. This is the foundation for HOP entity tracking. Can render as entity://hop/\u003cplatform\u003e/\u003corg\u003e/\u003cid\u003e when needed. Add to internal/types/types.go.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-22T17:53:25.104328-08:00","updated_at":"2025-12-22T17:58:00.014103-08:00","closed_at":"2025-12-22T17:58:00.014103-08:00","close_reason":"Implemented EntityRef type with Name, Platform, Org, ID fields. Added URI(), IsEmpty(), String() methods and ParseEntityURI() function. Full test coverage.","dependencies":[{"issue_id":"bd-nmch","depends_on_id":"bd-7pwh","type":"parent-child","created_at":"2025-12-22T17:53:43.325405-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-nppb","title":"Refinery Patrol","description":"Merge queue processor patrol loop with verification gates.","status":"tombstone","priority":2,"issue_type":"molecule","created_at":"2025-12-26T13:08:21.308272-08:00","updated_at":"2025-12-27T00:10:54.177947-08:00","deleted_at":"2025-12-27T00:10:54.177947-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"molecule"}
|
||||
{"id":"bd-nqyp","title":"mol-beads-release","description":"Release checklist for beads version {{version}}.\n\nThis molecule ensures all release steps are completed properly.\nVariable: {{version}} - target version (e.g., 0.35.0)\n\n## Step: update-release-notes\nUpdate cmd/bd/info.go with release notes for {{version}}.\n\nAdd a new VersionChange entry at the top of versionChanges slice:\n```go\n{\n Version: \"{{version}}\",\n Date: \"YYYY-MM-DD\",\n Changes: []string{\n \"NEW: Feature description\",\n \"FIX: Bug fix description\",\n \"IMPROVED: Enhancement description\",\n },\n},\n```\n\nRun `git log --oneline v\u003cprevious\u003e..HEAD` to see what changed.\n\n## Step: update-changelog\nUpdate CHANGELOG.md with detailed release notes.\n\nAdd a new section after [Unreleased]:\n```markdown\n## [{{version}}] - YYYY-MM-DD\n\n### Added\n- **Feature name** (issue-id) - Description\n\n### Changed\n- **Change description** (issue-id)\n\n### Fixed\n- **Bug fix** (issue-id) - Description\n```\n\nSort by importance, not chronologically.\nNeeds: update-release-notes\n\n## Step: bump-version\nRun the version bump script.\n\n```bash\n./scripts/bump-version.sh {{version}}\n```\n\nThis updates version in all files:\n- cmd/bd/version.go\n- .claude-plugin/*.json\n- integrations/beads-mcp/pyproject.toml\n- npm-package/package.json\n- Hook templates\n\nNeeds: update-changelog\n\n## Step: run-tests\nRun tests and verify lint passes.\n\n```bash\ngo test -short ./...\n```\n\nCI will run full lint, but fix any obvious issues first.\nNeeds: bump-version\n\n## Step: commit-release\nCommit the release changes.\n\n```bash\ngit add -A\ngit commit -m \"chore: bump version to v{{version}}\"\n```\n\nNeeds: run-tests\n\n## Step: push-and-tag\nPush commit and create release tag.\n\n```bash\ngit push origin main\ngit tag v{{version}}\ngit push origin v{{version}}\n```\n\nThis triggers GitHub Actions release workflow.\nNeeds: commit-release\n\n## Step: wait-for-ci\nWait for GitHub Actions to complete.\n\nMonitor: https://github.com/steveyegge/beads/actions\n\nCI will:\n- Build binaries via GoReleaser\n- Create GitHub Release with assets\n- Publish to npm (@beads/bd)\n- Publish to PyPI (beads-mcp)\n- Update Homebrew tap\n\nWait until all jobs succeed (~5-10 min).\nNeeds: push-and-tag\n\n## Step: verify-release\nVerify the release is complete.\n\n```bash\n# Check GitHub release\ngh release view v{{version}}\n\n# Check Homebrew\nbrew update \u0026\u0026 brew info steveyegge/beads/bd\n\n# Check npm\nnpm view @beads/bd version\n\n# Check PyPI\npip index versions beads-mcp\n```\n\nNeeds: wait-for-ci\n\n## Step: update-local\nUpdate local installations with proper codesigning (macOS).\n\n```bash\n# Build from source in mayor/rig (canonical build location)\ncd ~/gt/beads/mayor/rig\ngit pull\ngo build -o bd ./cmd/bd\n\n# Sign and install (macOS requires codesigning to avoid \"Killed: 9\")\n# Uses fix-gt script which handles both gt and bd binaries\nfix-gt\n\n# Or manually sign if fix-gt not available:\n# xattr -cr bd \u0026\u0026 codesign -f -s - bd\n# cp bd ~/go/bin/bd \u0026\u0026 codesign -f -s - ~/go/bin/bd\n# cp bd ~/.local/bin/bd \u0026\u0026 codesign -f -s - ~/.local/bin/bd\n\n# Install MCP locally\npip install -e integrations/beads-mcp\n\n# Restart daemons\npkill -f \"bd daemon\" || true\n```\n\nVerify: `bd --version` shows {{version}}\nNeeds: verify-release\n\n## Step: manual-publish\n(Optional) Manual publish if CI failed.\n\n```bash\n# npm (requires npm login)\n./scripts/bump-version.sh {{version}} --publish-npm\n\n# PyPI (requires TWINE credentials)\n./scripts/bump-version.sh {{version}} --publish-pypi\n\n# Or both\n./scripts/bump-version.sh {{version}} --publish-all\n```\n\nOnly needed if CI publishing failed.\nNeeds: wait-for-ci","status":"tombstone","priority":2,"issue_type":"molecule","created_at":"2025-12-23T11:29:39.087936-08:00","updated_at":"2025-12-28T01:26:51.06645-08:00","labels":["template"],"deleted_at":"2025-12-28T01:26:51.06645-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"molecule"}
|
||||
@@ -567,7 +572,7 @@
|
||||
{"id":"bd-phwd","title":"Add timeout message for long-running git push operations","description":"When git push hangs waiting for credential/browser auth, show a periodic message to the user instead of appearing frozen. Add timeout messaging after N seconds of inactivity during git operations.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T11:44:57.318984535-07:00","updated_at":"2025-12-21T11:46:05.218023559-07:00","closed_at":"2025-12-21T11:46:05.218023559-07:00"}
|
||||
{"id":"bd-pndo","title":"Technical debt: Multiple deprecated command aliases still exist","description":"attached_args: Remove deprecated command aliases\n\nSeveral deprecated command aliases are still present in the codebase:\n\n1. cmd/bd/relate.go:51 - 'bd relate' deprecated for 'bd dep relate'\n2. cmd/bd/relate.go:56 - 'bd unrelate' deprecated for 'bd dep unrelate'\n3. cmd/bd/daemons.go:618 - 'bd daemons' deprecated for 'bd daemon \u003csubcommand\u003e'\n4. cmd/bd/migrate_hash_ids.go:433 - alias for 'bd migrate hash-ids'\n5. cmd/bd/migrate_tombstones.go:352 - alias for 'bd migrate tombstones'\n6. cmd/bd/migrate_sync.go:68 - alias for 'bd migrate sync'\n7. cmd/bd/migrate_issues.go:717 - alias for 'bd migrate issues'\n8. cmd/bd/comments.go:214 - deprecated for 'bd comments add'\n9. cmd/bd/template.go:64,82,147,226 - multiple template commands deprecated for 'bd mol'\n10. cmd/bd/admin_aliases.go - multiple admin aliases deprecated\n11. cmd/bd/detect_pollution.go:24 - deprecated for 'bd doctor --check=pollution'\n\nConsider:\n1. Setting a deprecation timeline (e.g., remove in v2.0)\n2. Adding warnings when deprecated commands are used\n3. Documenting migration path in CHANGELOG\n\nLocation: Various files in cmd/bd/","acceptance_criteria":"1. Deprecation timeline documented in CHANGELOG.md\n2. All deprecated commands print clear migration warning\n3. Consider removal date added to deprecation messages\n4. No immediate removal (just documentation and warnings)","status":"closed","priority":4,"issue_type":"chore","assignee":"gt-beads-capable","created_at":"2025-12-28T15:32:56.11458-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T16:43:56.279146-08:00","closed_at":"2025-12-28T16:43:56.279146-08:00","close_reason":"Removed all deprecated command aliases. See commit aed91aaf.","dependencies":[{"issue_id":"bd-pndo","depends_on_id":"bd-784c","type":"parent-child","created_at":"2025-12-28T15:38:04.31481-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-psg","title":"Add tests for dependency management","description":"Key dependency functions like mergeBidirectionalTrees, GetDependencyTree, and DetectCycles have low or no coverage. These are essential for maintaining data integrity in the dependency graph.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-18T07:00:43.458548462-07:00","updated_at":"2025-12-19T09:54:57.018745301-07:00","closed_at":"2025-12-18T10:24:56.271508339-07:00","dependencies":[{"issue_id":"bd-psg","depends_on_id":"bd-6ss","type":"discovered-from","created_at":"2025-12-18T07:00:43.463910911-07:00","created_by":"matt"}]}
|
||||
{"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":"open","priority":3,"issue_type":"bug","created_at":"2025-12-28T21:38:28.651591-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T21:38:28.651591-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-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","close_reason":"Skip printing Coordinator line when empty string","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-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","close_reason":"Merged to main"}
|
||||
{"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","close_reason":"Moved to gastown: gt-dich"}
|
||||
{"id":"bd-qe7j","title":"Code smell: Incomplete TODOs in formula/types.go","description":"internal/formula/types.go has multiple TODO items for features that are defined in the schema but not implemented:\n\n- Line 170: Expand field not implemented in bd cook\n- Line 174: ExpandVars field not implemented\n- Line 179: Gate integration pending (bd-udsi gates)\n- Line 186: Condition evaluation not implemented\n- Line 210: Additional expansion features\n\n**Problem:**\n- Schema defines features that aren't implemented\n- Can confuse users who try to use these fields\n- Creates maintenance burden of unused code paths\n\n**Acceptance Criteria:**\n- [ ] Either implement the features OR\n- [ ] Remove unimplemented fields from schema OR\n- [ ] Document clearly which fields are future-only\n- [ ] Update related beads issues if they exist","status":"open","priority":3,"issue_type":"chore","created_at":"2025-12-28T18:59:59.460434-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T18:59:59.460434-08:00","dependencies":[{"issue_id":"bd-qe7j","depends_on_id":"bd-ox1o","type":"blocks","created_at":"2025-12-28T19:00:23.747872-08:00","created_by":"daemon"}]}
|
||||
@@ -575,7 +580,7 @@
|
||||
{"id":"bd-qket","title":"Add computed .parent field to JSON output for convenience","description":"Currently parent is only in dependencies[]. Add a top-level .parent field to JSON/JSONL output that extracts the parent-child dependency for easier querying.\n\nExample:\n```bash\n# Current (works but verbose):\nbd show \u003cid\u003e --json | jq '.[0].dependencies[] | select(.dependency_type == \"parent-child\") | .id'\n\n# Desired:\nbd show \u003cid\u003e --json | jq '.[0].parent'\n```\n\nLow priority enhancement.","status":"closed","priority":4,"issue_type":"feature","created_at":"2025-12-27T23:32:44.24217-08:00","created_by":"beads/crew/emma","updated_at":"2025-12-28T02:24:31.453442-08:00","closed_at":"2025-12-28T02:24:31.453442-08:00","close_reason":"Added computed .parent field to JSON output"}
|
||||
{"id":"bd-qkw9","title":"Run bump-version.sh {{version}}","description":"Run ./scripts/bump-version.sh {{version}} to update version in all files","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-19T22:55:58.841424-08:00","updated_at":"2025-12-20T17:59:26.262877-08:00","closed_at":"2025-12-20T01:18:48.99813-08:00","dependencies":[{"issue_id":"bd-qkw9","depends_on_id":"bd-6s61","type":"parent-child","created_at":"2025-12-19T22:56:14.786027-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-qobn","title":"Code smell: 20+ global variables in main.go","description":"main.go lines 63-103 have over 20 global variables managing command-line state, daemon connection, auto-flush, auto-import, and error handling.\n\n**Globals include:**\ndbPath, actor, store, jsonOutput, daemonStatus, daemonClient, noDaemon, rootCtx, rootCancel, autoFlushEnabled, flushMutex, storeMutex, storeActive, flushFailureCount, lastFlushError, flushManager, hookRunner, skipFinalFlush, autoImportEnabled, versionUpgradeDetected, previousVersion, upgradeAcknowledged\n\n**Problem:**\n- Global state makes testing difficult\n- Race conditions possible between goroutines\n- Hard to track which functions modify which globals\n\n**Acceptance Criteria:**\n- [ ] Create CommandContext struct to hold runtime state\n- [ ] Pass context through command execution\n- [ ] Reduce global count to essential minimum\n- [ ] Tests pass","status":"open","priority":3,"issue_type":"chore","created_at":"2025-12-28T18:59:27.551044-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T18:59:27.551044-08:00","dependencies":[{"issue_id":"bd-qobn","depends_on_id":"bd-ox1o","type":"blocks","created_at":"2025-12-28T19:00:23.651276-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-qpf3","title":"Bug: bd swarm create allows duplicate swarm molecules","description":"Running `bd swarm create \u003cepic\u003e` twice creates two swarm molecules for the same epic.\n\nShould check for existing swarm molecule linked to the epic and either:\n1. Error with 'swarm already exists: \u003cid\u003e'\n2. Warn and return existing swarm ID\n3. Add --force flag to allow creating another\n\nCheck by querying for molecules with mol_type=swarm that have a relates-to dependency to the epic.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-28T21:38:04.252522-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T21:38:04.252522-08:00","dependencies":[{"issue_id":"bd-qpf3","depends_on_id":"bd-2ubv","type":"parent-child","created_at":"2025-12-28T21:38:44.740671-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-qpf3","title":"Bug: bd swarm create allows duplicate swarm molecules","description":"Running `bd swarm create \u003cepic\u003e` twice creates two swarm molecules for the same epic.\n\nShould check for existing swarm molecule linked to the epic and either:\n1. Error with 'swarm already exists: \u003cid\u003e'\n2. Warn and return existing swarm ID\n3. Add --force flag to allow creating another\n\nCheck by querying for molecules with mol_type=swarm that have a relates-to dependency to the epic.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-28T21:38:04.252522-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T21:59:59.35812-08:00","closed_at":"2025-12-28T21:59:59.35812-08:00","close_reason":"Added findExistingSwarm helper and duplicate check. Returns warning with existing swarm ID. --force flag allows override.","dependencies":[{"issue_id":"bd-qpf3","depends_on_id":"bd-2ubv","type":"parent-child","created_at":"2025-12-28T21:38:44.740671-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-qph3","title":"Consolidate git context into single cached struct","description":"Code review finding from bd-7di fix.\n\nCurrently there are 3 separate caches:\n- isWorktreeOnce/isWorktreeResult\n- mainRepoRootOnce/mainRepoRootResult/mainRepoRootErr \n- repoRootOnce/repoRootResult\n\nThese have redundant git calls - e.g. both isWorktreeUncached() and getMainRepoRootUncached() call getGitDirNoError(\"--git-common-dir\").\n\nCould consolidate into a single cached struct:\n```go\ntype gitContext struct {\n gitDir string\n commonDir string\n repoRoot string\n isWorktree bool\n}\n```\n\nThis would reduce git calls further and simplify ResetCaches().\n\nFile: internal/git/gitdir.go","status":"closed","priority":4,"issue_type":"task","assignee":"beads/crew/dave","created_at":"2025-12-25T22:08:53.829215-08:00","updated_at":"2025-12-27T21:49:38.611332-08:00","closed_at":"2025-12-27T21:49:38.611332-08:00","close_reason":"Consolidated into single gitContext struct with one git call"}
|
||||
{"id":"bd-qqc","title":"Release v{{version}}","description":"SUPERSEDED by bd-7bs4. Use the new proto for releases.\n\n","status":"tombstone","priority":1,"issue_type":"epic","created_at":"2025-12-18T12:59:00.610371-08:00","updated_at":"2025-12-24T16:25:31.181723-08:00","labels":["template"],"deleted_at":"2025-12-24T16:25:31.181723-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"}
|
||||
{"id":"bd-qqc.1","title":"Update version to {{version}} in version.go","description":"Edit cmd/bd/version.go line 17:\n\n```go\nVersion = \"{{version}}\"\n```\n\nVerify with: `grep 'Version =' cmd/bd/version.go`","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-18T12:59:13.887087-08:00","updated_at":"2025-12-24T16:25:31.10856-08:00","dependencies":[{"issue_id":"bd-qqc.1","depends_on_id":"bd-qqc","type":"parent-child","created_at":"2025-12-18T12:59:13.887655-08:00","created_by":"stevey"}],"deleted_at":"2025-12-24T16:25:31.10856-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -613,6 +618,7 @@
|
||||
{"id":"bd-rl5t","title":"Integration test: agent waits for CI via gate","description":"End-to-end test of the gate workflow.\n\n## Test Scenario\n1. Agent creates gate: bd gate create --await gh:run:123 --timeout 5m --notify beads/dave\n2. Agent writes handoff and exits\n3. Deacon patrol checks gate condition\n4. (Mock) GitHub run completes\n5. Deacon notifies waiter and closes gate\n6. New agent session reads mail and resumes\n\n## Test Requirements\n- Mock GitHub API responses\n- Test timeout path\n- Test multiple waiters\n- Verify mail notifications sent","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T11:44:41.725752-08:00","updated_at":"2025-12-23T12:24:08.346347-08:00","closed_at":"2025-12-23T12:24:08.346347-08:00","close_reason":"Moved to gastown: gt-gswn","dependencies":[{"issue_id":"bd-rl5t","depends_on_id":"bd-udsi","type":"parent-child","created_at":"2025-12-23T11:44:53.157037-08:00","created_by":"daemon"},{"issue_id":"bd-rl5t","depends_on_id":"bd-2l03","type":"blocks","created_at":"2025-12-23T11:44:56.674866-08:00","created_by":"daemon"},{"issue_id":"bd-rl5t","depends_on_id":"bd-ykqu","type":"blocks","created_at":"2025-12-23T11:44:56.753264-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-rnnr","title":"BondRef data model for compound lineage","description":"Add data model support for tracking compound molecule lineage.\n\nNEW FIELDS on Issue:\n bonded_from: []BondRef // For compounds: constituent protos\n\nNEW TYPE:\n type BondRef struct {\n ProtoID string // Source proto ID\n BondType string // sequential, parallel, conditional\n BondPoint string // Attachment site (issue ID or empty for root)\n }\n\nJSONL SERIALIZATION:\n {\n \"id\": \"proto-feature-tested\",\n \"title\": \"Feature with tests\",\n \"bonded_from\": [\n {\"proto_id\": \"proto-feature\", \"bond_type\": \"root\"},\n {\"proto_id\": \"proto-testing\", \"bond_type\": \"sequential\"}\n ],\n ...\n }\n\nQUERIES:\n- GetCompoundConstituents(id) → []BondRef\n- IsCompound(id) → bool\n- GetCompoundsUsing(protoID) → []Issue // Reverse lookup","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-21T00:59:38.582509-08:00","updated_at":"2025-12-21T01:19:43.922416-08:00","closed_at":"2025-12-21T01:19:43.922416-08:00","close_reason":"Added BondRef type to types.go with ProtoID, BondType, BondPoint fields; added BondedFrom field to Issue; added IsCompound() and GetConstituents() helpers; added BondType constants","dependencies":[{"issue_id":"bd-rnnr","depends_on_id":"bd-o5xe","type":"parent-child","created_at":"2025-12-21T00:59:51.234246-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-rp4o","title":"Deleted issues resurrect during bd sync (tombstones not propagating)","description":"## Problem\n\nWhen issues are deleted with bd delete --force, they get deleted from the local DB but resurrect during the next bd sync.\n\n## Reproduction\n\n1. Observe orphan warnings (bd-cb64c226.*, bd-cbed9619.*)\n2. Delete them: bd delete bd-cb64c226.1 ... --force\n3. Run bd sync\n4. Orphan warnings reappear - issues were resurrected!\n\n## Root Cause Hypothesis\n\nThe sync branch workflow (beads-sync) has the old state before deletions. When bd sync pulls from beads-sync and copies JSONL to main, the deleted issues are re-imported.\n\nTombstones may not be properly:\n1. Written to beads-sync during export\n2. Propagated during pull/merge\n3. Honored during import\n\n## Related\n\n- bd-7b7h: chicken-and-egg sync.branch bug (same workflow)\n- bd-ncwo: ID-based fallback matching to prevent ghost resurrection\n\n## Files to Investigate\n\n- cmd/bd/sync.go (export/import flow)\n- internal/syncbranch/worktree.go (PullFromSyncBranch, copyJSONLToMainRepo)\n- internal/importer/ (tombstone handling)","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-16T23:09:43.072696-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-rrjo","title":"Swarm: Test coordinator display","description":"Swarm molecule orchestrating epic bd-2rkr.\n\nEpic: bd-2rkr\nCoordinator: ","status":"open","priority":2,"issue_type":"molecule","created_at":"2025-12-28T22:00:50.527754-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T22:00:50.527754-08:00","dependencies":[{"issue_id":"bd-rrjo","depends_on_id":"bd-2rkr","type":"relates-to","created_at":"2025-12-28T22:00:50.528518-08:00","created_by":"beads/crew/dave"}]}
|
||||
{"id":"bd-rs5a","title":"Test agent bead","description":"Testing new agent type","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-27T23:36:57.594945-08:00","created_by":"mayor","updated_at":"2025-12-27T23:37:15.583616-08:00","closed_at":"2025-12-27T23:37:15.583616-08:00","close_reason":"Test beads for schema change"}
|
||||
{"id":"bd-ruio","title":"Polecat sessions terminate unexpectedly during work","description":"During swarm bd-784c, polecat sessions (Toast, Nux) terminated mid-task without completing their work.\n\n**Observed:**\n- Polecats were actively working (edits in progress, tests running)\n- Sessions suddenly showed 'not running' in gt polecat status\n- tmux sessions existed but were empty/reset\n- Work was partially complete (some commits made, issue still open)\n\n**Timeline example:**\n1. Toast working on bd-1tkd, making edits\n2. Check status 30s later - session empty, state shows 'idle'\n3. Had to re-sling to restart\n\n**Impact:**\n- Lost work progress\n- Required manual intervention to restart\n- Unclear if work was saved/committed\n\n**Possible causes:**\n- Session timeout?\n- Claude Code crash?\n- Resource limit?\n\n**Suggestion:**\n- Add session health monitoring\n- Auto-restart on unexpected termination\n- Log session exit reasons","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-28T16:18:09.014372-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T16:18:09.014372-08:00"}
|
||||
{"id":"bd-rupw","title":"Run bump-version.sh 0.30.7","description":"Run ./scripts/bump-version.sh 0.30.7 to update version in all files","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-19T22:56:48.649647-08:00","updated_at":"2025-12-19T22:57:31.512956-08:00","closed_at":"2025-12-19T22:57:31.512956-08:00","dependencies":[{"issue_id":"bd-rupw","depends_on_id":"bd-8pyn","type":"parent-child","created_at":"2025-12-19T22:56:48.653475-08:00","created_by":"stevey"}]}
|
||||
@@ -669,11 +675,12 @@
|
||||
{"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","close_reason":"Closed"}
|
||||
{"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","close_reason":"TOON approach declined","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-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","close_reason":"Implemented activity signaling in PersistentPreRun"}
|
||||
{"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":"open","priority":3,"issue_type":"task","created_at":"2025-12-28T21:38:20.692476-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T21:38:20.692476-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-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","close_reason":"swarm status now accepts swarm molecule ID and follows relates-to link to find epic","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"}
|
||||
{"id":"bd-vks2","title":"bd dep tree doesn't display external dependencies","description":"GetDependencyTree (dependencies.go:464-624) uses a recursive CTE that JOINs with the issues table, which means external refs (external:project:capability) are invisible in the tree output.\n\nWhen an issue has an external blocking dependency, running 'bd dep tree \u003cid\u003e' won't show it.\n\nOptions:\n1. Query dependencies table separately for external refs and display them as leaf nodes\n2. Add a synthetic 'external' node type that shows the ref and resolution status\n3. Document that external deps aren't shown in tree view (use bd show for full deps)\n\nLower priority since bd show \u003cid\u003e displays all dependencies including external refs.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-21T23:45:27.121934-08:00","updated_at":"2025-12-22T22:30:19.083652-08:00","closed_at":"2025-12-22T22:30:19.083652-08:00","close_reason":"Implemented: GetDependencyTree now fetches external deps and adds them as synthetic leaf nodes with resolution status. Added test TestGetDependencyTreeExternalDeps. Updated formatTreeNode to display external deps specially.","dependencies":[{"issue_id":"bd-vks2","depends_on_id":"bd-zmmy","type":"discovered-from","created_at":"2025-12-21T23:45:27.122511-08:00","created_by":"daemon"}]}
|
||||
{"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-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","close_reason":"Already addressed - init.go split from 1928 to 705 lines","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":"open","priority":2,"issue_type":"molecule","created_at":"2025-12-28T22:06:58.82489-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T22:06:58.82489-08:00","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"}
|
||||
{"id":"bd-vwjl","title":"Witness Patrol","description":"Per-rig worker monitor patrol loop with progressive nudging.","status":"open","priority":2,"issue_type":"molecule","created_at":"2025-12-27T19:24:01.894777-08:00","created_by":"deacon","updated_at":"2025-12-27T19:24:01.894777-08:00"}
|
||||
{"id":"bd-vxp1","title":"Test Parent Epic","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-27T22:15:17.894209-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-27T22:16:35.925357-08:00","deleted_at":"2025-12-27T22:16:35.925357-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"epic"}
|
||||
|
||||
Reference in New Issue
Block a user