bd sync: 2025-12-30 10:35:50

This commit is contained in:
Steve Yegge
2025-12-30 10:35:50 -08:00
parent 5b28ba2e4b
commit 4db2696a9f

View File

@@ -49,7 +49,7 @@
{"id":"gt-0wpnf","title":"Digest: mol-deacon-patrol","description":"Patrol 17: all healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T15:56:45.271323-08:00","updated_at":"2025-12-28T15:56:45.271323-08:00","closed_at":"2025-12-28T15:56:45.271291-08:00"}
{"id":"gt-0x5og","title":"Dogs: Deacon's Helper Workers","description":"## Overview\n\nDogs are reusable workers managed by the Deacon for infrastructure and cleanup tasks.\nThey parallel how Polecats serve the Witness, but at town level with cross-rig scope.\n\n## Key Concepts\n\n- **Dogs**: Deacon-managed, reusable, infrastructure/cleanup tasks\n- **Kennel**: Where dogs live (`deacon/dogs/`)\n- **Multi-rig worktrees**: Dogs have worktrees into multiple rigs for cross-rig work\n\n## Cats vs Dogs\n\n| Aspect | Polecats | Dogs |\n|--------|----------|------|\n| Manager | Witness | Deacon |\n| Scope | Per-rig | Town (cross-rig) |\n| Lifecycle | Ephemeral | Reusable |\n| Work | Features | Infrastructure |\n| Location | `\u003crig\u003e/polecats/` | `deacon/dogs/` |\n\n## Implementation\n\n### Phase 1: Dog Infrastructure\n- `gt dog add/remove/list/call/status` commands\n- Kennel directory structure (`~/gt/deacon/dogs/`)\n- Multi-rig worktree creation\n- Dog state tracking\n\n### Phase 2: Deacon Dispatch\n- Sling support for `deacon/dogs` target\n- Pool management (spawn/retire logic)\n- Completion mail handling\n\n### Phase 3: Infrastructure Formulas\n- mol-convoy-cleanup\n- mol-dep-propagate\n- mol-digest-generate\n\n### Phase 4: Deacon Refactor\n- Patrol becomes detect → dispatch\n- Heavy work moves to dog slings\n\n## Reference\n\n- docs/patrol-system-design.md#dogs-deacons-helper-workers\n- docs/PRIMING.md (Role Taxonomy)","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-29T19:34:00.808508-08:00","created_by":"mayor","updated_at":"2025-12-29T19:34:00.808508-08:00"}
{"id":"gt-0x5og.1","title":"gt dog add/remove/list/call/status CLI","description":"Dog management commands:\n- gt dog add \u003cname\u003e - Create dog in kennel with multi-rig worktrees\n- gt dog remove \u003cname\u003e - Retire dog, cleanup worktrees\n- gt dog list - Show the pack (all dogs with status)\n- gt dog call [name] - Wake idle dog(s)\n- gt dog status [name] - Show detailed dog state","status":"hooked","priority":2,"issue_type":"task","assignee":"gastown/polecats/furiosa","created_at":"2025-12-29T19:34:24.005184-08:00","created_by":"mayor","updated_at":"2025-12-30T00:30:30.91252-08:00","dependencies":[{"issue_id":"gt-0x5og.1","depends_on_id":"gt-0x5og","type":"parent-child","created_at":"2025-12-29T19:34:24.005762-08:00","created_by":"daemon"},{"issue_id":"gt-0x5og.1","depends_on_id":"gt-0x5og.2","type":"blocks","created_at":"2025-12-29T19:34:37.683244-08:00","created_by":"daemon"}]}
{"id":"gt-0x5og.2","title":"Kennel directory structure and multi-rig worktrees","description":"Create kennel infrastructure:\n- ~/gt/deacon/dogs/\u003cname\u003e/ directory\n- Worktrees into each rig (gastown, beads, etc.)\n- .dog.json state file (idle/working, last-active, assigned-work)\n- Worktree refresh/cleanup logic","status":"hooked","priority":2,"issue_type":"task","assignee":"gastown/polecats/ace","created_at":"2025-12-29T19:34:25.403417-08:00","created_by":"mayor","updated_at":"2025-12-30T10:34:04.758188-08:00","dependencies":[{"issue_id":"gt-0x5og.2","depends_on_id":"gt-0x5og","type":"parent-child","created_at":"2025-12-29T19:34:25.403973-08:00","created_by":"daemon"}]}
{"id":"gt-0x5og.2","title":"Kennel directory structure and multi-rig worktrees","description":"Create kennel infrastructure:\n- ~/gt/deacon/dogs/\u003cname\u003e/ directory\n- Worktrees into each rig (gastown, beads, etc.)\n- .dog.json state file (idle/working, last-active, assigned-work)\n- Worktree refresh/cleanup logic","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/ace","created_at":"2025-12-29T19:34:25.403417-08:00","created_by":"mayor","updated_at":"2025-12-30T10:35:43.182328-08:00","closed_at":"2025-12-30T10:35:43.182328-08:00","close_reason":"Implemented internal/dog package with Manager, Dog struct, .dog.json schema, multi-rig worktrees, and refresh/cleanup logic","dependencies":[{"issue_id":"gt-0x5og.2","depends_on_id":"gt-0x5og","type":"parent-child","created_at":"2025-12-29T19:34:25.403973-08:00","created_by":"daemon"}]}
{"id":"gt-0x5og.3","title":"gt sling support for deacon/dogs target","description":"Extend gt sling to support dog targets:\n- gt sling \u003cwork\u003e deacon/dogs - Auto-dispatch to idle dog\n- gt sling \u003cwork\u003e deacon/dogs/alpha - Specific dog\n- Dog pool management (spawn if needed, up to max)\n- Completion mail handling","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-29T19:34:26.93247-08:00","created_by":"mayor","updated_at":"2025-12-29T19:34:26.93247-08:00","dependencies":[{"issue_id":"gt-0x5og.3","depends_on_id":"gt-0x5og","type":"parent-child","created_at":"2025-12-29T19:34:26.933063-08:00","created_by":"daemon"},{"issue_id":"gt-0x5og.3","depends_on_id":"gt-0x5og.1","type":"blocks","created_at":"2025-12-29T19:34:37.730391-08:00","created_by":"daemon"}]}
{"id":"gt-0x5og.4","title":"Deacon patrol refactor: detect → dispatch","description":"Refactor Deacon patrol to delegate heavy work to dogs:\n- check-conditions → sling to dog (not inline execution)\n- Pool maintenance step (spawn/retire/refresh)\n- Completion mail handling from dogs\n- Keep patrol lightweight (detection only)","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-29T19:34:27.968478-08:00","created_by":"mayor","updated_at":"2025-12-29T19:34:27.968478-08:00","dependencies":[{"issue_id":"gt-0x5og.4","depends_on_id":"gt-0x5og","type":"parent-child","created_at":"2025-12-29T19:34:27.969077-08:00","created_by":"daemon"},{"issue_id":"gt-0x5og.4","depends_on_id":"gt-0x5og.3","type":"blocks","created_at":"2025-12-29T19:34:37.778037-08:00","created_by":"daemon"}]}
{"id":"gt-0x5og.5","title":"Infrastructure formulas for dog tasks","description":"Create formulas for dog-executed tasks:\n- mol-convoy-cleanup: Archive convoy, notify overseer\n- mol-dep-propagate: Cross-rig dependency resolution\n- mol-digest-generate: Daily digest for overseer\n- mol-orphan-scan: Find and reassign orphaned work\n- mol-session-gc: Clean stale sessions","status":"hooked","priority":3,"issue_type":"task","assignee":"gastown/polecats/keeper","created_at":"2025-12-29T19:34:29.492215-08:00","created_by":"mayor","updated_at":"2025-12-30T10:29:40.708289-08:00","dependencies":[{"issue_id":"gt-0x5og.5","depends_on_id":"gt-0x5og","type":"parent-child","created_at":"2025-12-29T19:34:29.492767-08:00","created_by":"daemon"},{"issue_id":"gt-0x5og.5","depends_on_id":"gt-0x5og.4","type":"blocks","created_at":"2025-12-29T19:34:37.82534-08:00","created_by":"daemon"}]}
@@ -478,7 +478,7 @@
{"id":"gt-795e8","title":"Extract timing constants to constants package","description":"Extract hardcoded timing values to named constants.\n\n## Files to modify\n- internal/constants/constants.go (add constants)\n- internal/cmd/start.go (use constants)\n- internal/tmux/tmux.go (use constants)\n\n## Implementation\nAdd to constants.go:\n```go\nconst (\n ShutdownNotifyDelay = 500 * time.Millisecond\n ClaudeStartTimeout = 15 * time.Second\n ShellReadyTimeout = 5 * time.Second\n DefaultDebounceMs = 100\n DefaultDisplayMs = 5000\n)\n```\n\n## Acceptance criteria\n- [ ] 5 timing constants added to constants.go\n- [ ] start.go uses ShutdownNotifyDelay, ClaudeStartTimeout, ShellReadyTimeout\n- [ ] tmux.go uses DefaultDebounceMs, DefaultDisplayMs\n- [ ] go build ./... passes\n- [ ] go test ./... passes","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-28T15:49:12.251261-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-28T17:17:52.768898-08:00","closed_at":"2025-12-28T17:17:52.768898-08:00"}
{"id":"gt-79jxg","title":"Bug: bd update --parent doesn't persist","description":"The --parent flag on bd update reports success but doesn't persist the parent field.\n\n**Confirmed behavior:**\n```bash\nbd update gt-9kp3t --parent=gt-d0jqp --no-daemon -v\n# Output: ✓ Updated issue: gt-9kp3t\n\nbd show gt-9kp3t --json | jq '.[0].parent'\n# Returns: null\n\ngrep gt-9kp3t .beads/issues.jsonl | head -1 | jq '.parent'\n# Returns: null (field not present)\n```\n\n**Root cause hypothesis:**\nThe update handler processes the --parent flag but either:\n1. Doesn't write it to the Issue struct\n2. Doesn't include it in the JSONL export\n3. The field name doesn't match what export expects\n\n**Files to check:**\n- cmd/bd/show.go:638-640 (flag handling)\n- cmd/bd/show.go:810-814 (reparenting logic)\n- internal/rpc/server_issues_epics.go (RPC handler)\n- internal/rpc/protocol.go (UpdateArgs.Parent field)\n\nRelated: bd-cj2e (the original feature implementation)","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-27T22:40:33.744301-08:00","created_by":"mayor","updated_at":"2025-12-27T23:32:31.903138-08:00","closed_at":"2025-12-27T23:32:31.903138-08:00"}
{"id":"gt-7asd","title":"Digest: mol-deacon-patrol","description":"Patrol 3: Routine","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T22:35:39.123943-08:00","updated_at":"2025-12-27T21:26:04.650909-08:00","deleted_at":"2025-12-27T21:26:04.650909-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
{"id":"gt-7aw1m","title":"Instrument gt commands to appear in activity feed","description":"## Architecture: Two-tier event system\n\n```\n┌─────────────┐ ┌─────────────┐ ┌─────────────┐\n│ gt commands │ │ bd mutations│ │ agent output│\n└──────┬──────┘ └──────┬──────┘ └──────┬──────┘\n └────────────────┼────────────────┘\n ▼\n ~/gt/.events.jsonl (raw, audit)\n │\n ┌─────────────────┐\n │ Feed daemon │ ← goroutine in gt daemon\n │ - filters │\n │ - aggregates │\n │ - AI curates │\n └────────┬────────┘\n ▼\n ~/gt/.feed.jsonl (curated, user-facing)\n```\n\n## Event format\n\n```json\n{\n \"ts\": \"2025-12-28T10:30:15Z\",\n \"source\": \"gt\",\n \"type\": \"sling\",\n \"actor\": \"mayor\",\n \"payload\": {\"bead\": \"gt-xyz\", \"target\": \"gastown/Toast\"},\n \"visibility\": \"feed\"\n}\n```\n\nVisibility: `audit` | `feed` | `both`\n\n## Implementation phases\n\n1. **Event logging** - gt commands write to ~/gt/.events.jsonl\n2. **Feed daemon** - goroutine in gt daemon tails events, writes curated feed\n3. **Feed readers** - gt feed, gt dashboard read from .feed.jsonl\n4. **AI curation** - future: haiku summarization for complex activity\n\nPart of epic gt-u7dxq","status":"hooked","priority":2,"issue_type":"task","assignee":"gastown/polecats/morsov","created_at":"2025-12-28T11:02:16.207055-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T10:33:32.235272-08:00"}
{"id":"gt-7aw1m","title":"Instrument gt commands to appear in activity feed","description":"## Architecture: Two-tier event system\n\n```\n┌─────────────┐ ┌─────────────┐ ┌─────────────┐\n│ gt commands │ │ bd mutations│ │ agent output│\n└──────┬──────┘ └──────┬──────┘ └──────┬──────┘\n └────────────────┼────────────────┘\n ▼\n ~/gt/.events.jsonl (raw, audit)\n │\n ┌─────────────────┐\n │ Feed daemon │ ← goroutine in gt daemon\n │ - filters │\n │ - aggregates │\n │ - AI curates │\n └────────┬────────┘\n ▼\n ~/gt/.feed.jsonl (curated, user-facing)\n```\n\n## Event format\n\n```json\n{\n \"ts\": \"2025-12-28T10:30:15Z\",\n \"source\": \"gt\",\n \"type\": \"sling\",\n \"actor\": \"mayor\",\n \"payload\": {\"bead\": \"gt-xyz\", \"target\": \"gastown/Toast\"},\n \"visibility\": \"feed\"\n}\n```\n\nVisibility: `audit` | `feed` | `both`\n\n## Implementation phases\n\n1. **Event logging** - gt commands write to ~/gt/.events.jsonl\n2. **Feed daemon** - goroutine in gt daemon tails events, writes curated feed\n3. **Feed readers** - gt feed, gt dashboard read from .feed.jsonl\n4. **AI curation** - future: haiku summarization for complex activity\n\nPart of epic gt-u7dxq","status":"in_progress","priority":2,"issue_type":"task","assignee":"gastown/polecats/morsov","created_at":"2025-12-28T11:02:16.207055-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T10:34:32.968247-08:00"}
{"id":"gt-7bty9","title":"Digest: mol-deacon-patrol","description":"Patrol 1: All clear - inbox empty, agents healthy, no orphans","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T15:31:29.106816-08:00","updated_at":"2025-12-27T21:26:03.12439-08:00","deleted_at":"2025-12-27T21:26:03.12439-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
{"id":"gt-7einb","title":"Digest: mol-deacon-patrol","description":"Patrol 9: All clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T15:58:57.715007-08:00","updated_at":"2025-12-25T15:58:57.715007-08:00","closed_at":"2025-12-25T15:58:57.714972-08:00"}
{"id":"gt-7emkr","title":"Digest: mol-deacon-patrol","description":"P14: stable","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T20:13:35.668266-08:00","updated_at":"2025-12-25T20:13:35.668266-08:00","closed_at":"2025-12-25T20:13:35.668211-08:00"}