bd sync: 2026-01-02 13:43:14
This commit is contained in:
committed by
Steve Yegge
parent
91b634b205
commit
8c297b51f0
@@ -101,14 +101,14 @@
|
||||
{"id":"bd-40c2","title":"bd init --from-jsonl: Skip git history scan","description":"## Problem\n\n`bd init` scans git history to find all issues ever created, which:\n- Resurrects deleted/compacted issues\n- Takes a long time on large repos\n- Defeats manual JSONL cleanup\n\n## Solution\n\nAdd `bd init --from-jsonl` flag that:\n1. Creates fresh database\n2. Imports ONLY from current .beads/issues.jsonl\n3. Skips git history scan entirely\n\n## Use Case\n\nAfter manually cleaning JSONL or receiving a clean JSONL from another source:\n```bash\n# Clean JSONL manually or via script\nbd init --from-jsonl # Use current JSONL as-is\n```\n\n(Moved from hq-c21fj)","status":"closed","priority":3,"issue_type":"feature","created_at":"2026-01-02T01:37:20.481211-08:00","created_by":"gastown/crew/joe","updated_at":"2026-01-02T12:41:30.784964-08:00","closed_at":"2026-01-02T12:41:30.784964-08:00","close_reason":"Duplicate of bd-c0b6"}
|
||||
{"id":"bd-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":"hooked","priority":3,"issue_type":"task","created_at":"2025-12-15T22:08:22.158027-08:00","updated_at":"2025-12-30T15:44:43.351778-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"}
|
||||
{"id":"bd-44u2","title":"Merge: obsidian-mjxbi027","description":"branch: polecat/obsidian-mjxbi027\ntarget: main\nsource_issue: obsidian-mjxbi027\nrig: beads\nagent_bead: bd-beads-polecat-obsidian","status":"open","priority":2,"issue_type":"merge-request","created_at":"2026-01-02T12:27:34.180445-08:00","created_by":"beads/polecats/obsidian","updated_at":"2026-01-02T12:27:34.180445-08:00"}
|
||||
{"id":"bd-44u2","title":"Merge: obsidian-mjxbi027","description":"branch: polecat/obsidian-mjxbi027\ntarget: main\nsource_issue: obsidian-mjxbi027\nrig: beads\nagent_bead: bd-beads-polecat-obsidian","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2026-01-02T12:27:34.180445-08:00","created_by":"beads/polecats/obsidian","updated_at":"2026-01-02T13:41:56.628182-08:00","closed_at":"2026-01-02T13:41:56.628182-08:00","close_reason":"Branches merged, cleaning up stale MR beads"}
|
||||
{"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","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"}
|
||||
{"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","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"}
|
||||
{"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":"closed","priority":4,"issue_type":"task","assignee":"beads/polecats/granite","created_at":"2025-12-25T22:08:52.736529-08:00","updated_at":"2025-12-30T22:14:16.659122-08:00","closed_at":"2025-12-30T22:14:16.659122-08:00","close_reason":"Already implemented. GetGitDir() uses getGitContext() which is cached via sync.Once. The gitContext struct (line 13-19) holds gitDir and is populated once by initGitContext(). All dependent functions (GetGitHooksDir, GetGitRefsDir, GetGitHeadPath) benefit from this caching. No changes needed."}
|
||||
{"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","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-4bt1","title":"Add gate field to Step schema in formula types","description":"Add Gate field to Step struct in internal/formula/types.go.\n\n## Implementation\n\n```go\ntype Step struct {\n // ... existing fields ...\n \n // Gate defines an async wait condition for this step.\n Gate *GateDef `json:\"gate,omitempty\"`\n}\n\ntype GateDef struct {\n Type string `json:\"type\"` // timer, gh:run, gh:pr, bead, human\n Workflow string `json:\"workflow,omitempty\"` // GitHub workflow name\n Timeout string `json:\"timeout,omitempty\"` // Max wait before escalation\n AwaitID string `json:\"await_id,omitempty\"` // Explicit condition ID\n}\n```\n\n## Acceptance Criteria\n- [ ] GateDef struct defined\n- [ ] Step.Gate field added\n- [ ] TOML and JSON parsing works\n- [ ] Tests for gate field parsing","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-02T13:27:14.449821-08:00","created_by":"mayor","updated_at":"2026-01-02T13:27:14.449821-08:00","dependencies":[{"issue_id":"bd-4bt1","depends_on_id":"bd-d1n1","type":"parent-child","created_at":"2026-01-02T13:28:06.993383-08:00","created_by":"mayor"}]}
|
||||
{"id":"bd-4bt1","title":"Add gate field to Step schema in formula types","description":"Add Gate field to Step struct in internal/formula/types.go.\n\n## Implementation\n\n```go\ntype Step struct {\n // ... existing fields ...\n \n // Gate defines an async wait condition for this step.\n Gate *GateDef `json:\"gate,omitempty\"`\n}\n\ntype GateDef struct {\n Type string `json:\"type\"` // timer, gh:run, gh:pr, bead, human\n Workflow string `json:\"workflow,omitempty\"` // GitHub workflow name\n Timeout string `json:\"timeout,omitempty\"` // Max wait before escalation\n AwaitID string `json:\"await_id,omitempty\"` // Explicit condition ID\n}\n```\n\n## Acceptance Criteria\n- [ ] GateDef struct defined\n- [ ] Step.Gate field added\n- [ ] TOML and JSON parsing works\n- [ ] Tests for gate field parsing","status":"in_progress","priority":2,"issue_type":"task","assignee":"beads/polecats/obsidian","created_at":"2026-01-02T13:27:14.449821-08:00","created_by":"mayor","updated_at":"2026-01-02T13:40:05.062499-08:00","dependencies":[{"issue_id":"bd-4bt1","depends_on_id":"bd-d1n1","type":"parent-child","created_at":"2026-01-02T13:28:06.993383-08:00","created_by":"mayor"}]}
|
||||
{"id":"bd-4d9d","title":"Test epic for duplicate swarm","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-28T21:56:57.256997-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-29T13:40:29.716788-08:00","closed_at":"2025-12-29T13:40:29.716788-08:00","close_reason":"Stale/spurious - test artifacts, merged PRs, or auto-close candidates"}
|
||||
{"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":"hooked","priority":3,"issue_type":"task","created_at":"2025-12-08T06:38:24.016316945-07:00","updated_at":"2025-12-30T15:44:43.343883-08:00"}
|
||||
@@ -128,7 +128,7 @@
|
||||
{"id":"bd-4y4g","title":"Bump version in all files","description":"Run ./scripts/bump-version.sh {{version}} to update 10 version files. Then run with --commit after info.go is updated.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-18T22:43:01.859728-08:00","updated_at":"2025-12-24T16:25:30.160776-08:00","dependencies":[{"issue_id":"bd-4y4g","depends_on_id":"bd-qqc","type":"parent-child","created_at":"2025-12-18T22:43:16.623724-08:00","created_by":"daemon"},{"issue_id":"bd-4y4g","depends_on_id":"bd-8v2","type":"blocks","created_at":"2025-12-18T22:43:20.823329-08:00","created_by":"daemon"}],"deleted_at":"2025-12-24T16:25:30.160776-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"bd-5012","title":"Merge: ux-1766978911613","description":"branch: polecat/Nux-1766978911613\ntarget: main\nsource_issue: ux-1766978911613\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-28T19:35:42.938017-08:00","created_by":"beads/polecats/Nux","updated_at":"2025-12-29T13:40:29.719953-08:00","closed_at":"2025-12-29T13:40:29.719953-08:00","close_reason":"Stale/spurious - test artifacts, merged PRs, or auto-close candidates"}
|
||||
{"id":"bd-512v","title":"Verify release artifacts","description":"Check GitHub releases page - binaries for darwin/linux/windows should be available","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-21T13:52:33.067124-08:00","updated_at":"2025-12-21T13:53:49.35495-08:00","deleted_at":"2025-12-21T13:53:49.35495-08:00","deleted_by":"stevey","delete_reason":"manual delete","original_type":"task"}
|
||||
{"id":"bd-533i","title":"Merge: quartz-mjxcafcl","description":"branch: polecat/quartz-mjxcafcl\ntarget: main\nsource_issue: quartz-mjxcafcl\nrig: beads\nagent_bead: bd-beads-polecat-quartz","status":"open","priority":2,"issue_type":"merge-request","created_at":"2026-01-02T12:50:03.596749-08:00","created_by":"beads/polecats/quartz","updated_at":"2026-01-02T12:50:03.596749-08:00"}
|
||||
{"id":"bd-533i","title":"Merge: quartz-mjxcafcl","description":"branch: polecat/quartz-mjxcafcl\ntarget: main\nsource_issue: quartz-mjxcafcl\nrig: beads\nagent_bead: bd-beads-polecat-quartz","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2026-01-02T12:50:03.596749-08:00","created_by":"beads/polecats/quartz","updated_at":"2026-01-02T13:41:56.625175-08:00","closed_at":"2026-01-02T13:41:56.625175-08:00","close_reason":"Branches merged, cleaning up stale MR beads"}
|
||||
{"id":"bd-5482","title":"Merge: obsidian-1767083466920","description":"branch: polecat/obsidian-1767083466920\ntarget: main\nsource_issue: obsidian-1767083466920\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T00:36:06.073173-08:00","created_by":"beads/polecats/obsidian","updated_at":"2025-12-30T00:54:59.493901-08:00","closed_at":"2025-12-30T00:54:59.493901-08:00","close_reason":"Branch polecat/obsidian-1767083466920 no longer exists on remote"}
|
||||
{"id":"bd-56x","title":"Review PR #514: fix plugin install docs","description":"Review and merge PR #514 from aspiers. This PR fixes incorrect docs for installing Claude Code plugin from source in docs/PLUGIN.md. Clarifies shell vs Claude Code commands and fixes the . vs ./beads argument issue. URL: https://github.com/anthropics/beads/pull/514","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-13T08:15:16.865354+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-581b80b3","title":"bd find-duplicates - AI-powered duplicate detection","description":"Find semantically duplicate issues.\n\nApproaches:\n1. Mechanical: Exact title/description matching\n2. Embeddings: Cosine similarity (cheap, scalable)\n3. AI: LLM-based semantic comparison (expensive, accurate)\n\nUses embeddings by default for \u003e100 issues.\n\nFiles: cmd/bd/find_duplicates.go (new)","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-10-29T20:49:49.126801-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"}
|
||||
@@ -209,7 +209,7 @@
|
||||
{"id":"bd-7zka.2","title":"Implement Gate evaluation in bd cook","description":"## Summary\nImplement async wait conditions (gates) for formula steps.\n\n## Design Decision: RESOLVED\n\n**Gates are issues.** A gate is a `bd-gate-*` prefixed issue that blocks the step it guards.\n\n### Gate Issue Structure\n```\nbd-gate-abc: Gate: gh:run test.yml\n type: gate\n gate_type: gh:run\n gate_target: test.yml\n gate_timeout: 1h\n gate_created: 2025-01-01T12:00:00Z\n blocks: bd-xyz # The step issue waiting on this gate\n```\n\n### Gate Types and Watchers\n\n| Gate Type | Signal Source | Watcher | Trigger |\n|-----------|---------------|---------|---------|\n| bead (cross-rig) | bd sync | Existing dep resolution | Sync |\n| gh:run | GitHub API | Refinery | Patrol poll |\n| gh:pr | GitHub API | Refinery | Patrol poll |\n| timer | Clock | Witness | Patrol cycle |\n| human | Human | None | bd close |\n| mail | Inbox | Deacon | Mail receipt (future) |\n\n### Visibility\n- bd list hides gate-type issues by default\n- bd gate list shows all open gates\n- bd mol show displays gates inline in molecule view\n\n### Timeouts\n- Gate timeout triggers escalation to Deacon/Overseer inbox\n- See: bd-0sgd (escalation inbox design)\n\n## Implementation Phases\n\n### Phase 1: Gate Issues + Human Gates\n- bd cook creates bd-gate-* issues for steps with gates\n- Gate issues block the next step via dependency\n- Human gates: just bd close bd-gate-xxx\n- bd list filters out type=gate by default\n- bd gate list command\n\n### Phase 2: Timer Gates\n- Witness patrol includes bd gate check --type=timer\n- Gate metadata: timeout, created_at\n- Expired gates escalate (not auto-close)\n\n### Phase 3: GitHub Gates\n- Refinery patrol includes bd gate check --type=gh\n- Uses gh CLI to check workflow/PR status\n- Resolved gates close\n\n### Phase 4: Cross-Rig Bead Gates\n- Leverage existing external dep resolution\n- bd cook creates gate with external dep on target bead\n- bd ready / bd sync resolves naturally\n\n### Phase 5: Mail Gates (future)\n- Deacon watches for mail responses\n- Complex - may YAGNI\n\n## Commands\n\n```bash\nbd gate list # Show open gates\nbd gate check # Evaluate all gates\nbd gate check --type=timer # Check only timer gates\nbd gate check --type=gh # Check only GitHub gates\nbd gate resolve \u003cid\u003e [--reason] # Force-close a gate\n```\n\n## Location\n- Schema: internal/formula/types.go\n- Gate issue creation: internal/formula/cook.go\n- Gate commands: cmd/bd/gate.go (new)\n- List filtering: cmd/bd/list.go\n\n## Acceptance Criteria\n- [ ] bd cook creates bd-gate-* issues for gated steps\n- [ ] Gate issues block subsequent steps\n- [ ] bd list hides gates by default\n- [ ] bd gate list shows all gates\n- [ ] bd gate check --type=timer works (Witness integration)\n- [ ] bd mol show displays gates in molecule view\n- [ ] Human gates closeable via bd close","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-30T19:32:19.664542-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-01T16:24:11.51872-08:00","closed_at":"2026-01-01T16:24:11.51872-08:00","close_reason":"Implemented Phase 1: Gate Issues + Human Gates","dependencies":[{"issue_id":"bd-7zka.2","depends_on_id":"bd-7zka","type":"parent-child","created_at":"2025-12-30T19:32:19.666332-08:00","created_by":"beads/crew/emma"},{"issue_id":"bd-7zka.2","depends_on_id":"bd-0sgd","type":"related","created_at":"2026-01-01T15:04:06.917484-08:00","created_by":"beads/crew/fang"}]}
|
||||
{"id":"bd-801b","title":"Merge: bd-bqcc","description":"branch: polecat/capable\ntarget: main\nsource_issue: bd-bqcc\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T00:26:04.306756-08:00","updated_at":"2025-12-23T01:33:25.728087-08:00","closed_at":"2025-12-23T01:33:25.728087-08:00"}
|
||||
{"id":"bd-83f5","title":"Remove top-level comment alias","description":"Remove 'comment' as top-level command. Users should use 'comments add' instead. Reduces command surface area.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T12:59:12.33579-08:00","created_by":"stevey","updated_at":"2025-12-28T13:06:53.335122-08:00","closed_at":"2025-12-28T13:06:53.335122-08:00"}
|
||||
{"id":"bd-873k","title":"Merge: jasper-mjxcarqd","description":"branch: polecat/jasper-mjxcarqd\ntarget: main\nsource_issue: jasper-mjxcarqd\nrig: beads\nagent_bead: bd-beads-polecat-jasper","status":"open","priority":2,"issue_type":"merge-request","created_at":"2026-01-02T12:49:27.658037-08:00","created_by":"beads/polecats/jasper","updated_at":"2026-01-02T12:49:27.658037-08:00"}
|
||||
{"id":"bd-873k","title":"Merge: jasper-mjxcarqd","description":"branch: polecat/jasper-mjxcarqd\ntarget: main\nsource_issue: jasper-mjxcarqd\nrig: beads\nagent_bead: bd-beads-polecat-jasper","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2026-01-02T12:49:27.658037-08:00","created_by":"beads/polecats/jasper","updated_at":"2026-01-02T13:41:56.626743-08:00","closed_at":"2026-01-02T13:41:56.626743-08:00","close_reason":"Branches merged, cleaning up stale MR beads"}
|
||||
{"id":"bd-89f89fc0","title":"Remove unreachable RPC methods","description":"Several RPC server and client methods are unreachable and should be removed:\n\nServer methods (internal/rpc/server.go):\n- `Server.GetLastImportTime` (line 2116)\n- `Server.SetLastImportTime` (line 2123)\n- `Server.findJSONLPath` (line 2255)\n\nClient methods (internal/rpc/client.go):\n- `Client.Import` (line 311) - RPC import not used (daemon uses autoimport)\n\nEvidence:\n```bash\ngo run golang.org/x/tools/cmd/deadcode@latest -test ./...\n```\n\nImpact: Removes ~80 LOC of unused RPC code","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-10-28T16:20:02.432202-07:00","updated_at":"2025-12-25T01:21:01.952723-08:00","deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
{"id":"bd-8b0x","title":"Remove molecule.go (simple instantiation)","description":"molecule.go uses is_template field for simple single-issue cloning. This is too simple for what molecules should be - full DAG orchestration. The use case is covered by bd mol bond with a single-issue molecule. Delete molecule.go and its commands.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-20T23:52:15.041776-08:00","updated_at":"2025-12-21T00:04:32.335849-08:00","closed_at":"2025-12-21T00:04:32.335849-08:00","dependencies":[{"issue_id":"bd-8b0x","depends_on_id":"bd-ffjt","type":"blocks","created_at":"2025-12-20T23:52:25.807967-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-8ca7","title":"Merge: bd-au0.6","description":"branch: polecat/furiosa\ntarget: main\nsource_issue: bd-au0.6\nrig: beads","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-23T20:42:30.870178-08:00","updated_at":"2025-12-23T21:21:57.695179-08:00","closed_at":"2025-12-23T21:21:57.695179-08:00"}
|
||||
@@ -292,13 +292,13 @@
|
||||
{"id":"bd-beads-crew-dave","title":"Crew worker dave in beads - human-managed persistent workspace.","description":"Crew worker dave in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.538389-08:00","created_by":"deacon","updated_at":"2026-01-02T02:00:06.02757-08:00"}
|
||||
{"id":"bd-beads-crew-emma","title":"Crew worker emma in beads - human-managed persistent workspace.","description":"Crew worker emma in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.604042-08:00","created_by":"deacon","updated_at":"2025-12-30T23:14:04.604042-08:00"}
|
||||
{"id":"bd-beads-crew-fang","title":"Crew worker fang in beads - human-managed persistent workspace.","description":"Crew worker fang in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.672037-08:00","created_by":"deacon","updated_at":"2025-12-30T23:14:04.672037-08:00"}
|
||||
{"id":"bd-beads-crew-grip","title":"Crew worker grip in beads - human-managed persistent workspace.","description":"Crew worker grip in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.739788-08:00","created_by":"deacon","updated_at":"2025-12-30T23:14:04.739788-08:00"}
|
||||
{"id":"bd-beads-crew-grip","title":"Crew worker grip in beads - human-managed persistent workspace.","description":"Crew worker grip in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.739788-08:00","created_by":"deacon","updated_at":"2026-01-02T13:34:05.666938-08:00"}
|
||||
{"id":"bd-beads-crew-wolf","title":"Crew worker wolf in beads - human-managed persistent workspace.","description":"Crew worker wolf in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.805884-08:00","created_by":"deacon","updated_at":"2025-12-30T23:14:04.805884-08:00"}
|
||||
{"id":"bd-beads-polecat-jasper","title":"bd-beads-polecat-jasper","description":"bd-beads-polecat-jasper\n\nrole_type: polecat\nrig: beads\nagent_state: spawning\nhook_bead: bd-oos3\nrole_bead: gt-polecat-role\ncleanup_status: null\nactive_mr: bd-873k\nnotification_level: null","status":"open","priority":2,"issue_type":"agent","created_at":"2026-01-02T12:41:56.3782-08:00","created_by":"mayor","updated_at":"2026-01-02T12:49:27.844585-08:00"}
|
||||
{"id":"bd-beads-polecat-jasper","title":"bd-beads-polecat-jasper","description":"bd-beads-polecat-jasper\n\nrole_type: polecat\nrig: beads\nagent_state: spawning\nhook_bead: bd-oos3\nrole_bead: gt-polecat-role\ncleanup_status: null\nactive_mr: bd-873k\nnotification_level: null","status":"tombstone","priority":2,"issue_type":"agent","created_at":"2026-01-02T12:41:56.3782-08:00","created_by":"mayor","updated_at":"2026-01-02T13:35:52.019683-08:00","deleted_at":"2026-01-02T13:35:52.019683-08:00","deleted_by":"mayor","delete_reason":"delete","original_type":"agent"}
|
||||
{"id":"bd-beads-polecat-newbot","title":"Agent: bd-beads-polecat-newbot","status":"tombstone","priority":0,"issue_type":"agent","created_at":"2026-01-02T12:25:10.273273-08:00","created_by":"beads/polecats/obsidian","updated_at":"2026-01-02T12:25:42.678762-08:00","labels":["rig:beads","role_type:polecat"],"deleted_at":"2026-01-02T12:25:42.678762-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"bd-beads-polecat-obsidian","title":"bd-beads-polecat-obsidian","description":"bd-beads-polecat-obsidian\n\nrole_type: polecat\nrig: beads\nagent_state: spawning\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: null\nactive_mr: bd-44u2\nnotification_level: null","status":"tombstone","priority":2,"issue_type":"agent","created_at":"2026-01-01T11:10:14.972102-08:00","created_by":"mayor","updated_at":"2026-01-02T12:27:34.357051-08:00","deleted_at":"2026-01-02T02:07:13.474556-08:00","deleted_by":"beads/witness","delete_reason":"delete","original_type":"agent"}
|
||||
{"id":"bd-beads-polecat-onyx","title":"bd-beads-polecat-onyx","description":"bd-beads-polecat-onyx\n\nrole_type: polecat\nrig: beads\nagent_state: spawning\nhook_bead: bd-w3rh\nrole_bead: gt-polecat-role\ncleanup_status: null\nactive_mr: bd-ewcd\nnotification_level: null","status":"open","priority":2,"issue_type":"agent","created_at":"2026-01-02T12:55:29.132464-08:00","created_by":"mayor","updated_at":"2026-01-02T13:07:05.40146-08:00"}
|
||||
{"id":"bd-beads-polecat-quartz","title":"bd-beads-polecat-quartz","description":"bd-beads-polecat-quartz\n\nrole_type: polecat\nrig: beads\nagent_state: spawning\nhook_bead: bd-kbfn\nrole_bead: gt-polecat-role\ncleanup_status: null\nactive_mr: bd-533i\nnotification_level: null","status":"open","priority":2,"issue_type":"agent","created_at":"2026-01-02T12:41:40.403065-08:00","created_by":"mayor","updated_at":"2026-01-02T12:50:03.712978-08:00"}
|
||||
{"id":"bd-beads-polecat-obsidian","title":"bd-beads-polecat-obsidian","description":"bd-beads-polecat-obsidian\n\nrole_type: polecat\nrig: beads\nagent_state: spawning\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: null\nactive_mr: bd-44u2\nnotification_level: null","status":"tombstone","priority":2,"issue_type":"agent","created_at":"2026-01-01T11:10:14.972102-08:00","created_by":"mayor","updated_at":"2026-01-02T13:39:18.368485-08:00","deleted_at":"2026-01-02T13:35:52.328957-08:00","deleted_by":"mayor","delete_reason":"delete","original_type":"agent"}
|
||||
{"id":"bd-beads-polecat-onyx","title":"bd-beads-polecat-onyx","description":"bd-beads-polecat-onyx\n\nrole_type: polecat\nrig: beads\nagent_state: spawning\nhook_bead: bd-w3rh\nrole_bead: gt-polecat-role\ncleanup_status: null\nactive_mr: bd-ewcd\nnotification_level: null","status":"tombstone","priority":2,"issue_type":"agent","created_at":"2026-01-02T12:55:29.132464-08:00","created_by":"mayor","updated_at":"2026-01-02T13:35:52.639666-08:00","deleted_at":"2026-01-02T13:35:52.639666-08:00","deleted_by":"mayor","delete_reason":"delete","original_type":"agent"}
|
||||
{"id":"bd-beads-polecat-quartz","title":"bd-beads-polecat-quartz","description":"bd-beads-polecat-quartz\n\nrole_type: polecat\nrig: beads\nagent_state: spawning\nhook_bead: bd-kbfn\nrole_bead: gt-polecat-role\ncleanup_status: null\nactive_mr: bd-533i\nnotification_level: null","status":"tombstone","priority":2,"issue_type":"agent","created_at":"2026-01-02T12:41:40.403065-08:00","created_by":"mayor","updated_at":"2026-01-02T13:35:52.945099-08:00","deleted_at":"2026-01-02T13:35:52.945099-08:00","deleted_by":"mayor","delete_reason":"delete","original_type":"agent"}
|
||||
{"id":"bd-beads-polecat-testbot","title":"Agent: bd-beads-polecat-testbot","status":"tombstone","priority":0,"issue_type":"agent","created_at":"2026-01-02T12:24:15.11753-08:00","created_by":"beads/polecats/obsidian","updated_at":"2026-01-02T12:24:57.611128-08:00","labels":["rig:beads","role_type:polecat"],"deleted_at":"2026-01-02T12:24:57.611128-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"bd-beads-refinery","title":"Refinery for beads - processes merge queue.","description":"Refinery for beads - processes merge queue.\n\nrole_type: refinery\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-refinery-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.469888-08:00","created_by":"deacon","updated_at":"2025-12-30T23:14:04.469888-08:00"}
|
||||
{"id":"bd-beads-witness","title":"Witness for beads - monitors polecat health and progress.","description":"Witness for beads - monitors polecat health and progress.\n\nrole_type: witness\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-witness-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.401378-08:00","created_by":"deacon","updated_at":"2026-01-02T12:25:42.716367-08:00"}
|
||||
@@ -393,7 +393,7 @@
|
||||
{"id":"bd-elqd","title":"Systematic bd sync stability investigation","description":"## Context\n\nbd sync has chronic instability issues that have persisted since inception:\n- issues.jsonl is always dirty after push\n- bd sync often creates messes requiring manual cleanup\n- Problems escalating despite accumulated bug fixes\n- Workarounds are getting increasingly draconian\n\n## Goal\n\nSystematically observe and diagnose bd sync failures rather than applying band-aid fixes.\n\n## Approach\n\n1. Start fresh session with latest binary (all fixes applied)\n2. Run bd sync and carefully observe what happens\n3. Document exact sequence of events when things go wrong\n4. File specific issues for each discrete problem identified\n5. Track the root causes, not just symptoms\n\n## Test Environment\n\n- Fresh clone or clean state\n- Latest bd binary with all bug fixes\n- Monitor both local and remote JSONL state\n- Check for timing issues, race conditions, merge conflicts\n\n## Success Criteria\n\n- Identify root causes of sync instability\n- Create actionable issues for each problem\n- Eventually achieve stable bd sync (no manual intervention needed)","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-16T22:57:25.35289-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-epww","title":"Document pinned status in CLI_REFERENCE.md","description":"## Task\n\nThe `pinned` status is a valid issue status but is not documented in CLI_REFERENCE.md.\n\n## Current Status Values (from types.go:295-301)\n\n- open\n- in_progress\n- blocked\n- deferred\n- closed\n- tombstone\n- **pinned** ← undocumented\n\n## Definition\n\n`StatusPinned Status = \"pinned\" // Persistent bead that stays open indefinitely (bd-6v2)`\n\n## Where to Document\n\nAdd to the 'Issue Types' or create a new 'Issue Statuses' section in docs/CLI_REFERENCE.md.\n\n## Related\n\nThe pinned status is heavily used by gt for hook management (`--status=pinned`).","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-27T17:12:35.296002-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-27T19:13:05.640767-08:00","closed_at":"2025-12-27T19:13:05.640767-08:00"}
|
||||
{"id":"bd-etyv","title":"Smart --var detection for mol distill","description":"Implemented bidirectional syntax support for mol distill --var flag.\n\n**Problem:**\n- spawn uses: --var variable=value (assignment style)\n- distill used: --var value=variable (substitution style)\n- Agents would naturally guess spawn-style for both\n\n**Solution:**\nSmart detection that accepts BOTH syntaxes by checking which side appears in the epic text:\n- --var branch=feature-auth → finds 'feature-auth' in text → works\n- --var feature-auth=branch → finds 'feature-auth' in text → also works\n\n**Changes:**\n- Added parseDistillVar() with smart detection\n- Added collectSubgraphText() helper\n- Restructured runMolDistill to load subgraph before parsing vars\n- Updated help text to document both syntaxes\n- Added comprehensive tests in mol_test.go\n\n**Edge cases handled:**\n- Both sides found: prefers spawn-style (more common guess)\n- Neither found: helpful error message\n- Empty sides: validation error\n- Values containing '=' (e.g., KEY=VALUE): works via SplitN\n\nEmbodies the Beads philosophy: watch what agents do, make their guess correct.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T11:08:50.83923-08:00","updated_at":"2025-12-21T11:08:56.432536-08:00","closed_at":"2025-12-21T11:08:56.432536-08:00"}
|
||||
{"id":"bd-ewcd","title":"Merge: onyx-mjxcs6um","description":"branch: polecat/onyx-mjxcs6um\ntarget: main\nsource_issue: onyx-mjxcs6um\nrig: beads\nagent_bead: bd-beads-polecat-onyx","status":"open","priority":2,"issue_type":"merge-request","created_at":"2026-01-02T13:07:05.288722-08:00","created_by":"beads/polecats/onyx","updated_at":"2026-01-02T13:07:05.288722-08:00"}
|
||||
{"id":"bd-ewcd","title":"Merge: onyx-mjxcs6um","description":"branch: polecat/onyx-mjxcs6um\ntarget: main\nsource_issue: onyx-mjxcs6um\nrig: beads\nagent_bead: bd-beads-polecat-onyx","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2026-01-02T13:07:05.288722-08:00","created_by":"beads/polecats/onyx","updated_at":"2026-01-02T13:41:56.622999-08:00","closed_at":"2026-01-02T13:41:56.622999-08:00","close_reason":"Branches merged, cleaning up stale MR beads"}
|
||||
{"id":"bd-exy3","title":"Ephemeral patrol molecules leaking into beads","description":"## Problem\n\nEphemeral patrol orchestration molecules (e.g., mol-deacon-patrol, wisp step issues) keep appearing in `bd ready` output in gastown beads.\n\nThese are ephemeral/wisp issues that should:\n1. Never be synced to the beads-sync branch\n2. Live only in .beads-wisp/ (ephemeral storage)\n3. Be squashed to digests, not persisted as regular beads\n\n## Examples found\n\n- gt-wisp-6ue: mol-deacon-patrol\n- gt-pacdm: mol-deacon-patrol \n- gt-wisp-mpm: Check own context limit\n- gt-wisp-lkc: Clean dead sessions\n\n## Investigation needed\n\n1. Where are these being created? (gt mol bond? manual bd create?)\n2. Why are they using the gt- prefix instead of staying ephemeral?\n3. Is the wisp storage (.beads-wisp/) being used correctly?\n4. Is bd sync accidentally picking up ephemeral issues?\n\n## Expected behavior\n\nPatrol molecules and their steps should be ephemeral and never appear in `bd ready` or `bd list`.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-27T17:04:16.51075-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-27T19:18:16.809273-08:00","closed_at":"2025-12-27T19:18:16.809273-08:00"}
|
||||
{"id":"bd-eylk","title":"Full event test","status":"tombstone","priority":2,"issue_type":"event","created_at":"2025-12-30T16:08:32.342126-08:00","created_by":"beads/polecats/obsidian","updated_at":"2025-12-30T16:08:59.772362-08:00","deleted_at":"2025-12-30T16:08:59.772362-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"event"}
|
||||
{"id":"bd-eyrh","title":"🤝 HANDOFF: Review remaining beads PRs","description":"## Current State\nJust merged PR #653 (doctor refactor) and added tests to restore coverage.\n\n## Remaining Open PRs to Review\nRun `gh pr list --repo steveyegge/beads` to see current list. As of handoff:\n\n1. #655 - feat: Linear Integration (jblwilliams)\n2. #651 - feat(audit): agent audit trail (dchichkov)\n3. #648 - Stop init creating redundant @AGENTS.md (maphew)\n4. #646 - fix(unix): handle Statfs field types (jordanhubbard)\n5. #645 - feat: /plan-to-beads Claude Code command (petebytes)\n6. #642, #641, #640 - sync branch fixes (cpdata)\n\n## Review Checklist\n- Check CI status with `gh pr checks \u003cnum\u003e --repo steveyegge/beads`\n- Verify no .beads/ data leaking (we have a hook now)\n- Review code quality\n- Merge good ones, request changes on problematic ones\n\n## Notes\n- User wants us to be proactive about merging good PRs\n- Can add tests ourselves if coverage drops","status":"tombstone","priority":2,"issue_type":"message","created_at":"2025-12-19T17:44:34.149837-08:00","updated_at":"2025-12-21T13:53:33.613805-08:00","deleted_at":"2025-12-21T13:53:33.613805-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"message"}
|
||||
@@ -425,7 +425,7 @@
|
||||
{"id":"bd-g1ai","title":"Merge: opal-1767106266450","description":"branch: polecat/opal-1767106266450\ntarget: main\nsource_issue: opal-1767106266450\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T07:03:00.719374-08:00","created_by":"beads/polecats/opal","updated_at":"2025-12-30T15:44:43.359036-08:00","closed_at":"2025-12-30T10:27:23.067611-08:00"}
|
||||
{"id":"bd-g4b4","title":"bd close hooks: context check and notifications","description":"Add hook system to bd close for notifications and custom actions.\n\n## Scope (MVP)\n\nImplement **command hooks only** for bd close. Deferred: notify, webhook types.\n\n## Implementation\n\n### 1. Config Schema\n\nAdd to internal/configfile/config.go:\n\n```go\ntype HooksConfig struct {\n OnClose []HookEntry `yaml:\"on_close,omitempty\"`\n}\n\ntype HookEntry struct {\n Command string `yaml:\"command\"` // Shell command to run\n Name string `yaml:\"name,omitempty\"` // Optional display name\n}\n```\n\nAdd `Hooks HooksConfig` field to Config struct.\n\n### 2. Hook Execution\n\nCreate internal/hooks/close_hooks.go:\n\n```go\nfunc RunCloseHooks(ctx context.Context, cfg *configfile.Config, issue *types.Issue) error {\n for _, hook := range cfg.Hooks.OnClose {\n cmd := exec.CommandContext(ctx, \"sh\", \"-c\", hook.Command)\n cmd.Env = append(os.Environ(),\n \"BEAD_ID=\"+issue.ID,\n \"BEAD_TITLE=\"+issue.Title,\n \"BEAD_TYPE=\"+string(issue.IssueType),\n \"BEAD_PRIORITY=\"+strconv.Itoa(issue.Priority),\n \"BEAD_CLOSE_REASON=\"+issue.CloseReason,\n )\n cmd.Stdout = os.Stdout\n cmd.Stderr = os.Stderr\n if err := cmd.Run(); err \\!= nil {\n // Log warning but dont fail the close\n fmt.Fprintf(os.Stderr, \"Warning: close hook %q failed: %v\\n\", hook.Name, err)\n }\n }\n return nil\n}\n```\n\n### 3. Integration Point\n\nIn cmd/bd/close.go, after successful close:\n\n```go\n// Run close hooks\nif cfg := configfile.Load(); cfg \\!= nil {\n hooks.RunCloseHooks(ctx, cfg, closedIssue)\n}\n```\n\n### 4. Example Config\n\n```yaml\n# .beads/config.yaml\nhooks:\n on_close:\n - name: show-next\n command: bd ready --limit 1\n - name: context-check \n command: echo \"Issue $BEAD_ID closed. Check context if nearing limit.\"\n```\n\n## Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| BEAD_ID | Issue ID (e.g., bd-abc1) |\n| BEAD_TITLE | Issue title |\n| BEAD_TYPE | Issue type (task, bug, feature, etc.) |\n| BEAD_PRIORITY | Priority (0-4) |\n| BEAD_CLOSE_REASON | Close reason if provided |\n\n## Testing\n\nAdd test in internal/hooks/close_hooks_test.go:\n- Test hook execution with mock config\n- Test env vars are set correctly\n- Test hook failure doesnt block close\n\n## Files to Create/Modify\n\n1. **Create:** internal/hooks/close_hooks.go\n2. **Create:** internal/hooks/close_hooks_test.go \n3. **Modify:** internal/configfile/config.go (add HooksConfig)\n4. **Modify:** cmd/bd/close.go (call RunCloseHooks)\n5. **Modify:** docs/CONFIG.md (document hooks config)\n\n## Out of Scope (Future)\n\n- notify hook type (gt mail integration)\n- webhook type (HTTP POST)\n- on_create, on_update hooks\n- Hook timeout configuration\n- Parallel hook execution","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-22T17:03:56.183461-08:00","updated_at":"2025-12-23T13:38:15.898746-08:00","closed_at":"2025-12-23T13:38:15.898746-08:00","dependencies":[{"issue_id":"bd-g4b4","depends_on_id":"bd-iz5t","type":"parent-child","created_at":"2025-12-23T12:44:07.811793-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-g6m5","title":"Code smell: Mixed daemon/direct mode logic throughout commands","description":"Most commands duplicate logic for both daemon and direct modes:\n\n```go\nif daemonClient != nil {\n // Daemon implementation\n} else {\n // Direct implementation\n}\n```\n\nThis pattern appears multiple times within the same function in show.go, list.go, and other commands.\n\n**Problem:**\n- Doubles the code paths to test\n- Changes to data retrieval require updates in two places\n- Difficult to reason about behavior\n\n**Acceptance Criteria:**\n- [ ] Create StorageAccessor interface for both modes\n- [ ] Use strategy pattern for daemon vs direct operations\n- [ ] Centralize dispatching logic\n- [ ] Reduce code duplication\n- [ ] Tests pass","status":"hooked","priority":3,"issue_type":"chore","created_at":"2025-12-28T18:59:31.571393-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-30T15:44:43.359727-08:00","dependencies":[{"issue_id":"bd-g6m5","depends_on_id":"bd-ox1o","type":"blocks","created_at":"2025-12-28T19:00:23.716024-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-g7ay","title":"Merge: obsidian-mjwn3dvc","description":"branch: polecat/obsidian-mjwn3dvc\ntarget: main\nsource_issue: obsidian-mjwn3dvc\nrig: beads","status":"open","priority":2,"issue_type":"merge-request","created_at":"2026-01-02T02:03:39.189973-08:00","created_by":"mayor","updated_at":"2026-01-02T02:03:39.189973-08:00"}
|
||||
{"id":"bd-g7ay","title":"Merge: obsidian-mjwn3dvc","description":"branch: polecat/obsidian-mjwn3dvc\ntarget: main\nsource_issue: obsidian-mjwn3dvc\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2026-01-02T02:03:39.189973-08:00","created_by":"mayor","updated_at":"2026-01-02T13:41:56.629738-08:00","closed_at":"2026-01-02T13:41:56.629738-08:00","close_reason":"Branches merged, cleaning up stale MR beads"}
|
||||
{"id":"bd-g7eq","title":"Agent beads: structured labels for filtering","description":"## Agent Beads Need Queryable Labels\n\nCurrently agent beads have role_type/rig in description text, not as labels. This breaks @group resolution in gt mail.\n\n## Current State\n\n```json\n{\n \"id\": \"gt-gastown-witness\",\n \"issue_type\": \"agent\",\n \"description\": \"...\\\\nrole_type: witness\\\\nrig: gastown\\\\n...\"\n}\n```\n\nCannot query: `bd list --type=agent --label=role_type:witness` returns nothing.\n\n## Required\n\nAgent bead creation should add labels:\n- `role_type:\u003ctype\u003e` (witness, refinery, crew, polecat, dog, mayor, deacon)\n- `rig:\u003crig\u003e` (gastown, beads, or \"town\" for town-level)\n\n## Where to Fix\n\ngt polecat/crew/agent creation commands should add labels:\n```bash\nbd create --type=agent ... --labels=\"role_type:witness,rig:gastown\"\n```\n\n## Queries Enabled\n\n```bash\nbd list --type=agent --label=role_type:witness # All witnesses\nbd list --type=agent --label=rig:gastown # All gastown agents\nbd list --type=agent --label=role_type:dog # All dogs\n```\n\n## Acceptance\n- New agent beads created with role_type/rig labels\n- Existing agent beads backfilled (one-time script)\n- @group patterns work in gt mail router","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-29T20:47:33.950733-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-29T21:16:00.746383-08:00","closed_at":"2025-12-29T21:16:00.746383-08:00","close_reason":"Implemented: role_type/rig labels for agent beads, auto-labeling on create/update, backfill command"}
|
||||
{"id":"bd-g9eu","title":"Investigate TestRoutingIntegration failure","description":"TestRoutingIntegration/maintainer_with_SSH_remote failed during pre-commit check with \"expected role maintainer, got contributor\".\nThis occurred while running `go test -short ./...` on darwin/arm64.\nThe failure appears unrelated to storage/sqlite changes.\nNeed to investigate if this is a flaky test or environmental issue.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-20T15:55:19.337094-08:00","updated_at":"2025-12-23T23:49:49.11706-08:00","closed_at":"2025-12-23T23:49:49.11706-08:00"}
|
||||
{"id":"bd-gfo3","title":"Merge: bd-ykd9","description":"branch: polecat/Doctor\ntarget: main\nsource_issue: bd-ykd9\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T13:34:43.778808-08:00","updated_at":"2025-12-23T19:12:08.353427-08:00","closed_at":"2025-12-23T19:12:08.353427-08:00"}
|
||||
@@ -490,7 +490,7 @@
|
||||
{"id":"bd-is6m","title":"Add gate checking to Deacon patrol loop","description":"Integrate gate checking into Deacon's patrol cycle.\n\n## Patrol Integration\n```go\nfunc (d *Deacon) checkGates(ctx context.Context) {\n gates, _ := d.store.ListOpenGates(ctx)\n \n for _, gate := range gates {\n // Check timeout\n if time.Since(gate.CreatedAt) \u003e gate.Timeout {\n d.notifyWaiters(gate, \"timeout\")\n d.closeGate(gate, \"timed out\")\n continue\n }\n \n // Check condition\n if d.checkCondition(gate.AwaitType, gate.AwaitID) {\n d.notifyWaiters(gate, \"cleared\")\n d.closeGate(gate, \"condition met\")\n }\n }\n}\n```\n\n## Note\nThis task is in Gas Town (gt), not beads. May need to be moved there.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T11:44:36.839709-08:00","updated_at":"2025-12-23T12:19:44.204647-08:00","closed_at":"2025-12-23T12:19:44.204647-08:00","dependencies":[{"issue_id":"bd-is6m","depends_on_id":"bd-udsi","type":"parent-child","created_at":"2025-12-23T11:44:52.909253-08:00","created_by":"daemon"},{"issue_id":"bd-is6m","depends_on_id":"bd-u66e","type":"blocks","created_at":"2025-12-23T11:44:56.428084-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-it19","title":"Code smell: show.go is 1592 lines - needs splitting","description":"cmd/bd/show.go is 1592 lines mixing data fetching, transformation, output formatting, and thread reconstruction.\n\n**Problem:**\n- Too large to understand and maintain\n- Poor separation of concerns\n- Hard to test individual components\n\n**Acceptance Criteria:**\n- [ ] Extract formatting into show_formatter.go\n- [ ] Extract thread reconstruction into show_threads.go\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:59:00.865612-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T19:01:18.42196-08:00","closed_at":"2025-12-28T19:01:18.42196-08:00","dependencies":[{"issue_id":"bd-it19","depends_on_id":"bd-ox1o","type":"blocks","created_at":"2025-12-28T19:00:23.61907-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-iutu","title":"Test comment display","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T17:50:24.269413-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-27T17:53:39.950742-08:00","comments":[{"id":5,"issue_id":"bd-iutu","author":"beads/crew/dave","text":"This is a test comment","created_at":"2025-12-28T01:50:30Z"}],"deleted_at":"2025-12-27T17:53:39.950742-08:00","deleted_by":"beads/crew/dave","delete_reason":"manual delete","original_type":"task"}
|
||||
{"id":"bd-iw4z","title":"Compound visualization in bd mol show","description":"Enhance bd mol show to display compound structure.\n\nENHANCEMENTS:\n- Show constituent protos and how they're bonded\n- Display bond type (sequential/parallel) between components\n- Indicate attachment points\n- Show combined variable requirements across all protos\n\nEXAMPLE OUTPUT:\n\n Compound: proto-feature-with-tests\n Bonded from:\n └─ proto-feature (root)\n └─ proto-testing (sequential, after completion)\n \n Variables: {{name}}, {{version}}, {{test_suite}}\n \n Structure:\n proto-feature-with-tests\n ├─ Design feature {{name}}\n ├─ Implement core\n ├─ Write unit tests ← from proto-testing\n └─ Run test suite {{test_suite}} ← from proto-testing","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-21T00:59:26.71318-08:00","updated_at":"2026-01-02T00:17:14.207395-08:00","dependencies":[{"issue_id":"bd-iw4z","depends_on_id":"bd-o5xe","type":"parent-child","created_at":"2025-12-21T00:59:51.500865-08:00","created_by":"daemon"},{"issue_id":"bd-iw4z","depends_on_id":"bd-rnnr","type":"blocks","created_at":"2025-12-21T00:59:51.891643-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-iw4z","title":"Compound visualization in bd mol show","description":"Enhance bd mol show to display compound structure.\n\nENHANCEMENTS:\n- Show constituent protos and how they're bonded\n- Display bond type (sequential/parallel) between components\n- Indicate attachment points\n- Show combined variable requirements across all protos\n\nEXAMPLE OUTPUT:\n\n Compound: proto-feature-with-tests\n Bonded from:\n └─ proto-feature (root)\n └─ proto-testing (sequential, after completion)\n \n Variables: {{name}}, {{version}}, {{test_suite}}\n \n Structure:\n proto-feature-with-tests\n ├─ Design feature {{name}}\n ├─ Implement core\n ├─ Write unit tests ← from proto-testing\n └─ Run test suite {{test_suite}} ← from proto-testing","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T00:59:26.71318-08:00","updated_at":"2026-01-02T13:42:51.390118-08:00","closed_at":"2026-01-02T13:42:51.390118-08:00","close_reason":"Implemented compound visualization in mol show. Added showCompoundBondingInfo() to display bonded-from lineage with bond types. Updated both showMolecule() and showMoleculeWithParallel() to detect compounds and show the 'Bonded from:' section. Added JSON output fields is_compound and bonded_from. Added unit tests for IsCompound(), GetConstituents(), and formatBondType().","dependencies":[{"issue_id":"bd-iw4z","depends_on_id":"bd-o5xe","type":"parent-child","created_at":"2025-12-21T00:59:51.500865-08:00","created_by":"daemon"},{"issue_id":"bd-iw4z","depends_on_id":"bd-rnnr","type":"blocks","created_at":"2025-12-21T00:59:51.891643-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-iz5t","title":"Swarm: 13 beads backlog issues for polecat execution","description":"## Swarm Overview\n\n13 issues prepared for parallel polecat execution. All issues have been enhanced with concrete implementation guidance, file lists, and success criteria.\n\n## Issue List\n\n### Bug (1) - HIGH PRIORITY\n| ID | Priority | Title |\n|----|----------|-------|\n| bd-phtv | P1 | Pinned field overwritten by subsequent commands |\n\n### Test Coverage (3)\n| ID | Package | Target |\n|----|---------|--------|\n| bd-io8c | internal/syncbranch | 27% → 70% |\n| bd-thgk | internal/compact | 17% → 70% |\n| bd-tvu3 | internal/beads | 48% → 70% |\n\n### Code Quality (3)\n| ID | Task |\n|----|------|\n| bd-qioh | FatalError pattern standardization |\n| bd-rgyd | Split queries.go (1704 lines → 5 files) |\n| bd-u2sc.3 | Split cmd/bd files (sync/init/show/compact) |\n\n### Features (4)\n| ID | Task |\n|----|------|\n| bd-au0.5 | Search date/priority filters |\n| bd-ykd9 | Doctor --fix auto-repair |\n| bd-g4b4 | Close hooks system |\n| bd-likt | Gate daemon RPC |\n\n### Polish (2)\n| ID | Task |\n|----|------|\n| bd-4qfb | Doctor output formatting |\n| bd-u2sc.4 | slog structured logging |\n\n## Issue Details\n\nAll issues have been enhanced with:\n- Concrete file lists to modify\n- Code snippets and patterns\n- Success criteria\n- Test commands\n\nRun `bd show \u003cid\u003e` for full details on any issue.\n\n## Execution Notes\n\n- All issues are independent (no blockers between them)\n- bd-phtv (P1 bug) should get priority - affects bd pin functionality\n- Test coverage tasks are straightforward but time-consuming\n- File split tasks (bd-rgyd, bd-u2sc.3) are mechanical but important\n\n## Completed During Prep\n\n- bd-ucgz (P2 bug) - Fixed inline: external deps orphan check (commit f2db0a1d)\n- Moved 5 gastown issues out of beads backlog (gt-dh65, gt-ng6g, gt-fqcz, gt-gswn, gt-rw2z)\n- Deferred 4 premature/post-1.0 issues\n- Closed bd-udsi epic (core implementation complete)","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-23T12:43:58.427835-08:00","updated_at":"2025-12-23T20:26:50.629471-08:00","closed_at":"2025-12-23T20:26:50.629471-08:00"}
|
||||
{"id":"bd-j0tr","title":"Phase 1.3: Basic TOON read/write operations","description":"Add basic TOON read/write operations to bdt executable. Implement create, list, and show commands that use the internal/toon package for encoding/decoding to TOON format.\n\n## Subtasks\n1. Implement bdt create command - Create issues and serialize to TOON format\n2. Implement bdt list command - Read issues.toon and display all issues\n3. Implement bdt show command - Display single issue by ID\n4. Add file I/O operations for issues.toon\n5. Integrate internal/toon package (EncodeTOON, DecodeJSON)\n6. Write tests for create, list, show operations\n\n## Files to Create/Modify\n- cmd/bdt/create.go - Create command\n- cmd/bdt/list.go - List command \n- cmd/bdt/show.go - Show command\n- cmd/bdt/storage.go - File I/O helper\n\n## Success Criteria\n- bdt create \"Issue title\" creates and saves to issues.toon\n- bdt list displays all issues in human-readable format\n- bdt list --json shows JSON output\n- bdt show \u003cid\u003e displays single issue\n- Issues round-trip correctly: create → list → show\n- All tests passing with \u003e80% coverage","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-19T12:59:54.270296918-07:00","updated_at":"2025-12-19T13:09:00.196045685-07:00","closed_at":"2025-12-19T13:09:00.196045685-07:00"}
|
||||
{"id":"bd-j3dj","title":"Code smell: Duplicated issue type switch in cook.go","description":"The same switch statement for mapping step type to IssueType appears twice in cook.go:\n\nLocation 1 (line 425):\n```go\nswitch step.Type {\ncase \"task\":\n issueType = types.TypeTask\ncase \"bug\":\n issueType = types.TypeBug\n// ...\n}\n```\n\nLocation 2 (line 764): Identical switch statement.\n\nShould extract to a helper function:\n```go\nfunc stepTypeToIssueType(stepType string) types.IssueType {\n switch stepType {\n case \"task\": return types.TypeTask\n case \"bug\": return types.TypeBug\n // ...\n default: return types.TypeTask\n }\n}\n```\n\nLocation: cmd/bd/cook.go:425 and cmd/bd/cook.go:764","status":"closed","priority":2,"issue_type":"chore","created_at":"2025-12-28T15:31:56.630449-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T15:42:13.001897-08:00","closed_at":"2025-12-28T15:42:13.001897-08:00","dependencies":[{"issue_id":"bd-j3dj","depends_on_id":"bd-784c","type":"parent-child","created_at":"2025-12-28T15:38:04.14981-08:00","created_by":"daemon"}]}
|
||||
|
||||
Reference in New Issue
Block a user