bd sync: 2025-12-30 15:56:45
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
{"id":"bd-0a43","title":"Split monolithic sqlite.go into focused files","description":"internal/storage/sqlite/sqlite.go is 1050 lines containing initialization, 20+ CRUD methods, query building, and schema management.\n\nSplit into:\n- store.go: Store struct \u0026 initialization (150 lines)\n- bead_queries.go: Bead CRUD (300 lines)\n- work_queries.go: Work queries (200 lines) \n- stats_queries.go: Statistics (150 lines)\n- schema.go: Schema \u0026 migrations (150 lines)\n- helpers.go: Common utilities (100 lines)\n\nImpact: Impossible to understand at a glance; hard to find specific functionality; high cognitive load\n\nEffort: 6-8 hours","status":"tombstone","priority":0,"issue_type":"task","created_at":"2025-11-16T14:51:16.520465-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-0d5p","title":"Fix TestRunSync_Timeout failing on macOS","description":"The hooks timeout test fails because exec.CommandContext doesn't properly terminate child processes of shell scripts on macOS. The test creates a hook that runs 'sleep 60' with a 500ms timeout, but it waits the full 60 seconds.\n\nOptions to fix:\n- Use SysProcAttr{Setpgid: true} to create process group and kill the group\n- Skip test on darwin with build tag\n- Use a different approach for timeout testing\n\nLocation: internal/hooks/hooks_test.go:220-253","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-16T20:52:51.771217-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-0e02","title":"Code smell: Inconsistent error handling patterns","description":"Commands use a mix of error handling patterns:\n- FatalError()\n- FatalErrorRespectJSON()\n- fmt.Fprintf(os.Stderr, ...) + os.Exit(1)\n- Silent continue\n- Inconsistent resource cleanup (result.Close())\n\n**Example in show.go lines 89-146:**\nDifferent error paths use different patterns, some close resources, some don't.\n\n**Acceptance Criteria:**\n- [ ] Document error handling contract\n- [ ] Standardize on consistent pattern\n- [ ] Use defer for resource cleanup\n- [ ] Create helper for common fetch-and-handle pattern\n- [ ] Tests pass","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-28T18:59:30.118-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-30T15:44:43.362524-08:00","closed_at":"2025-12-30T07:02:03.530317-08:00","close_reason":"Implemented: Added LogError, LogErrorRespectJSON, LogNotFound, LogNotFoundRespectJSON helpers to errors.go. Standardized show.go to use these helpers. Updated ERROR_HANDLING.md documentation. Tests pass.","dependencies":[{"issue_id":"bd-0e02","depends_on_id":"bd-ox1o","type":"blocks","created_at":"2025-12-28T19:00:23.683836-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-0e3m","title":"Merge: jade-1767138549967","description":"branch: polecat/jade-1767138549967\ntarget: main\nsource_issue: jade-1767138549967\nrig: beads","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T15:55:27.93798-08:00","created_by":"beads/polecats/jade","updated_at":"2025-12-30T15:55:27.93798-08:00"}
|
||||
{"id":"bd-0fvq","title":"bd doctor should recommend bd prime migration for existing repos","description":"bd doctor should detect old beads integration patterns and recommend migrating to bd prime approach.\n\n## Current behavior\n- bd doctor checks if Claude hooks are installed globally\n- Doesn't check project-level integration (AGENTS.md, CLAUDE.md)\n- Doesn't recommend migration for repos using old patterns\n\n## Desired behavior\nbd doctor should detect and suggest:\n\n1. **Old slash command pattern detected**\n - Check for /beads:* references in AGENTS.md, CLAUDE.md\n - Suggest: These slash commands are deprecated, use bd prime hooks instead\n \n2. **No agent documentation**\n - Check if AGENTS.md or CLAUDE.md exists\n - Suggest: Run 'bd onboard' or 'bd setup claude' to document workflow\n \n3. **Old MCP-only pattern**\n - Check for instructions to use MCP tools but no bd prime hooks\n - Suggest: Add bd prime hooks for better token efficiency\n\n4. **Migration path**\n - Show: 'Run bd setup claude to add SessionStart/PreCompact hooks'\n - Show: 'Update AGENTS.md to reference bd prime instead of slash commands'\n\n## Example output\n\n⚠ Warning: Old beads integration detected in CLAUDE.md\n Found: /beads:* slash command references (deprecated)\n Recommend: Migrate to bd prime hooks for better token efficiency\n Fix: Run 'bd setup claude' and update CLAUDE.md\n\n💡 Tip: bd prime + hooks reduces token usage by 80-99% vs slash commands\n MCP mode: ~50 tokens vs ~10.5k for full MCP scan\n CLI mode: ~1-2k tokens with automatic context recovery\n\n## Benefits\n- Helps existing repos adopt new best practices\n- Clear migration path for users\n- Better token efficiency messaging","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-12T03:20:25.567748-08:00","updated_at":"2025-12-23T22:33:23.931274-08:00","closed_at":"2025-12-23T22:33:23.931274-08:00"}
|
||||
{"id":"bd-0j5y","title":"Merge: bd-05a8","description":"branch: polecat/valkyrie\ntarget: main\nsource_issue: bd-05a8\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T20:50:27.125378-08:00","updated_at":"2025-12-23T21:21:57.69697-08:00","closed_at":"2025-12-23T21:21:57.69697-08:00"}
|
||||
{"id":"bd-0kai","title":"Work on beads-ocs: Thin shim hooks to eliminate version d...","description":"Work on beads-ocs: Thin shim hooks to eliminate version drift (GH#615). Replace full hook scripts with thin shims that call bd hooks run. When done, submit MR (not PR) to integration branch for Refinery.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-19T22:57:22.91347-08:00","updated_at":"2025-12-20T00:49:51.926425-08:00","closed_at":"2025-12-19T23:24:08.828172-08:00"}
|
||||
@@ -172,7 +173,7 @@
|
||||
{"id":"bd-7h5","title":"Add pinned field to issue schema","description":"Add boolean 'pinned' field to the issue schema. When true, the issue is marked as a persistent context marker that should not be treated as a work item.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-18T23:33:26.767247-08:00","updated_at":"2025-12-19T00:08:59.854605-08:00","closed_at":"2025-12-19T00:08:59.854605-08:00","dependencies":[{"issue_id":"bd-7h5","depends_on_id":"bd-0vg","type":"blocks","created_at":"2025-12-18T23:33:55.98635-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-7h7","title":"bd init should stop running daemon to avoid stale cache","description":"When running bd init, any running daemon continues with stale cached data, causing bd stats and other commands to show old counts.\n\nRepro:\n1. Have daemon running with 788 issues cached\n2. Clean JSONL to 128 issues, delete db, run bd init\n3. bd stats still shows 788 (daemon cache)\n4. Must manually run bd daemon --stop\n\nFix: bd init should automatically stop any running daemon before reinitializing.","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-16T13:26:47.117226-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-7l27","title":"Integrate migration detection into bd doctor","description":"Multiple migration commands (migrate_hash_ids.go, migrate_issues.go, migrate_sync.go, migrate_tombstones.go, migrate.go) have TODOs suggesting integration into 'bd doctor' for automatic migration detection. This would allow bd doctor to detect when migrations are needed and suggest running them.\n\nFiles:\n- cmd/bd/migrate_hash_ids.go:24\n- cmd/bd/migrate_issues.go:15\n- cmd/bd/migrate_sync.go:16\n- cmd/bd/migrate_tombstones.go:72\n- cmd/bd/migrate.go:22","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-28T16:32:24.018282-08:00","created_by":"stevey","updated_at":"2025-12-30T15:44:43.353203-08:00","closed_at":"2025-12-30T00:06:59.401939-08:00","close_reason":"Implemented: Added CheckPendingMigrations to bd doctor, updated existing migration suggestions to use modern bd migrate subcommands"}
|
||||
{"id":"bd-7l67","title":"Add bd state and bd set-state helper commands","description":"Convenience commands for the labels-as-state pattern documented in LABELS.md.\n\n`bd state \u003crole\u003e \u003cdimension\u003e` - Query the current value of a state dimension\nExample: bd state witness-alpha patrol → outputs: active\n\n`bd set-state \u003crole\u003e \u003cdimension\u003e=\u003cvalue\u003e [--reason \"...\"]` - Atomically creates an event bead and updates the label\nExample: bd set-state witness-alpha patrol=muted --reason \"Investigating stuck polecat\"\n\nThis would combine the manual steps:\n1. bd create \"\u003creason\u003e\" -t event --parent \u003crole\u003e\n2. bd label remove \u003crole\u003e \u003cdimension\u003e:\u003cold-value\u003e\n3. bd label add \u003crole\u003e \u003cdimension\u003e:\u003cnew-value\u003e\n\nInto a single atomic operation.\n\nDiscovered from: bd-31ae","status":"in_progress","priority":3,"issue_type":"feature","created_at":"2025-12-30T15:46:40.679911-08:00","created_by":"stevey","updated_at":"2025-12-30T15:50:21.739567-08:00","dependencies":[{"issue_id":"bd-7l67","depends_on_id":"bd-31ae","type":"discovered-from","created_at":"2025-12-30T15:46:50.184553-08:00","created_by":"stevey"}]}
|
||||
{"id":"bd-7l67","title":"Add bd state and bd set-state helper commands","description":"Convenience commands for the labels-as-state pattern documented in LABELS.md.\n\n`bd state \u003crole\u003e \u003cdimension\u003e` - Query the current value of a state dimension\nExample: bd state witness-alpha patrol → outputs: active\n\n`bd set-state \u003crole\u003e \u003cdimension\u003e=\u003cvalue\u003e [--reason \"...\"]` - Atomically creates an event bead and updates the label\nExample: bd set-state witness-alpha patrol=muted --reason \"Investigating stuck polecat\"\n\nThis would combine the manual steps:\n1. bd create \"\u003creason\u003e\" -t event --parent \u003crole\u003e\n2. bd label remove \u003crole\u003e \u003cdimension\u003e:\u003cold-value\u003e\n3. bd label add \u003crole\u003e \u003cdimension\u003e:\u003cnew-value\u003e\n\nInto a single atomic operation.\n\nDiscovered from: bd-31ae","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-30T15:46:40.679911-08:00","created_by":"stevey","updated_at":"2025-12-30T15:56:44.713687-08:00","closed_at":"2025-12-30T15:56:44.713687-08:00","close_reason":"Implemented bd state and bd set-state commands with tests and documentation","dependencies":[{"issue_id":"bd-7l67","depends_on_id":"bd-31ae","type":"discovered-from","created_at":"2025-12-30T15:46:50.184553-08:00","created_by":"stevey"}]}
|
||||
{"id":"bd-7m16","title":"GH#519: bd sync fails when sync.branch is currently checked-out branch","description":"bd sync tries to create worktree for sync.branch even when already on that branch. Should commit directly instead. See GitHub issue #519.","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-16T01:03:36.613211-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-7p5l","title":"Fix N+1 query pattern in swarm status blocked check","description":"In getSwarmStatus, when checking if an issue is blocked, we query each dependency individually with GetIssue. With 100 issues and 5 deps each, thats 500 extra queries. Fix: Build a status map upfront from the already-fetched childIssues slice. File: cmd/bd/swarm.go:706-710","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-28T21:31:07.586335-08:00","created_by":"beads/crew/emma","updated_at":"2025-12-28T21:35:30.605065-08:00","closed_at":"2025-12-28T21:35:30.605065-08:00","dependencies":[{"issue_id":"bd-7p5l","depends_on_id":"bd-m6r3","type":"blocks","created_at":"2025-12-28T21:31:17.309538-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-7pwh","title":"HOP-compatible schema additions","description":"Add optional fields to Beads schema to enable future HOP integration.\nAll fields are backwards-compatible (optional, omitted if empty).\n\n## Reference\nSee ~/gt/docs/hop/BEADS-SCHEMA-CHANGES.md for full specification.\n\n## P1 Changes (Must Have Before Launch)\n\n### 1. EntityRef type\nStructured entity reference that can become HOP URI:\n```go\ntype EntityRef struct {\n Name string // \"polecat/Nux\"\n Platform string // \"gastown\"\n Org string // \"steveyegge\" \n ID string // \"polecat-nux\"\n}\n```\n\n### 2. creator field\nEvery issue tracks who created it (EntityRef).\n\n### 3. assignee_ref field\nStructured form alongside existing string assignee.\n\n### 4. validations array\nTrack who validated work completion:\n```go\ntype Validation struct {\n Validator *EntityRef\n Outcome string // accepted, rejected, revision_requested\n Timestamp time.Time\n Score *float32 // Future\n}\n```\n\n## P2 Changes (Should Have)\n\n### 5. work_type field\n\"mutex\" (default) or \"open_competition\"\n\n### 6. crystallizes field\nBoolean - does this work compound (true) or evaporate (false)?\n\n### 7. cross_refs field\nArray of URIs to beads in other repos:\n- \"beads://github/anthropics/claude-code/bd-xyz\"\n\n## P3 Changes (Nice to Have)\n\n### 8. skill_vector placeholder\nReserved for future embeddings: []float32\n\n## Implementation Notes\n- All fields optional in JSONL serialization\n- Empty/null fields omit from output\n- No migration needed for existing data\n- CLI additions: --creator, --validated-by filters","notes":"Scope reduced after review. P1 only: EntityRef type, creator field, validations array. Deferred: assignee_ref, work_type, crystallizes, cross_refs, skill_vector (YAGNI - semantics unclear, can add later when needed).","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-22T02:42:39.267984-08:00","updated_at":"2025-12-22T20:09:09.211821-08:00","closed_at":"2025-12-22T20:09:09.211821-08:00"}
|
||||
@@ -214,7 +215,7 @@
|
||||
{"id":"bd-9qj5","title":"Merge: bd-c7y5","description":"branch: polecat/toast\ntarget: main\nsource_issue: bd-c7y5\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T20:45:02.626929-08:00","updated_at":"2025-12-23T21:21:57.699742-08:00","closed_at":"2025-12-23T21:21:57.699742-08:00"}
|
||||
{"id":"bd-9szg","title":"Test prefix bd","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T14:24:41.470665-08:00","created_by":"stevey","updated_at":"2025-12-27T14:24:50.420887-08:00","deleted_at":"2025-12-27T14:24:50.420887-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"bd-9usz","title":"Test suite hangs/never finishes","description":"Running 'go test ./... -count=1' hangs indefinitely. The full test suite never completes, making it difficult to verify changes. Need to investigate which tests are hanging and fix or add timeouts.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-16T21:56:27.80191-08:00","updated_at":"2025-12-23T23:48:57.837606-08:00","closed_at":"2025-12-23T23:48:57.837606-08:00"}
|
||||
{"id":"bd-a0cp","title":"Consider using types.Status in merge package for type safety","description":"The merge package uses string for status comparison (e.g., result.Status == closed, issue.Status == StatusTombstone). The types package defines Status as a type alias with validation. While the merge package needs its own Issue struct for JSONL flexibility, it could import and use types.Status for constants to get compile-time type checking. Current code: if left == closed || right == closed. Could be: if left == string(types.StatusClosed). This is low priority since string comparison works correctly. Files: internal/merge/merge.go:44, 488, 501-521","status":"hooked","priority":4,"issue_type":"task","assignee":"beads/polecats/jade","created_at":"2025-12-05T16:37:10.690424-08:00","updated_at":"2025-12-30T15:49:11.434875-08:00"}
|
||||
{"id":"bd-a0cp","title":"Consider using types.Status in merge package for type safety","description":"The merge package uses string for status comparison (e.g., result.Status == closed, issue.Status == StatusTombstone). The types package defines Status as a type alias with validation. While the merge package needs its own Issue struct for JSONL flexibility, it could import and use types.Status for constants to get compile-time type checking. Current code: if left == closed || right == closed. Could be: if left == string(types.StatusClosed). This is low priority since string comparison works correctly. Files: internal/merge/merge.go:44, 488, 501-521","status":"closed","priority":4,"issue_type":"task","assignee":"beads/polecats/jade","created_at":"2025-12-05T16:37:10.690424-08:00","updated_at":"2025-12-30T15:54:45.570222-08:00","closed_at":"2025-12-30T15:54:45.570222-08:00","close_reason":"Added StatusClosed constant derived from types.StatusClosed and replaced hardcoded strings with the constant for type safety"}
|
||||
{"id":"bd-a15d","title":"Add test files for internal/storage","description":"The internal/storage package has no test files at all. This package provides the storage interface abstraction.\n\nCurrent coverage: N/A (no test files)\nTarget: Add basic interface tests","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T20:43:11.363017-08:00","updated_at":"2025-12-23T23:56:07.002735-08:00","closed_at":"2025-12-23T23:56:07.002735-08:00"}
|
||||
{"id":"bd-a3sj","title":"RemoveDependency fails on external deps - FK violation in dirty_issues","description":"In dependencies.go:225, RemoveDependency marks BOTH issueID and dependsOnID as dirty. For external refs (e.g., external:project:capability), dependsOnID doesn't exist in the issues table. This causes FK violation since dirty_issues.issue_id has FK constraint to issues.id.\n\nFix: Check if dependsOnID starts with 'external:' and only mark source issue as dirty, matching the logic in AddDependency (lines 162-170).\n\nRepro: bd dep rm \u003cissue\u003e external:project:capability","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-21T23:44:51.981138-08:00","updated_at":"2025-12-22T17:48:29.062424-08:00","closed_at":"2025-12-22T17:48:29.062424-08:00","dependencies":[{"issue_id":"bd-a3sj","depends_on_id":"bd-zmmy","type":"discovered-from","created_at":"2025-12-21T23:44:51.982343-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-a62m","title":"Update version to 0.33.2 in version.go","description":"Edit cmd/bd/version.go line 17:\n\n```go\nVersion = \"0.33.2\"\n```\n\nVerify with: `grep 'Version =' cmd/bd/version.go`","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-21T16:10:13.760384-08:00","updated_at":"2025-12-21T17:29:31.791368-08:00","deleted_at":"2025-12-21T17:29:31.791368-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
|
||||
11
.beads/mq/bd-0e3m.json
Normal file
11
.beads/mq/bd-0e3m.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "bd-0e3m",
|
||||
"branch": "polecat/jade-1767138549967",
|
||||
"target": "main",
|
||||
"source_issue": "jade-1767138549967",
|
||||
"worker": "",
|
||||
"rig": "beads",
|
||||
"title": "Merge: jade-1767138549967",
|
||||
"priority": 2,
|
||||
"created_at": "2025-12-30T15:55:27.93949-08:00"
|
||||
}
|
||||
Reference in New Issue
Block a user