bd sync: 2025-12-21 23:13:50
This commit is contained in:
@@ -59,7 +59,7 @@
|
||||
{"id":"bd-5hrq","title":"bd doctor: detect issues referenced in commits but still open","description":"Add a doctor check that finds 'orphaned' issues - ones referenced in git commit messages (e.g., 'fix bug (bd-xxx)') but still marked as open in beads.\n\n**Detection logic:**\n1. Get all open issue IDs from beads\n2. Parse git log for issue ID references matching pattern \\(prefix-[a-z0-9.]+\\)\n3. Report issues that appear in commits but are still open\n\n**Output:**\n⚠ Warning: N issues referenced in commits but still open\n bd-xxx: 'Issue title' (commit abc123)\n bd-yyy: 'Issue title' (commit def456)\n \n These may be implemented but not closed. Run 'bd show \u003cid\u003e' to check.\n\n**Implementation:**\n- Add check to doctor/checks.go\n- Use git log parsing (already have git utilities)\n- Match against configured issue_prefix","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-21T21:48:08.473165-08:00","updated_at":"2025-12-21T21:55:37.795109-08:00","closed_at":"2025-12-21T21:55:37.795109-08:00","close_reason":"Implemented CheckOrphanedIssues in git.go with 8 test cases. Detects issues referenced in commits (e.g., 'fix bug (bd-xxx)') that are still open. Shows warning with issue IDs and commit hashes."}
|
||||
{"id":"bd-5qim","title":"Optimize GetReadyWork performance - 752ms on 10K database (target: \u003c50ms)","notes":"# Performance Analysis (10K Issue Database)\n\nAnalyzed using CPU profiles from benchmark suite on Apple M2 Pro.\n\n## Operation Performance\n\n| Operation | Time | Allocations | Memory |\n|----------------------------------|---------|-------------|--------|\n| bd ready (GetReadyWork) | ~752ms | 167,466 | 16MB |\n| bd list (SearchIssues no filter) | ~11.6ms | 89,214 | 5.8MB |\n| bd list (SearchIssues filtered) | ~9.2ms | 62,365 | 3.5MB |\n| bd create (CreateIssue) | ~2.6ms | 146 | 8.6KB |\n| bd update (UpdateIssue) | ~0.32ms | 364 | 15KB |\n| bd close (UpdateIssue) | ~0.32ms | 364 | 15KB |\n\n**Target: \u003c50ms for all operations on 10K database**\n\n**Current issue: GetReadyWork is 15x over target (752ms vs 50ms)**\n\n## Root Cause\n\nGetReadyWork (internal/storage/sqlite/ready.go:90-128) uses recursive CTE to propagate blocking:\n- 65x slower than SearchIssues\n- Recalculates entire blocked issue tree on every call\n- Algorithm:\n 1. Find directly blocked issues via 'blocks' dependencies\n 2. Recursively propagate blockage to descendants (max depth: 50)\n 3. Exclude all blocked issues from results\n\n## CPU Profile Analysis\n\n- Database syscalls (pthread_cond_signal, syscall6): ~75%\n- SQLite engine overhead: inherent to recursive CTE\n- Application code (query construction): \u003c1%\n\n**Bottleneck is the recursive CTE query execution, not application code.**\n\n## Optimization Recommendations\n\n### High Impact (Likely to achieve \u003c50ms target)\n\n1. **Cache blocked issue calculation**\n - Add `blocked_issues` table updated on dependency changes\n - Trade write complexity for read speed (ready called \u003e\u003e dependency changes)\n - Eliminates recursive CTE on every read\n\n2. **Add/verify database indexes**\n ```sql\n CREATE INDEX IF NOT EXISTS idx_dependencies_blocked \n ON dependencies(issue_id, type, depends_on_id);\n CREATE INDEX IF NOT EXISTS idx_issues_status \n ON issues(status);\n ```\n\n### Medium Impact\n\n3. **Reduce allocations** (167K allocations for GetReadyWork)\n - Profile `scanIssues()` for object pooling opportunities\n - Reuse slice capacity for repeated calls\n\n### Low Impact (Not recommended)\n- Query optimization for CRUD operations (already \u003c3ms)\n- Connection pooling tuning (not showing in profiles)\n\n## Verification\n\nRun benchmarks to validate optimization:\n```bash\nmake bench-quick\ngo tool pprof -http=:8080 internal/storage/sqlite/bench-cpu-*.prof\n```\n\nProfile files automatically generated in `internal/storage/sqlite/`.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-11-14T09:02:46.507526-08:00","updated_at":"2025-12-17T23:13:40.534258-08:00","closed_at":"2025-12-17T16:21:37.918868-08:00"}
|
||||
{"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","close_reason":"Merged into bd-o91r: bond command handles all bonding cases polymorphically","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":"open","priority":2,"issue_type":"feature","created_at":"2025-12-21T22:37:39.245017-08:00","updated_at":"2025-12-21T22:37:39.245017-08:00"}
|
||||
{"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","close_reason":"Added external_projects to config schema with GetExternalProjects() and ResolveExternalProjectPath() functions, tests, and documentation"}
|
||||
{"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","close_reason":"Implemented ephemeral issue filtering from JSONL export and fixed comments leak in DeleteIssue"}
|
||||
{"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","close_reason":"Reviewed and fixed label persistence bug","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"}
|
||||
@@ -178,7 +178,7 @@
|
||||
{"id":"bd-dyy","title":"Review PR #513: fix hooks install docs","description":"Review and merge PR #513 from aspiers. This PR fixes incorrect docs for how to install git hooks - updates README to use bd hooks install instead of removed install.sh. Simple 1-line change. URL: https://github.com/anthropics/beads/pull/513","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T08:15:14.838772+11:00","updated_at":"2025-12-13T07:07:19.718544-08:00","closed_at":"2025-12-13T07:07:19.718544-08:00"}
|
||||
{"id":"bd-e1085716","title":"bd validate - Comprehensive health check","description":"Run all validation checks in one command.\n\nChecks:\n- Duplicates\n- Orphaned dependencies\n- Test pollution\n- Git conflicts\n\nSupports --fix-all for auto-repair.\n\nDepends on bd-cbed9619.1, bd-0dcea000, bd-31aab707, bd-9826b69a.\n\nFiles: cmd/bd/validate.go (new)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-10-29T23:05:13.980679-07:00","updated_at":"2025-12-17T22:58:34.562008-08:00","closed_at":"2025-12-17T22:58:34.562008-08:00","close_reason":"Closed"}
|
||||
{"id":"bd-e7ou","title":"Fix --as flag: uses title instead of ID in mol bond","description":"In bondProtoProto, the --as flag is documented as 'Custom ID for compound proto' but the implementation uses it as the title, not the issue ID.\n\n**Current behavior (mol.go:637-638):**\n```go\nif customID != '' {\n compoundTitle = customID // Used as title, not ID\n}\n```\n\n**Options:**\n1. Change flag description to say 'Custom title' (documentation fix)\n2. Actually use it as a custom ID prefix or full ID (feature change)\n3. Add separate --title flag and make --as actually set ID\n\nRecommend option 1 for simplest fix - change 'Custom ID' to 'Custom title' in the flag description.","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-21T10:22:59.069368-08:00","updated_at":"2025-12-21T21:18:48.514513-08:00","closed_at":"2025-12-21T21:18:48.514513-08:00","close_reason":"Fixed - renamed customID to customTitle and updated dry-run output"}
|
||||
{"id":"bd-eijl","title":"bd ship command for publishing capabilities","description":"Add `bd ship \u003ccapability\u003e` command that:\n\n1. Finds issue with `export:\u003ccapability\u003e` label\n2. Validates issue is closed (or --force to override)\n3. Adds `provides:\u003ccapability\u003e` label\n4. Protects `provides:*` namespace (only bd ship can add these labels)\n\nExample:\n```bash\nbd ship mol-run-assignee\n# Output: Shipped mol-run-assignee (bd-xyz)\n```\n\nPart of cross-project dependency system.\nSee: gastown/docs/cross-project-deps.md","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-21T22:37:19.123024-08:00","updated_at":"2025-12-21T22:37:19.123024-08:00"}
|
||||
{"id":"bd-eijl","title":"bd ship command for publishing capabilities","description":"Add `bd ship \u003ccapability\u003e` command that:\n\n1. Finds issue with `export:\u003ccapability\u003e` label\n2. Validates issue is closed (or --force to override)\n3. Adds `provides:\u003ccapability\u003e` label\n4. Protects `provides:*` namespace (only bd ship can add these labels)\n\nExample:\n```bash\nbd ship mol-run-assignee\n# Output: Shipped mol-run-assignee (bd-xyz)\n```\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:19.123024-08:00","updated_at":"2025-12-21T23:11:47.498859-08:00","closed_at":"2025-12-21T23:11:47.498859-08:00","close_reason":"Implemented: bd ship command with export:/provides: labels, namespace protection in label add"}
|
||||
{"id":"bd-elqd","title":"Systematic bd sync stability investigation","description":"## Context\n\nbd sync has chronic instability issues that have persisted since inception:\n- issues.jsonl is always dirty after push\n- bd sync often creates messes requiring manual cleanup\n- Problems escalating despite accumulated bug fixes\n- Workarounds are getting increasingly draconian\n\n## Goal\n\nSystematically observe and diagnose bd sync failures rather than applying band-aid fixes.\n\n## Approach\n\n1. Start fresh session with latest binary (all fixes applied)\n2. Run bd sync and carefully observe what happens\n3. Document exact sequence of events when things go wrong\n4. File specific issues for each discrete problem identified\n5. Track the root causes, not just symptoms\n\n## Test Environment\n\n- Fresh clone or clean state\n- Latest bd binary with all bug fixes\n- Monitor both local and remote JSONL state\n- Check for timing issues, race conditions, merge conflicts\n\n## Success Criteria\n\n- Identify root causes of sync instability\n- Create actionable issues for each problem\n- Eventually achieve stable bd sync (no manual intervention needed)","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-16T22:57:25.35289-08:00","updated_at":"2025-12-17T16:11:17.070763-08:00","deleted_at":"2025-12-17T16:11:17.070763-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
{"id":"bd-etyv","title":"Smart --var detection for mol distill","description":"Implemented bidirectional syntax support for mol distill --var flag.\n\n**Problem:**\n- spawn uses: --var variable=value (assignment style)\n- distill used: --var value=variable (substitution style)\n- Agents would naturally guess spawn-style for both\n\n**Solution:**\nSmart detection that accepts BOTH syntaxes by checking which side appears in the epic text:\n- --var branch=feature-auth → finds 'feature-auth' in text → works\n- --var feature-auth=branch → finds 'feature-auth' in text → also works\n\n**Changes:**\n- Added parseDistillVar() with smart detection\n- Added collectSubgraphText() helper\n- Restructured runMolDistill to load subgraph before parsing vars\n- Updated help text to document both syntaxes\n- Added comprehensive tests in mol_test.go\n\n**Edge cases handled:**\n- Both sides found: prefers spawn-style (more common guess)\n- Neither found: helpful error message\n- Empty sides: validation error\n- Values containing '=' (e.g., KEY=VALUE): works via SplitN\n\nEmbodies the Beads philosophy: watch what agents do, make their guess correct.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T11:08:50.83923-08:00","updated_at":"2025-12-21T11:08:56.432536-08:00","closed_at":"2025-12-21T11:08:56.432536-08:00","close_reason":"Implemented"}
|
||||
{"id":"bd-eyrh","title":"🤝 HANDOFF: Review remaining beads PRs","description":"## Current State\nJust merged PR #653 (doctor refactor) and added tests to restore coverage.\n\n## Remaining Open PRs to Review\nRun `gh pr list --repo steveyegge/beads` to see current list. As of handoff:\n\n1. #655 - feat: Linear Integration (jblwilliams)\n2. #651 - feat(audit): agent audit trail (dchichkov)\n3. #648 - Stop init creating redundant @AGENTS.md (maphew)\n4. #646 - fix(unix): handle Statfs field types (jordanhubbard)\n5. #645 - feat: /plan-to-beads Claude Code command (petebytes)\n6. #642, #641, #640 - sync branch fixes (cpdata)\n\n## Review Checklist\n- Check CI status with `gh pr checks \u003cnum\u003e --repo steveyegge/beads`\n- Verify no .beads/ data leaking (we have a hook now)\n- Review code quality\n- Merge good ones, request changes on problematic ones\n\n## Notes\n- User wants us to be proactive about merging good PRs\n- Can add tests ourselves if coverage drops","status":"tombstone","priority":2,"issue_type":"message","created_at":"2025-12-19T17:44:34.149837-08:00","updated_at":"2025-12-21T13:53:33.613805-08:00","deleted_at":"2025-12-21T13:53:33.613805-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"message","sender":"Steve Yegge","wisp":true}
|
||||
@@ -200,7 +200,7 @@
|
||||
{"id":"bd-gjla","title":"Test Thread","description":"Initial message for threading test","status":"tombstone","priority":2,"issue_type":"message","created_at":"2025-12-16T18:19:51.704324-08:00","updated_at":"2025-12-17T16:11:17.070763-08:00","dependencies":[{"issue_id":"bd-gjla","depends_on_id":"bd-f5cc","type":"duplicates","created_at":"2025-12-18T13:45:31.137191-08:00","created_by":"migration"}],"deleted_at":"2025-12-17T16:11:17.070763-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"message"}
|
||||
{"id":"bd-gocx","title":"Run bump-version.sh 0.32.1","description":"Execute ./scripts/bump-version.sh 0.32.1 to update all version references","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-20T21:53:18.470174-08:00","updated_at":"2025-12-20T21:54:54.500836-08:00","closed_at":"2025-12-20T21:54:54.500836-08:00","close_reason":"Version bumped to 0.32.1","dependencies":[{"issue_id":"bd-gocx","depends_on_id":"bd-an4s","type":"parent-child","created_at":"2025-12-20T21:53:18.471793-08:00","created_by":"daemon"},{"issue_id":"bd-gocx","depends_on_id":"bd-x3j8","type":"blocks","created_at":"2025-12-20T21:53:29.688436-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-gxq","title":"Simplify bd onboard to minimal AGENTS.md snippet pointing to bd prime","description":"## Context\nGH#604 raised concerns about bd onboard bloating AGENTS.md with ~100+ lines of static instructions that:\n- Load every session whether beads is being used or not\n- Get stale when bd upgrades\n- Waste tokens\n\n## Solution\nSimplify `bd onboard` to output a minimal snippet (~2 lines) that points to `bd prime`:\n\n```markdown\n## Issue Tracking\nThis project uses beads (`bd`) for issue tracking.\nRun `bd prime` for workflow context, or hooks auto-inject it.\n```\n\n## Rationale\n- `bd prime` is dynamic, concise (~80 lines), and always matches installed bd version\n- Hooks already auto-inject `bd prime` at session start when .beads/ detected\n- AGENTS.md only needs to mention beads exists, not contain full instructions\n\n## Implementation\n1. Update `cmd/bd/onboard.go` to output minimal snippet\n2. Keep `--output` flag for BD_GUIDE.md generation (may still be useful)\n3. Update help text to explain the new approach","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-18T11:42:38.604891-08:00","updated_at":"2025-12-18T11:47:28.020419-08:00","closed_at":"2025-12-18T11:47:28.020419-08:00","close_reason":"Implemented: bd onboard now outputs minimal snippet pointing to bd prime"}
|
||||
{"id":"bd-h807","title":"Cross-project dependency support","description":"Enable tracking dependencies across project boundaries.\n\n## Mechanism\n- Producer: `bd ship \u003ccapability\u003e` adds `provides:\u003ccapability\u003e` label\n- Consumer: `blocked_by: external:\u003cproject\u003e:\u003ccapability\u003e`\n- Resolution: `bd ready` checks external deps via config\n\n## Design Doc\nSee: gastown/docs/cross-project-deps.md\n\n## Children\n- bd-eijl: bd ship command\n- bd-om4a: external: prefix in blocked_by\n- bd-66w1: external_projects config\n- bd-zmmy: bd ready resolution","status":"open","priority":1,"issue_type":"epic","created_at":"2025-12-21T22:38:01.116241-08:00","updated_at":"2025-12-21T22:38:01.116241-08:00"}
|
||||
{"id":"bd-h807","title":"Cross-project dependency support","description":"Enable tracking dependencies across project boundaries.\n\n## Mechanism\n- Producer: `bd ship \u003ccapability\u003e` adds `provides:\u003ccapability\u003e` label\n- Consumer: `blocked_by: external:\u003cproject\u003e:\u003ccapability\u003e`\n- Resolution: `bd ready` checks external deps via config\n\n## Design Doc\nSee: gastown/docs/cross-project-deps.md\n\n## Children\n- bd-eijl: bd ship command\n- bd-om4a: external: prefix in blocked_by\n- bd-66w1: external_projects config\n- bd-zmmy: bd ready resolution","status":"in_progress","priority":1,"issue_type":"epic","created_at":"2025-12-21T22:38:01.116241-08:00","updated_at":"2025-12-21T23:00:46.454186-08:00"}
|
||||
{"id":"bd-h8q","title":"Add tests for validation functions","description":"Validation functions like ParseIssueType have 0% coverage. These are critical for ensuring data quality and preventing invalid data from entering the system.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-18T07:01:02.843488344-07:00","updated_at":"2025-12-18T07:03:53.561016965-07:00","closed_at":"2025-12-18T07:03:53.561016965-07:00","dependencies":[{"issue_id":"bd-h8q","depends_on_id":"bd-6ss","type":"discovered-from","created_at":"2025-12-18T07:01:02.846419747-07:00","created_by":"matt"}]}
|
||||
{"id":"bd-h8ym","title":"Wait for CI to pass","description":"Monitor GitHub Actions - all checks must pass before release artifacts are built","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-21T13:52:33.066792-08:00","updated_at":"2025-12-21T13:53:49.454536-08:00","deleted_at":"2025-12-21T13:53:49.454536-08:00","deleted_by":"stevey","delete_reason":"manual delete","original_type":"task","wisp":true}
|
||||
{"id":"bd-haxi","title":"Restart running daemons","description":"Kill and restart any running bd daemons to pick up new version: pkill -f 'bd daemon' \u0026\u0026 bd daemon --start","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-21T13:52:33.066262-08:00","updated_at":"2025-12-21T13:53:49.757078-08:00","deleted_at":"2025-12-21T13:53:49.757078-08:00","deleted_by":"stevey","delete_reason":"manual delete","original_type":"task","wisp":true}
|
||||
@@ -284,7 +284,7 @@
|
||||
{"id":"bd-obep","title":"Spawn-time bonding: --attach flag","description":"Add --attach flag to bd mol spawn for on-the-fly composition.\n\nCOMMAND: bd mol spawn proto-feature --attach proto-docs --attach proto-testing\n\nBEHAVIOR:\n- Spawn the primary proto as normal\n- For each --attach: spawn that proto and wire to primary\n- Attachments become children of primary's root epic\n- Dependencies wired based on bond type (default: sequential)\n\nFLAGS:\n- --attach PROTO: Attach a proto (can repeat)\n- --attach-type TYPE: sequential (default) or parallel for all attachments\n- --after ISSUE: Attachment point for attached protos\n\nVARIABLE HANDLING:\n- All attached protos share variable namespace\n- Warn on variable name conflicts\n- All --var flags apply to all protos","notes":"DESIGN NOTE: This is syntactic sugar. Equivalent to:\n bd mol spawn proto-A\n bd mol bond $new_epic_id proto-B\n \nKeeping as separate task because it's a common UX pattern worth optimizing.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T00:59:06.178092-08:00","updated_at":"2025-12-21T10:42:50.554816-08:00","closed_at":"2025-12-21T10:42:50.554816-08:00","close_reason":"Implemented --attach and --attach-type flags for bd mol spawn. Fixed pre-existing bug where bondProtoMol and bondMolMol tried to add duplicate dependencies (UNIQUE constraint). Sequential bonds now use blocks type, parallel/conditional use parent-child.","dependencies":[{"issue_id":"bd-obep","depends_on_id":"bd-o5xe","type":"parent-child","created_at":"2025-12-21T00:59:51.368491-08:00","created_by":"daemon"},{"issue_id":"bd-obep","depends_on_id":"bd-o91r","type":"blocks","created_at":"2025-12-21T00:59:51.733369-08:00","created_by":"daemon"}]}
|
||||
{"id":"bd-of2p","title":"Improve version bump molecule with missing steps","description":"During v0.32.1 release, discovered missing steps in the release molecule:\n\n**Missing from molecule:**\n1. Rebuild ~/go/bin/bd (only did ~/.local/bin/bd)\n2. Install beads-mcp from local source: `uv tool install --reinstall ./integrations/beads-mcp`\n3. Restart daemons with `bd daemons killall`\n4. (Optional) Publish beads-mcp to PyPI\n\n**Current molecule steps (bd-6s61):**\n1. Update CHANGELOG.md\n2. Update info.go versionChanges \n3. Run bump-version.sh\n4. Run tests and linting\n5. Update local installation\n6. Commit and push release\n7. Wait for CI\n8. Verify release artifacts\n\n**Proposed additions:**\n- After \"Update local installation\": rebuild BOTH ~/.local/bin/bd AND ~/go/bin/bd\n- Add: \"Install beads-mcp from source\" step\n- Add: \"Restart daemons\" step\n- Add: \"Verify all versions match\" step that checks all artifacts\n\n**Also learned:**\n- Must run from mayor/rig to avoid git conflicts with bd sync (already documented in bump-version.sh)","notes":"CORRECTION: npm publishing IS automated and working!\n\n**Package naming:**\n- OLD: `beads` (npm) - deprecated, stuck at 0.2.1\n- CURRENT: `@beads/bd` (npm) - scoped package, auto-published by CI\n\n**How it works:**\n- CI uses OIDC trusted publishing (no token needed)\n- Workflow: .github/workflows/release.yml → publish-npm job\n- Permissions: `id-token: write` enables GitHub OIDC\n- To install: `npm install -g @beads/bd` (not `npm install beads`)\n\n**All publishing is automated on tag push:**\n1. GitHub Release - goreleaser ✓\n2. PyPI - publish-pypi job ✓\n3. Homebrew - update-homebrew job ✓\n4. npm (@beads/bd) - publish-npm job ✓\n\n**Remaining molecule improvements (local steps only):**\n- Rebuild BOTH ~/.local/bin/bd AND ~/go/bin/bd\n- Install beads-mcp from source: `uv tool install --reinstall ./integrations/beads-mcp`\n- Restart daemons: `bd daemons killall`\n- Run from mayor/rig to avoid git conflicts with bd sync\n- Final verification step to check all local versions match","status":"in_progress","priority":2,"issue_type":"task","assignee":"beads/dave","created_at":"2025-12-20T22:09:11.845787-08:00","updated_at":"2025-12-20T22:35:53.687587-08:00"}
|
||||
{"id":"bd-ola6","title":"Implement transaction retry logic for SQLITE_BUSY","description":"BEGIN IMMEDIATE fails immediately on SQLITE_BUSY instead of retrying with exponential backoff.\n\nLocation: internal/storage/sqlite/sqlite.go:223-225\n\nProblem:\n- Under concurrent write load, BEGIN IMMEDIATE can fail with SQLITE_BUSY\n- Current implementation fails immediately instead of retrying\n- Results in spurious failures under normal concurrent usage\n\nSolution: Implement exponential backoff retry:\n- Retry up to N times (e.g., 5)\n- Backoff: 10ms, 20ms, 40ms, 80ms, 160ms\n- Check for context cancellation between retries\n- Only retry on SQLITE_BUSY/database locked errors\n\nImpact: Spurious failures under concurrent write load\n\nEffort: 3 hours","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-11-16T14:51:31.247147-08:00","updated_at":"2025-12-21T21:39:23.071036-08:00","closed_at":"2025-12-21T21:39:23.071036-08:00","close_reason":"Already implemented: beginImmediateWithRetry in util.go provides exponential backoff (5 retries, 10ms→160ms) for SQLITE_BUSY errors, used by RunInTransaction. Tests in util_test.go verify behavior."}
|
||||
{"id":"bd-om4a","title":"Support external: prefix in blocked_by field","description":"Allow blocked_by to include external project references:\n\n```bash\nbd update gt-xyz --blocked-by=\"external:beads:mol-run-assignee\"\n```\n\nSyntax: `external:\u003cproject\u003e:\u003ccapability\u003e`\n- project: name from external_projects config\n- capability: matches provides:\u003ccapability\u003e label in target project\n\nStorage: Store as-is in blocked_by array. Resolution happens at query time.\n\nPart of cross-project dependency system.\nSee: gastown/docs/cross-project-deps.md","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-21T22:37:29.725196-08:00","updated_at":"2025-12-21T22:37:29.725196-08:00"}
|
||||
{"id":"bd-om4a","title":"Support external: prefix in blocked_by field","description":"Allow blocked_by to include external project references:\n\n```bash\nbd update gt-xyz --blocked-by=\"external:beads:mol-run-assignee\"\n```\n\nSyntax: `external:\u003cproject\u003e:\u003ccapability\u003e`\n- project: name from external_projects config\n- capability: matches provides:\u003ccapability\u003e label in target project\n\nStorage: Store as-is in blocked_by array. Resolution happens at query time.\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:29.725196-08:00","updated_at":"2025-12-21T23:07:48.127045-08:00","closed_at":"2025-12-21T23:07:48.127045-08:00","close_reason":"Implemented: bd dep add accepts external:project:capability syntax, stores as-is, shows in blocked output, updates blocked cache"}
|
||||
{"id":"bd-ork0","title":"Add comments to 30+ silently ignored errors or fix them","description":"Code health review found 30+ instances of error suppression using blank identifier without explanation:\n\nGood examples (with comments):\n- merge.go: _ = gitRmCmd.Run() // Ignore errors\n- daemon_watcher.go: _ = watcher.Add(...) // Ignore error\n\nBad examples (no context):\n- create.go:213: dbPrefix, _ = store.GetConfig(ctx, \"issue_prefix\")\n- daemon_sync_branch.go: _ = daemonClient.Close()\n- migrate_hash_ids.go, version_tracking.go: _ = store.Close()\n\nFix: Add comments explaining WHY errors are ignored, or handle them properly.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-16T18:17:25.899372-08:00","updated_at":"2025-12-16T18:17:25.899372-08:00","dependencies":[{"issue_id":"bd-ork0","depends_on_id":"bd-tggf","type":"blocks","created_at":"2025-12-16T18:19:06.275843-08:00","created_by":"daemon","metadata":"{}"}]}
|
||||
{"id":"bd-ot0w","title":"Work on beads-tip: Fix broken Claude integration link in ...","description":"Work on beads-tip: Fix broken Claude integration link in bd doctor (GH#623). Update URL that doesn't exist. When done, submit MR (not PR) to integration branch for Refinery.","status":"closed","priority":2,"issue_type":"task","assignee":"beads/dementus","created_at":"2025-12-19T22:56:08.429157-08:00","updated_at":"2025-12-19T23:20:39.790305-08:00","closed_at":"2025-12-19T23:20:39.790305-08:00","close_reason":"Fixed broken Claude plugin URL in bd doctor"}
|
||||
{"id":"bd-otf4","title":"Code Review: PR #481 - Context Engineering Optimizations","description":"Comprehensive code review of the merged context engineering PR (PR #481) that reduces MCP context usage by 80-90%.\n\n## Summary\nThe PR successfully implements lazy tool schema loading and minimal issue models to reduce context window usage. Overall implementation is solid and well-tested.\n\n## Positive Findings\n✅ Well-designed models (IssueMinimal, CompactedResult)\n✅ Comprehensive test coverage (28 tests, all passing)\n✅ Clear documentation and comments\n✅ Backward compatibility preserved (show() still returns full Issue)\n✅ Sensible defaults (COMPACTION_THRESHOLD=20, PREVIEW_COUNT=5)\n✅ Tool catalog complete with all 15 tools documented\n\n## Issues Identified\nSee linked issues for specific followup tasks.\n\n## Context Engineering Architecture\n- discover_tools(): List tool names only (~500 bytes vs ~15KB)\n- get_tool_info(name): Get specific tool details on-demand\n- IssueMinimal: Lightweight model for list views (~80 bytes vs ~400 bytes)\n- CompactedResult: Auto-compacts results with \u003e20 issues\n- _to_minimal(): Conversion function (efficient, no N+1 issues)","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-14T14:24:13.523532-08:00","updated_at":"2025-12-14T14:24:13.523532-08:00"}
|
||||
@@ -409,5 +409,5 @@
|
||||
{"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"}]}
|
||||
{"id":"bd-zf5w","title":"bd mail uses git user.name for sender instead of BEADS_AGENT_NAME","description":"When sending mail via `bd mail send`, the sender field in the stored issue uses git config user.name instead of the BEADS_AGENT_NAME environment variable.\n\nReproduction:\n1. Set BEADS_AGENT_NAME=gastown-alpha\n2. Run: bd mail send mayor/ -s 'Test' -m 'Body'\n3. Check the issue.jsonl: sender is 'Steve Yegge' (git user.name) not 'gastown-alpha'\n\nExpected: The sender field should use BEADS_AGENT_NAME when set.\n\nThis breaks the mail system for multi-agent workflows where agents need to identify themselves by their role (polecat, refinery, etc.) rather than the human user's git identity.\n\nRelated: gt mail routing integration with Gas Town","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-20T21:46:33.646746-08:00","updated_at":"2025-12-20T21:59:25.771325-08:00","closed_at":"2025-12-20T21:59:25.771325-08:00","close_reason":"Not applicable - filed against stale bd v0.30.6"}
|
||||
{"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-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":"open","priority":2,"issue_type":"feature","created_at":"2025-12-21T22:37:50.03794-08:00","updated_at":"2025-12-21T22:37:50.03794-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-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":"in_progress","priority":2,"issue_type":"feature","created_at":"2025-12-21T22:37:50.03794-08:00","updated_at":"2025-12-21T23:11:58.249018-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-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":"open","priority":1,"issue_type":"feature","created_at":"2025-11-21T23:16:09.596778-08:00","updated_at":"2025-11-21T23:16:27.781976-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","metadata":"{}"}]}
|
||||
|
||||
Reference in New Issue
Block a user