bd sync: conflict resolution

Executed-By: mayor
Role: mayor
This commit is contained in:
mayor
2025-12-31 12:33:42 -08:00
committed by Steve Yegge
parent 18d4e63948
commit 18fbab6a38

View File

@@ -32,6 +32,7 @@
{"id":"bd-1dez.6","title":"bd mol publish: Push formula to GitHub repo","description":"Publish a formula to a GitHub repository for sharing.\n\n## Usage\n```bash\n# Create new repo and publish\nbd mol publish mol-my-workflow --repo github.com/myorg/mol-my-workflow\n\n# Update existing repo\nbd mol publish mol-my-workflow --repo github.com/myorg/mol-my-workflow --tag v1.1.0\n```\n\n## Implementation\n1. Export proto to formula.json (if not already a file)\n2. Validate formula structure\n3. Create GitHub repo if --create flag (uses `gh repo create`)\n4. Copy formula.json to repo\n5. Generate README.md from formula description\n6. Commit and push\n7. Create git tag if --tag specified\n8. Add mol-formula topic to repo\n\n## Flags\n- `--repo \u003curl\u003e` - Target GitHub repo (required)\n- `--tag \u003cversion\u003e` - Create version tag\n- `--create` - Create repo if doesn't exist\n- `--private` - Create as private repo\n\n## Workflow\n```bash\n# Full publish flow\nbd mol distill my-epic --name my-workflow\nbd mol promote bd-proto-xxx --as my-workflow\nbd mol publish mol-my-workflow --repo github.com/me/mol-my-workflow --create --tag v1.0.0\n```\n","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-25T12:06:41.419764-08:00","updated_at":"2025-12-25T21:53:13.421752-08:00","closed_at":"2025-12-25T21:53:13.421752-08:00","dependencies":[{"issue_id":"bd-1dez.6","depends_on_id":"bd-1dez","type":"parent-child","created_at":"2025-12-25T12:06:41.420209-08:00","created_by":"daemon"}]}
{"id":"bd-1dez.7","title":"Formula versioning: Version field and git tag integration","description":"Add versioning support to formulas for tracking updates.\n\n## Formula Version Field\n```json\n{\n \"formula\": \"mol-code-review\",\n \"version\": \"1.2.0\",\n \"min_bd_version\": \"0.25.0\",\n ...\n}\n```\n\n## Version Semantics\n- Use semver: MAJOR.MINOR.PATCH\n- MAJOR: Breaking changes to step structure\n- MINOR: New optional steps or variables\n- PATCH: Documentation, bug fixes\n\n## Git Tag Integration\n- `bd mol install repo@v1.2.0` fetches that tag\n- `bd mol install repo` fetches latest tag (or main if no tags)\n- `bd mol publish --tag v1.2.0` creates tag\n\n## Proto Version Tracking\nLocal proto should store:\n```\nsource_repo: github.com/anthropics/mol-code-review\nsource_version: v1.2.0\ninstalled_at: 2025-12-25T12:00:00Z\n```\n\nThis enables `bd mol update` to check for newer versions.\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T12:06:42.674849-08:00","updated_at":"2025-12-25T19:43:22.501926-08:00","closed_at":"2025-12-25T19:43:22.501926-08:00","dependencies":[{"issue_id":"bd-1dez.7","depends_on_id":"bd-1dez","type":"parent-child","created_at":"2025-12-25T12:06:42.67694-08:00","created_by":"daemon"}]}
{"id":"bd-1dez.8","title":"Installation tracking: .beads/installed.json","description":"Track installed formulas for update checking and provenance.\n\n## File Format\n```json\n{\n \"mol-code-review\": {\n \"source\": \"github.com/anthropics/mol-code-review\",\n \"version\": \"v1.2.0\",\n \"installed_at\": \"2025-12-25T12:00:00Z\",\n \"formula_hash\": \"abc123...\"\n },\n \"mol-polecat-work\": {\n \"source\": \"local\",\n \"version\": \"1\",\n \"installed_at\": \"2025-12-24T10:00:00Z\"\n }\n}\n```\n\n## Commands That Update This\n- `bd mol install` - Adds entry\n- `bd mol update` - Updates version/timestamp\n- `bd cook` - Adds entry with source:local\n- `bd mol uninstall` - Removes entry (new command)\n\n## Usage\n```bash\nbd mol list --installed # Shows installed with source/version\nbd mol outdated # Shows formulas with available updates\n```\n\n## Sync Behavior\n- installed.json is gitignored (local state)\n- Only formulas/ directory is synced\n- Each clone tracks its own installations\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T12:06:43.934727-08:00","updated_at":"2025-12-25T19:38:04.14827-08:00","closed_at":"2025-12-25T19:38:04.14827-08:00","dependencies":[{"issue_id":"bd-1dez.8","depends_on_id":"bd-1dez","type":"parent-child","created_at":"2025-12-25T12:06:43.937653-08:00","created_by":"daemon"}]}
{"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":"in_progress","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:29:28.015535-08:00"}
{"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"}
@@ -204,14 +205,14 @@
{"id":"bd-8fgn","title":"test hash length","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-16T13:49:32.113843-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-8fqd","title":"Test role bead","status":"closed","priority":2,"issue_type":"role","created_at":"2025-12-27T23:37:10.275712-08:00","created_by":"mayor","updated_at":"2025-12-27T23:37:15.585821-08:00","closed_at":"2025-12-27T23:37:15.585821-08:00"}
{"id":"bd-8g8","title":"Fix G304 potential file inclusion in cmd/bd/tips.go:259","description":"Linting issue: G304: Potential file inclusion via variable (gosec) at cmd/bd/tips.go:259:18. Error: if data, err := os.ReadFile(settingsPath); err == nil {","status":"tombstone","priority":0,"issue_type":"bug","created_at":"2025-12-07T15:34:57.189730843-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-8hea","title":"Add GUPP to non-polecat roles (Mayor, Deacon, Witness, Refinery)","description":"GUPP (propulsion nudge after beacon) is only implemented for polecats in session/manager.go.\n\nOther roles have different startup flows but could benefit from similar auto-propulsion:\n- Mayor: mayor/manager.go or wherever mayor session starts\n- Deacon: deacon startup flow\n- Witness: witness startup flow \n- Refinery: refinery startup flow\n\nEach role may need role-specific propulsion message.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-30T21:21:01.3267-08:00","created_by":"mayor","updated_at":"2025-12-30T21:21:01.3267-08:00"}
{"id":"bd-8hea","title":"Add GUPP to non-polecat roles (Mayor, Deacon, Witness, Refinery)","description":"GUPP (propulsion nudge after beacon) is only implemented for polecats in session/manager.go.\n\nOther roles have different startup flows but could benefit from similar auto-propulsion:\n- Mayor: mayor/manager.go or wherever mayor session starts\n- Deacon: deacon startup flow\n- Witness: witness startup flow \n- Refinery: refinery startup flow\n\nEach role may need role-specific propulsion message.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-30T21:21:01.3267-08:00","created_by":"mayor","updated_at":"2025-12-31T12:26:34.826518-08:00","closed_at":"2025-12-31T12:26:34.826518-08:00","close_reason":"Misfiled - belongs in gastown (gt-)"}
{"id":"bd-8hy","title":"Kill running daemons","description":"Stop all bd daemons before release:\n\n```bash\npkill -f 'bd.*daemon' || true\nsleep 1\npgrep -lf 'bd.*daemon' # Should show nothing\n```","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-18T22:42:58.255478-08:00","updated_at":"2025-12-24T16:25:30.371693-08:00","dependencies":[{"issue_id":"bd-8hy","depends_on_id":"bd-qqc","type":"parent-child","created_at":"2025-12-18T22:43:16.23168-08:00","created_by":"daemon"}],"deleted_at":"2025-12-24T16:25:30.371693-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
{"id":"bd-8pyn","title":"Version Bump: 0.30.7","description":"Release checklist for version 0.30.7. This molecule ensures all release steps are completed properly.","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-19T22:56:48.648694-08:00","updated_at":"2025-12-20T00:49:51.927518-08:00","closed_at":"2025-12-20T00:25:59.529183-08:00"}
{"id":"bd-8v2","title":"Add {{version}} to versionChanges in info.go","description":"Add new entry at TOP of versionChanges in cmd/bd/info.go with release notes from CHANGELOG.md. Must do before bump-version.sh --commit.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-18T22:43:00.482846-08:00","updated_at":"2025-12-24T16:25:30.231077-08:00","dependencies":[{"issue_id":"bd-8v2","depends_on_id":"bd-qqc","type":"parent-child","created_at":"2025-12-18T22:43:16.496649-08:00","created_by":"daemon"},{"issue_id":"bd-8v2","depends_on_id":"bd-kyo","type":"blocks","created_at":"2025-12-18T22:43:20.69619-08:00","created_by":"daemon"}],"deleted_at":"2025-12-24T16:25:30.231077-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
{"id":"bd-8wgo","title":"bd merge omits priority:0 due to omitempty JSON tag","description":"GitHub issue #671. The merge code in internal/merge/merge.go uses 'omitempty' on the Priority field, which causes priority:0 (P0/critical) to be dropped from JSON output since 0 is Go's zero value for int. Fix: either remove omitempty from Priority field or use a pointer (*int). This affects the git merge driver and causes P0 issues to lose their priority.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-21T14:35:15.083146-08:00","updated_at":"2025-12-21T15:41:14.522554-08:00","closed_at":"2025-12-21T15:41:14.522554-08:00"}
{"id":"bd-8x3w","title":"Add composite index (issue_id, type) on dependencies table","description":"GetBlockedIssues uses EXISTS clauses that filter by issue_id AND type together.\n\n**Query pattern (ready.go:427-429):**\n```sql\nEXISTS (\n SELECT 1 FROM dependencies d2\n WHERE d2.issue_id = i.id AND d2.type = 'blocks'\n)\n```\n\n**Problem:** Only idx_dependencies_issue exists. SQLite must filter type after index lookup.\n\n**Solution:** Add migration:\n```sql\nCREATE INDEX IF NOT EXISTS idx_dependencies_issue_type ON dependencies(issue_id, type);\n```\n\n**Note:** This complements the existing idx_dependencies_depends_on_type for the reverse direction.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-22T22:58:52.876846-08:00","updated_at":"2025-12-22T23:15:13.840789-08:00","closed_at":"2025-12-22T23:15:13.840789-08:00","dependencies":[{"issue_id":"bd-8x3w","depends_on_id":"bd-h0we","type":"discovered-from","created_at":"2025-12-22T22:58:52.877536-08:00","created_by":"daemon"}]}
{"id":"bd-8x43","title":"Add 'bd where' command to show active beads location","description":"## Problem\n\nWhen using redirects, it's unclear which beads database is actually being used. This caused debugging confusion during the v0.39.0 release.\n\n## Proposed Solution\n\nAdd `bd where` command:\n\n```bash\nbd where\n# → /Users/stevey/gt/beads/mayor/rig/.beads (via redirect from crew/dave/.beads)\n\nbd where --json\n# → {\"path\": \"...\", \"redirected_from\": \"...\", \"prefix\": \"bd\"}\n```\n\n## Alternatives Considered\n\n- `bd info --beads-path` - but `bd where` is more discoverable\n- Just fix the UX so it's never confusing - defense in depth is better\n\n## Desire Paths\n\nThis supports the 'desire paths' design principle: make the system's behavior visible so agents can debug and understand it.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-27T21:15:52.666948-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-27T21:27:50.301295-08:00","closed_at":"2025-12-27T21:27:50.301295-08:00"}
{"id":"bd-8xnf","title":"Add bd mol progress command","description":"New command showing molecule progress without listing steps.\n\nOutput format:\n Molecule: gt-hanoi-xyz (Towers of Hanoi - 20 disks)\n Progress: 347,892 / 1,048,575 (33.2%)\n Current step: gt-hanoi-xyz.move-347893\n Rate: ~1,200 steps/hour\n ETA: ~9.7 hours remaining\n\nUses indexed query on dependencies table:\n SELECT COUNT(*), SUM(CASE WHEN status='closed' THEN 1 ELSE 0 END)\n FROM dependencies d JOIN issues i ON d.issue_id = i.id\n WHERE d.depends_on_id = ? AND d.type = 'parent-child'","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-31T00:52:52.613276-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-31T00:52:52.613276-08:00","dependencies":[{"issue_id":"bd-8xnf","depends_on_id":"bd-5nu1","type":"parent-child","created_at":"2025-12-31T00:54:00.815655-08:00","created_by":"gastown/crew/max"}]}
{"id":"bd-8xnf","title":"Add bd mol progress command","description":"New command showing molecule progress without listing steps.\n\nOutput format:\n Molecule: gt-hanoi-xyz (Towers of Hanoi - 20 disks)\n Progress: 347,892 / 1,048,575 (33.2%)\n Current step: gt-hanoi-xyz.move-347893\n Rate: ~1,200 steps/hour\n ETA: ~9.7 hours remaining\n\nUses indexed query on dependencies table:\n SELECT COUNT(*), SUM(CASE WHEN status='closed' THEN 1 ELSE 0 END)\n FROM dependencies d JOIN issues i ON d.issue_id = i.id\n WHERE d.depends_on_id = ? AND d.type = 'parent-child'","status":"in_progress","priority":1,"issue_type":"task","created_at":"2025-12-31T00:52:52.613276-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-31T12:29:05.403828-08:00","dependencies":[{"issue_id":"bd-8xnf","depends_on_id":"bd-5nu1","type":"parent-child","created_at":"2025-12-31T00:54:00.815655-08:00","created_by":"gastown/crew/max"}]}
{"id":"bd-8y9t","title":"Remove bd mol spawn - use pour/wisp only","description":"Remove the spawn command from bd mol. Replace with:\n\n- bd pour \u003cproto\u003e - Instantiate as mol (liquid, persistent)\n- bd wisp \u003cproto\u003e - Instantiate as wisp (vapor, ephemeral)\n\nRationale:\n- 'spawn' doesn't fit the chemistry metaphor\n- Two phase transitions (pour/wisp) are clearer than one command with flags\n- Avoids confusion about defaults\n\nImplementation:\n1. Add bd pour command (currently bd mol spawn --pour)\n2. Add bd wisp command (currently bd mol spawn without --pour)\n3. Remove bd mol spawn\n4. Update all docs/tests\n\nGas Town tracking: gt-ingm.6","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-24T12:40:51.698189-08:00","updated_at":"2025-12-24T12:52:55.307-08:00","closed_at":"2025-12-24T12:52:55.307-08:00"}
{"id":"bd-8zbo","title":"Code smell: runCook function is ~275 lines","description":"attached_args: Refactor runCook function (~275 lines)\n\nThe runCook() function in cmd/bd/cook.go (lines 83-357) is ~275 lines handling:\n\n1. Flag parsing and validation\n2. Mode determination (compile vs runtime)\n3. Formula parsing and resolution\n4. Control flow, advice, and expansion application\n5. Dry-run output\n6. Ephemeral mode JSON output\n7. Persist mode database operations\n8. Result display\n\nConsider extracting:\n- parseAndValidateFlags() - flag handling\n- loadAndResolveFormula() - parse, resolve, apply transformations\n- outputDryRun() - dry run display logic\n- outputEphemeral() - ephemeral JSON output\n- persistFormula() - database persistence logic\n\nThe function has multiple exit points and nested conditionals that make it hard to follow.\n\nLocation: cmd/bd/cook.go:83-357","status":"closed","priority":3,"issue_type":"chore","created_at":"2025-12-28T15:33:08.808191-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T16:37:29.397832-08:00","closed_at":"2025-12-28T16:37:29.397832-08:00","dependencies":[{"issue_id":"bd-8zbo","depends_on_id":"bd-784c","type":"parent-child","created_at":"2025-12-28T15:38:04.25998-08:00","created_by":"daemon"}]}
{"id":"bd-90fs","title":"Merge: amber-1767138546434","description":"branch: polecat/amber-1767138546434\ntarget: main\nsource_issue: amber-1767138546434\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T15:57:38.681293-08:00","created_by":"beads/polecats/amber","updated_at":"2025-12-30T18:12:30.966277-08:00","closed_at":"2025-12-30T18:11:08.005131-08:00"}
@@ -357,6 +358,7 @@
{"id":"bd-dxtc","title":"Test daemon RPC delete handler","description":"Add tests for the daemon-side RPC delete handler that processes delete requests from clients.\n\n## What needs testing\n- Daemon's Delete RPC handler implementation\n- Processing delete requests from RPC clients\n- Cascade deletion at daemon level\n- Force deletion at daemon level\n- Dry-run mode validation\n- Error responses to clients\n- Dependency validation before deletion\n- Tombstone creation via daemon\n\n## Test scenarios\n1. Delete single issue via RPC\n2. Delete multiple issues via RPC\n3. Cascade deletion of dependents\n4. Force delete with orphaned dependents\n5. Dry-run returns what would be deleted without actual deletion\n6. Error: invalid issue IDs\n7. Error: insufficient permissions\n8. Error: dependency blocks deletion (without force/cascade)\n\n## Related\n- Parent epic: bd-kyll\n- Original issue: bd-7z4","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-18T13:08:33.532111042-07:00","updated_at":"2025-12-23T23:48:47.399582-08:00","closed_at":"2025-12-23T23:48:47.399582-08:00","dependencies":[{"issue_id":"bd-dxtc","depends_on_id":"bd-kyll","type":"parent-child","created_at":"2025-12-18T13:08:33.534367367-07:00","created_by":"mhwilkie"}]}
{"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":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-13T08:15:14.838772+11:00","updated_at":"2025-12-25T01:21:01.952723-08:00","deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
{"id":"bd-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":"tombstone","priority":1,"issue_type":"task","created_at":"2025-10-29T23:05:13.980679-07:00","updated_at":"2025-12-25T01:21:01.952723-08:00","deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
{"id":"bd-e2q9","title":"bd sync fails when run from directory with beads redirect","description":"\n## Bug\n\n`bd sync` fails with 'git status failed in worktree: exit status 128' when run from a directory that uses a beads redirect (e.g., crew/gus/.beads/redirect pointing to mayor/rig/.beads).\n\n## Reproduction\n\n1. Be in gastown/crew/gus (has .beads/redirect → ../../mayor/rig/.beads)\n2. Run `bd sync`\n3. Error: 'git status failed in worktree: exit status 128'\n\n## Workaround\n\nRun `bd sync` from the actual beads location:\n```bash\ncd /Users/stevey/gt/gastown/mayor/rig \u0026\u0026 bd sync\n```\n\n## Root Cause\n\nThe worktree path resolution in `getBeadsWorktreePath()` likely uses the crew/gus repo root instead of following the redirect to mayor/rig. The git worktree for beads-sync is in mayor/rig/.git/beads-worktrees/, not crew/gus/.git/beads-worktrees/.\n\n## Impact\n\nCrew workers with redirected beads cannot sync directly from their workspace.\n","status":"open","priority":1,"issue_type":"bug","created_at":"2025-12-31T11:58:39.875764-08:00","created_by":"gastown/crew/gus","updated_at":"2025-12-31T11:58:39.875764-08:00"}
{"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"}
{"id":"bd-e8kq","title":"Consolidate migrate-* commands into migrate subcommands","description":"Move migrate-hash-ids, migrate-issues, migrate-sync, migrate-tombstones under 'migrate' as subcommands. Reduces 5 top-level commands to 1.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T12:59:09.187369-08:00","created_by":"stevey","updated_at":"2025-12-28T13:02:51.321846-08:00","closed_at":"2025-12-28T13:02:51.321848-08:00"}
{"id":"bd-ecmd","title":"Add type: event for state transitions","description":"Events capture operational state changes as immutable records.\n\nFields needed:\n- event_type: string (namespaced category like patrol.muted, agent.started) \n- actor: string (entity URI who caused this)\n- target: string (entity URI or bead ID affected)\n- payload: object (event-specific JSON data)\n\nExample:\n id: evt-x7k2\n type: event\n event_type: patrol.muted\n actor: human:overseer\n target: agent:deacon\n payload: {reason: fixing deadlock, until: gt-abc1}\n\nThis enables:\n- bd activity --follow showing events\n- bd list --type=event --target=agent:deacon\n- Full audit trail for operational state\n- HOP-compatible transaction records","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-30T15:15:23.440095-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T18:12:30.97233-08:00","closed_at":"2025-12-30T16:13:57.467275-08:00","close_reason":"Implemented type: event for state transitions with all required fields"}
@@ -428,6 +430,7 @@
{"id":"bd-hobo","title":"Distinct prefixes for protos, molecules, wisps","description":"Template/workflow entities should have visually distinct prefixes from regular issues.\n\n**Problem:**\n- Protos (bd-7bs4) look like regular issues - invites squashing\n- Molecules (poured instances) also use bd- prefix\n- Wisps are in separate DB but still use bd- when referenced\n\n**Proposed Prefixes:**\n- `proto-` for templates (e.g., proto-release, proto-review)\n- `mol-` for active molecules (poured from protos)\n- `wisp-` for ephemeral wisps (vapor phase)\n\n**Benefits:**\n- Instant visual recognition of entity type\n- Prevents accidental modification of templates\n- Clear lifecycle: proto → mol → wisp → digest\n\n**Implementation options:**\n1. Separate databases with different prefixes\n2. Issue type determines prefix generation\n3. Naming convention enforced by bd pour/wisp commands","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-24T16:45:24.940809-08:00","updated_at":"2025-12-25T02:04:52.459233-08:00","closed_at":"2025-12-25T02:04:52.459233-08:00","labels":["workflow"]}
{"id":"bd-hp8g","title":"gt sling should look up formulas from .beads/formulas/ registry","description":"## Problem\n\ngt sling \u003cformula-name\u003e doesn't find formulas from the registry that bd formula list shows.\n\n## What I tried\n\n1. gt sling beads/crew/emma --formula beads-release --var version=0.42.0\n - Problem: --formula flag doesn't exist\n\n2. gt sling beads-release beads/crew/emma --var version=0.42.0\n - Error: open .../beads-release: no such file or directory\n - Problem: Looks for file in cwd, not formula registry\n\n## What worked\n\nbd mol wisp beads-release --var version=0.42.0 - correctly finds formula from .beads/formulas/\n\n## Expected\n\ngt sling should use the same formula lookup as bd mol wisp - checking .beads/formulas/*.formula.json\n\n## Documentation gap\n\nThe help shows examples like 'gt sling mol-release mayor/' suggesting formula slinging works, but it doesn't find registry formulas.","status":"closed","priority":2,"issue_type":"bug","assignee":"beads/polecats/jade","created_at":"2025-12-30T21:18:17.251292-08:00","created_by":"beads/crew/emma","updated_at":"2025-12-30T22:06:27.153176-08:00","closed_at":"2025-12-30T22:06:27.153176-08:00","close_reason":"Fixed in both repos: bd cook now looks up formulas from registry, and gt sling uses bd mol wisp"}
{"id":"bd-hr39","title":"bd cook: needs field not converted to step dependencies","description":"When cooking a formula with `needs` fields on steps, the dependencies are not created between sibling steps.\n\n## Expected\n\nFormula:\n```yaml\nsteps:\n - id: inbox-check\n title: Check inbox\n - id: trigger-spawns\n title: Nudge polecats\n needs: [inbox-check]\n```\n\nShould create:\n- mol-foo.inbox-check (no deps)\n- mol-foo.trigger-spawns → depends on → mol-foo.inbox-check\n\n## Actual\n\nBoth steps only depend on the parent proto:\n- mol-foo.inbox-check → depends on → mol-foo\n- mol-foo.trigger-spawns → depends on → mol-foo\n\nThe `needs` field is ignored.\n\n## Impact\n\nThis breaks the step execution order. Steps that should wait for predecessors will run in parallel or out of order.\n\n## Reproduction\n\n```bash\nbd cook mol-deacon-patrol.formula.yaml\nbd show mol-deacon-patrol.trigger-pending-spawns\n# Shows: Depends on mol-deacon-patrol (parent only)\n# Should show: Depends on mol-deacon-patrol.inbox-check\n```","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-24T13:49:59.023514-08:00","updated_at":"2025-12-24T13:59:09.929298-08:00","closed_at":"2025-12-24T13:59:09.929298-08:00"}
{"id":"bd-htwx","title":"Stale daemon.lock files cause 5+ second delays","description":"## Problem\nWhen a bd daemon crashes or is killed without cleanup, it leaves a stale daemon.lock file. Subsequent bd commands try to connect to the dead daemon, causing 5+ second timeouts before falling back to direct mode.\n\nFound during gt status optimization (gt-zdtpw) - one stale wyvern daemon was causing 10+ second delays.\n\n## Evidence\n```\n# Lock files with stale PIDs:\n$ find ~/gt -name \"daemon.lock\" -exec cat {} \\;\n{\"pid\": 11045, ...} # Not running (from Dec 27)\n{\"pid\": 15986, ...} # Not running (from Dec 27)\n{\"pid\": 98055, ...} # Just restarted\n\n# But running daemons have different PIDs:\n$ ps aux | grep \"bd.*daemon\"\n11847, 11683, 11624 # None match the lock files!\n```\n\n## Proposed fixes\n\n### 1. Validate lock on startup (quick fix)\nBefore trusting daemon.lock, check if the PID is still running:\n```python\ndef is_daemon_alive(lock_path):\n lock = json.load(open(lock_path))\n try:\n os.kill(lock[\"pid\"], 0) # Signal 0 = check if alive\n return True\n except OSError:\n return False\n```\n\n### 2. Heartbeat mechanism (robust fix)\nDaemon writes periodic heartbeat to lock file or separate file.\nClients check heartbeat age before attempting IPC.\n\n### 3. Lock cleanup in daemon startup\nWhen starting a new daemon, always check for and clean stale locks.\n\n### 4. Graceful shutdown handling\nRegister signal handlers (SIGTERM, SIGINT) to clean up lock on exit.\n\n## Workaround\nFor now, gastown uses `--no-daemon` for all read operations to avoid this issue.","status":"open","priority":1,"issue_type":"bug","created_at":"2025-12-31T12:19:37.758373-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-31T12:19:37.758373-08:00"}
{"id":"bd-hulf","title":"Molecule execution state management","description":"Implement molecule execution state tracking.\n\n## State Location\n\n```\n.beads/molecules/\u003cmol-id\u003e.state.yaml\n```\n\n## State Schema\n\n```yaml\nid: mol-deacon-patrol\nformula: mol-deacon-patrol # Source formula\nbonded_at: ISO timestamp\nbonded_by: entity who created it\n\n# Execution state\nstatus: running | paused | completed | failed\ncurrent_step: step-id\nstarted_at: ISO timestamp\ncompleted_at: ISO timestamp (if done)\n\n# Loop tracking\nreset_count: 0\nlast_reset_at: null\n\n# Per-step state\nsteps:\n inbox-check:\n status: completed | in_progress | pending\n started_at: ...\n completed_at: ...\n spawn-work:\n status: pending\n self-inspect:\n status: pending\n\n# Variables (from formula instantiation)\nvariables:\n rig: gastown\n issue_id: gt-xxx\n```\n\n## Operations\n\n- CreateState(molID, formula, variables) - Initialize state\n- LoadState(molID) - Read current state \n- SaveState(molID, state) - Write state\n- AdvanceStep(molID) - Mark current complete, find next\n- ResetState(molID) - Reset all steps to pending\n\n## Files\n\n- internal/mol/state.go\n- internal/mol/types.go","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-24T15:53:43.381634-08:00","updated_at":"2025-12-24T16:53:11.807645-08:00","closed_at":"2025-12-24T16:53:11.807645-08:00"}
{"id":"bd-hvng","title":"Merge: bd-w193","description":"branch: polecat/nux\ntarget: main\nsource_issue: bd-w193\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-19T23:23:47.496139-08:00","updated_at":"2025-12-20T23:17:26.996479-08:00","closed_at":"2025-12-20T23:17:26.996479-08:00"}
{"id":"bd-hw3w","title":"Update info.go versionChanges","description":"Add entry to versionChanges in cmd/bd/info.go with agent-actionable changes for {{version}}","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-19T22:56:01.016558-08:00","updated_at":"2025-12-20T17:59:26.262511-08:00","closed_at":"2025-12-20T01:23:50.3879-08:00","dependencies":[{"issue_id":"bd-hw3w","depends_on_id":"bd-6s61","type":"parent-child","created_at":"2025-12-19T22:56:14.941855-08:00","created_by":"daemon"},{"issue_id":"bd-hw3w","depends_on_id":"bd-czss","type":"blocks","created_at":"2025-12-19T22:56:23.219257-08:00","created_by":"daemon"}]}
@@ -810,11 +813,13 @@
{"id":"bd-uwkp","title":"Phase 2.4: Git merge driver optimization for TOON format","description":"Optimize git 3-way merge for TOON line-oriented format.\n\n## Overview\nTOON is line-oriented (unlike binary formats), enabling smarter git merge strategies. Implement custom merge driver to handle TOON-specific merge patterns.\n\n## Required Work\n\n### 2.4.1 TOON Merge Driver\n- [ ] Create .git/info/attributes entry for *.toon files\n- [ ] Implement custom merge driver script/command\n- [ ] Handle tabular format row merges (line-based 3-way)\n- [ ] Handle YAML-style format merges\n- [ ] Conflict markers for unsolvable conflicts\n\n### 2.4.2 Merge Patterns\n- [ ] Row addition: both branches add different rows → union\n- [ ] Row deletion: one branch deletes, other modifies → conflict (manual review)\n- [ ] Row modification: concurrent field changes → intelligent merge or conflict\n- [ ] Field ordering changes: ignore (TOON format resilient to order)\n\n### 2.4.3 Testing \u0026 Documentation\n- [ ] Unit tests for merge scenarios (3-way merge logic)\n- [ ] Integration tests with actual git merges\n- [ ] Conflict scenario testing\n- [ ] Documentation of merge strategy\n\n## Success Criteria\n- Git merge handles TOON conflicts intelligently\n- Fewer manual merge conflicts than JSONL\n- Round-trip preserved through merges\n- All 70+ tests still passing\n- Git history stays clean (minimal conflict markers)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-19T14:43:14.339238776-07:00","updated_at":"2025-12-21T14:42:26.434306-08:00","closed_at":"2025-12-21T14:42:26.434306-08:00","dependencies":[{"issue_id":"bd-uwkp","depends_on_id":"bd-iic1","type":"discovered-from","created_at":"2025-12-19T14:43:14.34427988-07:00","created_by":"daemon"}]}
{"id":"bd-uxlb","title":"Add bd agent state command for ZFC-compliant state reporting","description":"Add command for agents to write their own state to agent beads.\n\n```bash\nbd agent state \u003cagent-id\u003e \u003cstate\u003e\n# Example: bd agent state gt-mayor running\n# States: idle | running | stuck | stopped | dead\n```\n\nImplementation:\n1. Lookup agent bead by ID (type=agent)\n2. Update agent_state field in description\n3. Update last_activity timestamp\n4. Trigger bd sync if configured\n\nAlso add:\n- bd agent heartbeat \u003cagent-id\u003e - just updates last_activity\n- bd agent show \u003cagent-id\u003e - show agent bead details\n\nThis is the ZFC-compliant way for agents to self-report state.\n\nCross-ref: gt-p2vyo in gastown","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-28T01:49:46.325964-08:00","created_by":"mayor","updated_at":"2025-12-28T01:57:05.839623-08:00","closed_at":"2025-12-28T01:57:05.839623-08:00"}
{"id":"bd-uz8r","title":"Phase 2.3: TOON deletion tracking","description":"Implement deletion tracking in TOON format.\n\n## Overview\nPhase 2.2 switched storage to TOON format. Phase 2.3 adds deletion tracking in TOON format for propagating deletions across clones.\n\n## Required Work\n\n### 2.3.1 Deletion Tracking (TOON Format)\n- [ ] Implement deletions.toon file (tracking deleted issue records)\n- [ ] Add DeleteTracker struct to record deleted issue IDs and metadata\n- [ ] Update bdt delete command to record in deletions.toon\n- [ ] Design deletion record format (ID, timestamp, reason, hash)\n- [ ] Implement auto-prune of old deletion records (configurable TTL)\n\n### 2.3.2 Sync Propagation\n- [ ] Load deletions.toon during import\n- [ ] Remove deleted issues from local database when imported from remote\n- [ ] Handle edge cases (delete same issue in multiple clones)\n- [ ] Deletion ordering and conflict resolution\n\n### 2.3.3 Testing\n- [ ] Unit tests for deletion tracking\n- [ ] Integration tests for deletion propagation\n- [ ] Multi-clone deletion scenarios\n- [ ] TTL expiration tests\n\n## Success Criteria\n- deletions.toon stores deletion records in TOON format\n- Deletions propagate across clones via git sync\n- Old records auto-prune after TTL\n- All 70+ tests still passing\n- bdt delete command works seamlessly","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-19T14:37:23.722066816-07:00","updated_at":"2025-12-21T14:42:27.491932-08:00","closed_at":"2025-12-21T14:42:27.491932-08:00","dependencies":[{"issue_id":"bd-uz8r","depends_on_id":"bd-iic1","type":"discovered-from","created_at":"2025-12-19T14:37:23.726825771-07:00","created_by":"daemon"}]}
{"id":"bd-v4hq","title":"Test refile command","description":"Testing bd refile","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-31T12:31:39.783077-08:00","created_by":"beads/crew/grip","updated_at":"2025-12-31T12:31:44.911284-08:00","closed_at":"2025-12-31T12:31:44.911284-08:00","close_reason":"Refiled to gt-lyc2b"}
{"id":"bd-v55y","title":"bd repair: Limit verbose output for large orphan counts","description":"When there are thousands of orphaned references, bd repair prints them all, flooding the terminal.\n\nFix: Add --verbose flag; default to summary only (e.g., 'Found 1,234 orphaned dependencies'). Only print individual items with --verbose or when count is small (\u003c20).","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-29T12:48:10.496115-08:00","created_by":"stevey","updated_at":"2025-12-29T12:59:05.123618-08:00","closed_at":"2025-12-29T12:59:05.123618-08:00","close_reason":"Fixed in commit d7a67ad6"}
{"id":"bd-v5fn","title":"Add default limit to bd list (50 issues)","description":"Add a sensible default limit of 50 issues to bd list output, matching patterns from gh cli (30) and jira-cli (50).\n\n- Default to 50 when no --limit specified\n- --limit 0 means unlimited (explicit override)\n- Protects both agents and humans from overwhelming output\n\nThis is independent of the filter change but complementary.","notes":"## Implementation Plan\n\n### Code Changes (cmd/bd/list.go)\n\n1. **Change default limit** (init function, ~line 887):\n```go\n// Currently: listCmd.Flags().IntP(\"limit\", \"n\", 0, \"Limit results\")\n// Change to:\nlistCmd.Flags().IntP(\"limit\", \"n\", 50, \"Limit results (0 for unlimited)\")\n```\n\n2. **Update help text**:\n```go\n\"Limit results (default: 50, use 0 for unlimited)\"\n```\n\n3. **Handle explicit 0** in Run function:\n```go\n// --limit 0 means unlimited\nif cmd.Flags().Changed(\"limit\") \u0026\u0026 limit == 0 {\n filter.Limit = 0 // No limit applied\n} else if limit \u003e 0 {\n filter.Limit = limit\n} else {\n filter.Limit = 50 // Default\n}\n```\n\n### Testing\n- `bd list` shows max 50 issues\n- `bd list --limit 10` shows max 10\n- `bd list --limit 0` shows unlimited\n- Verify output indicates truncation: \"Showing 50 of 499 issues (use --limit 0 for all)\"\n\n### Documentation\n- Note in help: default changed from unlimited to 50","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-29T15:25:08.299726-08:00","created_by":"stevey","updated_at":"2025-12-29T17:53:30.23005-08:00","closed_at":"2025-12-29T17:53:30.23005-08:00","close_reason":"Implemented in single commit","labels":["gh:788"]}
{"id":"bd-v8ku","title":"bd: Add town-level activity signal in PersistentPreRun","description":"Add activity signaling to beads so Gas Town daemon can detect bd usage.\n\nIn cmd/bd/main.go PersistentPreRun, add a call to write activity to\nthe Gas Town daemon directory if running inside a Gas Town workspace.\n\nThe signal file is ~/gt/daemon/activity.json (or detected town root).\n\nFormat:\n{\n \"last_command\": \"bd create ...\",\n \"actor\": \"gastown/crew/max\",\n \"timestamp\": \"2025-12-26T19:30:00Z\"\n}\n\nShould be best-effort (silent failure) to avoid breaking bd outside Gas Town.\n\nCross-rig ref: gastown gt-ws8ol (Deacon exponential backoff epic)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T19:25:13.537055-08:00","updated_at":"2025-12-26T19:28:44.919491-08:00","closed_at":"2025-12-26T19:28:44.919491-08:00"}
{"id":"bd-vdw4","title":"Enhancement: bd swarm status accepts swarm molecule ID","description":"Currently `bd swarm status` only accepts an epic ID.\n\nWould be more intuitive to also accept the swarm molecule ID and follow the relates-to link to find the epic:\n\n```bash\nbd swarm status bd-swarm-xyz # Follow link to epic, show status\nbd swarm status bd-epic-123 # Direct epic lookup (current behavior)\n```\n\nDetect by checking if the issue has mol_type=swarm.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-28T21:38:20.692476-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-28T22:05:10.112717-08:00","closed_at":"2025-12-28T22:05:10.112717-08:00","dependencies":[{"issue_id":"bd-vdw4","depends_on_id":"bd-2ubv","type":"parent-child","created_at":"2025-12-28T21:38:44.809594-08:00","created_by":"daemon"}]}
{"id":"bd-vgi5","title":"Push version bump to GitHub","description":"git push origin main - triggers CI but no release yet.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-18T22:43:05.363604-08:00","updated_at":"2025-12-24T16:25:30.019895-08:00","dependencies":[{"issue_id":"bd-vgi5","depends_on_id":"bd-qqc","type":"parent-child","created_at":"2025-12-18T22:43:16.87736-08:00","created_by":"daemon"},{"issue_id":"bd-vgi5","depends_on_id":"bd-3ggb","type":"blocks","created_at":"2025-12-18T22:43:21.078208-08:00","created_by":"daemon"}],"deleted_at":"2025-12-24T16:25:30.019895-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
{"id":"bd-vjas","title":"Add --pretty flag to bd ready","description":"bd list has --pretty but bd ready doesn't. Should support same tree format with status/priority symbols for consistency.","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-31T11:54:59.911409-08:00","created_by":"mayor","updated_at":"2025-12-31T11:54:59.911409-08:00"}
{"id":"bd-vks2","title":"bd dep tree doesn't display external dependencies","description":"GetDependencyTree (dependencies.go:464-624) uses a recursive CTE that JOINs with the issues table, which means external refs (external:project:capability) are invisible in the tree output.\n\nWhen an issue has an external blocking dependency, running 'bd dep tree \u003cid\u003e' won't show it.\n\nOptions:\n1. Query dependencies table separately for external refs and display them as leaf nodes\n2. Add a synthetic 'external' node type that shows the ref and resolution status\n3. Document that external deps aren't shown in tree view (use bd show for full deps)\n\nLower priority since bd show \u003cid\u003e displays all dependencies including external refs.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-21T23:45:27.121934-08:00","updated_at":"2025-12-22T22:30:19.083652-08:00","closed_at":"2025-12-22T22:30:19.083652-08:00","dependencies":[{"issue_id":"bd-vks2","depends_on_id":"bd-zmmy","type":"discovered-from","created_at":"2025-12-21T23:45:27.122511-08:00","created_by":"daemon"}]}
{"id":"bd-vln0","title":"Add display guards for large molecules in bd mol current","description":"When molecule has \u003e100 steps, show summary instead of list.\n\nChanges:\n1. Count children first\n2. If count \u003e 100: show summary + pointer to bd mol progress\n3. Add --range flag for viewing specific step ranges\n4. Add --limit flag for capping output","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-31T00:52:52.823925-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-31T00:52:52.823925-08:00","dependencies":[{"issue_id":"bd-vln0","depends_on_id":"bd-5nu1","type":"parent-child","created_at":"2025-12-31T00:54:00.833563-08:00","created_by":"gastown/crew/max"}]}
{"id":"bd-vpan","title":"Re: Thread Test 2","description":"Got your message. Testing reply feature.","status":"tombstone","priority":2,"issue_type":"message","created_at":"2025-12-16T18:21:29.144352-08:00","updated_at":"2025-12-17T16:11:17.070763-08:00","dependencies":[{"issue_id":"bd-vpan","depends_on_id":"bd-x36g","type":"replies-to","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"}