bd sync: 2025-12-24 14:27:53
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
{"id":"gt-03rb","title":"Merge: gt-xw7b","description":"branch: polecat/morsov\ntarget: main\nsource_issue: gt-xw7b\nrig: gastown","status":"closed","priority":4,"issue_type":"merge-request","created_at":"2025-12-21T16:43:54.909633-08:00","updated_at":"2025-12-21T17:20:27.509202-08:00","closed_at":"2025-12-21T17:20:27.509202-08:00","close_reason":"ORPHANED: Branch never pushed, worktree deleted"}
|
||||
{"id":"gt-05cx","title":"Merge: gt-h6eq.1","description":"branch: polecat/nux\ntarget: main\nsource_issue: gt-h6eq.1\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T11:44:11.942999-08:00","updated_at":"2025-12-23T12:22:23.446685-08:00","closed_at":"2025-12-23T12:22:23.446685-08:00","close_reason":"Merged to main in gt-h6eq swarm"}
|
||||
{"id":"gt-082","title":"Worker cleanup: Beads sync on shutdown","description":"Add beads sync verification to worker cleanup checklist and Witness verification.\n\n## Update to Decommission Checklist (gt-sd6)\n\nAdd to pre-done verification:\n- bd sync --status must show 'Up to date'\n- git status .beads/ must show no changes\n\n## Beads Edge Cases\n\nUncommitted beads changes:\n bd sync\n git add .beads/\n git commit -m 'beads: final sync'\n\nBeads sync conflict (rare):\n git fetch origin main\n git checkout main -- .beads/\n bd sync --force\n git add .beads/\n git commit -m 'beads: resolve sync conflict'\n\n## Update to Witness Verification (gt-f8v)\n\nWhen capturing worker state:\n town capture \u003cpolecat\u003e \"bd sync --status \u0026\u0026 git status .beads/\"\n\nCheck for:\n- bd sync --status shows 'Up to date'\n- git status .beads/ shows no changes\n\nIf beads not synced, nudge:\n WITNESS CHECK: Beads not synced. Run 'bd sync' then commit .beads/. Signal done when complete.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-15T19:47:21.757756-08:00","updated_at":"2025-12-15T20:48:37.663168-08:00","dependencies":[{"issue_id":"gt-082","depends_on_id":"gt-l3c","type":"blocks","created_at":"2025-12-15T19:47:35.977804-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-09i4","title":"Unify tmux session lifecycle: prefer exec-over-shell pattern","description":"## Context\n\nWhen `gt crew at` is run from INSIDE the target session, it uses `execClaude()` which\nreplaces the shell with Claude directly. This is actually preferable behavior:\n- Cleaner exit (no intermediate shell prompt)\n- More reliable for programmatic worker recycling\n- Better UX for humans\n\nBut currently this only happens accidentally when you run `gt crew at` while already\nin the session at a shell prompt.\n\n## Current behavior\n\n1. Session created: `tmux new-session` starts with shell\n2. Claude started via `send-keys` → shell spawns claude as child\n3. Exit claude → return to shell → exit shell → session ends\n\nWith exec path (only if already in session):\n1. `execClaude()` replaces shell with claude\n2. Exit claude → session ends (no intermediate shell)\n\n## Desired behavior\n\nConsider making exec-the-shell the DEFAULT for all crew/persistent sessions:\n- Spawn session with shell\n- Wait for ready\n- Use `respawn-pane -k` with claude command (kills shell, starts claude directly)\n\nThis gives the cleaner lifecycle without requiring the user to be inside the session.\n\n## Related\n\nPart of tmux control plane unification - ability to manage workers from any session.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-24T14:24:34.371414-08:00","updated_at":"2025-12-24T14:24:34.371414-08:00"}
|
||||
{"id":"gt-0a90","title":"Add gt hook command (wrapper for bd hook)","description":"Add a thin wrapper command `gt hook` that calls `bd hook` to inspect what's pinned to an agent's hook.\n\n## Usage\n\n```bash\ngt hook # Show what's on current agent's hook\ngt hook --agent deacon # Show Deacon's hook\ngt hook --agent gastown/furiosa # Show polecat's hook\n```\n\n## Implementation\n\nThin wrapper in gt that:\n1. Determines current agent identity\n2. Calls `bd hook [--agent \u003cname\u003e]`\n3. Formats output for gt context\n\n## Why gt wrapper?\n\n- Consistent with gt ecosystem (gt mail, gt status, etc.)\n- Can add gt-specific context (session status, etc.)\n- Easier discovery for gt users\n\n## Related\n\n- bd hook command (implemented by Dave)\n- Chemistry UX design: gastown/mayor/rig/docs/chemistry-design-changes.md","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-22T02:37:02.429497-08:00","updated_at":"2025-12-22T02:37:02.429497-08:00"}
|
||||
{"id":"gt-0asj","title":"Merge: gt-5af.5","description":"branch: polecat/Scabrous\ntarget: main\nsource_issue: gt-5af.5\nrig: gastown","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-19T17:50:25.227909-08:00","updated_at":"2025-12-19T17:52:57.683445-08:00","closed_at":"2025-12-19T17:52:57.683445-08:00"}
|
||||
{"id":"gt-0b1c","title":"Review: Refinery patrol template changes (gt-qz2l)","description":"Polecat dementus implemented refinery template changes: banners, wisp-based execution, propulsion protocol. Review for correctness and consistency with witness/deacon patterns.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T19:57:40.117102-08:00","updated_at":"2025-12-23T19:57:40.117102-08:00"}
|
||||
@@ -66,7 +67,7 @@
|
||||
{"id":"gt-2x79","title":"mol-deacon-patrol","description":"[RESURRECTED] This issue was deleted but recreated as a tombstone to preserve hierarchical structure.\n\nOriginal description:\nDeacon patrol molecule template. Label: template","status":"open","priority":4,"issue_type":"epic","created_at":"2025-12-23T14:27:33.98823-08:00","updated_at":"2025-12-23T14:27:33.98823-08:00","wisp":true}
|
||||
{"id":"gt-2xiv","title":"gt mail inbox doesn't find crew worker mail - identity mismatch","description":"## Problem\n\nCrew workers don't see their handoff messages when running `gt mail inbox` from their working directory.\n\n## Root Cause\n\ngt derives identity from cwd path, but crew workers have a different path structure:\n- **cwd**: `/Users/stevey/gt/beads/crew/dave`\n- **gt derives**: `beads/crew/dave` (wrong)\n- **should be**: `beads/dave` (crew workers use `rig/name` format)\n\nMessages sent to `beads/dave` don't show up because gt is looking for `beads/crew/dave`.\n\n## Workaround\n\nUse explicit identity flag:\n```bash\ngt mail inbox --identity \"beads/dave\"\n```\n\n## Fix\n\nIdentity detection in gt should handle crew/ subdirectory:\n- Path `\u003crig\u003e/crew/\u003cname\u003e` should derive identity as `\u003crig\u003e/\u003cname\u003e`\n- This matches how polecats work: `\u003crig\u003e/polecats/\u003cname\u003e` → `\u003crig\u003e/\u003cname\u003e`\n\n## Affected\n\nAll crew workers in all rigs.","status":"closed","priority":0,"issue_type":"bug","created_at":"2025-12-22T00:34:02.290132-08:00","updated_at":"2025-12-22T00:39:32.499063-08:00","closed_at":"2025-12-22T00:39:32.499063-08:00","close_reason":"Fixed by normalizing crew/ and polecats/ to canonical form in addressToIdentity()"}
|
||||
{"id":"gt-2xsh","title":"Silent error handling with _ = err patterns","description":"Multiple locations intentionally ignore errors with comments like 'Ignore errors'. While some are valid (best-effort operations), others should be audited:\n\n- witness/manager.go:542 - Ignores cmd.Run() error\n- refinery/manager.go:411, 438, 509 - Ignores loadState and git pull errors\n- swarm/manager.go:47 - Ignores getGitHead error\n- polecat/manager.go:69, 284 - Ignores pool.Load and DeleteBranch errors\n- swarm/integration.go:101, 137 - Ignores git pull and push errors\n\nEach should be evaluated: log it, handle it, or confirm ignoring is intentional.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-21T21:35:11.239439-08:00","updated_at":"2025-12-21T22:19:09.113803-08:00","closed_at":"2025-12-21T22:19:09.113803-08:00","close_reason":"Audited all 10 '_ = err' patterns. All are intentional best-effort operations with appropriate comments:\n- Process signals: expected to fail if process already terminated\n- Git pull/push in recovery paths: best-effort, failures handled downstream\n- Message ack: will naturally retry on next cycle if fails\n- Pool loading: intentional for new rig initialization\n\nThese patterns are acceptable for launch. Consider adding structured logging for observability in future iterations."}
|
||||
{"id":"gt-2z6s","title":"bd sync: Handle mol-* prefix for protos gracefully","description":"When bd sync imports protos (mol-*), it warns about prefix mismatch. The allowed_prefixes config doesn't seem to apply to imports.\n\nCurrent behavior: bd sync fails import step with prefix mismatch error\nExpected: mol-* should be recognized as valid proto prefix, or allowed_prefixes should be respected\n\nWorkaround: The export/push still succeeds, only import fails.\n\nRelated: bd-47qx","status":"open","priority":3,"issue_type":"bug","created_at":"2025-12-24T14:07:34.525817-08:00","updated_at":"2025-12-24T14:07:34.525817-08:00"}
|
||||
{"id":"gt-2z6s","title":"bd sync: Handle mol-* prefix for protos gracefully","description":"When bd sync imports protos (mol-*), it warns about prefix mismatch. The allowed_prefixes config doesn't seem to apply to imports.\n\nCurrent behavior: bd sync fails import step with prefix mismatch error\nExpected: mol-* should be recognized as valid proto prefix, or allowed_prefixes should be respected\n\nWorkaround: The export/push still succeeds, only import fails.\n\nRelated: bd-47qx","status":"in_progress","priority":3,"issue_type":"bug","created_at":"2025-12-24T14:07:34.525817-08:00","updated_at":"2025-12-24T14:25:46.027624-08:00"}
|
||||
{"id":"gt-30o","title":"Error handling improvements: retry logic and recovery hints","description":"Improve error handling across GGT codebase.\n\n## Issues Found\n\n### 1. Silent Failures in Refinery\nmanager.go ProcessMR():\n- git pull errors ignored\n- Continues processing even on partial failures\n\n### 2. Missing Beads CLI\nMany operations silently continue if `bd` not found:\n```go\n// Current\ntasks, err := m.loadTasksFromBeads(epicID)\nif err != nil {\n // Non-fatal - swarm can start without tasks\n}\n\n// Better\nif err != nil {\n return nil, fmt.Errorf(\"beads required: %w\", err)\n}\n```\n\n### 3. No Retry Logic\nNetwork/lock errors should retry:\n```go\nfunc withRetry(attempts int, delay time.Duration, fn func() error) error {\n for i := 0; i \u003c attempts; i++ {\n if err := fn(); err == nil {\n return nil\n }\n time.Sleep(delay)\n }\n return fmt.Errorf(\"failed after %d attempts\", attempts)\n}\n```\n\n### 4. Recovery Hints\nError messages should include fix suggestions:\n```go\n// Current\nreturn fmt.Errorf(\"polecat not found\")\n\n// Better\nreturn fmt.Errorf(\"polecat '%s' not found. Use 'gt polecat list' to see available polecats\", name)\n```\n\n## Domain Error Types\n```go\ntype SessionError struct {\n Op string\n Polecat string\n Err error\n}\n\nfunc (e *SessionError) Error() string {\n return fmt.Sprintf(\"session %s for %s: %v\", e.Op, e.Polecat, e.Err)\n}\n```\n\n## Files to Review\n- internal/refinery/manager.go\n- internal/swarm/manager.go\n- internal/session/manager.go\n- All cmd/*.go files\n\n## Acceptance Criteria\n- [ ] No silent error swallowing\n- [ ] Retry logic for transient failures\n- [ ] Helpful error messages with hints\n- [ ] Consistent error types per domain","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-16T14:48:48.183421-08:00","updated_at":"2025-12-16T16:06:52.751546-08:00"}
|
||||
{"id":"gt-3133","title":"Account management for multi-account Claude Code usage","description":"Enable Gas Town to manage multiple Claude Code accounts (e.g., personal vs work) with easy switching. Core mechanism: CLAUDE_CONFIG_DIR env var per account. See docs/design/account-management.md for full design.","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-23T03:23:35.825288-08:00","updated_at":"2025-12-23T04:04:28.216463-08:00","closed_at":"2025-12-23T04:04:28.216463-08:00","close_reason":"Account management fully implemented - config parsing, list/add/default commands, GT_ACCOUNT env var, --account flag","dependencies":[{"issue_id":"gt-3133","depends_on_id":"gt-58tu","type":"blocks","created_at":"2025-12-23T03:24:37.170307-08:00","created_by":"daemon"},{"issue_id":"gt-3133","depends_on_id":"gt-hs6y","type":"blocks","created_at":"2025-12-23T03:24:37.263123-08:00","created_by":"daemon"},{"issue_id":"gt-3133","depends_on_id":"gt-nq1a","type":"blocks","created_at":"2025-12-23T03:24:37.353483-08:00","created_by":"daemon"},{"issue_id":"gt-3133","depends_on_id":"gt-0c7s","type":"blocks","created_at":"2025-12-23T03:24:37.443494-08:00","created_by":"daemon"},{"issue_id":"gt-3133","depends_on_id":"gt-74a7","type":"blocks","created_at":"2025-12-23T03:24:37.534229-08:00","created_by":"daemon"},{"issue_id":"gt-3133","depends_on_id":"gt-plcg","type":"blocks","created_at":"2025-12-23T03:24:37.625162-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-346","title":"Update harness beads redirect for GGT","description":"Change ~/ai/.beads/redirect from mayor/rigs/gastown/.beads to gastown/mayor/.beads for the GGT directory structure","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-17T16:42:41.650571-08:00","updated_at":"2025-12-19T12:00:39.272977-08:00","closed_at":"2025-12-19T12:00:39.272977-08:00","dependencies":[{"issue_id":"gt-346","depends_on_id":"gt-l1o","type":"blocks","created_at":"2025-12-17T16:42:54.495061-08:00","created_by":"daemon"},{"issue_id":"gt-346","depends_on_id":"gt-cr9","type":"blocks","created_at":"2025-12-17T17:15:59.04264-08:00","created_by":"daemon"}]}
|
||||
|
||||
Reference in New Issue
Block a user