bd sync: 2025-12-26 13:34:29

This commit is contained in:
Steve Yegge
2025-12-26 13:34:29 -08:00
parent b71c06e954
commit f86a5187c2

View File

@@ -330,6 +330,7 @@
{"id":"bd-jke6","title":"Add covering index (label, issue_id) for label queries","description":"GetIssuesByLabel joins labels table but requires table lookup after using idx_labels_label.\n\n**Query (labels.go:165):**\n```sql\nSELECT ... FROM issues i\nJOIN labels l ON i.id = l.issue_id\nWHERE l.label = ?\n```\n\n**Problem:** Current idx_labels_label index doesn't cover issue_id, requiring row lookup.\n\n**Solution:** Add migration:\n```sql\nCREATE INDEX IF NOT EXISTS idx_labels_label_issue ON labels(label, issue_id);\n```\n\nThis is a covering index - query can be satisfied entirely from the index without touching the labels table rows.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-22T22:58:51.485354-08:00","updated_at":"2025-12-22T23:15:13.839904-08:00","closed_at":"2025-12-22T23:15:13.839904-08:00","close_reason":"Implemented in migration 026_additional_indexes.go","dependencies":[{"issue_id":"bd-jke6","depends_on_id":"bd-h0we","type":"discovered-from","created_at":"2025-12-22T22:58:51.485984-08:00","created_by":"daemon"}]}
{"id":"bd-jv4w","title":"Phase 1.2: Separate bdt executable - Initial structure","description":"Create minimal bdt command structure completely separate from bd. Must not share code, config, or database.\n\n## Subtasks\n1. Create cmd/bdt/ directory with main.go\n2. Implement bdt version, help, and status commands\n3. Configure separate database location: $HOME/.bdt/ (not $HOME/.beads/)\n4. Create separate issues file: issues.toon (not issues.jsonl)\n5. Update build system:\n - Makefile: Add bdt target\n - .goreleaser.yml: Add bdt binary config\n\n## Files to Create\n- cmd/bdt/main.go - Entry point\n- cmd/bdt/version.go - Version handling\n- cmd/bdt/help.go - Help text (separate from bd)\n\n## Success Criteria\n- `make build` produces both `bd` and `bdt` executables\n- `bdt version` shows distinct version output from bd\n- `bdt --help` shows distinct help text\n- bdt uses $HOME/.bdt/ directory (verify with `bdt info`)\n- bd and bdt completely isolated (no shared imports beyond stdlib)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-19T11:48:34.866877282-07:00","updated_at":"2025-12-19T12:59:11.389296015-07:00","closed_at":"2025-12-19T12:59:11.389296015-07:00"}
{"id":"bd-jvu","title":"Add bd update --parent flag to change issue parent","description":"Allow changing an issue's parent with bd update --parent \u003cnew-parent-id\u003e. Useful for reorganizing tasks under different epics or moving issues between hierarchies. Should update the parent-child dependency relationship.","status":"tombstone","priority":3,"issue_type":"feature","created_at":"2025-12-17T22:24:07.274485-08:00","updated_at":"2025-12-25T01:21:01.952723-08:00","deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"feature"}
{"id":"bd-knta","title":"Deacon Patrol","description":"Mayor's daemon patrol loop for handling callbacks, health checks, and cleanup.","status":"open","priority":2,"issue_type":"molecule","created_at":"2025-12-26T13:08:21.233771-08:00","updated_at":"2025-12-26T13:08:21.233771-08:00"}
{"id":"bd-kptp","title":"Merge: bd-qioh","description":"branch: polecat/Errata\ntarget: main\nsource_issue: bd-qioh\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T13:46:08.832073-08:00","updated_at":"2025-12-23T19:12:08.350136-08:00","closed_at":"2025-12-23T19:12:08.350136-08:00","close_reason":"Stale merge-requests from orphaned polecat branches - refinery not processing"}
{"id":"bd-kpy","title":"Sync race: rebase-based divergence recovery resurrects tombstones","description":"## Problem\nWhen two repos sync simultaneously, tombstones can be resurrected:\n\n1. Repo A deletes issue (creates tombstone), pushes to sync branch\n2. Repo B (with 'closed' status) exports and tries to push\n3. Push fails (non-fast-forward)\n4. fetchAndRebaseInWorktree does git rebase\n5. Git rebase applies B's 'closed' patch on top of A's 'tombstone'\n6. TEXT-level rebase doesn't invoke beads merge driver\n7. 'closed' overwrites 'tombstone' = resurrection\n\n## Root Cause\nCommitToSyncBranch uses git rebase for divergence recovery, but rebase is text-level, not content-level. The proper content-level merge in PullFromSyncBranch handles tombstones correctly, but it runs AFTER the problematic push.\n\n## Proposed Fix\nOption 1: Don't push in CommitToSyncBranch - let PullFromSyncBranch handle merge+push\nOption 2: Replace git rebase with content-level merge in fetchAndRebaseInWorktree\nOption 3: Reorder sync steps: Export → Pull/Merge → Commit → Push\n\n## Workaround Applied\nExcluded tombstones from orphan detection warnings (commit 1e97d9cc).\n\nSee also: bd-3852 (Add orphan detection migration)","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-17T23:29:33.049272-08:00","updated_at":"2025-12-24T22:41:09.184574-08:00","closed_at":"2025-12-24T22:41:09.184574-08:00","close_reason":"Fixed by replacing git rebase with content-level merge in divergence recovery"}
{"id":"bd-kqo1","title":"Show pin indicator in bd list output","description":"Add a visual indicator (e.g., pin emoji or [P] marker) for pinned issues in bd list output so users can easily identify them.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-18T23:33:47.402549-08:00","updated_at":"2025-12-21T11:30:27.272768-08:00","closed_at":"2025-12-21T11:30:27.272768-08:00","close_reason":"Already implemented - 📌 emoji shown for pinned issues in bd list output","dependencies":[{"issue_id":"bd-kqo1","depends_on_id":"bd-0vg","type":"blocks","created_at":"2025-12-18T23:33:56.771791-08:00","created_by":"daemon"},{"issue_id":"bd-kqo1","depends_on_id":"bd-7h5","type":"blocks","created_at":"2025-12-18T23:34:07.985271-08:00","created_by":"daemon"}]}
@@ -400,6 +401,7 @@
{"id":"bd-njrm","title":"Work on gt-8tmz.34: Expansion var overrides not implement...","description":"Work on gt-8tmz.34: Expansion var overrides not implemented. The ExpandRule.Vars field exists in internal/formula/types.go but is ignored during expansion in internal/formula/expand.go. Implement: 1) Pass rule.Vars to expandStep in ApplyExpansions, 2) Merge vars with formula defaults (rule.Vars wins), 3) Substitute vars in template placeholders, 4) Add test in expand_test.go. When done, commit and push to main.","status":"closed","priority":2,"issue_type":"task","assignee":"beads/nux","created_at":"2025-12-25T20:01:13.586558-08:00","updated_at":"2025-12-25T20:06:11.099142-08:00","closed_at":"2025-12-25T20:06:11.099142-08:00","close_reason":"Implemented expansion var overrides in internal/formula/expand.go"}
{"id":"bd-nl2","title":"No logging/debugging for tombstone resurrection events","description":"Per the design document bd-zvg Open Question 1: Should resurrection log a warning? Recommendation was Yes. Currently, when an expired tombstone loses to a live issue (resurrection), there is no logging or debugging output. This makes it hard to understand why an issue reappeared. Recommendation: Add optional debug logging when resurrection occurs, e.g., Issue bd-abc resurrected (tombstone expired). Files: internal/merge/merge.go:359-366, 371-378, 400-405, 410-415","status":"open","priority":4,"issue_type":"feature","created_at":"2025-12-05T16:36:52.27525-08:00","updated_at":"2025-12-05T16:36:52.27525-08:00"}
{"id":"bd-nmch","title":"Add EntityRef type for structured entity references","description":"Create EntityRef struct with Name, Platform, Org, ID fields. This is the foundation for HOP entity tracking. Can render as entity://hop/\u003cplatform\u003e/\u003corg\u003e/\u003cid\u003e when needed. Add to internal/types/types.go.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-22T17:53:25.104328-08:00","updated_at":"2025-12-22T17:58:00.014103-08:00","closed_at":"2025-12-22T17:58:00.014103-08:00","close_reason":"Implemented EntityRef type with Name, Platform, Org, ID fields. Added URI(), IsEmpty(), String() methods and ParseEntityURI() function. Full test coverage.","dependencies":[{"issue_id":"bd-nmch","depends_on_id":"bd-7pwh","type":"parent-child","created_at":"2025-12-22T17:53:43.325405-08:00","created_by":"daemon"}]}
{"id":"bd-nppb","title":"Refinery Patrol","description":"Merge queue processor patrol loop with verification gates.","status":"open","priority":2,"issue_type":"molecule","created_at":"2025-12-26T13:08:21.308272-08:00","updated_at":"2025-12-26T13:08:21.308272-08:00"}
{"id":"bd-nqyp","title":"mol-beads-release","description":"Release checklist for beads version {{version}}.\n\nThis molecule ensures all release steps are completed properly.\nVariable: {{version}} - target version (e.g., 0.35.0)\n\n## Step: update-release-notes\nUpdate cmd/bd/info.go with release notes for {{version}}.\n\nAdd a new VersionChange entry at the top of versionChanges slice:\n```go\n{\n Version: \"{{version}}\",\n Date: \"YYYY-MM-DD\",\n Changes: []string{\n \"NEW: Feature description\",\n \"FIX: Bug fix description\",\n \"IMPROVED: Enhancement description\",\n },\n},\n```\n\nRun `git log --oneline v\u003cprevious\u003e..HEAD` to see what changed.\n\n## Step: update-changelog\nUpdate CHANGELOG.md with detailed release notes.\n\nAdd a new section after [Unreleased]:\n```markdown\n## [{{version}}] - YYYY-MM-DD\n\n### Added\n- **Feature name** (issue-id) - Description\n\n### Changed\n- **Change description** (issue-id)\n\n### Fixed\n- **Bug fix** (issue-id) - Description\n```\n\nSort by importance, not chronologically.\nNeeds: update-release-notes\n\n## Step: bump-version\nRun the version bump script.\n\n```bash\n./scripts/bump-version.sh {{version}}\n```\n\nThis updates version in all files:\n- cmd/bd/version.go\n- .claude-plugin/*.json\n- integrations/beads-mcp/pyproject.toml\n- npm-package/package.json\n- Hook templates\n\nNeeds: update-changelog\n\n## Step: run-tests\nRun tests and verify lint passes.\n\n```bash\ngo test -short ./...\n```\n\nCI will run full lint, but fix any obvious issues first.\nNeeds: bump-version\n\n## Step: commit-release\nCommit the release changes.\n\n```bash\ngit add -A\ngit commit -m \"chore: bump version to v{{version}}\"\n```\n\nNeeds: run-tests\n\n## Step: push-and-tag\nPush commit and create release tag.\n\n```bash\ngit push origin main\ngit tag v{{version}}\ngit push origin v{{version}}\n```\n\nThis triggers GitHub Actions release workflow.\nNeeds: commit-release\n\n## Step: wait-for-ci\nWait for GitHub Actions to complete.\n\nMonitor: https://github.com/steveyegge/beads/actions\n\nCI will:\n- Build binaries via GoReleaser\n- Create GitHub Release with assets\n- Publish to npm (@beads/bd)\n- Publish to PyPI (beads-mcp)\n- Update Homebrew tap\n\nWait until all jobs succeed (~5-10 min).\nNeeds: push-and-tag\n\n## Step: verify-release\nVerify the release is complete.\n\n```bash\n# Check GitHub release\ngh release view v{{version}}\n\n# Check Homebrew\nbrew update \u0026\u0026 brew info steveyegge/beads/bd\n\n# Check npm\nnpm view @beads/bd version\n\n# Check PyPI\npip index versions beads-mcp\n```\n\nNeeds: wait-for-ci\n\n## Step: update-local\nUpdate local installations.\n\n```bash\n# Upgrade Homebrew\nbrew upgrade steveyegge/beads/bd\n\n# Or install from source\n./scripts/bump-version.sh {{version}} --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 {{version}}\nNeeds: verify-release\n\n## Step: manual-publish\n(Optional) Manual publish if CI failed.\n\n```bash\n# npm (requires npm login)\n./scripts/bump-version.sh {{version}} --publish-npm\n\n# PyPI (requires TWINE credentials)\n./scripts/bump-version.sh {{version}} --publish-pypi\n\n# Or both\n./scripts/bump-version.sh {{version}} --publish-all\n```\n\nOnly needed if CI publishing failed.\nNeeds: wait-for-ci","status":"open","priority":2,"issue_type":"molecule","created_at":"2025-12-23T11:29:39.087936-08:00","updated_at":"2025-12-23T11:29:39.087936-08:00","labels":["template"]}
{"id":"bd-nuh1","title":"GH#403: bd doctor --fix circular error message","description":"bd doctor --fix suggests running bd doctor --fix for deletions manifest issue. Fix to provide actual resolution. See GitHub issue #403.","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-16T01:03:16.290018-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-nurq","title":"Implement bd mol current command","description":"Show what molecule the agent should currently be working on. Referenced by gt-um6q, gt-lz13. Needed for molecule navigation workflow in templates.","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-23T00:17:54.069983-08:00","updated_at":"2025-12-23T01:23:59.523404-08:00","closed_at":"2025-12-23T01:23:59.523404-08:00","close_reason":"Implementation already existed, added tests (TestGetMoleculeProgress, TestFindParentMolecule, TestAdvanceToNextStep*), rebuilt and installed binary"}
@@ -569,7 +571,8 @@
{"id":"bd-ymqn","title":"Code review: bd mol bond --ref and bd activity (bd-xo1o work)","description":"Review dave's recent commits for bd-xo1o (Dynamic Molecule Bonding):\n\n## Commits to Review\n- ee04b1ea: feat: add dynamic molecule bonding with --ref flag (bd-xo1o.1)\n- be520d90: feat: add bd activity command for real-time state feed (bd-xo1o.3)\n\n## Review Focus\n1. Code quality and correctness\n2. Error handling\n3. Edge cases\n4. Test coverage\n5. Documentation\n\n## Deliverables\n- File beads for any issues found\n- Note any concerns or suggestions\n- Verify the implementation matches the bd-xo1o epic requirements","status":"closed","priority":1,"issue_type":"task","assignee":"beads/ace","created_at":"2025-12-23T03:47:55.217363-08:00","updated_at":"2025-12-23T04:11:00.226326-08:00","closed_at":"2025-12-23T04:11:00.226326-08:00","close_reason":"Code review completed by ace"}
{"id":"bd-yqhh","title":"bd list --parent: filter by parent issue","description":"Add --parent flag to bd list to filter issues by parent.\n\nExample:\n```bash\nbd list --parent=gt-h5n --status=open\n```\n\nWould show all open children of gt-h5n.\n\nUseful for:\n- Checking epic progress\n- Finding swarmable work within an epic\n- Molecule step listing","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-23T01:51:26.830952-08:00","updated_at":"2025-12-23T02:10:12.909803-08:00","closed_at":"2025-12-23T02:10:12.909803-08:00","close_reason":"Implemented --parent flag for bd list. Filters children by parent issue using parent-child dependencies."}
{"id":"bd-yx22","title":"Merge: bd-d28c","description":"branch: polecat/testcat\ntarget: main\nsource_issue: bd-d28c\nrig: beads","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-23T21:33:15.490412-08:00","updated_at":"2025-12-23T21:36:38.584933-08:00","closed_at":"2025-12-23T21:36:38.584933-08:00","close_reason":"stale - code never pushed to remote"}
{"id":"bd-z3rf","title":"dave Handoff","description":"attached_molecule: bd-ul59\nattached_at: 2025-12-25T02:30:10Z","status":"pinned","priority":2,"issue_type":"task","created_at":"2025-12-23T04:33:42.874554-08:00","updated_at":"2025-12-24T18:30:10.858308-08:00"}
{"id":"bd-yy1h","title":"Witness Patrol","description":"Per-rig worker monitor patrol loop with progressive nudging.","status":"open","priority":2,"issue_type":"molecule","created_at":"2025-12-26T13:08:21.271692-08:00","updated_at":"2025-12-26T13:08:21.271692-08:00"}
{"id":"bd-z3rf","title":"dave Handoff","status":"pinned","priority":2,"issue_type":"task","created_at":"2025-12-23T04:33:42.874554-08:00","updated_at":"2025-12-26T13:08:21.874062-08:00"}
{"id":"bd-z86n","title":"Code Review: PR #551 - Persist close_reason to issues table","description":"Code review of PR #551 which fixes close_reason persistence bug.\n\n## Summary\nThe PR correctly fixes a bug where close_reason was only stored in the events table, not in the issues.close_reason column. This caused `bd show --json` to return empty close_reason.\n\n## What Was Fixed\n- ✅ CloseIssue now updates both close_reason and closed_at\n- ✅ ReOpenIssue clears both close_reason and closed_at\n- ✅ Comprehensive tests added for both storage and CLI layers\n- ✅ Clear documentation in queries.go about dual storage strategy\n\n## Quality Assessment\n✅ Tests cover both storage layer and CLI JSON output\n✅ Handles reopen case (clearing close_reason)\n✅ Good comments explaining dual-storage design\n✅ No known issues\n\n## Potential Followups\nSee linked issues for suggestions.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-14T14:25:06.887069-08:00","updated_at":"2025-12-14T14:25:06.887069-08:00"}
{"id":"bd-z8a6","title":"bd delete --from-file should add deleted issues to deletions manifest","description":"When using bd delete --from-file to bulk delete issues, the deleted issue IDs are not being added to the deletions.jsonl manifest.\n\nThis causes those issues to be resurrected during bd sync when git history scanning finds them in old commits.\n\nExpected: All deleted issues should be added to deletions.jsonl so they wont be reimported from git history.\n\nWorkaround: Manually add deletion records to deletions.jsonl.","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-16T01:48:14.099855-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-zc3","title":"Add --pinned and --no-pinned flags to bd list","description":"Add filtering flags to bd list: --pinned shows only pinned issues, --no-pinned excludes pinned issues. Default behavior shows all issues with a pin indicator.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-18T23:33:29.518028-08:00","updated_at":"2025-12-21T11:30:01.484978-08:00","closed_at":"2025-12-21T11:30:01.484978-08:00","close_reason":"Already implemented - --pinned and --no-pinned flags exist in bd list","dependencies":[{"issue_id":"bd-zc3","depends_on_id":"bd-0vg","type":"blocks","created_at":"2025-12-18T23:33:56.256764-08:00","created_by":"daemon"},{"issue_id":"bd-zc3","depends_on_id":"bd-7h5","type":"blocks","created_at":"2025-12-18T23:34:07.486361-08:00","created_by":"daemon"}]}