bd sync: 2026-01-02 00:54:43
This commit is contained in:
committed by
Steve Yegge
parent
f60f132bde
commit
16993bb1fc
@@ -39,7 +39,7 @@
|
||||
{"id":"bd-1eak","title":"Add bd refile command to move issues between rigs","description":"Add a `bd refile \u003csource-id\u003e \u003ctarget-rig\u003e` command to move issues between rigs.\n\nBeads already has the routing infrastructure:\n- ResolveBeadsDirForID - routes reads by prefix\n- ResolveBeadsDirForRig - routes writes by rig name\n- GetRoutedStorageForID - opens cross-rig storage connections\n\nImplementation:\n1. Get source issue via routing\n2. Create new issue in target rig (existing --prefix mechanism)\n3. Close source issue with 'Refiled to \u003cnew-id\u003e'\n4. Optionally: migrate deps, link the two issues\n\nThis is pure beads - no gastown involvement needed.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-31T12:29:18.161088-08:00","created_by":"beads/crew/grip","updated_at":"2025-12-31T12:34:23.548938-08:00","closed_at":"2025-12-31T12:34:23.548938-08:00","close_reason":"Implemented bd refile command"}
|
||||
{"id":"bd-1pr6","title":"Time-dependent worktree detection tests may be flaky","status":"hooked","priority":3,"issue_type":"task","created_at":"2025-12-26T01:21:22.065353-08:00","updated_at":"2025-12-30T15:44:43.360441-08:00"}
|
||||
{"id":"bd-1ri4","title":"Test prefix bd-","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T14:24:41.240483-08:00","created_by":"stevey","updated_at":"2025-12-27T14:24:50.419881-08:00","deleted_at":"2025-12-27T14:24:50.419881-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"bd-1slh","title":"Investigate charmbracelet-based TUI for beads","description":"Now that we've merged the create-form command (PR #603) which uses charmbracelet/huh, investigate whether beads should have a more comprehensive TUI.\n\nConsiderations:\n- Should this be in core or a separate binary (bd-tui)?\n- What functionality would benefit from a TUI? (list view, issue details, search, bulk operations)\n- Plugin/extension architecture vs build tags vs separate binary\n- Dependency cost vs user experience tradeoff\n- Target audience: humans who want interactive workflows vs CLI/scripting users\n\nRelated: PR #603 added charmbracelet/huh dependency for create-form command.","notes":"Foundation is in place (lipgloss, huh), but not a priority right now","status":"deferred","priority":3,"issue_type":"feature","created_at":"2025-12-17T14:20:51.503563-08:00","updated_at":"2025-12-20T23:31:34.354023-08:00"}
|
||||
{"id":"bd-1slh","title":"Investigate charmbracelet-based TUI for beads","description":"Now that we've merged the create-form command (PR #603) which uses charmbracelet/huh, investigate whether beads should have a more comprehensive TUI.\n\nConsiderations:\n- Should this be in core or a separate binary (bd-tui)?\n- What functionality would benefit from a TUI? (list view, issue details, search, bulk operations)\n- Plugin/extension architecture vs build tags vs separate binary\n- Dependency cost vs user experience tradeoff\n- Target audience: humans who want interactive workflows vs CLI/scripting users\n\nRelated: PR #603 added charmbracelet/huh dependency for create-form command.","notes":"Foundation is in place (lipgloss, huh), but not a priority right now","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-17T14:20:51.503563-08:00","updated_at":"2026-01-02T00:17:14.232446-08:00"}
|
||||
{"id":"bd-1tkd","title":"Code smell: ComputeContentHash() is 100+ lines of repetitive code","description":"attached_args: Refactor ComputeContentHash repetitive code\n\nThe ComputeContentHash() method in internal/types/types.go (lines 87-190) is over 100 lines of repetitive code:\n\n```go\nh.Write([]byte(i.Title))\nh.Write([]byte{0}) // separator\nh.Write([]byte(i.Description))\nh.Write([]byte{0})\nh.Write([]byte(i.Design))\n// ... repeated 40+ times\n```\n\nConsider:\n1. Using reflection to iterate over struct fields tagged for hashing\n2. Creating a helper function that takes field name and value\n3. Using a slice of fields to hash and iterating over it\n4. At minimum, extracting the repetitive pattern into a helper\n\nLocation: internal/types/types.go:87-190","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-28T15:31:55.514941-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T16:41:13.031194-08:00","closed_at":"2025-12-28T16:41:13.031194-08:00","dependencies":[{"issue_id":"bd-1tkd","depends_on_id":"bd-784c","type":"parent-child","created_at":"2025-12-28T15:38:04.204723-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-1tw","title":"Fix G104 errors unhandled in internal/storage/sqlite/queries.go:1186","description":"Linting issue: G104: Errors unhandled (gosec) at internal/storage/sqlite/queries.go:1186:2. Error: rows.Close()","status":"tombstone","priority":0,"issue_type":"bug","created_at":"2025-12-07T15:35:13.051671889-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-20j","title":"sync branch not match config","description":"./bd sync\n→ Exporting pending changes to JSONL...\n→ No changes to commit\n→ Pulling from sync branch 'gh-386'...\nError pulling from sync branch: failed to create worktree: failed to create worktree parent directory: mkdir /var/home/matt/dev/beads/worktree-db-fail/.git: not a directory\nmatt@blufin-framation ~/d/b/worktree-db-fail (worktree-db-fail) [1]\u003e bd config list\n\nConfiguration:\n auto_compact_enabled = false\n compact_batch_size = 50\n compact_model = claude-3-5-haiku-20241022\n compact_parallel_workers = 5\n compact_tier1_days = 30\n compact_tier1_dep_levels = 2\n compact_tier2_commits = 100\n compact_tier2_days = 90\n compact_tier2_dep_levels = 5\n compaction_enabled = false\n issue_prefix = worktree-db-fail\n sync.branch = worktree-db-fail","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-08T06:49:04.449094018-07:00","updated_at":"2025-12-29T14:03:14.980166-08:00","closed_at":"2025-12-29T14:03:14.980166-08:00","close_reason":"Config mismatch: added warning to bd config list when config.yaml overrides database settings. Worktree issue was already fixed by GH#639."}
|
||||
@@ -75,7 +75,7 @@
|
||||
{"id":"bd-2vh3.3","title":"Tier 2: Basic bd mol squash command","description":"Add bd mol squash command for basic molecule execution compression.\n\n## Command\n\nbd mol squash \u003cmolecule-id\u003e [flags]\n --dry-run Preview what would be squashed\n --keep-children Don't delete ephemeral children after squash\n --json JSON output\n\n## Implementation\n\n1. Find all ephemeral children of molecule (parent-child deps)\n2. Concatenate child descriptions/notes into digest\n3. Create digest issue in main repo with:\n - Title: 'Molecule Execution Summary: \u003coriginal-title\u003e'\n - digest_of: [list of squashed child IDs]\n - ephemeral: false (digest is permanent)\n4. Delete ephemeral children (unless --keep-children)\n5. Link digest to parent work item\n\n## Schema Changes\n\nAdd to Issue struct:\n- SquashedAt *time.Time\n- SquashDigest string (ID of digest)\n- DigestOf []string (IDs of squashed children)\n\n## Acceptance Criteria\n\n- bd mol squash \u003cid\u003e creates digest, removes children\n- --dry-run shows preview\n- Digest has proper metadata linking","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-21T12:57:48.338114-08:00","updated_at":"2025-12-21T13:53:58.974433-08:00","closed_at":"2025-12-21T13:53:58.974433-08:00","dependencies":[{"issue_id":"bd-2vh3.3","depends_on_id":"bd-2vh3","type":"parent-child","created_at":"2025-12-21T12:57:48.338636-08:00","created_by":"stevey"},{"issue_id":"bd-2vh3.3","depends_on_id":"bd-2vh3.2","type":"blocks","created_at":"2025-12-21T12:58:22.601321-08:00","created_by":"stevey"}]}
|
||||
{"id":"bd-2vh3.4","title":"Tier 3: AI-powered squash summarization","description":"## Design: Agent-Provided Summarization (Inversion of Control)\n\nbd is a tool FOR agents, not an agent itself. The calling agent provides\nthe summary; bd just stores it.\n\n### API\n\n```bash\n# Agent generates summary, passes to bd\nbd mol squash bd-xxx --summary \"Agent-generated summary here\"\n\n# Without --summary, falls back to basic concatenation\nbd mol squash bd-xxx\n```\n\n### Gas Town Integration Pattern\n\n```go\n// In polecat completion handler or witness\nraw := exec.Command(\"bd\", \"mol\", \"show\", molID, \"--json\").Output()\nsummary := callHaiku(buildSummaryPrompt(raw)) // agent's job\nexec.Command(\"bd\", \"mol\", \"squash\", molID, \"--summary\", summary).Run()\n```\n\n### Why This Design\n\n| Concern | bd's job | Agent's job |\n|---------|----------|-------------|\n| Store data | ✅ | |\n| Query data | ✅ | |\n| Generate summaries | | ✅ |\n| Call LLMs | | ✅ |\n| Manage API keys | | ✅ |\n\n### Implementation Status\n\n- [x] --summary flag added to bd mol squash\n- [x] Tests for agent-provided summary\n- [ ] Gas Town integration (separate task)\n\n### Acceptance Criteria\n\n- ✅ bd mol squash --summary uses provided text\n- ✅ Without --summary, falls back to concatenation\n- ✅ No LLM calls in bd itself","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T12:58:00.732749-08:00","updated_at":"2025-12-21T14:29:16.288713-08:00","closed_at":"2025-12-21T14:29:16.288713-08:00","dependencies":[{"issue_id":"bd-2vh3.4","depends_on_id":"bd-2vh3","type":"parent-child","created_at":"2025-12-21T12:58:00.733264-08:00","created_by":"stevey"},{"issue_id":"bd-2vh3.4","depends_on_id":"bd-2vh3.3","type":"blocks","created_at":"2025-12-21T12:58:22.698686-08:00","created_by":"stevey"}]}
|
||||
{"id":"bd-2vh3.5","title":"Tier 4: Auto-squash on molecule completion","description":"Automatically squash molecules when they reach terminal state.\n\n## Integration Points\n\n1. Hook into molecule completion handler\n2. Detect when all steps are done/failed\n3. Trigger squash automatically\n\n## Config\n\nbd config set mol.auto_squash true # Default: false\nbd config set mol.auto_squash_on_success true # Only on success\nbd config set mol.auto_squash_delay '5m' # Wait before squash\n\n## Implementation Options\n\n### Option A: Post-Completion Hook\nIn mol completion handler:\n- Check if auto_squash enabled\n- Call Squash() after terminal state\n\n### Option B: Git Hook\nIn .beads/hooks/post-commit:\n- bd mol squash --auto\n\n### Option C: Daemon Background Task\n- Daemon periodically checks for squashable molecules\n- Squashes in background\n\n## Acceptance Criteria\n\n- Completed molecules auto-squash without manual intervention\n- Configurable delay before squash\n- Option to squash only on success vs always\n- Works with both daemon and no-daemon modes","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T12:58:13.345577-08:00","updated_at":"2025-12-21T17:40:39.794527-08:00","closed_at":"2025-12-21T17:40:39.794527-08:00","dependencies":[{"issue_id":"bd-2vh3.5","depends_on_id":"bd-2vh3","type":"parent-child","created_at":"2025-12-21T12:58:13.346152-08:00","created_by":"stevey"},{"issue_id":"bd-2vh3.5","depends_on_id":"bd-2vh3.4","type":"blocks","created_at":"2025-12-21T12:58:22.797141-08:00","created_by":"stevey"}]}
|
||||
{"id":"bd-2vh3.6","title":"Tier 5 (Future): JSONL archive rotation","description":"Periodic rotation of issues.jsonl for long-running repos.\n\n## Design\n\n.beads/\n├── issues.jsonl # Current (hot)\n├── archive/\n│ ├── issues-2025-12.jsonl.gz # Archived (cold)\n│ └── ...\n└── index.jsonl # Merged index for queries\n\n## Commands\n\nbd archive rotate [flags]\n --older-than N Archive issues closed \u003e N days\n --compress Gzip archives\n --dry-run Preview\n\nbd archive list # Show archived periods\nbd archive restore \u003cperiod\u003e # Restore from archive\n\n## Config\n\nbd config set archive.enabled true\nbd config set archive.rotate_days 90\nbd config set archive.compress true\nbd config set archive.path '.beads/archive'\n\n## Considerations\n\n- Archives can be gitignored (local only) or committed (shared)\n- Query layer must check index, hydrate from archive\n- Cold storage tiering (S3/GCS) for enterprise\n- Merkle proofs preserved for audit\n\n## Priority\n\nThis is post-1.0 work. Current focus is on squash (removes ephemeral).\nArchive helps with long-term history but is less critical.","status":"deferred","priority":4,"issue_type":"feature","created_at":"2025-12-21T12:58:38.210008-08:00","updated_at":"2025-12-23T12:27:02.371921-08:00","dependencies":[{"issue_id":"bd-2vh3.6","depends_on_id":"bd-2vh3","type":"parent-child","created_at":"2025-12-21T12:58:38.210543-08:00","created_by":"stevey"}]}
|
||||
{"id":"bd-2vh3.6","title":"Tier 5 (Future): JSONL archive rotation","description":"Periodic rotation of issues.jsonl for long-running repos.\n\n## Design\n\n.beads/\n├── issues.jsonl # Current (hot)\n├── archive/\n│ ├── issues-2025-12.jsonl.gz # Archived (cold)\n│ └── ...\n└── index.jsonl # Merged index for queries\n\n## Commands\n\nbd archive rotate [flags]\n --older-than N Archive issues closed \u003e N days\n --compress Gzip archives\n --dry-run Preview\n\nbd archive list # Show archived periods\nbd archive restore \u003cperiod\u003e # Restore from archive\n\n## Config\n\nbd config set archive.enabled true\nbd config set archive.rotate_days 90\nbd config set archive.compress true\nbd config set archive.path '.beads/archive'\n\n## Considerations\n\n- Archives can be gitignored (local only) or committed (shared)\n- Query layer must check index, hydrate from archive\n- Cold storage tiering (S3/GCS) for enterprise\n- Merkle proofs preserved for audit\n\n## Priority\n\nThis is post-1.0 work. Current focus is on squash (removes ephemeral).\nArchive helps with long-term history but is less critical.","status":"open","priority":4,"issue_type":"feature","created_at":"2025-12-21T12:58:38.210008-08:00","updated_at":"2026-01-02T00:17:14.308269-08:00","dependencies":[{"issue_id":"bd-2vh3.6","depends_on_id":"bd-2vh3","type":"parent-child","created_at":"2025-12-21T12:58:38.210543-08:00","created_by":"stevey"}]}
|
||||
{"id":"bd-2wh","title":"Test pinned for stats","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-18T21:47:09.334108-08:00","updated_at":"2025-12-18T21:47:25.17917-08:00","deleted_at":"2025-12-18T21:47:25.17917-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"bd-2wm2","title":"bd repair: Check comments and events tables for orphans","description":"bd repair currently checks dependencies and labels tables, but the schema also has comments and events tables with issue_id foreign keys that could be orphaned.\n\nAdd orphan detection and cleanup for:\n- comments table (issue_id not in issues)\n- events table (issue_id not in issues)","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-29T12:48:11.563302-08:00","created_by":"stevey","updated_at":"2025-12-29T12:57:43.745176-08:00","closed_at":"2025-12-29T12:57:43.745176-08:00","close_reason":"Implemented in repair.go: added orphan detection for comments/events tables and --json output flag"}
|
||||
{"id":"bd-313v","title":"rpc: Rich mutation events not emitted","description":"The activity command (activity.go) references rich mutation event types (MutationBonded, MutationSquashed, MutationBurned, MutationStatus) that include metadata like OldStatus, NewStatus, ParentID, and StepCount.\n\nHowever, the emitMutation() function in server_core.go:141 only accepts (eventType, issueID) and only populates Type, IssueID, and Timestamp. The additional metadata fields are never set.\n\nNeed to either:\n1. Add an emitRichMutation() function that accepts the additional metadata\n2. Update call sites (close, bond, squash, burn operations) to emit rich events\n\nWithout this fix, the activity feed will never show:\n- Status transitions (in_progress -\u003e closed)\n- Bonded events with step counts\n- Parent molecule relationships\n\nDiscovered during code review of bd-xo1o implementation.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-23T04:06:17.39523-08:00","updated_at":"2025-12-23T04:13:19.205249-08:00","closed_at":"2025-12-23T04:13:19.205249-08:00"}
|
||||
@@ -143,7 +143,7 @@
|
||||
{"id":"bd-66l4","title":"Runtime bonding: bd mol attach","description":"Attach a molecule to an already-running workflow.\n\nCOMMAND: bd mol attach \u003cepic-id\u003e \u003cproto\u003e [--after \u003cissue-id\u003e]\n\nBEHAVIOR:\n- Resolve running epic and proto\n- Spawn proto as new subtree\n- Wire to specified attachment point (or epic root)\n- Handle in-progress issues: new work doesn't block completed work\n\nUSE CASES:\n- Discovered need for docs while implementing feature\n- Hotfix needs attaching to release workflow\n- Additional testing scope identified mid-flight\n\nFLAGS:\n- --after ISSUE: Specific attachment point within epic\n- --type: sequential (default) or parallel\n- --var: Variables for the attached proto\n\nCONSIDERATIONS:\n- What if epic is already closed? Error or reopen?\n- What if attachment point issue is closed? Attach as ready-to-work?","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T00:59:16.920483-08:00","updated_at":"2025-12-21T01:08:43.530597-08:00","closed_at":"2025-12-21T01:08:43.530597-08:00","dependencies":[{"issue_id":"bd-66l4","depends_on_id":"bd-o5xe","type":"parent-child","created_at":"2025-12-21T00:59:51.435542-08:00","created_by":"daemon"},{"issue_id":"bd-66l4","depends_on_id":"bd-o91r","type":"blocks","created_at":"2025-12-21T00:59:51.813782-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-66w1","title":"Add external_projects to config schema","description":"Add external_projects mapping to .beads/config.yaml:\n\n```yaml\nexternal_projects:\n beads: ../beads\n gastown: ../gastown\n other: /absolute/path/to/project\n```\n\nUsed by bd ready and other commands to resolve external: references.\n\nPart of cross-project dependency system.\nSee: gastown/docs/cross-project-deps.md","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-21T22:37:39.245017-08:00","updated_at":"2025-12-21T23:03:19.81448-08:00","closed_at":"2025-12-21T23:03:19.81448-08:00"}
|
||||
{"id":"bd-687g","title":"Code review: mol squash deletion bypasses tombstone system","description":"The deleteEphemeralChildren function in mol_squash.go uses DeleteIssue directly instead of the proper deletion flow. This bypasses tombstone creation, deletion tracking (deletions.jsonl), and dependency cleanup. Could cause issues with deletion propagation across clones.\n\nCurrent code uses d.DeleteIssue(ctx, id) but should probably use d.DeleteIssues(ctx, ids, false, true, false) for proper tombstone handling.\n\nAlternative: Document that ephemeral issues intentionally use hard delete since they are transient and should never propagate to other clones anyway.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-21T13:57:20.223345-08:00","updated_at":"2025-12-21T14:17:38.073899-08:00","closed_at":"2025-12-21T14:17:38.073899-08:00"}
|
||||
{"id":"bd-687v","title":"Consider caching external dep resolution results","description":"Each call to GetReadyWork re-checks all external dependencies by:\n1. Querying for external deps in the local database\n2. Opening each external project's database\n3. Querying for closed issues with provides: labels\n\nFor workloads with many external deps or slow external databases, this adds latency on every bd ready call.\n\nPotential optimizations:\n- In-memory TTL cache for external dep status (e.g., 60 second TTL)\n- Store resolved status in a local cache table with timestamp\n- Batch resolution of common project/capability pairs\n\nThis is not urgent - current implementation is correct and performant for typical workloads. Only becomes an issue with many external deps across many projects.","status":"deferred","priority":3,"issue_type":"task","created_at":"2025-12-21T23:45:16.360877-08:00","updated_at":"2025-12-23T12:27:02.223409-08:00","dependencies":[{"issue_id":"bd-687v","depends_on_id":"bd-zmmy","type":"discovered-from","created_at":"2025-12-21T23:45:16.361493-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-687v","title":"Consider caching external dep resolution results","description":"Each call to GetReadyWork re-checks all external dependencies by:\n1. Querying for external deps in the local database\n2. Opening each external project's database\n3. Querying for closed issues with provides: labels\n\nFor workloads with many external deps or slow external databases, this adds latency on every bd ready call.\n\nPotential optimizations:\n- In-memory TTL cache for external dep status (e.g., 60 second TTL)\n- Store resolved status in a local cache table with timestamp\n- Batch resolution of common project/capability pairs\n\nThis is not urgent - current implementation is correct and performant for typical workloads. Only becomes an issue with many external deps across many projects.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-21T23:45:16.360877-08:00","updated_at":"2026-01-02T00:17:14.255986-08:00","dependencies":[{"issue_id":"bd-687v","depends_on_id":"bd-zmmy","type":"discovered-from","created_at":"2025-12-21T23:45:16.361493-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-68bf","title":"Code review: bd mol bond implementation","description":"Review the mol bond command implementation before shipping.\n\nFocus areas:\n1. runMolBond() - polymorphic dispatch logic correctness\n2. bondProtoProto() - compound proto creation, dependency wiring\n3. bondProtoMol() / bondMolProto() - spawn and attach logic\n4. bondMolMol() - joining molecules, lineage tracking\n5. BondRef usage - is lineage tracked correctly?\n6. Error handling - are all failure modes covered?\n7. Edge cases - what could go wrong?\n\nFile: cmd/bd/mol.go (lines 485-859)\nCommit: 386b513e","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T10:13:09.425229-08:00","updated_at":"2025-12-21T11:18:14.206869-08:00","closed_at":"2025-12-21T11:18:14.206869-08:00","dependencies":[{"issue_id":"bd-68bf","depends_on_id":"bd-o91r","type":"discovered-from","created_at":"2025-12-21T10:13:09.426471-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-68e4","title":"doctor --fix should export when DB has more issues than JSONL","description":"When 'bd doctor' detects a count mismatch (DB has more issues than JSONL), it currently recommends 'bd sync --import-only', which imports JSONL into DB. But JSONL is the source of truth, not the DB.\n\n**Current behavior:**\n- Doctor detects: DB has 355 issues, JSONL has 292\n- Recommends: 'bd sync --import-only' \n- User runs it: Returns '0 created, 0 updated' (no-op, because JSONL hasn't changed)\n- User is stuck\n\n**Root cause:**\nThe doctor fix is one-directional (JSONL→DB) when it should be bidirectional. If DB has MORE issues, they haven't been exported yet - the fix should be 'bd export' (DB→JSONL), not import.\n\n**Desired fix:**\nIn fix.DBJSONLSync(), detect which has more data:\n- If DB \u003e JSONL: Run 'bd export' to sync JSONL (since DB is the working copy)\n- If JSONL \u003e DB: Run 'bd sync --import-only' to import (JSONL is source of truth)\n- If equal but timestamps differ: Detect based on file mtime\n\nThis makes 'bd doctor --fix' actually fix the problem instead of being a no-op.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-21T11:17:20.994319182-07:00","updated_at":"2025-12-21T11:23:24.38523731-07:00","closed_at":"2025-12-21T11:23:24.38523731-07:00"}
|
||||
{"id":"bd-6a5z","title":"Add stale molecule check to bd doctor","description":"Extend bd doctor to detect stale molecules.\n\n**New check:**\n- Name: 'Stale Molecules'\n- Category: Workflow\n- Severity: Warning (don't fail overall check)\n\n**Detection:**\nReuse logic from bd mol stale command:\n- Find mols where Completed \u003e= Total but root is open\n- Filter to orphaned (not assigned, not pinned)\n- Extra weight if blocking other work\n\n**Output:**\n```\n⚠ Stale Molecules\n Found 2 complete-but-unclosed molecules:\n - bd-xyz: Version bump v0.36.0 (blocking 1 issue)\n - bd-uvw: Old patrol (not blocking)\n Fix: bd close \u003cid\u003e or bd mol squash \u003cid\u003e\n```\n\n**--fix behavior:**\n- Auto-close stale mols (with reason 'Auto-closed by bd doctor')\n- Or prompt interactively with -i flag\n\nDepends on: bd mol stale command","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-24T18:23:24.549941-08:00","updated_at":"2025-12-25T12:42:50.288442-08:00","closed_at":"2025-12-25T12:42:50.288442-08:00","dependencies":[{"issue_id":"bd-6a5z","depends_on_id":"bd-anv2","type":"blocks","created_at":"2025-12-24T18:23:48.682552-08:00","created_by":"daemon"}]}
|
||||
@@ -475,7 +475,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":"deferred","priority":2,"issue_type":"task","created_at":"2025-12-21T00:59:26.71318-08:00","updated_at":"2025-12-21T11:12:44.012871-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":"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-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"}]}
|
||||
@@ -556,7 +556,7 @@
|
||||
{"id":"bd-m6r3","title":"Refactor: Extract shared getEpicChildren helper for swarm commands","description":"## Context\n`getSwarmStatus` and `analyzeEpicForSwarm` in cmd/bd/swarm.go have nearly identical code for:\n- Getting epic dependents via GetDependents\n- Filtering to parent-child relationships\n- Building childIDSet map\n- Building dependency maps\n\n## Implementation\n1. Extract `getEpicChildren(ctx, store, epicID)` that returns:\n - `[]*types.Issue` - child issues\n - `map[string]bool` - child ID set\n - `map[string][]string` - dependency map (within children)\n - `error`\n\n2. Refactor both `analyzeEpicForSwarm` and `getSwarmStatus` to use it\n\n3. Consider defining a named interface for the store methods:\n ```go\n type SwarmStore interface {\n GetIssue(context.Context, string) (*types.Issue, error)\n GetDependents(context.Context, string) ([]*types.Issue, error)\n GetDependencyRecords(context.Context, string) ([]*types.Dependency, error)\n }\n ```\n\n## Files\n- cmd/bd/swarm.go (lines 150-248, 616-682)\n\n## Acceptance\n- No duplicated code for fetching epic children\n- Both commands produce identical results as before","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T21:30:55.55377-08:00","created_by":"beads/crew/emma","updated_at":"2025-12-28T21:43:50.759453-08:00","closed_at":"2025-12-28T21:43:50.759453-08:00"}
|
||||
{"id":"bd-m7ib","title":"Add creator field to Issue struct","description":"Add Creator *EntityRef field to Issue. Tracks who created the issue. Optional, omitted if nil in JSONL. This enables CV chain tracking - every piece of work is attributed to its creator.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-22T17:53:31.599447-08:00","updated_at":"2025-12-22T20:03:24.264672-08:00","closed_at":"2025-12-22T20:03:24.264672-08:00","dependencies":[{"issue_id":"bd-m7ib","depends_on_id":"bd-7pwh","type":"parent-child","created_at":"2025-12-22T17:53:43.39957-08:00","created_by":"daemon"},{"issue_id":"bd-m7ib","depends_on_id":"bd-nmch","type":"blocks","created_at":"2025-12-22T17:53:47.826309-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-m8ro","title":"Improve test coverage for internal/rpc (47.5% → 60%)","description":"The RPC package has only 47.5% test coverage. RPC is the communication layer for daemon operations.\n\nCurrent coverage: 47.5%\nTarget coverage: 60%","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T20:43:09.515299-08:00","updated_at":"2025-12-23T22:42:11.921388-08:00","closed_at":"2025-12-23T22:42:11.921388-08:00"}
|
||||
{"id":"bd-m964","title":"Consider FTS5 for text search at scale","description":"SearchIssues uses LIKE patterns for text search which can't use indexes.\n\n**Current query (queries.go:1475-1477):**\n```sql\n(title LIKE ? OR description LIKE ? OR id LIKE ?)\n```\n\n**Problem:** Full table scan on every text search. At 100K+ issues, this becomes slow.\n\n**SQLite FTS5 solution:**\n```sql\nCREATE VIRTUAL TABLE issues_fts USING fts5(\n id, title, description, design, notes,\n content='issues',\n content_rowid='rowid'\n);\n\n-- Triggers to keep FTS in sync\nCREATE TRIGGER issues_ai AFTER INSERT ON issues BEGIN\n INSERT INTO issues_fts(rowid, id, title, description, design, notes)\n VALUES (new.rowid, new.id, new.title, new.description, new.design, new.notes);\nEND;\n-- (similar for UPDATE, DELETE)\n```\n\n**Trade-offs:**\n- Database size increase (~30-50% for text content)\n- Additional write overhead (trigger execution)\n- Better search capabilities (ranking, phrase search)\n\n**Decision needed:** Is full-text search a priority feature? Current LIKE search may be acceptable for most use cases.\n\n**Benchmark first:** Measure SearchIssues at 100K scale before implementing.","status":"deferred","priority":4,"issue_type":"feature","created_at":"2025-12-22T22:58:56.466121-08:00","updated_at":"2025-12-30T21:14:21.937564-08:00","dependencies":[{"issue_id":"bd-m964","depends_on_id":"bd-h0we","type":"discovered-from","created_at":"2025-12-22T22:58:56.466764-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-m964","title":"Consider FTS5 for text search at scale","description":"SearchIssues uses LIKE patterns for text search which can't use indexes.\n\n**Current query (queries.go:1475-1477):**\n```sql\n(title LIKE ? OR description LIKE ? OR id LIKE ?)\n```\n\n**Problem:** Full table scan on every text search. At 100K+ issues, this becomes slow.\n\n**SQLite FTS5 solution:**\n```sql\nCREATE VIRTUAL TABLE issues_fts USING fts5(\n id, title, description, design, notes,\n content='issues',\n content_rowid='rowid'\n);\n\n-- Triggers to keep FTS in sync\nCREATE TRIGGER issues_ai AFTER INSERT ON issues BEGIN\n INSERT INTO issues_fts(rowid, id, title, description, design, notes)\n VALUES (new.rowid, new.id, new.title, new.description, new.design, new.notes);\nEND;\n-- (similar for UPDATE, DELETE)\n```\n\n**Trade-offs:**\n- Database size increase (~30-50% for text content)\n- Additional write overhead (trigger execution)\n- Better search capabilities (ranking, phrase search)\n\n**Decision needed:** Is full-text search a priority feature? Current LIKE search may be acceptable for most use cases.\n\n**Benchmark first:** Measure SearchIssues at 100K scale before implementing.","status":"open","priority":4,"issue_type":"feature","created_at":"2025-12-22T22:58:56.466121-08:00","updated_at":"2026-01-02T00:17:14.332908-08:00","dependencies":[{"issue_id":"bd-m964","depends_on_id":"bd-h0we","type":"discovered-from","created_at":"2025-12-22T22:58:56.466764-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-mh4w","title":"Rename 'bond' to 'spawn' for instantiation","description":"Rename the bd mol bond command to bd mol spawn for instantiating protos.\n \n- Rename molBondCmd to molSpawnCmd\n- Update command Use/Short/Long descriptions \n- Keep 'bond' available for the new bonding feature\n- Update all documentation references\n- Add 'protomolecule' as easter egg alias for 'proto'","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-21T00:58:44.529026-08:00","updated_at":"2025-12-21T01:19:42.942819-08:00","closed_at":"2025-12-21T01:19:42.942819-08:00","dependencies":[{"issue_id":"bd-mh4w","depends_on_id":"bd-o5xe","type":"parent-child","created_at":"2025-12-21T00:59:51.167902-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-mhhb","title":"Read operations should not modify database file","description":"Read-only operations (bd list, bd ready, bd show) modify the database file. Every open sets WAL pragma, runs schema/migrations, and checkpoints on close. Need sqlite.NewReadOnly() that opens with mode=ro, skips WAL/schema/migrations, and skips checkpoint. See GH#804.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-30T16:27:13.416643-08:00","created_by":"beads/crew/emma","updated_at":"2025-12-30T16:46:49.921614-08:00","closed_at":"2025-12-30T16:46:49.921614-08:00","close_reason":"Implemented read-only mode for SQLite. Read commands now use NewReadOnly() which opens with mode=ro, skips WAL pragma/schema/migrations, and skips checkpoint on close."}
|
||||
{"id":"bd-mol-0qm","title":"mol-beads-release","description":"attached_args: Release v0.38.0 - execute each step in order, verify before proceeding to next\n\nRelease checklist for beads version 0.38.0.\n\nThis molecule ensures all release steps are completed properly.\nVariable: 0.38.0 - target version (e.g., 0.35.0)\n\n## Step: update-release-notes\nUpdate cmd/bd/info.go with release notes for 0.38.0.\n\nAdd a new VersionChange entry at the top of versionChanges slice:\n```go\n{\n Version: \"0.38.0\",\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## [0.38.0] - 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 0.38.0\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 v0.38.0\"\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 v0.38.0\ngit push origin v0.38.0\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 v0.38.0\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.\n\n```bash\n# Upgrade Homebrew\nbrew upgrade steveyegge/beads/bd\n\n# Or install from source\n./scripts/bump-version.sh 0.38.0 --install\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 0.38.0\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 0.38.0 --publish-npm\n\n# PyPI (requires TWINE credentials)\n./scripts/bump-version.sh 0.38.0 --publish-pypi\n\n# Or both\n./scripts/bump-version.sh 0.38.0 --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-27T00:29:46.694495-08:00","updated_at":"2025-12-28T01:24:39.173644-08:00","deleted_at":"2025-12-28T01:24:39.173644-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"molecule"}
|
||||
@@ -917,7 +917,7 @@
|
||||
{"id":"bd-ziy5","title":"GH#409: bd init uses issues.jsonl but docs say beads.jsonl","description":"bd init creates config referencing issues.jsonl but README/docs reference beads.jsonl as canonical. Standardize naming. See GitHub issue #409.","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-16T01:03:58.109954-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-zlef","title":"bd repair command: fix orphaned foreign key refs","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-29T12:31:11.881702-08:00","created_by":"stevey","updated_at":"2025-12-29T12:33:47.159658-08:00","closed_at":"2025-12-29T12:33:47.159658-08:00"}
|
||||
{"id":"bd-zmmy","title":"bd ready resolves external dependencies","description":"Extend bd ready to check external blocked_by references:\n\n1. Parse external:\u003cproject\u003e:\u003ccapability\u003e from blocked_by\n2. Look up project path from external_projects config\n3. Check if target project has provides:\u003ccapability\u003e label on a closed issue\n4. If not satisfied, issue is blocked\n\nExample output:\n```bash\nbd ready\n# gt-xyz: blocked by external:beads:mol-run-assignee (not provided)\n# gt-abc: ready\n```\n\nDepends on: bd-om4a (external: prefix), bd-66w1 (config)\n\nPart of cross-project dependency system.\nSee: gastown/docs/cross-project-deps.md","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-21T22:37:50.03794-08:00","updated_at":"2025-12-21T23:42:25.042402-08:00","closed_at":"2025-12-21T23:42:25.042402-08:00","dependencies":[{"issue_id":"bd-zmmy","depends_on_id":"bd-om4a","type":"blocks","created_at":"2025-12-21T22:38:38.106657-08:00","created_by":"daemon"},{"issue_id":"bd-zmmy","depends_on_id":"bd-66w1","type":"blocks","created_at":"2025-12-21T22:38:38.175633-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-zt59","title":"Deferred HOP schema additions (P2/P3)","description":"Deferred from bd-7pwh after review. Add when semantics are clearer and actually needed:\n\n- assignee_ref: Structured EntityRef alongside string assignee\n- work_type: 'mutex' vs 'open_competition' (everything is mutex in v0.1)\n- crystallizes: bool for work that compounds vs evaporates (can derive from issue_type)\n- cross_refs: URIs to beads in other repos (needs federation first)\n- skill_vector: []float32 embeddings placeholder (YAGNI)\n\nThese can be added later without breaking changes (all optional fields).","status":"deferred","priority":4,"issue_type":"task","created_at":"2025-12-22T17:54:20.02496-08:00","updated_at":"2025-12-23T12:27:02.445219-08:00"}
|
||||
{"id":"bd-zw72","title":"Investigate incremental blocked_issues_cache updates at scale","description":"Current blocked_issues_cache strategy does full DELETE + INSERT on every dependency/status change.\n\n**Problem at scale:**\n- 10K issues: ~50ms rebuild (acceptable)\n- 100K issues: ~500ms rebuild (noticeable)\n- 1M issues: multi-second rebuilds (problematic)\n\n**Current implementation (blocked_cache.go:104-154):**\n- DELETE FROM blocked_issues_cache\n- INSERT with recursive CTE\n\n**Potential optimizations:**\n1. **Incremental updates:** Only add/remove affected issue IDs instead of full rebuild\n2. **Dirty tracking:** Skip rebuild if cache is already valid\n3. **Async rebuild:** Rebuild in background, serve stale cache briefly\n4. **Partial invalidation:** Only invalidate affected subtree\n\n**Decision needed:** Is this premature optimization? Current target is \u003c100K issues.\n\n**Benchmark:** Add benchmark for cache rebuild at 100K scale to measure actual impact.","status":"deferred","priority":3,"issue_type":"task","created_at":"2025-12-22T22:58:55.165718-08:00","updated_at":"2025-12-23T12:27:02.297059-08:00","dependencies":[{"issue_id":"bd-zw72","depends_on_id":"bd-h0we","type":"discovered-from","created_at":"2025-12-22T22:58:55.166427-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-zt59","title":"Deferred HOP schema additions (P2/P3)","description":"Deferred from bd-7pwh after review. Add when semantics are clearer and actually needed:\n\n- assignee_ref: Structured EntityRef alongside string assignee\n- work_type: 'mutex' vs 'open_competition' (everything is mutex in v0.1)\n- crystallizes: bool for work that compounds vs evaporates (can derive from issue_type)\n- cross_refs: URIs to beads in other repos (needs federation first)\n- skill_vector: []float32 embeddings placeholder (YAGNI)\n\nThese can be added later without breaking changes (all optional fields).","status":"open","priority":4,"issue_type":"task","created_at":"2025-12-22T17:54:20.02496-08:00","updated_at":"2026-01-02T00:17:14.358754-08:00"}
|
||||
{"id":"bd-zw72","title":"Investigate incremental blocked_issues_cache updates at scale","description":"Current blocked_issues_cache strategy does full DELETE + INSERT on every dependency/status change.\n\n**Problem at scale:**\n- 10K issues: ~50ms rebuild (acceptable)\n- 100K issues: ~500ms rebuild (noticeable)\n- 1M issues: multi-second rebuilds (problematic)\n\n**Current implementation (blocked_cache.go:104-154):**\n- DELETE FROM blocked_issues_cache\n- INSERT with recursive CTE\n\n**Potential optimizations:**\n1. **Incremental updates:** Only add/remove affected issue IDs instead of full rebuild\n2. **Dirty tracking:** Skip rebuild if cache is already valid\n3. **Async rebuild:** Rebuild in background, serve stale cache briefly\n4. **Partial invalidation:** Only invalidate affected subtree\n\n**Decision needed:** Is this premature optimization? Current target is \u003c100K issues.\n\n**Benchmark:** Add benchmark for cache rebuild at 100K scale to measure actual impact.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-22T22:58:55.165718-08:00","updated_at":"2026-01-02T00:17:14.280698-08:00","dependencies":[{"issue_id":"bd-zw72","depends_on_id":"bd-h0we","type":"discovered-from","created_at":"2025-12-22T22:58:55.166427-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-zwtq","title":"Run bd doctor at end of bd init to verify setup","description":"Run bd doctor diagnostics at end of bd init (after line 398 in init.go). If issues found, warn user immediately: '⚠ Setup incomplete. Run bd doctor --fix to complete setup.' Catches configuration problems before user encounters them in normal workflow.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-21T23:16:09.596778-08:00","updated_at":"2025-12-23T04:20:51.887338-08:00","closed_at":"2025-12-23T04:20:51.887338-08:00","dependencies":[{"issue_id":"bd-zwtq","depends_on_id":"bd-tbz3","type":"parent-child","created_at":"2025-11-21T23:16:09.597617-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-zy3z","title":"Support wisps in nodb mode for lightweight Gas Town rigs","description":"Enable proper wisp support in --no-db mode to allow lightweight Gas Town rigs (including HQ/Mayor) to run without SQLite overhead.\n\n## Motivation\nGas Town HQ and simple rigs could benefit from nodb mode's simplicity. Currently wisps don't work properly in nodb mode.\n\n## Proposed Design\n\n### Phase 1: Session-scoped wisps\n- Memory storage already has Wisp field on Issue\n- Wisps exist only for the session lifetime\n- Acceptable for patrol cycles that complete within a session\n- Depends on: bd-9avq (fix the leak)\n\n### Phase 2: Optional wisp persistence\n- Add `.beads/wisps.jsonl` for wisp storage (gitignored)\n- Load wisps from this file on nodb startup\n- Save wisps to this file on nodb exit\n- Wisps persist across restarts but don't sync via git\n\n### Phase 3: Verify mol commands\n- Test mol squash, burn, bond work with memory storage\n- These currently check for SQLite storage type\n- May need interface-based approach instead of type assertions\n\n## Files affected\n- cmd/bd/nodb.go - wisp filtering and optional persistence\n- internal/storage/memory/ - verify wisp field handling\n- cmd/bd/mol_*.go - verify memory storage compatibility\n- .beads/.gitignore - add wisps.jsonl","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-24T21:15:59.658799-08:00","updated_at":"2025-12-24T21:17:11.570958-08:00","closed_at":"2025-12-24T21:17:11.570958-08:00","dependencies":[{"issue_id":"bd-zy3z","depends_on_id":"bd-9avq","type":"blocks","created_at":"2025-12-24T21:16:04.649866-08:00","created_by":"daemon"}]}
|
||||
|
||||
Reference in New Issue
Block a user