bd sync: 2025-12-30 16:00:16

This commit is contained in:
Steve Yegge
2025-12-30 16:00:16 -08:00
parent 6304b90727
commit a4aa6ade1a

View File

@@ -11,7 +11,7 @@
{"id":"bd-0kai","title":"Work on beads-ocs: Thin shim hooks to eliminate version d...","description":"Work on beads-ocs: Thin shim hooks to eliminate version drift (GH#615). Replace full hook scripts with thin shims that call bd hooks run. When done, submit MR (not PR) to integration branch for Refinery.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-19T22:57:22.91347-08:00","updated_at":"2025-12-20T00:49:51.926425-08:00","closed_at":"2025-12-19T23:24:08.828172-08:00"}
{"id":"bd-0kue","title":"Merge: onyx-1767106262992","description":"branch: polecat/onyx-1767106262992\ntarget: main\nsource_issue: onyx-1767106262992\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T06:59:46.964658-08:00","created_by":"beads/polecats/onyx","updated_at":"2025-12-30T15:44:43.3647-08:00","closed_at":"2025-12-30T10:27:23.072233-08:00"}
{"id":"bd-0oqz","title":"Add GetMoleculeProgress RPC endpoint","description":"New RPC endpoint to get detailed progress for a specific molecule. Returns: moleculeID, title, assignee, and list of steps with their status (done/current/ready/blocked), start/close times. Used when user expands a worker in the activity feed TUI.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-23T16:26:38.137866-08:00","updated_at":"2025-12-23T18:27:49.033335-08:00","closed_at":"2025-12-23T18:27:49.033335-08:00"}
{"id":"bd-0qx5","title":"Implement Jira issue timestamp comparison for sync","description":"In cmd/bd/jira.go:633, there's a TODO for a full implementation that would fetch the Jira issue and compare timestamps to detect conflicts during sync.\n\nFile: cmd/bd/jira.go:633","status":"hooked","priority":4,"issue_type":"feature","assignee":"beads/polecats/topaz","created_at":"2025-12-28T16:32:52.601594-08:00","created_by":"stevey","updated_at":"2025-12-30T15:48:55.478691-08:00"}
{"id":"bd-0qx5","title":"Implement Jira issue timestamp comparison for sync","description":"In cmd/bd/jira.go:633, there's a TODO for a full implementation that would fetch the Jira issue and compare timestamps to detect conflicts during sync.\n\nFile: cmd/bd/jira.go:633","status":"closed","priority":4,"issue_type":"feature","assignee":"beads/polecats/topaz","created_at":"2025-12-28T16:32:52.601594-08:00","created_by":"stevey","updated_at":"2025-12-30T16:00:07.968921-08:00","closed_at":"2025-12-30T16:00:07.968921-08:00","close_reason":"Implemented Jira timestamp comparison for sync. Added fetchJiraIssueTimestamp() to fetch timestamps from Jira REST API, updated detectJiraConflicts() to compare actual timestamps, and improved conflict resolution functions to display timestamp details."}
{"id":"bd-0vg","title":"Pinned issues: persistent context markers","description":"Add ability to pin issues so they remain visible and are excluded from work-finding commands. Pinned issues serve as persistent context markers (handoffs, architectural notes, recovery instructions) that should not be claimed as work items.\n\nUse Cases:\n1. Handoff messages - Pin session handoffs so new agents always see them\n2. Architecture decisions - Pin ADRs or design notes for reference \n3. Recovery context - Pin amnesia-cure notes that help agents orient\n\nCore commands: bd pin, bd unpin, bd list --pinned/--no-pinned","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-18T23:33:10.911092-08:00","updated_at":"2025-12-21T11:30:28.989696-08:00","closed_at":"2025-12-21T11:30:28.989696-08:00"}
{"id":"bd-0vtq","title":"Investigate JSONL hash mismatch warnings (bd-160)","description":"During v0.39.1 release, saw repeated warnings:\n\nWARNING: JSONL file hash mismatch detected (bd-160)\n This indicates JSONL and export_hashes are out of sync.\n Clearing export_hashes to force full re-export.\n\nThis appeared multiple times during wisp close operations. Questions:\n1. What causes export_hashes to drift from actual JSONL content?\n2. Is this expected during wisp operations (since wisps do not export)?\n3. Should wisp operations skip the hash check entirely?\n4. Is there actual data integrity risk or just noise?\n\nThe warning references bd-160 - may need to check that issue for context.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-27T22:51:25.448856-08:00","created_by":"beads/crew/emma","updated_at":"2025-12-27T23:22:09.589444-08:00","closed_at":"2025-12-27T23:22:09.589444-08:00"}
{"id":"bd-0w5","title":"Fix update-hooks verification in version-bump.yaml","description":"The update-hooks task verification command at version-bump.yaml:358 always succeeds due to '|| echo ...' fallback. Remove the fallback so verification actually fails when hooks aren't installed.","status":"tombstone","priority":3,"issue_type":"bug","created_at":"2025-12-17T22:23:06.55467-08:00","updated_at":"2025-12-25T01:21:01.952723-08:00","deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"bug"}
@@ -218,6 +218,7 @@
{"id":"bd-9usz","title":"Test suite hangs/never finishes","description":"Running 'go test ./... -count=1' hangs indefinitely. The full test suite never completes, making it difficult to verify changes. Need to investigate which tests are hanging and fix or add timeouts.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-16T21:56:27.80191-08:00","updated_at":"2025-12-23T23:48:57.837606-08:00","closed_at":"2025-12-23T23:48:57.837606-08:00"}
{"id":"bd-a0cp","title":"Consider using types.Status in merge package for type safety","description":"The merge package uses string for status comparison (e.g., result.Status == closed, issue.Status == StatusTombstone). The types package defines Status as a type alias with validation. While the merge package needs its own Issue struct for JSONL flexibility, it could import and use types.Status for constants to get compile-time type checking. Current code: if left == closed || right == closed. Could be: if left == string(types.StatusClosed). This is low priority since string comparison works correctly. Files: internal/merge/merge.go:44, 488, 501-521","status":"closed","priority":4,"issue_type":"task","assignee":"beads/polecats/jade","created_at":"2025-12-05T16:37:10.690424-08:00","updated_at":"2025-12-30T15:54:45.570222-08:00","closed_at":"2025-12-30T15:54:45.570222-08:00","close_reason":"Added StatusClosed constant derived from types.StatusClosed and replaced hardcoded strings with the constant for type safety"}
{"id":"bd-a15d","title":"Add test files for internal/storage","description":"The internal/storage package has no test files at all. This package provides the storage interface abstraction.\n\nCurrent coverage: N/A (no test files)\nTarget: Add basic interface tests","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-13T20:43:11.363017-08:00","updated_at":"2025-12-23T23:56:07.002735-08:00","closed_at":"2025-12-23T23:56:07.002735-08:00"}
{"id":"bd-a1t0","title":"Merge: opal-1767138520240","description":"branch: polecat/opal-1767138520240\ntarget: main\nsource_issue: opal-1767138520240\nrig: beads","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T15:59:09.905942-08:00","created_by":"beads/polecats/opal","updated_at":"2025-12-30T15:59:09.905942-08:00"}
{"id":"bd-a3sj","title":"RemoveDependency fails on external deps - FK violation in dirty_issues","description":"In dependencies.go:225, RemoveDependency marks BOTH issueID and dependsOnID as dirty. For external refs (e.g., external:project:capability), dependsOnID doesn't exist in the issues table. This causes FK violation since dirty_issues.issue_id has FK constraint to issues.id.\n\nFix: Check if dependsOnID starts with 'external:' and only mark source issue as dirty, matching the logic in AddDependency (lines 162-170).\n\nRepro: bd dep rm \u003cissue\u003e external:project:capability","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-21T23:44:51.981138-08:00","updated_at":"2025-12-22T17:48:29.062424-08:00","closed_at":"2025-12-22T17:48:29.062424-08:00","dependencies":[{"issue_id":"bd-a3sj","depends_on_id":"bd-zmmy","type":"discovered-from","created_at":"2025-12-21T23:44:51.982343-08:00","created_by":"daemon"}]}
{"id":"bd-a62m","title":"Update version to 0.33.2 in version.go","description":"Edit cmd/bd/version.go line 17:\n\n```go\nVersion = \"0.33.2\"\n```\n\nVerify with: `grep 'Version =' cmd/bd/version.go`","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-21T16:10:13.760384-08:00","updated_at":"2025-12-21T17:29:31.791368-08:00","deleted_at":"2025-12-21T17:29:31.791368-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
{"id":"bd-a9y3","title":"Add composite index (status, priority) for common list queries","description":"SearchIssues and GetReadyWork frequently filter by status and sort by priority. Currently uses two separate indexes.\n\n**Common query pattern (queries.go:1646-1647):**\n```sql\nWHERE status = ? \nORDER BY priority ASC, created_at DESC\n```\n\n**Problem:** Index merge or full scan when both columns are used.\n\n**Solution:** Add migration:\n```sql\nCREATE INDEX IF NOT EXISTS idx_issues_status_priority ON issues(status, priority);\n```\n\n**Expected impact:** Faster bd list, bd ready with filters. Particularly noticeable at 10K+ issues.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-22T22:58:50.515275-08:00","updated_at":"2025-12-22T23:15:13.838976-08:00","closed_at":"2025-12-22T23:15:13.838976-08:00","dependencies":[{"issue_id":"bd-a9y3","depends_on_id":"bd-h0we","type":"discovered-from","created_at":"2025-12-22T22:58:50.516072-08:00","created_by":"daemon"}]}
@@ -336,6 +337,7 @@
{"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","assignee":"beads/polecats/obsidian","created_at":"2025-12-30T15:15:23.440095-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T15:54:09.224-08:00","closed_at":"2025-12-30T15:54:09.224-08:00","close_reason":"Implemented event type with event_kind, actor, target, and payload fields"}
{"id":"bd-efo6","title":"Test cross-rig issue creation","description":"Testing --rig flag from town root","status":"tombstone","priority":3,"issue_type":"task","created_at":"2025-12-27T00:43:21.006012-08:00","created_by":"stevey","updated_at":"2025-12-27T00:43:27.389223-08:00","deleted_at":"2025-12-27T00:43:27.389223-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
{"id":"bd-ehwp","title":"Merge: ruby-1767138542815","description":"branch: polecat/ruby-1767138542815\ntarget: main\nsource_issue: ruby-1767138542815\nrig: beads","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T15:59:42.840764-08:00","created_by":"beads/polecats/ruby","updated_at":"2025-12-30T15:59:42.840764-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"}
{"id":"bd-eko4","title":"Add pre-migration orphan cleanup to avoid chicken-and-egg fix failure","description":"## Problem\n\nWhen the database has orphaned foreign key references (dependencies or labels pointing to non-existent issues), the migration invariant check fails, preventing the database from opening. This creates a chicken-and-egg problem:\n\n1. `bd doctor --fix` tries to open the database\n2. Opening triggers migrations with invariant checks\n3. Invariant check fails due to orphaned refs\n4. Fix never runs because database won't open\n\n## Root Cause\n\nAggressive tombstone deletion (e.g., deleting ~1000 old tombstones) left behind orphaned:\n- 218+ dependencies where issue_id not in issues\n- 222+ dependencies where depends_on_id not in issues \n- 30+ labels where issue_id not in issues\n\n## Current Workaround\n\nDirect SQL to clean up before bd can run:\n```sql\nDELETE FROM dependencies WHERE NOT EXISTS (SELECT 1 FROM issues WHERE id = issue_id);\nDELETE FROM dependencies WHERE NOT EXISTS (SELECT 1 FROM issues WHERE id = depends_on_id) AND depends_on_id NOT LIKE 'external:%';\nDELETE FROM labels WHERE NOT EXISTS (SELECT 1 FROM issues WHERE id = issue_id);\n```\n\n## Proposed Fix\n\nAdd a pre-migration cleanup step that runs BEFORE invariant checks:\n1. Option A: Run orphan cleanup as part of migrations (before invariant check)\n2. Option B: Add `bd doctor --force-fix` that bypasses invariant checks\n3. Option C: Have invariant check auto-clean orphans instead of failing\n\nOption A is cleanest - orphan cleanup should be part of normal migration.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-28T23:18:24.65227-08:00","created_by":"beads/crew/dave","updated_at":"2025-12-29T13:46:30.625571-08:00","closed_at":"2025-12-29T13:46:30.625571-08:00","close_reason":"Implemented Option A: CleanOrphanedRefs runs before captureSnapshot in RunMigrations, preventing chicken-and-egg problem"}
{"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"}
@@ -379,7 +381,7 @@
{"id":"bd-gqxd","title":"Enrich MutationEvent with title and assignee","description":"Current MutationEvent only has IssueID, no context. Add Title and Assignee fields so activity feeds can display meaningful info without extra lookups. Emit these fields when creating mutation events in server_core.go.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-23T16:26:34.907259-08:00","updated_at":"2025-12-23T16:39:39.229462-08:00","closed_at":"2025-12-23T16:39:39.229462-08:00"}
{"id":"bd-gr4q","title":"Gate await fields cleared by auto-flush/auto-import cycle","description":"## Problem\n\nWhen creating a gate with `--await` fields (e.g., `gh:run:123`), the await_type and await_id are initially stored correctly in the SQLite database. However, they get cleared (set to empty strings) during subsequent bd commands due to the auto-flush/auto-import cycle.\n\n## Reproduction Steps\n\n1. Create a gate with await:\n ```\n bd gate create --molecule test-mol --await gh:run:20517738002\n ```\n Output shows correct `await_type: gh:run, await_id: 20517738002`\n\n2. Check database - fields are present\n\n3. Run any bd command (e.g., `bd list`)\n\n4. Check database again - await_type and await_id are now empty\n\n## Root Cause\n\nGates are wisps (ephemeral issues). During the auto-flush cycle:\n1. Auto-flush exports issues to JSONL (filtering out wisps)\n2. Auto-import reads JSONL and updates DB rows\n3. The update clears fields that weren't in the JSONL (including await fields)\n\n## Workaround\n\nUsing `--no-auto-import --no-auto-flush` flags preserves the fields, but this isn't practical for normal use.\n\n## Impact\n\nGitHub gate evaluation (`bd gate eval`) cannot work because by the time eval runs, the await fields have been cleared.\n\n## Suggested Fix\n\nEither:\n1. Don't clear await fields during auto-import if they weren't in the source\n2. Store wisp fields separately from the main JSONL export\n3. Include wisps in export but filter them at sync time","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-25T22:59:11.309657-08:00","updated_at":"2025-12-25T23:20:20.33151-08:00","closed_at":"2025-12-25T23:20:20.33151-08:00"}
{"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"}
{"id":"bd-h048","title":"Refactor sync_test to use direct import logic","description":"In cmd/bd/sync_test.go:444, there's a TODO to refactor the test to use direct import logic instead of subprocess calls. This would make the test more reliable and faster.\n\nFile: cmd/bd/sync_test.go:444","status":"hooked","priority":4,"issue_type":"chore","assignee":"beads/polecats/garnet","created_at":"2025-12-28T16:32:55.612958-08:00","created_by":"stevey","updated_at":"2025-12-30T15:49:00.723048-08:00"}
{"id":"bd-h048","title":"Refactor sync_test to use direct import logic","description":"In cmd/bd/sync_test.go:444, there's a TODO to refactor the test to use direct import logic instead of subprocess calls. This would make the test more reliable and faster.\n\nFile: cmd/bd/sync_test.go:444","status":"closed","priority":4,"issue_type":"chore","assignee":"beads/polecats/garnet","created_at":"2025-12-28T16:32:55.612958-08:00","created_by":"stevey","updated_at":"2025-12-30T16:00:09.642672-08:00","closed_at":"2025-12-30T16:00:09.642672-08:00","close_reason":"Refactored test to use direct import logic via importIssuesCore instead of subprocess. Test now passes."}
{"id":"bd-h0we","title":"Review SQLite indexes and scaling bottlenecks","description":"Audit the beads SQLite schema for:\n\n## Index Review\n- Are all frequently-queried columns indexed?\n- Are compound indexes needed for common query patterns?\n- Any missing indexes on foreign keys or filter columns?\n\n## Scaling Bottlenecks\n- How does performance degrade with 10k, 100k, 1M issues?\n- Full table scans in hot paths?\n- JSONL export/import performance at scale\n- Transaction contention in multi-agent scenarios\n\n## Common Query Patterns to Optimize\n- bd ready (status + blocked_by resolution)\n- bd list with filters (status, type, priority, labels)\n- bd show with dependency graph traversal\n- bd sync import/export\n\n## Deliverables\n- Document current indexes\n- Identify missing indexes\n- Benchmark key operations at scale\n- Recommend schema improvements","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T23:41:06.481881-08:00","updated_at":"2025-12-22T22:59:25.178175-08:00","closed_at":"2025-12-22T22:59:25.178175-08:00"}
{"id":"bd-h27p","title":"Merge: bd-g4b4","description":"branch: polecat/Hooker\ntarget: main\nsource_issue: bd-g4b4\nrig: beads","status":"closed","priority":3,"issue_type":"merge-request","created_at":"2025-12-23T13:38:50.707153-08:00","updated_at":"2025-12-23T19:12:08.357806-08:00","closed_at":"2025-12-23T19:12:08.357806-08:00"}
{"id":"bd-h4tj","title":"Refinery Patrol","description":"Merge queue processor patrol loop with verification gates.","status":"open","priority":2,"issue_type":"molecule","created_at":"2025-12-27T19:24:07.068355-08:00","created_by":"deacon","updated_at":"2025-12-27T19:24:07.068355-08:00"}
@@ -791,7 +793,7 @@
{"id":"bd-x0zl","title":"Remove/relocate pin command (covered by mol commands)","description":"## Task\nReview and potentially remove `bd pin` as it overlaps with mol commands.\n\n## Analysis needed\n- `bd pin` sets the pinned flag on issues for agent work assignment\n- `bd hook` shows what's pinned to an agent\n- `bd unpin` removes the pinned flag\n- `bd mol` commands deal with molecules/templates\n\n## Options\n1. **Keep as-is**: pin/unpin are about work assignment, mol is about templates\n2. **Move under mol**: `bd mol pin`, `bd mol unpin` \n3. **Deprecate**: If mol commands fully cover the use case\n\n## Decision criteria\n- Are pin/unpin used independently of mol workflows?\n- Does Gas Town (gt) use these commands?\n\n## Recommendation\nCheck gt codebase for usage patterns before deciding. If pin/unpin are primarily used with mol workflows, consolidate under mol. If used independently, keep as-is.\n\n## Files potentially affected\n- cmd/bd/pin.go\n- cmd/bd/unpin.go\n- cmd/bd/hook.go\n- cmd/bd/mol.go (if moving)\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-27T15:11:09.799471-08:00","created_by":"mayor","updated_at":"2025-12-27T16:01:53.437698-08:00","closed_at":"2025-12-27T16:01:53.437698-08:00","comments":[{"id":6,"issue_id":"bd-x0zl","author":"stevey","text":"## Analysis Complete\n\n**Findings:**\n- bd pin, bd unpin, bd hook are **never used** by gt\n- gt uses bd update --status=pinned --assignee=agent instead (10 usages)\n- Code comment says 'pinned field is cosmetic for bd hook visibility'\n- gt mol status provides equivalent hook inspection\n\n**Recommendation:** Remove all three commands as dead code.","created_at":"2025-12-28T00:00:14Z"}]}
{"id":"bd-x1xs","title":"Work on beads-1ra: Add molecules.jsonl as separate catalo...","description":"Work on beads-1ra: Add molecules.jsonl as separate catalog file for template molecules","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-19T20:17:44.840032-08:00","updated_at":"2025-12-21T15:28:17.633716-08:00","closed_at":"2025-12-21T15:28:17.633716-08:00"}
{"id":"bd-x2bd","title":"Merge: bd-likt","description":"branch: polecat/Gater\ntarget: main\nsource_issue: bd-likt\nrig: beads","status":"closed","priority":3,"issue_type":"merge-request","created_at":"2025-12-23T13:46:27.091846-08:00","updated_at":"2025-12-23T19:12:08.355637-08:00","closed_at":"2025-12-23T19:12:08.355637-08:00"}
{"id":"bd-x2ht","title":"Add BD_AGENT_MODE for ultra-compact output","description":"Optional agent-optimized output mode triggered by BD_AGENT_MODE=1 env var:\n\n- Compact format: just ID and title per line\n- Default to open/in_progress only\n- No colors, no emojis\n- Lower default limit (~20)\n- One-line summaries\n\nThis is independent but benefits from TTY detection infrastructure.\n\nConsider auto-detecting agent context via CLAUDE_CODE or similar env vars.","notes":"## Implementation Plan\n\n### Trigger\n```bash\nBD_AGENT_MODE=1 bd list\n```\n\nOr auto-detect common agent environments:\n```go\nfunc IsAgentMode() bool {\n if os.Getenv(\"BD_AGENT_MODE\") != \"\" {\n return true\n }\n // Auto-detect known agent contexts\n if os.Getenv(\"CLAUDE_CODE\") != \"\" {\n return true\n }\n // Add other agent env vars as discovered\n return false\n}\n```\n\n### Code Changes\n\n1. **Add agent output format** (cmd/bd/list.go):\n```go\nif ui.IsAgentMode() {\n // Ultra-compact: just ID and title\n for _, issue := range issues {\n fmt.Printf(\"%s: %s\\n\", issue.ID, issue.Title)\n }\n return\n}\n```\n\n2. **Agent mode defaults**:\n```go\nif ui.IsAgentMode() {\n if limit == 0 {\n limit = 20 // Lower default for agents\n }\n if status == \"\" {\n // Only actionable work\n filter.Status = []types.Status{\"open\", \"in_progress\"}\n }\n}\n```\n\n### Output Format (Agent Mode)\n```\nbd-mypl: Default bd list to non-closed issues\nbd-v5fn: Add default limit to bd list (50 issues)\nbd-jdz3: Add pager support to bd list\n```\n\nNo colors, no emojis, no brackets, no priority display.\nJust ID + title for maximum context efficiency.\n\n### Testing\n- `BD_AGENT_MODE=1 bd list` outputs compact format\n- Verify no ANSI codes in output\n- Verify default limit is 20\n- Verify only open/in_progress shown by default","status":"hooked","priority":4,"issue_type":"feature","assignee":"beads/polecats/ruby","created_at":"2025-12-29T15:25:11.057467-08:00","created_by":"stevey","updated_at":"2025-12-30T15:49:04.301018-08:00"}
{"id":"bd-x2ht","title":"Add BD_AGENT_MODE for ultra-compact output","description":"Optional agent-optimized output mode triggered by BD_AGENT_MODE=1 env var:\n\n- Compact format: just ID and title per line\n- Default to open/in_progress only\n- No colors, no emojis\n- Lower default limit (~20)\n- One-line summaries\n\nThis is independent but benefits from TTY detection infrastructure.\n\nConsider auto-detecting agent context via CLAUDE_CODE or similar env vars.","notes":"## Implementation Plan\n\n### Trigger\n```bash\nBD_AGENT_MODE=1 bd list\n```\n\nOr auto-detect common agent environments:\n```go\nfunc IsAgentMode() bool {\n if os.Getenv(\"BD_AGENT_MODE\") != \"\" {\n return true\n }\n // Auto-detect known agent contexts\n if os.Getenv(\"CLAUDE_CODE\") != \"\" {\n return true\n }\n // Add other agent env vars as discovered\n return false\n}\n```\n\n### Code Changes\n\n1. **Add agent output format** (cmd/bd/list.go):\n```go\nif ui.IsAgentMode() {\n // Ultra-compact: just ID and title\n for _, issue := range issues {\n fmt.Printf(\"%s: %s\\n\", issue.ID, issue.Title)\n }\n return\n}\n```\n\n2. **Agent mode defaults**:\n```go\nif ui.IsAgentMode() {\n if limit == 0 {\n limit = 20 // Lower default for agents\n }\n if status == \"\" {\n // Only actionable work\n filter.Status = []types.Status{\"open\", \"in_progress\"}\n }\n}\n```\n\n### Output Format (Agent Mode)\n```\nbd-mypl: Default bd list to non-closed issues\nbd-v5fn: Add default limit to bd list (50 issues)\nbd-jdz3: Add pager support to bd list\n```\n\nNo colors, no emojis, no brackets, no priority display.\nJust ID + title for maximum context efficiency.\n\n### Testing\n- `BD_AGENT_MODE=1 bd list` outputs compact format\n- Verify no ANSI codes in output\n- Verify default limit is 20\n- Verify only open/in_progress shown by default","status":"closed","priority":4,"issue_type":"feature","assignee":"beads/polecats/ruby","created_at":"2025-12-29T15:25:11.057467-08:00","created_by":"stevey","updated_at":"2025-12-30T15:59:24.474412-08:00","closed_at":"2025-12-30T15:59:24.474412-08:00","close_reason":"Implemented: BD_AGENT_MODE=1 triggers ultra-compact output format"}
{"id":"bd-x36g","title":"Thread Test 2","description":"Testing direct mode","status":"tombstone","priority":2,"issue_type":"message","created_at":"2025-12-16T18:21:16.470631-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":"message"}
{"id":"bd-x3hi","title":"Support redirect files in .beads/ directory","description":"Gas Town creates polecat worktrees with .beads/redirect files that point to a shared beads database. The bd CLI should:\n\n1. When finding a .beads/ directory, check if it contains a 'redirect' file\n2. If redirect exists, read the relative path and use that as the beads directory\n3. This allows multiple git worktrees to share a single beads database\n\nExample:\n- polecats/alpha/.beads/redirect contains '../../mayor/rig/.beads'\n- bd commands from alpha should use mayor/rig/.beads\n\nCurrently bd ignores redirect files and either uses the local .beads/ or walks up to find a parent .beads/.\n\nRelated: gt-nriy (test message that can't be retrieved due to missing redirect support)","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-20T21:46:23.415172-08:00","updated_at":"2025-12-20T21:59:25.759664-08:00","closed_at":"2025-12-20T21:59:25.759664-08:00"}
{"id":"bd-x3j8","title":"Update info.go versionChanges","description":"Add 0.32.1 entry to versionChanges map in cmd/bd/info.go","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-20T21:53:17.344841-08:00","updated_at":"2025-12-20T21:54:31.906761-08:00","closed_at":"2025-12-20T21:54:31.906761-08:00","dependencies":[{"issue_id":"bd-x3j8","depends_on_id":"bd-an4s","type":"parent-child","created_at":"2025-12-20T21:53:17.346736-08:00","created_by":"daemon"},{"issue_id":"bd-x3j8","depends_on_id":"bd-rgd7","type":"blocks","created_at":"2025-12-20T21:53:29.62309-08:00","created_by":"daemon"}]}