bd sync: 2025-12-30 22:16:20
This commit is contained in:
@@ -42,7 +42,7 @@
|
||||
{"id":"gt-0pc","title":"Document Overseer role (human operator)","description":"Document the Overseer role in Gas Town architecture.\n\n## The Overseer\n\nThe **Overseer** is the human operator of Gas Town. Not an agent - a person.\n\n## Responsibilities\n\n| Area | Overseer Does | Mayor/Agents Do |\n|------|---------------|-----------------|\n| Strategy | Define project goals | Execute toward goals |\n| Priorities | Set priority order | Work in priority order |\n| Escalations | Final decision on stuck work | Escalate to Overseer |\n| Resources | Provision machines | Use allocated resources |\n| Quality | Review \u0026 approve swarm output | Produce output |\n| Operations | Run gt commands, monitor dashboards | Do the work |\n\n## Key Interactions\n\n### Overseer → Mayor\n- Start/stop Mayor sessions\n- Direct Mayor via conversation\n- Review Mayor recommendations\n- Approve cross-rig decisions\n\n### Mayor → Overseer (Escalations)\n- Stuck workers after retries\n- Resource decisions (add machines, polecats)\n- Ambiguous requirements\n- Architecture decisions\n\n## Operating Cadence\n\nTypical Overseer workflow:\n1. Morning: Check status, review overnight work\n2. During day: Monitor, respond to escalations, adjust priorities\n3. End of day: Review progress, plan next batch\n\n## Commands for Overseers\n\n```bash\ngt status # Quick health check\ngt doctor # Detailed diagnostics \ngt doctor --fix # Auto-repair issues\ngt inbox # Messages from agents\ngt stop --all # Emergency halt\n```\n\n## Documentation Updates\n\nAdd to docs/architecture.md:\n- Overseer section under Agent Roles\n- Clarify Mayor reports to Overseer\n- Add Overseer to workflow diagrams","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-15T23:18:03.177633-08:00","updated_at":"2025-12-25T01:30:41.67682-08:00","deleted_at":"2025-12-25T01:30:41.67682-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
{"id":"gt-0pdhj","title":"Remove all hardcoded gastown dependencies from gt codebase","description":"The Go codebase should not have hardcoded dependencies on gastown (the rig name).\n\nFound in prime.go outputDeaconPatrolContext() - FIXED in this session.\n\nOther potential issues to audit:\n- Check all patrol context functions (Witness, Refinery) for similar patterns\n- Ensure rig-specific paths are derived from context, not hardcoded\n- Test with a different rig name to verify\n\nThe principle: Gas Town should work with any rig name, not just gastown.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T18:21:50.570904-08:00","updated_at":"2025-12-28T01:24:59.010519-08:00","closed_at":"2025-12-28T01:24:59.010519-08:00"}
|
||||
{"id":"gt-0pl","title":"Polecat CLAUDE.md: configure auto-approve for bd and gt commands","description":"Polecats get stuck waiting for bash command approval when running\nbd and gt commands. Need to configure Claude Code to auto-approve these.\n\nOptions:\n1. Add allowedTools to polecat CLAUDE.md\n2. Configure .claude/settings.json in polecat directory\n3. Use --dangerously-skip-permissions flag (not recommended)\n\nShould auto-approve:\n- bd (beads commands)\n- gt (gastown commands)\n- go build/test\n- git status/add/commit/push\n\nShould still require approval:\n- rm -rf\n- Arbitrary commands outside project\n\nRelated to polecat prompting (gt-e1y, gt-sd6).","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-17T14:10:27.611612-08:00","updated_at":"2025-12-25T01:30:41.67682-08:00","deleted_at":"2025-12-25T01:30:41.67682-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
{"id":"gt-0q3cg","title":"Add isQueueAddress() and parseQueueName() helpers to router.go","description":"Add queue address detection to internal/mail/router.go.\n\nPATTERN TO FOLLOW:\nLook at isListAddress() and parseListName() at lines 53-60 as the template.\n\nIMPLEMENTATION:\n1. Add isQueueAddress(address string) bool - returns true if address starts with 'queue:'\n2. Add parseQueueName(address string) string - extracts queue name after 'queue:'\n\nFILE: internal/mail/router.go\nTESTS: Add tests in internal/mail/router_test.go following the pattern of TestIsListAddress/TestParseListName\n\nThis is a small, focused task. Do not implement sendToQueue or claiming - just the address detection.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T18:15:35.248204-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T18:15:35.248204-08:00"}
|
||||
{"id":"gt-0q3cg","title":"Add isQueueAddress() and parseQueueName() helpers to router.go","description":"Add queue address detection to internal/mail/router.go.\n\nPATTERN TO FOLLOW:\nLook at isListAddress() and parseListName() at lines 53-60 as the template.\n\nIMPLEMENTATION:\n1. Add isQueueAddress(address string) bool - returns true if address starts with 'queue:'\n2. Add parseQueueName(address string) string - extracts queue name after 'queue:'\n\nFILE: internal/mail/router.go\nTESTS: Add tests in internal/mail/router_test.go following the pattern of TestIsListAddress/TestParseListName\n\nThis is a small, focused task. Do not implement sendToQueue or claiming - just the address detection.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T18:15:35.248204-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T22:09:43.974421-08:00","closed_at":"2025-12-30T22:09:43.974421-08:00","close_reason":"Added isQueueAddress() and parseQueueName() helpers with tests"}
|
||||
{"id":"gt-0qki","title":"Refinery-Witness communication protocol","description":"Define mail protocol between Refinery and Witness:\n\nFROM Witness → Refinery:\n- 'Polecat ready': polecat X completed work, ready for merge\n- 'Rework complete': polecat Y finished requested rework\n\nFROM Refinery → Witness:\n- 'Merge success': polecat X merged, can be cleaned up\n- 'Merge failed': polecat X needs rework on \u003creason\u003e\n- 'Rework request': please have a polecat rebase X on current main\n\nImplement as structured mail with parseable format.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-19T18:09:27.451344-08:00","updated_at":"2025-12-27T21:29:56.941251-08:00","dependencies":[{"issue_id":"gt-0qki","depends_on_id":"gt-ktal","type":"blocks","created_at":"2025-12-19T18:09:39.58445-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:56.941251-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-0s99","title":"submit-merge","description":"Submit to merge queue. Create branch if needed.\nVerify CI passes.\n\ngt done # Signal work ready for merge queue\n\nIf there are CI failures, fix them before proceeding.\n\nDepends: rebase-main","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-21T21:48:26.322452-08:00","updated_at":"2025-12-25T14:12:42.195231-08:00","dependencies":[{"issue_id":"gt-0s99","depends_on_id":"gt-bf95","type":"blocks","created_at":"2025-12-21T21:48:26.329601-08:00","created_by":"stevey"}],"deleted_at":"2025-12-25T14:12:42.195231-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-0sf2","title":"Add gt rig rename command","description":"Allow renaming a rig after creation. Similar to gt crew rename, this should:\n\n- Update the directory name\n- Update mayor/rigs.json entry\n- Update the rig's config.json\n- Handle running agents gracefully (require shutdown first or --force)\n\nUse case: User creates a rig, later wants to change its name for better organization.","status":"tombstone","priority":2,"issue_type":"feature","created_at":"2025-12-23T04:46:41.988492-08:00","updated_at":"2025-12-27T21:29:56.134098-08:00","deleted_at":"2025-12-27T21:29:56.134098-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"}
|
||||
@@ -229,6 +229,8 @@
|
||||
{"id":"gt-3rquk","title":"Day 3.0: Document mail protocol contracts","description":"Document the formal mail protocol for Gas Town agent coordination.\n\nMail Types:\n\n**POLECAT_DONE** (polecat → witness)\n```\nSubject: POLECAT_DONE: \u003cname\u003e\nBody: {\"issue\": \"gt-xyz\", \"status\": \"complete|failed\", \"notes\": \"...\"}\n```\n\n**MERGE_READY** (witness → refinery)\n```\nSubject: MERGE_READY: \u003cbranch\u003e\nBody: {\"worker\": \"nux\", \"issue\": \"gt-xyz\", \"branch\": \"polecat/nux/gt-xyz\"}\n```\n\n**MERGED** (refinery → witness)\n```\nSubject: MERGED: \u003cbranch\u003e\nBody: {\"issue\": \"gt-xyz\", \"sha\": \"abc123\", \"worker\": \"nux\"}\n```\n\n**LIFECYCLE:Shutdown/Cycle/Restart** (agent → deacon/)\n```\nSubject: LIFECYCLE:Shutdown\nBody: {\"action\": \"shutdown\"}\n```\n\n**HELP** (polecat → witness → mayor)\n```\nSubject: HELP: \u003cbrief\u003e\nBody: {\"issue\": \"gt-xyz\", \"problem\": \"...\", \"context\": \"...\"}\n```\n\nCreate: docs/mail-protocol.md","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-27T22:02:11.619888-08:00","created_by":"mayor","updated_at":"2025-12-27T23:18:47.276607-08:00","closed_at":"2025-12-27T23:18:47.276607-08:00","dependencies":[{"issue_id":"gt-3rquk","depends_on_id":"gt-qpoxz","type":"blocks","created_at":"2025-12-27T22:02:45.294244-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-3sd3a","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 13: All healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T11:22:35.93998-08:00","updated_at":"2025-12-28T11:22:35.93998-08:00","closed_at":"2025-12-28T11:22:35.939949-08:00"}
|
||||
{"id":"gt-3shmx","title":"Add nudge_channels to MessagingConfig schema","description":"Extend MessagingConfig in internal/config/types.go.\n\nADD TO MessagingConfig STRUCT:\n // NudgeChannels are named groups for real-time nudge fan-out.\n // Like mailing lists but for tmux send-keys instead of durable mail.\n NudgeChannels map[string][]string `json:\"nudge_channels,omitempty\"`\n\nUPDATE NewMessagingConfig():\n Add: NudgeChannels: make(map[string][]string)\n\nUPDATE ValidateMessagingConfig() in loader.go:\n Validate that nudge channel names are non-empty\n Validate that each channel has at least one recipient\n\nFILE: internal/config/types.go, internal/config/loader.go\nTESTS: Add to loader_test.go following existing patterns\n\nExample config:\n{\n \"nudge_channels\": {\n \"workers\": [\"gastown/polecats/*\", \"gastown/crew/*\"],\n \"witnesses\": [\"*/witness\"]\n }\n}","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T18:16:49.198572-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T18:16:49.198572-08:00"}
|
||||
{"id":"gt-3sofk","title":"Merge: gt-bpiph","description":"branch: polecat/toast-mjtm1hg8\ntarget: main\nsource_issue: gt-bpiph\nrig: gastown","status":"open","priority":1,"issue_type":"merge-request","created_at":"2025-12-30T22:09:46.03699-08:00","created_by":"gastown/polecats/toast","updated_at":"2025-12-30T22:09:46.03699-08:00"}
|
||||
{"id":"gt-3spj6","title":"Merge: slit-mjtj9dc8","description":"branch: polecat/slit-mjtj9dc8\ntarget: main\nsource_issue: slit-mjtj9dc8\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T22:13:56.572746-08:00","created_by":"gastown/polecats/slit","updated_at":"2025-12-30T22:13:56.572746-08:00"}
|
||||
{"id":"gt-3suf","title":"Test Patrol Parent","description":"Test parent for Christmas Ornament pattern","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-23T22:51:29.540692-08:00","updated_at":"2025-12-27T21:29:55.662443-08:00","deleted_at":"2025-12-27T21:29:55.662443-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-3tcdb","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 6: routine","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T15:40:03.230009-08:00","updated_at":"2025-12-27T21:26:01.42769-08:00","deleted_at":"2025-12-27T21:26:01.42769-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-3tssq.1","title":"Polecat Arm (arm-toast)","description":"Single polecat inspection and action cycle.\n\nThis molecule is bonded dynamically by mol-witness-patrol's survey-workers step.\nEach polecat being monitored gets one arm that runs in parallel with other arms.\n\n## Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| polecat_name | Yes | Name of the polecat to inspect |\n| rig | Yes | Rig containing the polecat |\n\n## Step: capture\nCapture recent tmux output for toast.\n\n```bash\ntmux capture-pane -t gt-gastown-toast -p | tail -50\n```\n\nRecord:\n- Last activity timestamp (when was last tool call?)\n- Visible errors or stack traces\n- Completion indicators (\"Done\", \"Finished\", etc.)\n\n## Step: assess\nCategorize polecat state based on captured output.\n\nStates:\n- **working**: Recent tool calls, active processing\n- **idle**: At prompt, no recent activity\n- **error**: Showing errors or stack traces\n- **requesting_shutdown**: Sent LIFECYCLE/Shutdown mail\n- **done**: Showing completion indicators\n\nCalculate: minutes since last activity.\nNeeds: capture\n\n## Step: load-history\nRead nudge history for toast from patrol state.\n\n```\nnudge_count = state.nudges[toast].count\nlast_nudge_time = state.nudges[toast].timestamp\n```\n\nThis data was loaded by the parent patrol's load-state step and passed\nto the arm via the bonding context.\nNeeds: assess\n\n## Step: decide\nApply the nudge matrix to determine action for toast.\n\n| State | Idle Time | Nudge Count | Action |\n|-------|-----------|-------------|--------|\n| working | any | any | none |\n| idle | \u003c10min | any | none |\n| idle | 10-15min | 0 | nudge-1 (gentle) |\n| idle | 15-20min | 1 | nudge-2 (direct) |\n| idle | 20+min | 2 | nudge-3 (final) |\n| idle | any | 3 | escalate |\n| error | any | any | assess-severity |\n| requesting_shutdown | any | any | pre-kill-verify |\n| done | any | any | pre-kill-verify |\n\nNudge text:\n1. \"How's progress? Need any help?\"\n2. \"Please wrap up soon. What's blocking you?\"\n3. \"Final check. Will escalate in 5 min if no response.\"\n\nRecord decision and rationale.\nNeeds: load-history\n\n## Step: execute\nTake the decided action for toast.\n\n**nudge-N**:\n```bash\ntmux send-keys -t gt-gastown-toast \"{{nudge_text}}\" Enter\n```\n\n**pre-kill-verify**:\n```bash\ncd polecats/toast\ngit status # Must be clean\ngit log origin/main..HEAD # Check for unpushed\nbd show \u003cassigned-issue\u003e # Verify closed/deferred\n```\nIf clean: kill session, remove worktree, delete branch\nIf dirty: record failure, retry next cycle\n\n**escalate**:\n```bash\ngt mail send mayor/ -s \"Escalation: toast stuck\" -m \"...\"\n```\n\n**none**: No action needed.\n\nRecord: action taken, result, updated nudge count.\nNeeds: decide\n\n## Output\n\nThe arm completes with:\n- action_taken: none | nudge-1 | nudge-2 | nudge-3 | killed | escalated\n- result: success | failed | pending\n- updated_state: New nudge count and timestamp for toast\n\nThis data feeds back to the parent patrol's aggregate step.\n---\nbonded_from: mol-polecat-arm\nbonded_to: gt-3tssq\nbonded_ref: arm-toast\nbonded_at: 2025-12-23T10:00:00Z\n","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T00:57:47.407091-08:00","updated_at":"2025-12-27T21:29:55.360003-08:00","deleted_at":"2025-12-27T21:29:55.360003-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -424,6 +426,7 @@
|
||||
{"id":"gt-5xph","title":"Document session cycling protocol in all templates","description":"Add explicit lifecycle request protocol to all agent templates.\n\n## Problem\nTemplates mention 'request session refresh' but don't show HOW.\nAgents don't know the protocol for requesting a cycle.\n\n## Protocol to document\n1. Write handoff mail to self (for continuity)\n2. Set requesting_cycle=true in state.json\n3. Send LIFECYCLE mail to deacon/:\n Subject: 'LIFECYCLE: \u003crole\u003e requesting cycle'\n Body: Reason for cycle request\n\n## Templates to update\n- prompts/roles/polecat.md\n- prompts/roles/crew.md \n- prompts/roles/witness.md\n- prompts/roles/refinery.md\n\n## Also add\n- Example state.json location for each role\n- When to request cycle (context full, work complete, etc.)\n- What happens after (daemon kills, respawns, new session primes)","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-22T16:43:54.10282-08:00","updated_at":"2025-12-27T21:29:53.158431-08:00","deleted_at":"2025-12-27T21:29:53.158431-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-5y3mq","title":"Digest: mol-deacon-patrol","description":"Patrol 2: All agents healthy, no actions","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T20:34:25.65643-08:00","updated_at":"2025-12-27T21:26:02.187933-08:00","deleted_at":"2025-12-27T21:26:02.187933-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-5y5p","title":"Preflight molecule: verify baseline health before work","description":"Before assigning work, verify baseline (main branch) is healthy.\n\n**From VC**: Self-healing state machine (HEALTHY → SELF_HEALING → ESCALATED). ~200 lines.\n\n**Gas Town implementation**: Preflight molecule or refinery feature:\n```yaml\npreflight:\n gates: [test, lint, build]\n on_failure: create-fix-issue\n```\n\nRun at session start. If baseline broken, file a P0 fix issue and work on that first.\n\n**Value**: Self-healing baseline. Agents don't start from broken state.\n\n**VC lesson**: Prevents cascading failures. Agent shouldn't start work on broken code.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-20T20:30:13.807641-08:00","updated_at":"2025-12-20T20:30:13.807641-08:00","dependencies":[{"issue_id":"gt-5y5p","depends_on_id":"gt-zhpa","type":"parent-child","created_at":"2025-12-20T20:30:27.469804-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-5yikt","title":"Merge: gt-svdsy","description":"branch: polecat/capable-mjtltnm5\ntarget: main\nsource_issue: gt-svdsy\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T22:15:50.767532-08:00","created_by":"gastown/polecats/capable","updated_at":"2025-12-30T22:15:50.767532-08:00"}
|
||||
{"id":"gt-5yl1d","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 14: routine","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T13:28:17.760339-08:00","updated_at":"2025-12-27T21:26:01.854529-08:00","deleted_at":"2025-12-27T21:26:01.854529-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-61o","title":"Review and audit all GGT beads","description":"Thorough review of all filed beads in gastown GGT repo. Check for: consistency, completeness, correct dependencies, accurate descriptions, proper prioritization. Ensure beads are self-contained and dont rely on external docs.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-15T20:24:07.152386-08:00","updated_at":"2025-12-25T01:30:41.67682-08:00","deleted_at":"2025-12-25T01:30:41.67682-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
{"id":"gt-62hm","title":"Molecule Phase Terminology Documentation","description":"Document the three-phase molecule lifecycle with consistent terminology:\n\n## The Phases (States of Matter)\n\n| Phase | State | Nature |\n|-------|-------|--------|\n| **Proto** | Solid/Crystal | Frozen template, static definition in catalog |\n| **Mol** | Liquid | Reified instance, malleable, tracked in git (durable) |\n| **Wisp** | Gas | Evaporates after squash, ephemeral orchestration |\n\n## Documentation Gaps Identified\n\n### High Priority\n1. Update vision.md Steam Engine metaphor to use proto/mol/wisp terminology\n2. Add lifecycle diagram: Proto → bond → Mol or Wisp → squash → Digest\n3. Document Go types for phases (ProtoMolecule, etc.)\n4. Document .beads-ephemeral/ structure and purpose\n\n### Medium Priority\n5. Update CLAUDE.md files (polecat, witness, refinery) with molecule workflow\n6. Document bd mol bond/squash/burn CLI API with examples\n7. Add polecat guide: Executing molecules and generating summaries\n\n### Low Priority\n8. Add terminology glossary to architecture.md\n9. Create troubleshooting playbook for stuck molecules\n10. Add reference diagrams for state transitions\n\n## Current State\n- architecture.md has good molecule basics but uses inconsistent terminology\n- vision.md has Steam Engine metaphor (proto=fuel, wisp=steam, digest=distillate)\n- molecules.md has detailed reference but needs phase clarity\n- builtin_molecules.go has 8 molecules but no phase documentation in code","status":"tombstone","priority":1,"issue_type":"epic","created_at":"2025-12-21T16:32:27.537487-08:00","updated_at":"2025-12-27T21:29:53.443071-08:00","deleted_at":"2025-12-27T21:29:53.443071-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"}
|
||||
@@ -812,7 +815,6 @@
|
||||
{"id":"gt-b3p","title":"Resource Beads: Leases, locks, and quotas","description":"Resource beads represent reserved resources. Types: vm, lock, slot, quota. Fields: holder, expires, renewable. Daemon monitors for expiry and manages contention.","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-18T18:08:12.745602-08:00","updated_at":"2025-12-27T21:29:57.126785-08:00","deleted_at":"2025-12-27T21:29:57.126785-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"}
|
||||
{"id":"gt-b5sh","title":"test-after-fix","description":"test","status":"tombstone","priority":2,"issue_type":"message","created_at":"2025-12-19T16:05:08.538763-08:00","updated_at":"2025-12-27T21:29:56.967459-08:00","deleted_at":"2025-12-27T21:29:56.967459-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"message"}
|
||||
{"id":"gt-b6qm","title":"gt spawn/crew setup should create .beads/redirect for worktrees","description":"Crew clones and polecats need a .beads/redirect file pointing to the shared beads database (../../mayor/rig/.beads). Currently:\n\n- redirect files can get deleted by git clean\n- not auto-created during gt spawn or worktree setup\n- missing redirects cause 'no beads database found' errors\n\nFound missing in: gastown/joe, beads/zoey (after git clean)\n\nFix options:\n1. gt spawn creates redirect during worktree setup\n2. gt prime regenerates missing redirects\n3. bd commands auto-detect worktree and find shared beads\n\nThis should be standard Gas Town rig configuration.","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-21T17:51:11.222073-08:00","updated_at":"2025-12-27T21:29:53.401049-08:00","deleted_at":"2025-12-27T21:29:53.401049-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-b7uw3","title":"Merge: slit-mjtj9dc8","description":"branch: polecat/slit-mjtj9dc8\ntarget: main\nsource_issue: slit-mjtj9dc8\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T21:00:48.925468-08:00","created_by":"gastown/polecats/slit","updated_at":"2025-12-30T21:00:48.925468-08:00"}
|
||||
{"id":"gt-b83nx","title":"Digest: mol-deacon-patrol","description":"Patrol 14: all clear","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T11:05:34.850044-08:00","updated_at":"2025-12-27T21:26:03.380705-08:00","deleted_at":"2025-12-27T21:26:03.380705-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-b9x4f","title":"Test gate for verification","status":"tombstone","priority":1,"issue_type":"gate","created_at":"2025-12-25T22:12:31.773887-08:00","updated_at":"2025-12-27T21:29:45.926289-08:00","deleted_at":"2025-12-27T21:29:45.926289-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"gate"}
|
||||
{"id":"gt-badfi","title":"Digest: mol-deacon-patrol","description":"Patrol 16: Green","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T19:35:25.272732-08:00","updated_at":"2025-12-27T21:26:02.510979-08:00","deleted_at":"2025-12-27T21:26:02.510979-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -850,7 +852,7 @@
|
||||
{"id":"gt-bnlev","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 20: final cycle before handoff","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T15:48:49.95776-08:00","updated_at":"2025-12-27T21:26:01.312421-08:00","deleted_at":"2025-12-27T21:26:01.312421-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-bo8mo","title":"Witness: must send MERGE_READY to Refinery after POLECAT_DONE","description":"Integration test gt-7psb8 revealed that Witness processes POLECAT_DONE but doesn't send MERGE_READY to Refinery.\n\nObserved:\n- Witness receives POLECAT_DONE from furiosa\n- Witness verifies branch pushed\n- Witness kills polecat session\n- Witness notifies Mayor\n- NO MERGE_READY sent to Refinery\n\nExpected: After successful pre-kill verification, Witness should send MERGE_READY to gastown/refinery with the MR details.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-28T13:11:54.428918-08:00","created_by":"mayor","updated_at":"2025-12-28T13:58:05.348621-08:00","closed_at":"2025-12-28T13:58:05.348621-08:00"}
|
||||
{"id":"gt-bp0ht","title":"Add mutex to swarm.Manager for thread safety","description":"attached_args: Add swarm.Manager mutex for thread safety\n\nFix potential race condition in swarm manager's map access.\n\n## Files to modify\n- internal/swarm/manager.go\n- internal/swarm/manager_test.go (add concurrency test)\n\n## Problem\nThe swarms map[string]*Swarm is accessed without synchronization:\n```go\ntype Manager struct {\n swarms map[string]*Swarm // No mutex protection\n}\n```\n\nMultiple goroutines could call Create(), GetSwarm(), etc. simultaneously.\n\n## Implementation\n```go\ntype Manager struct {\n mu sync.RWMutex\n swarms map[string]*Swarm\n}\n\nfunc (m *Manager) GetSwarm(id string) *Swarm {\n m.mu.RLock()\n defer m.mu.RUnlock()\n return m.swarms[id]\n}\n```\n\n## Acceptance criteria\n- [ ] sync.RWMutex added to Manager struct\n- [ ] All map accesses protected by mutex\n- [ ] RLock for reads, Lock for writes\n- [ ] Concurrency test added\n- [ ] go test -race ./internal/swarm/... passes","status":"hooked","priority":2,"issue_type":"task","created_at":"2025-12-28T15:49:16.520654-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-28T15:54:16.914513-08:00"}
|
||||
{"id":"gt-bpiph","title":"Witness/Refinery startup: Enforce patrol molecule attachment","description":"Witness and Refinery CLAUDE.md says to:\n1. Check for attached molecule on startup\n2. If not attached, spawn patrol wisp\n\nBut sessions are just reacting to mail without patrol structure.\n\nCurrent state:\n- gt-8ynws (Witness Patrol) exists but not attached\n- gt-t5i07 (Refinery Patrol) exists but not attached\n- Sessions are running without structured patrol loops\n\nFix options:\n1. Add SessionStart hook to enforce patrol attachment\n2. Make 'gt start' attach patrol molecules when spawning witness/refinery\n3. Add reminder in CLAUDE.md startup banner that's more emphatic","status":"in_progress","priority":1,"issue_type":"bug","assignee":"gastown/polecats/toast","created_at":"2025-12-30T22:03:12.017621-08:00","created_by":"mayor","updated_at":"2025-12-30T22:04:19.957873-08:00"}
|
||||
{"id":"gt-bpiph","title":"Witness/Refinery startup: Enforce patrol molecule attachment","description":"Witness and Refinery CLAUDE.md says to:\n1. Check for attached molecule on startup\n2. If not attached, spawn patrol wisp\n\nBut sessions are just reacting to mail without patrol structure.\n\nCurrent state:\n- gt-8ynws (Witness Patrol) exists but not attached\n- gt-t5i07 (Refinery Patrol) exists but not attached\n- Sessions are running without structured patrol loops\n\nFix options:\n1. Add SessionStart hook to enforce patrol attachment\n2. Make 'gt start' attach patrol molecules when spawning witness/refinery\n3. Add reminder in CLAUDE.md startup banner that's more emphatic","status":"closed","priority":1,"issue_type":"bug","assignee":"gastown/polecats/toast","created_at":"2025-12-30T22:03:12.017621-08:00","created_by":"mayor","updated_at":"2025-12-30T22:08:13.786905-08:00","closed_at":"2025-12-30T22:08:13.786905-08:00","close_reason":"Fixed autoSpawnPatrol in patrol_helpers.go to use --status=hooked instead of --status=pinned. This ensures patrol wisps are visible to gt mol status and trigger autonomous mode."}
|
||||
{"id":"gt-bq1yn","title":"Digest: mol-deacon-patrol","description":"Patrol 4: All healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T14:04:00.499629-08:00","updated_at":"2025-12-25T14:04:00.499629-08:00","closed_at":"2025-12-25T14:04:00.499596-08:00"}
|
||||
{"id":"gt-bq4wo","title":"Day 2.7c: gt doctor checks agent beads exist","description":"Add gt doctor check: agent-beads-exist\n\n1. For town-level: verify gt-deacon and gt-mayor beads exist\n2. For each rig: verify gt-witness-\u003crig\u003e and gt-refinery-\u003crig\u003e beads exist\n3. Report missing beads as warnings\n4. Implement --fix to create missing beads\n\nFiles:\n- internal/doctor/agent_beads_check.go (new)\n- internal/cmd/doctor.go (register check)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-28T02:17:08.814494-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-28T02:40:06.712421-08:00","closed_at":"2025-12-28T02:40:06.712421-08:00","dependencies":[{"issue_id":"gt-bq4wo","depends_on_id":"gt-aer7q","type":"parent-child","created_at":"2025-12-28T02:17:17.582571-08:00","created_by":"daemon"},{"issue_id":"gt-bq4wo","depends_on_id":"gt-h3hak","type":"blocks","created_at":"2025-12-28T02:17:20.043469-08:00","created_by":"daemon"},{"issue_id":"gt-bq4wo","depends_on_id":"gt-pinkq","type":"blocks","created_at":"2025-12-28T02:17:20.073712-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-bqbw","title":"detectSender() doesn't recognize crew workers","description":"## Problem\n\ndetectSender() in internal/cmd/mail.go only checks for /polecats/ directories. Crew workers in /crew/\u003cname\u003e/ fall through to the default 'mayor/', so:\n- gt mail inbox shows mayor's inbox instead of the crew worker's\n- gt mail send sets the wrong From address\n\n## Fix\n\nAdd crew worker detection before the /polecats/ check:\n\nif strings.Contains(cwd, \"/crew/\") {\n parts := strings.Split(cwd, \"/crew/\")\n ...\n return fmt.Sprintf(\"%s/crew/%s\", rigName, crewMember)\n}\n\n## Affected\n- Any crew worker running gt mail inbox without explicit address\n- Crew worker handoffs (wrong sender)","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-18T20:09:42.556373-08:00","updated_at":"2025-12-27T21:29:54.134387-08:00","deleted_at":"2025-12-27T21:29:54.134387-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
@@ -1196,20 +1198,20 @@
|
||||
{"id":"gt-gastown-polecat-ace","title":"gt-gastown-polecat-ace","description":"gt-gastown-polecat-ace\n\nrole_type: polecat\nrig: gastown\nagent_state: done\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:59:45.180508-08:00","created_by":"mayor","updated_at":"2025-12-30T15:19:18.82823-08:00","closed_at":"2025-12-30T15:19:18.82823-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:18.796028-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-alpha","title":"gt-gastown-polecat-alpha","description":"gt-gastown-polecat-alpha\n\nrole_type: polecat\nrig: gastown\nagent_state: spawning\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: null","status":"tombstone","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:41:36.19828-08:00","created_by":"mayor","updated_at":"2025-12-29T21:45:13.451246-08:00","deleted_at":"2025-12-29T21:45:13.451246-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-bravo","title":"gt-gastown-polecat-bravo","description":"gt-gastown-polecat-bravo\n\nrole_type: polecat\nrig: gastown\nagent_state: spawning\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: null","status":"tombstone","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:41:37.373036-08:00","created_by":"mayor","updated_at":"2025-12-29T21:45:13.565657-08:00","deleted_at":"2025-12-29T21:45:13.565657-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-capable","title":"gt-gastown-polecat-capable","description":"gt-gastown-polecat-capable\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-rbncw\nrole_bead: gt-polecat-role\ncleanup_status: clean","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:56:09.595279-08:00","created_by":"mayor","updated_at":"2025-12-30T22:06:09.080299-08:00","closed_at":"2025-12-30T18:50:07.975131-08:00","close_reason":"nuked","deleted_at":"2025-12-30T18:50:07.941428-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-capable","title":"gt-gastown-polecat-capable","description":"gt-gastown-polecat-capable\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-rbncw\nrole_bead: gt-polecat-role\ncleanup_status: has_uncommitted","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:56:09.595279-08:00","created_by":"mayor","updated_at":"2025-12-30T22:15:51.03913-08:00","closed_at":"2025-12-30T18:50:07.975131-08:00","close_reason":"nuked","deleted_at":"2025-12-30T18:50:07.941428-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-charlie","title":"gt-gastown-polecat-charlie","description":"gt-gastown-polecat-charlie\n\nrole_type: polecat\nrig: gastown\nagent_state: spawning\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: null","status":"tombstone","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:41:38.470051-08:00","created_by":"mayor","updated_at":"2025-12-29T21:45:13.679776-08:00","deleted_at":"2025-12-29T21:45:13.679776-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-cheedo","title":"gt-gastown-polecat-cheedo","description":"gt-gastown-polecat-cheedo\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:58:54.800962-08:00","created_by":"mayor","updated_at":"2025-12-30T18:50:59.939317-08:00","closed_at":"2025-12-30T18:50:59.939317-08:00","close_reason":"nuked","deleted_at":"2025-12-30T18:50:59.905831-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-dag","title":"gt-gastown-polecat-dag","description":"gt-gastown-polecat-dag\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-tvwnz\nrole_bead: gt-polecat-role\ncleanup_status: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:58:43.032649-08:00","created_by":"mayor","updated_at":"2025-12-30T18:50:14.777493-08:00","closed_at":"2025-12-30T18:50:14.777493-08:00","close_reason":"nuked","deleted_at":"2025-12-30T18:50:14.74506-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-dag","title":"gt-gastown-polecat-dag","description":"gt-gastown-polecat-dag\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-tvwnz\nrole_bead: gt-polecat-role\ncleanup_status: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:58:43.032649-08:00","created_by":"mayor","updated_at":"2025-12-30T22:09:19.358669-08:00","closed_at":"2025-12-30T18:50:14.777493-08:00","close_reason":"nuked","deleted_at":"2025-12-30T18:50:14.74506-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-delta","title":"gt-gastown-polecat-delta","description":"gt-gastown-polecat-delta\n\nrole_type: polecat\nrig: gastown\nagent_state: spawning\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: null","status":"tombstone","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:41:39.879592-08:00","created_by":"mayor","updated_at":"2025-12-29T21:45:13.792554-08:00","deleted_at":"2025-12-29T21:45:13.792554-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-dementus","title":"gt-gastown-polecat-dementus","description":"gt-gastown-polecat-dementus\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-lfi2d\nrole_bead: gt-polecat-role\ncleanup_status: clean","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:43:05.226023-08:00","created_by":"mayor","updated_at":"2025-12-30T22:06:12.820853-08:00","closed_at":"2025-12-30T18:51:01.092367-08:00","close_reason":"nuked","deleted_at":"2025-12-30T18:51:01.059159-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-furiosa","title":"gt-gastown-polecat-furiosa","description":"gt-gastown-polecat-furiosa\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-csbjj\nrole_bead: gt-polecat-role\ncleanup_status: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:50.716414-08:00","created_by":"mayor","updated_at":"2025-12-30T21:56:06.165009-08:00","closed_at":"2025-12-30T20:45:22.954133-08:00","close_reason":"nuked","deleted_at":"2025-12-30T20:45:22.918083-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-dementus","title":"gt-gastown-polecat-dementus","description":"gt-gastown-polecat-dementus\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-lfi2d\nrole_bead: gt-polecat-role\ncleanup_status: clean","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:43:05.226023-08:00","created_by":"mayor","updated_at":"2025-12-30T22:11:46.833771-08:00","closed_at":"2025-12-30T18:51:01.092367-08:00","close_reason":"nuked","deleted_at":"2025-12-30T18:51:01.059159-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-furiosa","title":"gt-gastown-polecat-furiosa","description":"gt-gastown-polecat-furiosa\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-csbjj\nrole_bead: gt-polecat-role\ncleanup_status: clean","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:50.716414-08:00","created_by":"mayor","updated_at":"2025-12-30T22:13:57.679319-08:00","closed_at":"2025-12-30T20:45:22.954133-08:00","close_reason":"nuked","deleted_at":"2025-12-30T20:45:22.918083-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-imperator","title":"gt-gastown-polecat-imperator","description":"gt-gastown-polecat-imperator\n\nrole_type: polecat\nrig: gastown\nagent_state: spawning\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-30T06:47:59.120921-08:00","created_by":"mayor","updated_at":"2025-12-30T15:19:19.701626-08:00","closed_at":"2025-12-30T15:19:19.701626-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:19.666508-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-keeper","title":"gt-gastown-polecat-keeper","description":"gt-gastown-polecat-keeper\n\nrole_type: polecat\nrig: gastown\nagent_state: done\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:59:02.304059-08:00","created_by":"mayor","updated_at":"2025-12-30T15:19:19.894024-08:00","closed_at":"2025-12-30T15:19:19.894024-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:19.826929-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-morsov","title":"gt-gastown-polecat-morsov","description":"gt-gastown-polecat-morsov\n\nrole_type: polecat\nrig: gastown\nagent_state: done\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:59:41.438694-08:00","created_by":"mayor","updated_at":"2025-12-30T15:19:20.061569-08:00","closed_at":"2025-12-30T15:19:20.061569-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:20.026998-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-nux","title":"gt-gastown-polecat-nux","description":"gt-gastown-polecat-nux\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-s94gq\nrole_bead: gt-polecat-role\ncleanup_status: clean","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:53.302196-08:00","created_by":"mayor","updated_at":"2025-12-30T21:56:09.778743-08:00","closed_at":"2025-12-30T20:45:23.096803-08:00","close_reason":"nuked","deleted_at":"2025-12-30T20:45:23.064185-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-nux","title":"gt-gastown-polecat-nux","description":"gt-gastown-polecat-nux\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-s94gq\nrole_bead: gt-polecat-role\ncleanup_status: clean","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:53.302196-08:00","created_by":"mayor","updated_at":"2025-12-30T22:07:01.797917-08:00","closed_at":"2025-12-30T20:45:23.096803-08:00","close_reason":"nuked","deleted_at":"2025-12-30T20:45:23.064185-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-organic","title":"gt-gastown-polecat-organic","description":"gt-gastown-polecat-organic\n\nrole_type: polecat\nrig: gastown\nagent_state: spawning\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-30T06:48:03.048759-08:00","created_by":"mayor","updated_at":"2025-12-30T15:19:20.355896-08:00","closed_at":"2025-12-30T15:19:20.355896-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:20.321057-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-rictus","title":"gt-gastown-polecat-rictus","description":"gt-gastown-polecat-rictus\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-u4fh\nrole_bead: gt-polecat-role\ncleanup_status: has_uncommitted","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:58.123296-08:00","created_by":"mayor","updated_at":"2025-12-30T22:02:38.737224-08:00","closed_at":"2025-12-30T18:51:12.930788-08:00","close_reason":"nuked","deleted_at":"2025-12-30T18:51:12.894415-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-slit","title":"gt-gastown-polecat-slit","description":"gt-gastown-polecat-slit\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-bho9\nrole_bead: gt-polecat-role\ncleanup_status: clean","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:55.706657-08:00","created_by":"mayor","updated_at":"2025-12-30T21:56:13.696314-08:00","closed_at":"2025-12-30T20:45:23.234895-08:00","close_reason":"nuked","deleted_at":"2025-12-30T20:45:23.201971-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-rictus","title":"gt-gastown-polecat-rictus","description":"gt-gastown-polecat-rictus\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-u4fh\nrole_bead: gt-polecat-role\ncleanup_status: clean","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:58.123296-08:00","created_by":"mayor","updated_at":"2025-12-30T22:14:02.190309-08:00","closed_at":"2025-12-30T18:51:12.930788-08:00","close_reason":"nuked","deleted_at":"2025-12-30T18:51:12.894415-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-slit","title":"gt-gastown-polecat-slit","description":"gt-gastown-polecat-slit\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-bho9\nrole_bead: gt-polecat-role\ncleanup_status: clean","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:55.706657-08:00","created_by":"mayor","updated_at":"2025-12-30T22:13:56.847883-08:00","closed_at":"2025-12-30T20:45:23.234895-08:00","close_reason":"nuked","deleted_at":"2025-12-30T20:45:23.201971-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-testcat","title":"gt-gastown-polecat-testcat","description":"gt-gastown-polecat-testcat\n\nrole_type: polecat\nrig: gastown\nagent_state: spawning\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: clean","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-30T21:08:56.626354-08:00","created_by":"mayor","updated_at":"2025-12-30T21:21:39.417837-08:00","closed_at":"2025-12-30T21:21:39.417837-08:00","close_reason":"nuked","deleted_at":"2025-12-30T21:21:39.384762-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-testcat2","title":"gt-gastown-polecat-testcat2","description":"gt-gastown-polecat-testcat2\n\nrole_type: polecat\nrig: gastown\nagent_state: spawning\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: null","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-30T21:11:16.694944-08:00","created_by":"mayor","updated_at":"2025-12-30T21:12:32.208764-08:00","closed_at":"2025-12-30T21:12:32.208764-08:00","close_reason":"nuked","deleted_at":"2025-12-30T21:12:32.174469-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-testcat3","title":"gt-gastown-polecat-testcat3","description":"gt-gastown-polecat-testcat3\n\nrole_type: polecat\nrig: gastown\nagent_state: spawning\nhook_bead: null\nrole_bead: gt-polecat-role\ncleanup_status: null","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-30T21:12:32.314957-08:00","created_by":"mayor","updated_at":"2025-12-30T21:14:37.495375-08:00","closed_at":"2025-12-30T21:14:37.495375-08:00","close_reason":"nuked","deleted_at":"2025-12-30T21:14:37.459921-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
@@ -1233,6 +1235,7 @@
|
||||
{"id":"gt-gcnnr","title":"Add logging for silently ignored errors","description":"attached_args: Add logging for silently ignored errors\n\nAdd logging for silently ignored errors.\n\n## Problem\nMany places use `_ =` pattern to ignore errors without any logging, making debugging difficult.\n\n## Files to modify\n- internal/cmd/start.go (lines 167, 322-323, 429, 747-753, 886-888)\n- internal/cmd/polecat.go (search for `_ =`)\n- internal/session/manager.go (lines 140-154)\n- internal/refinery/manager.go (line 399)\n- internal/keepalive/keepalive.go (document as intentional)\n\n## Implementation options\n\n### Option A: Add comments explaining safety\n```go\n_ = m.saveState(ref) // Non-fatal: state will be recreated on next run\n```\n\n### Option B: Log warnings (preferred for important operations)\n```go\nif err := m.saveState(ref); err != nil {\n log.Printf(\"warning: failed to save state: %v\", err)\n}\n```\n\n## Guidelines\n- Use logging for: state saves, config writes, cleanup operations\n- Use comments for: truly benign operations (e.g., closing already closed file)\n- keepalive is intentionally best-effort - add package-level comment\n\n## Acceptance criteria\n- [ ] All `_ =` in start.go have comment OR logging\n- [ ] All `_ =` in session/manager.go have comment OR logging \n- [ ] refinery/manager.go:399 has logging\n- [ ] keepalive package has doc comment explaining best-effort design\n- [ ] grep '`_ =`' shows all have justification\n- [ ] go build ./... passes","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T15:43:13.787806-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-28T16:40:19.539625-08:00","closed_at":"2025-12-28T16:40:19.539625-08:00"}
|
||||
{"id":"gt-gczi","title":"Digest: mol-deacon-patrol","description":"Patrol 20 - handoff threshold reached","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T23:11:34.570635-08:00","updated_at":"2025-12-27T21:26:04.408676-08:00","deleted_at":"2025-12-27T21:26:04.408676-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-gdbcb","title":"Merge: rictus-1767141956287","description":"branch: polecat/rictus-1767141956287\ntarget: main\nsource_issue: rictus-1767141956287\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:47:36.872662-08:00","created_by":"gastown/polecats/rictus","updated_at":"2025-12-30T18:23:22.145399-08:00","closed_at":"2025-12-30T18:23:22.145399-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-gdc58","title":"Merge: furiosa-mjtj9d4g","description":"branch: polecat/furiosa-mjtj9d4g\ntarget: main\nsource_issue: furiosa-mjtj9d4g\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T22:13:57.386911-08:00","created_by":"gastown/polecats/furiosa","updated_at":"2025-12-30T22:13:57.386911-08:00"}
|
||||
{"id":"gt-gdhee","title":"Digest: mol-deacon-patrol","description":"Cycle 15: quiet, handoff for fresh context","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T13:24:00.135165-08:00","updated_at":"2025-12-28T13:24:00.135165-08:00","closed_at":"2025-12-28T13:24:00.135129-08:00"}
|
||||
{"id":"gt-ggmc","title":"Merge: gt-83k0","description":"branch: polecat/furiosa\ntarget: main\nsource_issue: gt-83k0\nrig: gastown","status":"tombstone","priority":1,"issue_type":"merge-request","created_at":"2025-12-22T23:36:24.551025-08:00","updated_at":"2025-12-27T21:27:22.518303-08:00","deleted_at":"2025-12-27T21:27:22.518303-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"merge-request"}
|
||||
{"id":"gt-ghh7q","title":"Digest: mol-deacon-patrol","description":"Patrol 20: Final before handoff, all healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T14:58:07.951302-08:00","updated_at":"2025-12-27T21:26:01.486022-08:00","deleted_at":"2025-12-27T21:26:01.486022-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -1375,6 +1378,7 @@
|
||||
{"id":"gt-i6xqu","title":"Merge: toast-1767146237529","description":"branch: polecat/toast-1767146237529\ntarget: main\nsource_issue: toast-1767146237529\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T18:03:32.882144-08:00","created_by":"gastown/polecats/toast","updated_at":"2025-12-30T18:23:22.104571-08:00","closed_at":"2025-12-30T18:23:22.104571-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-i73jh","title":"Digest: mol-deacon-patrol","description":"Patrol 11: all healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T21:57:41.693222-08:00","updated_at":"2025-12-27T21:26:00.524485-08:00","deleted_at":"2025-12-27T21:26:00.524485-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-i7eif","title":"Digest: mol-deacon-patrol","description":"Patrol 11: all clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T08:17:28.507015-08:00","updated_at":"2025-12-28T08:17:28.507015-08:00","closed_at":"2025-12-28T08:17:28.506983-08:00"}
|
||||
{"id":"gt-i7q66","title":"Merge: rictus-mjtlq9xg","description":"branch: polecat/rictus-mjtlq9xg\ntarget: main\nsource_issue: rictus-mjtlq9xg\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T22:11:58.147223-08:00","created_by":"gastown/polecats/rictus","updated_at":"2025-12-30T22:11:58.147223-08:00"}
|
||||
{"id":"gt-i7tmd","title":"Merge: rictus-1767084016819","description":"branch: polecat/rictus-1767084016819\ntarget: main\nsource_issue: rictus-1767084016819\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T00:58:46.107892-08:00","created_by":"gastown/polecats/rictus","updated_at":"2025-12-30T01:01:27.168699-08:00","closed_at":"2025-12-30T01:01:27.168699-08:00","close_reason":"Already merged to main"}
|
||||
{"id":"gt-i7wcn","title":"Polecat sessions terminate unexpectedly during work","description":"During swarm bd-784c, polecat sessions (Toast, Nux) terminated mid-task without completing their work.\n\n**Observed:**\n- Polecats were actively working (edits in progress, tests running)\n- Sessions suddenly showed 'not running' in gt polecat status\n- tmux sessions existed but were empty/reset\n- Work was partially complete (some commits made, issue still open)\n\n**Impact:**\n- Lost work progress\n- Required manual intervention to restart\n- Unclear if work was saved/committed\n\n**Suggestion:**\n- Add session health monitoring\n- Auto-restart on unexpected termination\n- Log session exit reasons","status":"closed","priority":2,"issue_type":"bug","assignee":"gastown/polecats/toast","created_at":"2025-12-28T22:14:07.876275-08:00","created_by":"beads/crew/emma","updated_at":"2025-12-29T22:07:52.213183-08:00","closed_at":"2025-12-29T22:07:52.213183-08:00","close_reason":"Implemented session health monitoring and auto-restart for crashed polecats. Changes include: (1) daemon now proactively checks polecat session health and auto-restarts crashed sessions with work-on-hook, (2) added polecat support to lifecycle identity mapping, (3) added 'gt session check' command for manual health checking."}
|
||||
{"id":"gt-i9s7o","title":"Add tmux crash detection hooks","description":"Use tmux hooks to detect when agent panes die unexpectedly.\n\n## tmux Hooks to Use\n- pane-died: fires when a pane exits\n- session-closed: fires when session ends\n\n## Implementation\n```bash\nset-hook -g pane-died 'run-shell \"gt log pane-died #{pane_id} #{pane_dead_status}\"'\nset-hook -g session-closed 'run-shell \"gt log session-closed #{session_name}\"'\n```\n\n## Integration\n- gt spawn should set these hooks on agent sessions\n- Distinguish expected exits (handoff, done) from crashes\n- Capture last N lines of output on crash\n- Record exit code/signal for forensics\n\n## gt log crash command\n- Parse pane-died events\n- Show crash history\n- Filter by agent, time range","status":"tombstone","priority":1,"issue_type":"feature","created_at":"2025-12-26T15:29:40.899086-08:00","updated_at":"2025-12-27T21:29:45.882716-08:00","deleted_at":"2025-12-27T21:29:45.882716-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"}
|
||||
@@ -1541,6 +1545,7 @@
|
||||
{"id":"gt-keqh","title":"self-review","description":"Review your own changes. Look for:\n- Bugs and edge cases\n- Style issues\n- Missing error handling\n- Security concerns\n\nFix any issues found before proceeding.\n\nDepends: implement","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-21T21:56:18.535003-08:00","updated_at":"2025-12-25T15:52:43.900154-08:00","deleted_at":"2025-12-25T15:52:43.900154-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
{"id":"gt-ker6f","title":"Code review: await-signal command (gt-vdprb.1)","description":"Review the await-signal molecule step implementation in internal/cmd/molecule_await_signal.go","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/nux","created_at":"2025-12-29T22:20:37.388958-08:00","created_by":"gastown/refinery","updated_at":"2025-12-29T22:26:48.4853-08:00","closed_at":"2025-12-29T22:26:48.4853-08:00","close_reason":"Code review complete: ACCEPT. Implementation is functional and safe. Found minor issues: (1) incomplete backoff iteration tracking (Medium), (2) stub GetCurrentStepBackoff function (Low), (3) potential goroutine leak on edge cases (Low), (4) no stderr capture (Low). No security or crash issues. Backoff enhancement can be filed as follow-up if needed.","dependencies":[{"issue_id":"gt-ker6f","depends_on_id":"gt-2ocgh","type":"blocks","created_at":"2025-12-29T22:21:05.105719-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-kfznm","title":"Refinery: Send MERGED notification to witness after merge","description":"During liftoff test (gt-j0gx2), observed that refinery:\n1. Received MERGE_READY for nux\n2. Fetched, rebased, resolved conflicts correctly\n3. Ran tests (passed)\n4. Merged to main and pushed\n5. Deleted polecat branch\n\nBut did NOT:\n- Send MERGED mail to witness\n- Close the MR bead (gt-5qkah)\n\nThe mol-refinery-patrol.formula.toml documents this step but the agent didn't execute it.\n\nImpact:\n- Witness never receives MERGED signal\n- Polecat worktree never gets nuked\n- MR beads accumulate as open\n\nFix:\nAfter successful merge+push, refinery must:\n```bash\ngt mail send \u003crig\u003e/witness -s \"MERGED \u003cpolecat\u003e\" -m \"...\"\nbd close \u003cmr-bead\u003e --reason \"Merged to main\"\n```","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-28T16:26:08.423116-08:00","created_by":"stevey","updated_at":"2025-12-28T16:30:17.040435-08:00","closed_at":"2025-12-28T16:30:17.040435-08:00"}
|
||||
{"id":"gt-kg3ch","title":"Merge: rictus-mjtlq9xg","description":"branch: polecat/rictus-mjtlq9xg\ntarget: main\nsource_issue: rictus-mjtlq9xg\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T22:13:07.399371-08:00","created_by":"gastown/polecats/rictus","updated_at":"2025-12-30T22:13:07.399371-08:00"}
|
||||
{"id":"gt-kg4ne","title":"Digest: mol-deacon-patrol","description":"Patrol 17: All healthy, 2 mayor handoffs observed","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T18:39:00.24628-08:00","updated_at":"2025-12-27T21:26:02.805903-08:00","deleted_at":"2025-12-27T21:26:02.805903-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-kgk5.1","title":"Polecat Arm (arm-toast)","description":"Single polecat inspection and action cycle.\n\nThis molecule is bonded dynamically by mol-witness-patrol's survey-workers step.\nEach polecat being monitored gets one arm that runs in parallel with other arms.\n\n## Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| polecat_name | Yes | Name of the polecat to inspect |\n| rig | Yes | Rig containing the polecat |\n\n## Step: capture\nCapture recent tmux output for toast.\n\n```bash\ntmux capture-pane -t gt-gastown-toast -p | tail -50\n```\n\nRecord:\n- Last activity timestamp (when was last tool call?)\n- Visible errors or stack traces\n- Completion indicators (\"Done\", \"Finished\", etc.)\n\n## Step: assess\nCategorize polecat state based on captured output.\n\nStates:\n- **working**: Recent tool calls, active processing\n- **idle**: At prompt, no recent activity\n- **error**: Showing errors or stack traces\n- **requesting_shutdown**: Sent LIFECYCLE/Shutdown mail\n- **done**: Showing completion indicators\n\nCalculate: minutes since last activity.\nNeeds: capture\n\n## Step: load-history\nRead nudge history for toast from patrol state.\n\n```\nnudge_count = state.nudges[toast].count\nlast_nudge_time = state.nudges[toast].timestamp\n```\n\nThis data was loaded by the parent patrol's load-state step and passed\nto the arm via the bonding context.\nNeeds: assess\n\n## Step: decide\nApply the nudge matrix to determine action for toast.\n\n| State | Idle Time | Nudge Count | Action |\n|-------|-----------|-------------|--------|\n| working | any | any | none |\n| idle | \u003c10min | any | none |\n| idle | 10-15min | 0 | nudge-1 (gentle) |\n| idle | 15-20min | 1 | nudge-2 (direct) |\n| idle | 20+min | 2 | nudge-3 (final) |\n| idle | any | 3 | escalate |\n| error | any | any | assess-severity |\n| requesting_shutdown | any | any | pre-kill-verify |\n| done | any | any | pre-kill-verify |\n\nNudge text:\n1. \"How's progress? Need any help?\"\n2. \"Please wrap up soon. What's blocking you?\"\n3. \"Final check. Will escalate in 5 min if no response.\"\n\nRecord decision and rationale.\nNeeds: load-history\n\n## Step: execute\nTake the decided action for toast.\n\n**nudge-N**:\n```bash\ntmux send-keys -t gt-gastown-toast \"{{nudge_text}}\" Enter\n```\n\n**pre-kill-verify**:\n```bash\ncd polecats/toast\ngit status # Must be clean\ngit log origin/main..HEAD # Check for unpushed\nbd show \u003cassigned-issue\u003e # Verify closed/deferred\n```\nIf clean: kill session, remove worktree, delete branch\nIf dirty: record failure, retry next cycle\n\n**escalate**:\n```bash\ngt mail send mayor/ -s \"Escalation: toast stuck\" -m \"...\"\n```\n\n**none**: No action needed.\n\nRecord: action taken, result, updated nudge count.\nNeeds: decide\n\n## Output\n\nThe arm completes with:\n- action_taken: none | nudge-1 | nudge-2 | nudge-3 | killed | escalated\n- result: success | failed | pending\n- updated_state: New nudge count and timestamp for toast\n\nThis data feeds back to the parent patrol's aggregate step.\n---\nbonded_from: mol-polecat-arm\nbonded_to: gt-kgk5\nbonded_ref: arm-toast\nbonded_at: 2025-12-23T10:00:00Z\n","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T12:46:15.807528-08:00","updated_at":"2025-12-27T21:29:55.570225-08:00","deleted_at":"2025-12-27T21:29:55.570225-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-kgszr","title":"Parallel refinery: reduce merge queue bottleneck","description":"Single refinery processes MRs sequentially, causing backlog.\n\n## Problem\n- 12 swarms × 5 polecats = 60 MRs\n- Refinery: 1 merge at a time\n- Branches go stale waiting\n- Conflicts compound\n\n## Options\n\n### Option A: Multiple refinery workers\n- Spawn N refinery instances\n- Each claims MRs from queue\n- Risk: merge conflicts between concurrent merges\n\n### Option B: Integration branches\n- Polecats merge to integration/swarm-xxx first\n- Refinery merges integration branch to main\n- Reduces main contention\n\n### Option C: Batched merges\n- Refinery collects N MRs\n- Attempts octopus merge\n- Falls back to sequential on conflict\n\n### Recommendation\nStart with Option A (2-3 workers) with locking on main.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-30T19:08:02.664446-08:00","created_by":"mayor","updated_at":"2025-12-30T19:08:02.664446-08:00"}
|
||||
@@ -1605,7 +1610,7 @@
|
||||
{"id":"gt-l6ro3.1","title":"Daemon activity detection and rig nudging","description":"Daemon monitors activity feed and nudges patrol agents when commands detected.\n\n## Implementation\n\n1. Daemon watches activity feed (or logs) for gt/bd command execution\n2. Track per-rig last-activity timestamps\n3. On activity in rig: nudge witness + refinery for that rig\n4. Nudge clears their backoff → immediate poll\n\n## Activity Sources\n\n- gt commands (sling, mail, polecat, etc.)\n- bd commands (create, update, close, sync, etc.)\n- Maybe: file writes in rig directories\n\n## Graceful Behavior\n\n- If agent session not running: no-op (not an error)\n- Activity detection is best-effort\n- Backoff still works without this (just slower wake)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T22:31:24.266187-08:00","created_by":"mayor","updated_at":"2025-12-29T17:08:36.965815-08:00","closed_at":"2025-12-29T17:08:36.965815-08:00","close_reason":"Obsoleted by feed-based wake model (gt-vdprb). Agents subscribe directly to feed; daemon does not mediate activity detection.","dependencies":[{"issue_id":"gt-l6ro3.1","depends_on_id":"gt-l6ro3","type":"parent-child","created_at":"2025-12-28T22:31:24.266638-08:00","created_by":"daemon"},{"issue_id":"gt-l6ro3.1","depends_on_id":"gt-arjlu","type":"blocks","created_at":"2025-12-28T22:31:51.176239-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-l6ro3.2","title":"Deacon health pings clear agent backoff","description":"Deacon's periodic health checks also clear patrol agent backoff.\n\n## Current Flow (mol-deacon-patrol)\n\nDeacon already pings witnesses/refineries for health checks. These pings should:\n1. Verify agent is alive\n2. Clear their backoff as side effect\n\n## Implementation\n\nIn mol-deacon-patrol health-scan step:\n- gt nudge \u003crig\u003e/witness 'HEALTH_CHECK from deacon'\n- gt nudge \u003crig\u003e/refinery 'HEALTH_CHECK from deacon'\n\nReceiving agent:\n- Responds to prove liveness\n- Resets backoff to base interval\n\n## Ping Interval\n\nDeacon patrols every ~1-2 minutes. This ensures:\n- Maximum backoff is bounded by deacon ping interval\n- Even if daemon misses activity, deacon catches up","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/rictus","created_at":"2025-12-28T22:31:35.003984-08:00","created_by":"mayor","updated_at":"2025-12-30T22:00:46.924888-08:00","closed_at":"2025-12-30T22:00:46.924888-08:00","close_reason":"Added health ping nudges to mol-deacon-patrol health-scan step. These nudges clear agent backoff as a side effect, ensuring patrol agents remain responsive even during quiet periods.","dependencies":[{"issue_id":"gt-l6ro3.2","depends_on_id":"gt-l6ro3","type":"parent-child","created_at":"2025-12-28T22:31:35.004499-08:00","created_by":"daemon"},{"issue_id":"gt-l6ro3.2","depends_on_id":"gt-arjlu","type":"blocks","created_at":"2025-12-28T22:31:51.206694-08:00","created_by":"daemon"},{"issue_id":"gt-l6ro3.2","depends_on_id":"gt-vdprb.1","type":"blocks","created_at":"2025-12-29T17:09:33.31837-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-l6ro3.3","title":"Molecule await-signal step type","description":"Add await-signal as a molecule step type for patrol agents.\n\n## Step Definition\n\n```toml\n[[steps]]\nid = \"await-signal\"\ntype = \"wait\"\nbackoff = { base = \"30s\", multiplier = 2, max = \"10m\" }\ndescription = \"Wait for signal, then check reality\"\n```\n\n## Behavior\n\n1. Sleep for current backoff interval\n2. Wake immediately on nudge (or timeout expires)\n3. Proceed to next step (check-reality)\n4. If no work found, loop back with increased backoff\n5. If work found, reset backoff to base\n\n## Implementation Options\n\nA. Formula-level: Define in TOML, agent interprets\nB. Code-level: Agent implements wait loop with backoff\n\nOption A is cleaner but needs formula parser support.\nOption B works now but less declarative.\n\n## Used By\n\n- mol-witness-patrol (first step)\n- mol-refinery-patrol (first step)","status":"closed","priority":1,"issue_type":"task","assignee":"gastown/polecats/furiosa","created_at":"2025-12-28T23:06:11.638803-08:00","created_by":"mayor","updated_at":"2025-12-29T18:04:21.290973-08:00","closed_at":"2025-12-29T18:04:21.290973-08:00","close_reason":"Implemented Type and Backoff fields in MoleculeStep with parsing support for await-signal step type","dependencies":[{"issue_id":"gt-l6ro3.3","depends_on_id":"gt-l6ro3","type":"parent-child","created_at":"2025-12-28T23:06:11.63931-08:00","created_by":"daemon"},{"issue_id":"gt-l6ro3.3","depends_on_id":"gt-vdprb","type":"parent-child","created_at":"2025-12-29T17:08:22.500906-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-l6ro3.4","title":"Deacon stuck-session detection and force-kill protocol","description":"Deacon detects and kills genuinely stuck/hung Claude Code sessions.\n\n## The Problem\n\nClaude Code sessions can get stuck:\n- Infinite loop / hung tool call\n- Crashed but tmux session still exists\n- Unresponsive to nudges\n\n`gt rig boot` is idempotent (won't kill) - it only starts if not running.\nSomeone needs to detect stuck sessions and force-kill them.\n\n## Detection Protocol\n\nDuring Deacon health rounds:\n\n1. **Ping test**: `gt nudge \u003cagent\u003e 'HEALTH_CHECK'`\n2. **Wait for response**: Agent should update agent bead `last_activity`\n3. **Timeout**: If no activity update within N seconds, mark suspicious\n4. **Consecutive failures**: After M consecutive failures, declare stuck\n\n## Force-Kill Protocol\n\nWhen stuck detected:\n\n```bash\n# 1. Log the intervention\ngt mail send \u003cagent\u003e -s 'FORCE_KILL: unresponsive' -m 'Deacon detected...'\n\n# 2. Kill the tmux session\ntmux kill-session -t \u003csession-name\u003e\n\n# 3. Update agent bead state\nbd update \u003cagent-bead\u003e --status=killed --reason='Deacon force-kill: unresponsive'\n\n# 4. Notify mayor (optional, for visibility)\ngt mail send mayor/ -s 'Agent killed: \u003cagent\u003e' -m 'Reason: unresponsive...'\n```\n\n## Recovery\n\nAfter force-kill, the agent is 'asleep'. Normal wake mechanisms apply:\n- `gt rig boot` restarts it\n- Or stays asleep until next activity trigger\n\n## Parameters (configurable)\n\n- ping_timeout: 30s (how long to wait for response)\n- consecutive_failures: 3 (how many before force-kill)\n- cooldown: 5m (minimum time between force-kills of same agent)\n\n## NOT Deacon's Job\n\n- Graceful shutdown (agent does this itself)\n- Context-based recycling (agent self-handoffs)\n- Normal backoff/sleep transitions\n\nDeacon only force-kills when agent is genuinely unresponsive.","status":"hooked","priority":2,"issue_type":"task","assignee":"gastown/polecats/slit","created_at":"2025-12-28T23:09:21.694807-08:00","created_by":"mayor","updated_at":"2025-12-30T00:27:39.890394-08:00","dependencies":[{"issue_id":"gt-l6ro3.4","depends_on_id":"gt-l6ro3","type":"parent-child","created_at":"2025-12-28T23:09:21.695345-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-l6ro3.4","title":"Deacon stuck-session detection and force-kill protocol","description":"Deacon detects and kills genuinely stuck/hung Claude Code sessions.\n\n## The Problem\n\nClaude Code sessions can get stuck:\n- Infinite loop / hung tool call\n- Crashed but tmux session still exists\n- Unresponsive to nudges\n\n`gt rig boot` is idempotent (won't kill) - it only starts if not running.\nSomeone needs to detect stuck sessions and force-kill them.\n\n## Detection Protocol\n\nDuring Deacon health rounds:\n\n1. **Ping test**: `gt nudge \u003cagent\u003e 'HEALTH_CHECK'`\n2. **Wait for response**: Agent should update agent bead `last_activity`\n3. **Timeout**: If no activity update within N seconds, mark suspicious\n4. **Consecutive failures**: After M consecutive failures, declare stuck\n\n## Force-Kill Protocol\n\nWhen stuck detected:\n\n```bash\n# 1. Log the intervention\ngt mail send \u003cagent\u003e -s 'FORCE_KILL: unresponsive' -m 'Deacon detected...'\n\n# 2. Kill the tmux session\ntmux kill-session -t \u003csession-name\u003e\n\n# 3. Update agent bead state\nbd update \u003cagent-bead\u003e --status=killed --reason='Deacon force-kill: unresponsive'\n\n# 4. Notify mayor (optional, for visibility)\ngt mail send mayor/ -s 'Agent killed: \u003cagent\u003e' -m 'Reason: unresponsive...'\n```\n\n## Recovery\n\nAfter force-kill, the agent is 'asleep'. Normal wake mechanisms apply:\n- `gt rig boot` restarts it\n- Or stays asleep until next activity trigger\n\n## Parameters (configurable)\n\n- ping_timeout: 30s (how long to wait for response)\n- consecutive_failures: 3 (how many before force-kill)\n- cooldown: 5m (minimum time between force-kills of same agent)\n\n## NOT Deacon's Job\n\n- Graceful shutdown (agent does this itself)\n- Context-based recycling (agent self-handoffs)\n- Normal backoff/sleep transitions\n\nDeacon only force-kills when agent is genuinely unresponsive.","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/slit","created_at":"2025-12-28T23:09:21.694807-08:00","created_by":"mayor","updated_at":"2025-12-30T22:11:13.044466-08:00","closed_at":"2025-12-30T22:11:13.044466-08:00","close_reason":"Implemented stuck-session detection and force-kill protocol with new commands: health-check, force-kill, health-state","dependencies":[{"issue_id":"gt-l6ro3.4","depends_on_id":"gt-l6ro3","type":"parent-child","created_at":"2025-12-28T23:09:21.695345-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-l7cd","title":"Work on gt-role-template: Refine witness/CLAUDE.md role t...","description":"Work on gt-role-template: Refine witness/CLAUDE.md role template. See issue for details. Run 'bd show gt-role-template' to see the full issue.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-20T03:47:29.414394-08:00","updated_at":"2025-12-27T21:29:56.822691-08:00","deleted_at":"2025-12-27T21:29:56.822691-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-l7uyu","title":"Digest: mol-deacon-patrol","description":"Patrol 6: nominal","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T19:31:17.646933-08:00","updated_at":"2025-12-27T21:26:00.813023-08:00","deleted_at":"2025-12-27T21:26:00.813023-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-l8fp7","title":"Digest: mol-deacon-patrol","description":"Patrol 1: inbox clear, gates clear, no pending spawns, witnesses/refineries healthy, no orphans","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T15:49:38.09038-08:00","updated_at":"2025-12-28T15:49:38.09038-08:00","closed_at":"2025-12-28T15:49:38.090344-08:00"}
|
||||
@@ -1663,6 +1668,7 @@
|
||||
{"id":"gt-lwuu.1","title":"load-context","description":"Run gt prime and bd prime. Verify issue assignment.\nCheck inbox for any relevant messages.\n\nRead the assigned issue ({{issue}}) and understand the requirements.\nIdentify any blockers or missing information.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-21T21:47:23.880531-08:00","updated_at":"2025-12-25T11:45:02.114796-08:00","dependencies":[{"issue_id":"gt-lwuu.1","depends_on_id":"gt-lwuu","type":"parent-child","created_at":"2025-12-21T21:47:23.882049-08:00","created_by":"daemon"}],"deleted_at":"2025-12-25T11:45:02.114796-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
{"id":"gt-lwuu.2","title":"implement","description":"Implement the solution for {{issue}}. Follow codebase conventions.\nFile discovered work as new issues with bd create.\n\nMake regular commits with clear messages.\nKeep changes focused on the assigned issue.\n\nDepends: load-context","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-21T21:47:46.876765-08:00","updated_at":"2025-12-25T11:45:02.114796-08:00","dependencies":[{"issue_id":"gt-lwuu.2","depends_on_id":"gt-lwuu","type":"parent-child","created_at":"2025-12-21T21:47:46.878332-08:00","created_by":"daemon"},{"issue_id":"gt-lwuu.2","depends_on_id":"gt-lwuu.1","type":"blocks","created_at":"2025-12-21T21:48:04.4865-08:00","created_by":"daemon"}],"deleted_at":"2025-12-25T11:45:02.114796-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
{"id":"gt-lx3n","title":"Witness startup: bond mol-witness-patrol on start","description":"Wire up Witness to automatically bond its patrol molecule on startup.\n\n## Desired behavior\nOn Witness session start:\n1. gt prime detects RoleWitness\n2. Check for existing in-progress patrol\n3. If found: resume from current step\n4. If not found: bd mol bond mol-witness-patrol --wisp\n5. Output patrol context to agent\n\n## Depends on\n- gt-83k0 (mol-witness-patrol definition)\n- gt-caih (handoff bead state persistence)","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-22T16:43:42.840567-08:00","updated_at":"2025-12-27T21:25:59.928119-08:00","dependencies":[{"issue_id":"gt-lx3n","depends_on_id":"gt-83k0","type":"blocks","created_at":"2025-12-22T16:43:59.685455-08:00","created_by":"daemon"},{"issue_id":"gt-lx3n","depends_on_id":"gt-caih","type":"blocks","created_at":"2025-12-22T16:43:59.760763-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:25:59.928119-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-lxdn7","title":"Witness: Reduce chattiness, increase autonomy","description":"Witness is spamming Mayor with routine status:\n- 'Polecat X processed' - routine, no action needed\n- 'Idle polecats: X needs work' - wrong direction\n\nWitness should be a local sheriff:\n1. Handle routine lifecycle autonomously (don't report)\n2. Only escalate genuine problems requiring human/mayor intervention\n3. Use convoy system for batch 'work complete' notifications\n4. Never ask Mayor to assign work - either do it yourself or let polecats idle\n\nRemove these mail types:\n- POLECAT_PROCESSED (routine)\n- IDLE_POLECAT (wrong escalation direction)\n\nKeep these:\n- ESCALATION (genuine problem)\n- BLOCKED (needs human decision)\n- CRASH_RECOVERY (informational, useful)","status":"closed","priority":1,"issue_type":"task","assignee":"gastown/polecats/dag","created_at":"2025-12-30T22:08:55.915459-08:00","created_by":"mayor","updated_at":"2025-12-30T22:14:50.23626-08:00","closed_at":"2025-12-30T22:14:50.23626-08:00","close_reason":"Implemented: Removed routine POLECAT_PROCESSED and WITNESS_REPORT/REFINERY_REPORT mail types. Witness now handles lifecycle autonomously, only escalating genuine problems."}
|
||||
{"id":"gt-lxn1c","title":"Digest: mol-deacon-patrol","description":"Patrol 9: Quick cycle, all quiet","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T17:07:03.19311-08:00","updated_at":"2025-12-27T21:26:02.984243-08:00","deleted_at":"2025-12-27T21:26:02.984243-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-lxsw","title":"gt done: Command doesn't exist but documented in polecat CLAUDE.md","notes":"The polecat CLAUDE.md documents 'gt done' as the command to signal work is ready for merge queue, but running it gives 'unknown command'. Either implement the command or update the documentation.","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-20T07:59:44.548479-08:00","updated_at":"2025-12-27T21:29:56.769402-08:00","deleted_at":"2025-12-27T21:29:56.769402-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-lxv2z","title":"Digest: mol-deacon-patrol","description":"Patrol 20: routine, handing off","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T10:20:25.378692-08:00","updated_at":"2025-12-27T21:26:03.503292-08:00","deleted_at":"2025-12-27T21:26:03.503292-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -1672,6 +1678,7 @@
|
||||
{"id":"gt-lzlee","title":"Digest: mol-deacon-patrol","description":"Patrol 16: nominal","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T19:36:01.407687-08:00","updated_at":"2025-12-27T21:26:00.727181-08:00","deleted_at":"2025-12-27T21:26:00.727181-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-m08q4","title":"Digest: mol-deacon-patrol","description":"Patrol 19: routine","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T13:45:59.707981-08:00","updated_at":"2025-12-25T13:45:59.707981-08:00","closed_at":"2025-12-25T13:45:59.707951-08:00"}
|
||||
{"id":"gt-m0fx.1","title":"Polecat Arm (arm-toast)","description":"Single polecat inspection and action cycle.\n\nThis molecule is bonded dynamically by mol-witness-patrol's survey-workers step.\nEach polecat being monitored gets one arm that runs in parallel with other arms.\n\n## Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| polecat_name | Yes | Name of the polecat to inspect |\n| rig | Yes | Rig containing the polecat |\n\n## Step: capture\nCapture recent tmux output for toast.\n\n```bash\ntmux capture-pane -t gt-gastown-toast -p | tail -50\n```\n\nRecord:\n- Last activity timestamp (when was last tool call?)\n- Visible errors or stack traces\n- Completion indicators (\"Done\", \"Finished\", etc.)\n\n## Step: assess\nCategorize polecat state based on captured output.\n\nStates:\n- **working**: Recent tool calls, active processing\n- **idle**: At prompt, no recent activity\n- **error**: Showing errors or stack traces\n- **requesting_shutdown**: Sent LIFECYCLE/Shutdown mail\n- **done**: Showing completion indicators\n\nCalculate: minutes since last activity.\nNeeds: capture\n\n## Step: load-history\nRead nudge history for toast from patrol state.\n\n```\nnudge_count = state.nudges[toast].count\nlast_nudge_time = state.nudges[toast].timestamp\n```\n\nThis data was loaded by the parent patrol's load-state step and passed\nto the arm via the bonding context.\nNeeds: assess\n\n## Step: decide\nApply the nudge matrix to determine action for toast.\n\n| State | Idle Time | Nudge Count | Action |\n|-------|-----------|-------------|--------|\n| working | any | any | none |\n| idle | \u003c10min | any | none |\n| idle | 10-15min | 0 | nudge-1 (gentle) |\n| idle | 15-20min | 1 | nudge-2 (direct) |\n| idle | 20+min | 2 | nudge-3 (final) |\n| idle | any | 3 | escalate |\n| error | any | any | assess-severity |\n| requesting_shutdown | any | any | pre-kill-verify |\n| done | any | any | pre-kill-verify |\n\nNudge text:\n1. \"How's progress? Need any help?\"\n2. \"Please wrap up soon. What's blocking you?\"\n3. \"Final check. Will escalate in 5 min if no response.\"\n\nRecord decision and rationale.\nNeeds: load-history\n\n## Step: execute\nTake the decided action for toast.\n\n**nudge-N**:\n```bash\ntmux send-keys -t gt-gastown-toast \"{{nudge_text}}\" Enter\n```\n\n**pre-kill-verify**:\n```bash\ncd polecats/toast\ngit status # Must be clean\ngit log origin/main..HEAD # Check for unpushed\nbd show \u003cassigned-issue\u003e # Verify closed/deferred\n```\nIf clean: kill session, remove worktree, delete branch\nIf dirty: record failure, retry next cycle\n\n**escalate**:\n```bash\ngt mail send mayor/ -s \"Escalation: toast stuck\" -m \"...\"\n```\n\n**none**: No action needed.\n\nRecord: action taken, result, updated nudge count.\nNeeds: decide\n\n## Output\n\nThe arm completes with:\n- action_taken: none | nudge-1 | nudge-2 | nudge-3 | killed | escalated\n- result: success | failed | pending\n- updated_state: New nudge count and timestamp for toast\n\nThis data feeds back to the parent patrol's aggregate step.\n---\nbonded_from: mol-polecat-arm\nbonded_to: gt-m0fx\nbonded_ref: arm-toast\nbonded_at: 2025-12-23T10:00:00Z\n","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-23T23:28:07.781991-08:00","updated_at":"2025-12-27T21:29:55.645876-08:00","deleted_at":"2025-12-27T21:29:55.645876-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-m3513","title":"Merge: dementus-mjtlqmya","description":"branch: polecat/dementus-mjtlqmya\ntarget: main\nsource_issue: dementus-mjtlqmya\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T22:11:46.56253-08:00","created_by":"gastown/polecats/dementus","updated_at":"2025-12-30T22:11:46.56253-08:00"}
|
||||
{"id":"gt-m3hh","title":"Merge: gt-7hor","description":"branch: polecat/slit\ntarget: main\nsource_issue: gt-7hor\nrig: gastown","status":"tombstone","priority":2,"issue_type":"merge-request","created_at":"2025-12-22T12:32:43.108463-08:00","updated_at":"2025-12-27T21:27:22.869876-08:00","deleted_at":"2025-12-27T21:27:22.869876-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"merge-request"}
|
||||
{"id":"gt-m46z2","title":"Digest: mol-deacon-patrol","description":"Patrol 15: all quiet","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T22:39:09.102076-08:00","updated_at":"2025-12-27T21:26:00.32059-08:00","deleted_at":"2025-12-27T21:26:00.32059-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-m5m4o","title":"Merge: furiosa-1767073359963","description":"attached_args: Code review this merge request\n\nbranch: polecat/furiosa-1767073359963\ntarget: main\nsource_issue: furiosa-1767073359963\nrig: gastown","notes":"REVIEW REJECTED by rictus: Commits claim await-signal but no such code exists. Feature removals conflict with rictus branch quality-level work. Needs clarification and reconciliation.","status":"closed","priority":2,"issue_type":"merge-request","assignee":"gastown/polecats/rictus","created_at":"2025-12-29T21:58:58.192817-08:00","created_by":"gastown/polecats/furiosa","updated_at":"2025-12-29T23:55:11.903116-08:00","closed_at":"2025-12-29T23:55:11.903116-08:00","close_reason":"Stale MR from nuked polecat"}
|
||||
@@ -2077,6 +2084,7 @@
|
||||
{"id":"gt-ronyn","title":"CRITICAL: gt doctor orphan-processes kills active crew sessions","description":"## Problem\n\nThe deacon's patrol runs `gt doctor --fix` which includes an orphan-processes check. This check is incorrectly identifying ACTIVE crew sessions as orphaned and killing them.\n\n## Impact\n\n- Crew workers are being killed mid-session\n- Work is lost\n- The deacon is currently disabled until this is fixed\n\n## Root Cause\n\nThe orphan-processes detection logic in `internal/doctor/` doesn't properly identify crew workers. It likely:\n1. Doesn't recognize the `gt-\u003crig\u003e-\u003cname\u003e` session pattern for crew\n2. Or misidentifies the Claude process as orphaned when it has a valid tmux parent\n\n## Workaround\n\nThe patrol formula was updated to instruct deacon not to run `--fix` if orphan-processes reports any PIDs. But this workaround failed - the deacon still killed crew.\n\n## Fix Required\n\n1. Update `internal/doctor/identity_check.go` or `branch_check.go` to properly detect crew sessions\n2. Add crew session patterns to the valid session detection\n3. Add test coverage for crew worker scenarios\n\n## Files\n\n- internal/doctor/identity_check.go\n- internal/doctor/branch_check.go \n- internal/cmd/doctor.go\n\n## Related\n\n- Commit 3452b041 attempted to fix via formula instructions but failed\n- The digest hq-yedg claimed to file gt-vj5zc but never did","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-27T00:14:05.870126-08:00","created_by":"deacon","updated_at":"2025-12-27T21:29:45.789954-08:00","deleted_at":"2025-12-27T21:29:45.789954-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-rp0f4","title":"Digest: mol-deacon-patrol","description":"Patrol 6: all clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T11:04:58.835959-08:00","updated_at":"2025-12-25T11:04:58.835959-08:00","closed_at":"2025-12-25T11:04:58.835926-08:00"}
|
||||
{"id":"gt-rp0k","title":"Extend auto-continue to polecats (not just crew)","description":"gt prime currently only outputs AUTO-CONTINUE MODE for crew workers.\nPolecats with attached work should also auto-continue.\n\n## Current behavior\noutputCrewAttachmentStatus() in prime.go:\n- Only runs for RoleCrew\n- Outputs '→ AUTO-CONTINUE MODE' when attached work detected\n\n## Desired behavior\n- Rename to outputAttachmentStatus() or similar\n- Run for RoleCrew AND RolePolecat\n- Same directive: if attachment exists, work immediately\n\n## The Propulsion Principle\n'If you find something on your hook, YOU RUN IT.'\n\nThis applies to ALL workers, not just crew.\n\n## Implementation\n1. Extend role check in outputCrewAttachmentStatus()\n2. Adjust assignee detection for polecats vs crew\n3. Test with both worker types","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-22T16:43:22.149252-08:00","updated_at":"2025-12-27T21:29:53.166587-08:00","deleted_at":"2025-12-27T21:29:53.166587-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-rp5c4","title":"Merge: gt-svdsy","description":"branch: polecat/capable-mjtltnm5\ntarget: main\nsource_issue: gt-svdsy\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T22:14:52.783005-08:00","created_by":"gastown/polecats/capable","updated_at":"2025-12-30T22:14:52.783005-08:00"}
|
||||
{"id":"gt-rpsu2","title":"Digest: mol-deacon-patrol","description":"Patrol 6: All healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T00:31:06.415769-08:00","updated_at":"2025-12-27T21:26:03.903011-08:00","deleted_at":"2025-12-27T21:26:03.903011-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-rqcd8","title":"gt crew remove: Does not close agent bead","description":"When running 'gt crew remove \u003cname\u003e', the command removes the crew workspace directory but does not close the associated agent bead (gt-\u003crig\u003e-crew-\u003cname\u003e).\n\nThis leaves orphaned agent beads in the system after crew removal.\n\nThe remove command should close the agent bead with a reason like 'Crew workspace removed'.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-29T14:56:30.57014-08:00","created_by":"stevey","updated_at":"2025-12-29T15:24:58.211563-08:00","closed_at":"2025-12-29T15:24:58.211563-08:00","close_reason":"Fixed in commit 5260a9c - crew remove now closes agent bead"}
|
||||
{"id":"gt-rr0en","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 14: All healthy - dag polecat started","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:28:15.860486-08:00","updated_at":"2025-12-30T16:28:15.860486-08:00","closed_at":"2025-12-30T16:28:15.860444-08:00","close_reason":"Squashed from 15 wisps","dependencies":[{"issue_id":"gt-rr0en","depends_on_id":"gt-eph-34a","type":"parent-child","created_at":"2025-12-30T16:28:15.861473-08:00","created_by":"deacon"}]}
|
||||
@@ -2150,7 +2158,7 @@
|
||||
{"id":"gt-sult","title":"gt spawn beads sync warning is misleading for redirect-based polecats","description":"## Problem\n\nWhen spawning a polecat, gt spawn shows a warning:\n```\nWarning: beads sync: exit status 1\n```\n\nThis is misleading because polecats using the redirect architecture (`.beads/redirect`) share the canonical database at `mayor/rig/.beads/beads.db`. The 'stale beads' indicated by the warning is just git branch divergence (main vs beads-sync), not actual data staleness.\n\n## Expected Behavior\n\ngt spawn should either:\n1. Skip the beads sync check for polecats using redirects (they share the canonical DB)\n2. Or provide a clearer message like 'beads redirect active, using shared database'\n\n## Reproduction\n\n```bash\ngt spawn --issue gt-xxx --rig gastown --create\n# Shows 'Warning: beads sync: exit status 1' even though beads are current\n```\n\n## Root Cause\n\nspawn.go calls beads sync and treats any non-zero exit as a warning. But with redirects, the polecat doesn't need its own beads - it uses the canonical source via the redirect chain:\n```\npolecat/.beads/redirect -\u003e ../../.beads -\u003e gastown/.beads/redirect -\u003e mayor/rig/.beads\n```\n\n## Fix Options\n\n1. Check for .beads/redirect before calling sync\n2. Have bd sync return 0 when redirect is present\n3. Suppress the warning in spawn when redirect exists","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-21T14:02:01.28061-08:00","updated_at":"2025-12-27T21:29:56.636475-08:00","deleted_at":"2025-12-27T21:29:56.636475-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-suuf","title":"check-refinery","description":"Ensure the refinery is alive and processing merge requests.\n\nNeeds: inbox-check","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T16:23:42.026349-08:00","updated_at":"2025-12-23T16:23:42.026349-08:00"}
|
||||
{"id":"gt-suvmb","title":"Digest: mol-deacon-patrol","description":"Patrol 18: All clear","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T16:43:56.468927-08:00","updated_at":"2025-12-27T21:26:03.066921-08:00","deleted_at":"2025-12-27T21:26:03.066921-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-svdsy","title":"Atomic gt done: all-or-nothing work submission","description":"gt done performs multiple operations that can partially fail.\n\n## Current Flow (non-atomic)\n1. Create MR bead ← can fail\n2. Send POLECAT_DONE mail ← can fail \n3. Update agent bead state ← can fail\n4. Report cleanup status ← can fail\n\nIf session dies mid-execution, state is inconsistent.\n\n## Fix Options\n\n### Option A: Retry on restart\n- Write intent file before starting\n- On polecat restart, check for incomplete gt done\n- Resume/retry from where it left off\n\n### Option B: Single-write submission\n- Create a single 'submission' bead that contains all info\n- Witness unpacks it into MR bead + cleanup wisp\n- Polecat only needs one successful write\n\n### Option C: Idempotent operations\n- Each step checks if already done before doing\n- Safe to re-run gt done multiple times\n\nRecommend Option C for simplicity.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T19:07:39.41034-08:00","created_by":"mayor","updated_at":"2025-12-30T19:07:39.41034-08:00"}
|
||||
{"id":"gt-svdsy","title":"Atomic gt done: all-or-nothing work submission","description":"gt done performs multiple operations that can partially fail.\n\n## Current Flow (non-atomic)\n1. Create MR bead ← can fail\n2. Send POLECAT_DONE mail ← can fail \n3. Update agent bead state ← can fail\n4. Report cleanup status ← can fail\n\nIf session dies mid-execution, state is inconsistent.\n\n## Fix Options\n\n### Option A: Retry on restart\n- Write intent file before starting\n- On polecat restart, check for incomplete gt done\n- Resume/retry from where it left off\n\n### Option B: Single-write submission\n- Create a single 'submission' bead that contains all info\n- Witness unpacks it into MR bead + cleanup wisp\n- Polecat only needs one successful write\n\n### Option C: Idempotent operations\n- Each step checks if already done before doing\n- Safe to re-run gt done multiple times\n\nRecommend Option C for simplicity.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T19:07:39.41034-08:00","created_by":"mayor","updated_at":"2025-12-30T22:12:41.551576-08:00","closed_at":"2025-12-30T22:12:41.551576-08:00","close_reason":"Implemented Option C (idempotent operations) for MR bead creation. Added FindMRForBranch to check for existing MR before creating."}
|
||||
{"id":"gt-svi","title":"Implement gt mq CLI commands","description":"Add gt mq subcommands as sugar over bd:\n\n- gt mq submit: Create MR for current branch\n- gt mq list: Show open merge requests\n- gt mq next: Show next MR ready to process\n- gt mq process: Engineer processes the queue\n- gt mq reorder \u003cid\u003e --after \u003cx\u003e: Change ordering via deps\n- gt mq status \u003cid\u003e: Show MR details\n\nAll commands should work with the Beads data plane.","status":"tombstone","priority":0,"issue_type":"task","created_at":"2025-12-16T23:02:16.649648-08:00","updated_at":"2025-12-27T21:29:45.665684-08:00","dependencies":[{"issue_id":"gt-svi","depends_on_id":"gt-h5n","type":"blocks","created_at":"2025-12-16T23:02:55.456462-08:00","created_by":"daemon"},{"issue_id":"gt-svi","depends_on_id":"gt-kp2","type":"blocks","created_at":"2025-12-16T23:03:12.689547-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:45.665684-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-svi.1","title":"gt mq submit: create MR from current branch","description":"Implement 'gt mq submit' command that creates a merge-request bead.\n\nAuto-detection logic:\n1. Branch: current git branch\n2. Issue: parse from branch name (polecat/Nux/gt-xyz → gt-xyz)\n3. Target: main (or integration branch if --epic specified)\n4. Worker: parse from branch name\n5. Rig: current rig\n\nOptions:\n- --branch BRANCH: explicit source branch\n- --issue ISSUE: explicit source issue\n- --epic EPIC: target integration/EPIC instead of main\n- --priority P: override priority (default: inherit from source issue)\n\nCreates merge-request bead and prints MR ID.\n\nReference: docs/merge-queue-design.md#creating-merge-requests","status":"tombstone","priority":0,"issue_type":"task","created_at":"2025-12-17T13:50:21.652412-08:00","updated_at":"2025-12-27T21:29:45.632586-08:00","dependencies":[{"issue_id":"gt-svi.1","depends_on_id":"gt-svi","type":"parent-child","created_at":"2025-12-17T13:50:21.65435-08:00","created_by":"daemon"},{"issue_id":"gt-svi.1","depends_on_id":"gt-h5n.1","type":"blocks","created_at":"2025-12-17T13:53:02.317401-08:00","created_by":"daemon"},{"issue_id":"gt-svi.1","depends_on_id":"gt-h5n.2","type":"blocks","created_at":"2025-12-17T13:53:02.438987-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:45.632586-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-svi.2","title":"gt mq list: show queue with status/priority/age","description":"Implement 'gt mq list' command to display the merge queue.\n\nOutput format:\nID STATUS PRIORITY BRANCH WORKER AGE\ngt-mr-001 ready P0 polecat/Nux/gt-xyz Nux 5m\ngt-mr-002 in_progress P1 polecat/Toast/gt-abc Toast 12m\ngt-mr-003 blocked P1 polecat/Capable/gt-def Capable 8m\n (waiting on gt-mr-001)\n\nOptions:\n- --ready: show only ready-to-merge (no blockers, not in progress)\n- --status STATUS: filter by status\n- --worker WORKER: filter by worker\n- --epic EPIC: show MRs targeting integration/EPIC\n\nUnder the hood: bd list --type=merge-request with filters.\n\nReference: docs/merge-queue-design.md#gt-mq-list","status":"tombstone","priority":0,"issue_type":"task","created_at":"2025-12-17T13:50:23.295587-08:00","updated_at":"2025-12-27T21:29:45.624349-08:00","dependencies":[{"issue_id":"gt-svi.2","depends_on_id":"gt-svi","type":"parent-child","created_at":"2025-12-17T13:50:23.297307-08:00","created_by":"daemon"},{"issue_id":"gt-svi.2","depends_on_id":"gt-h5n.1","type":"blocks","created_at":"2025-12-17T13:53:02.560128-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:45.624349-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -2221,7 +2229,7 @@
|
||||
{"id":"gt-tst6j","title":"MQ smart scheduling: dependency-aware queue reordering","description":"Implement intelligent MQ reordering to minimize conflicts.\n\n## Goal\nReorder the MQ so that MRs touching disjoint files merge \"in parallel\" (no conflicts), while MRs touching overlapping files are sequenced.\n\n## Approach\n1. For each MR, get list of changed files (from branch diff)\n2. Build conflict graph: edge between MRs if files overlap\n3. Find maximal independent sets (MRs that can merge in any order)\n4. Schedule independent MRs first, then handle remaining sequentially\n\n## Implementation\n- Add file analysis to MR submission (gt done)\n- Store changed_files in MR wisp\n- Refinery sorts queue by: priority → conflicts → age\n\n## Example\n```\nQueue: [A, B, C, D]\nFiles:\n A: auth/login.go\n B: payments/checkout.go \n C: auth/login.go ← conflicts with A!\n D: docs/readme.md\n\nOptimal: [A, B, D, C] - A, B, D can merge without waiting\n```\n\n## Parent\ngt-lxxh2","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T18:30:19.240371-08:00","updated_at":"2025-12-25T18:30:19.240371-08:00","dependencies":[{"issue_id":"gt-tst6j","depends_on_id":"gt-lxxh2","type":"blocks","created_at":"2025-12-25T18:30:33.226294-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-ttdrt","title":"Digest: mol-deacon-patrol","description":"Patrol 18: All healthy.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T03:10:50.948882-08:00","updated_at":"2025-12-28T03:10:50.948882-08:00","closed_at":"2025-12-28T03:10:50.948853-08:00"}
|
||||
{"id":"gt-ttom7","title":"Digest: mol-deacon-patrol","description":"Patrol 13: all clear","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T11:05:32.808512-08:00","updated_at":"2025-12-27T21:26:03.38887-08:00","deleted_at":"2025-12-27T21:26:03.38887-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-ttqha","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 9: All quiet.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T15:53:10.238446-08:00","updated_at":"2025-12-30T15:53:10.238446-08:00","closed_at":"2025-12-30T15:53:10.238415-08:00","close_reason":"Squashed from 15 wisps","dependencies":[{"issue_id":"gt-ttqha","depends_on_id":"gt-eph-8u3","type":"parent-child","created_at":"2025-12-30T15:53:10.239382-08:00","created_by":"deacon"}]}
|
||||
{"id":"gt-ttqha","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 9: All quiet.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T15:53:10.238446-08:00","updated_at":"2025-12-30T15:53:10.238446-08:00","closed_at":"2025-12-30T15:53:10.238415-08:00","close_reason":"Squashed from 15 wisps"}
|
||||
{"id":"gt-tubn","title":"Track operational stats as entity/audit beads","description":"Witness and refinery track operational stats in JSON files:\n- total_merged, today_merged, total_failed (refinery)\n- total_checks, total_nudges, total_escalations (witness)\n\nFor HOP entity CV tracking, these could become:\n- type=audit beads (daily roll-ups of operational metrics)\n- Entity chain entries showing validator activity\n\nThis provides observability and contributes to entity reputation tracking (e.g., refinery X has merged 500 PRs with 2% failure rate).\n\nNot critical for launch but aligns with HOP Platform of Platforms vision.","status":"open","priority":4,"issue_type":"feature","created_at":"2025-12-21T22:07:30.404073-08:00","updated_at":"2025-12-21T22:07:30.404073-08:00"}
|
||||
{"id":"gt-tulx","title":"gt mq submit: creates task type instead of merge-request type","description":"## Problem\n\n`gt mq submit` creates an issue with `type: task` but should be `type: merge-request`.\n\n## Evidence\n\n```\n$ bd show gt-n508\ngt-n508: Merge: gt-70b3\nStatus: open\nPriority: P1\nType: task \u003c-- WRONG, should be merge-request\n...\nDescription:\ntype: merge-request \u003c-- Correct type is in description, not in actual type field\n```\n\n## Impact\n\n`gt mq list` shows empty queue because it queries for `type: merge-request`\n\n## Fix\n\n`gt mq submit` should set `--type merge-request` when creating the bead.","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-18T21:57:37.905848-08:00","updated_at":"2025-12-27T21:29:54.066926-08:00","deleted_at":"2025-12-27T21:29:54.066926-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-tvlam","title":"Digest: mol-deacon-patrol","description":"Patrol 6: All clear","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T00:01:29.899-08:00","updated_at":"2025-12-27T21:26:04.026295-08:00","deleted_at":"2025-12-27T21:26:04.026295-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -2268,6 +2276,7 @@
|
||||
{"id":"gt-u1j.9","title":"Witness daemon: heartbeat loop, spawn ephemeral agent","description":"Background daemon for agent lifecycle and monitoring.\n\n## Core Responsibilities\n\n1. **Heartbeat monitoring**: Check agent health periodically\n2. **Session lifecycle**: Restart agents after handoff (Witness Protection)\n3. **Polecat monitoring**: Track worker progress, nudging\n4. **Escalation**: Report failures to Mayor\n\n## Session Lifecycle (Witness Protection)\n\nThe daemon enables autonomous long-running operation by cycling agent sessions:\n\n```go\ntype SessionLifecycle struct {\n AgentType string // \"witness\", \"refinery\"\n StatePath string // path to state.json\n}\n\nfunc (d *Daemon) monitorSessionLifecycle(agent SessionLifecycle) {\n // 1. Detect session exit\n // 2. Check state.json for requesting_cycle: true\n // 3. If cycle requested: start new session, clear flag\n // 4. If unexpected exit: escalate to Mayor\n}\n```\n\nSee architecture.md Key Decision #12: Agent Session Lifecycle.\n\n## Interface\n\n```go\ntype Daemon struct {\n rig *Rig\n polecats *PolecatManager\n sessions *SessionManager\n config DaemonConfig\n}\n\ntype DaemonConfig struct {\n HeartbeatInterval time.Duration // default: 30s\n NudgeThreshold int // nudges before escalation\n MaxWorkers int // from rig config\n}\n\nfunc NewDaemon(rig *Rig) *Daemon\nfunc (d *Daemon) Start() error\nfunc (d *Daemon) Stop() error\n\n// Lifecycle\nfunc (d *Daemon) CycleSession(agentType string) error\nfunc (d *Daemon) SpawnWorker(issueID string) error\nfunc (d *Daemon) ShutdownWorker(polecat string) error\n```\n\n## Heartbeat Loop\n\nEvery HeartbeatInterval:\n1. Check Witness session (restart if cycle requested)\n2. Check Refinery session (restart if cycle requested)\n3. For each active polecat: assess progress, nudge if stuck\n4. Query `bd ready` for new work, spawn up to max_workers","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-15T17:12:29.389103-08:00","updated_at":"2025-12-27T21:29:54.678807-08:00","dependencies":[{"issue_id":"gt-u1j.9","depends_on_id":"gt-u1j","type":"parent-child","created_at":"2025-12-15T17:12:29.389428-08:00","created_by":"daemon"},{"issue_id":"gt-u1j.9","depends_on_id":"gt-u1j.7","type":"blocks","created_at":"2025-12-15T17:14:04.353775-08:00","created_by":"daemon"},{"issue_id":"gt-u1j.9","depends_on_id":"gt-u1j.8","type":"blocks","created_at":"2025-12-15T17:14:04.440363-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:54.678807-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-u1k","title":"gt shutdown should fully cleanup polecats (worktrees, branches, inboxes)","description":"Current gt shutdown only kills tmux sessions but leaves:\n\n1. Git worktrees in polecats/ directory\n2. Polecat branches (polecat/\u003cname\u003e)\n3. Inbox messages\n4. Beads assignee state\n\nThis causes stale polecats to be reused on next startup.\n\n## Expected Behavior\n\ngt shutdown should:\n1. Kill all polecat tmux sessions (current behavior)\n2. For each polecat with StateIdle or StateDone:\n - Remove worktree\n - Delete branch\n - Clear inbox\n3. For polecats with uncommitted work:\n - REFUSE to clean up\n - Report which polecats have uncommitted changes\n - Require --force or --nuclear to proceed\n\n## Current Code\n\n- start.go:runImmediateShutdown() only calls t.KillSession()\n- Witness cleanupPolecat() does full cleanup but isn't called by shutdown\n\n## Fix\n\nEither:\n1. Call Witness cleanup for each polecat during shutdown\n2. OR add rig.ShutdownPolecats() that does the full cleanup","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-20T15:22:42.921949-08:00","updated_at":"2025-12-27T21:29:53.727903-08:00","dependencies":[{"issue_id":"gt-u1k","depends_on_id":"gt-8v8","type":"blocks","created_at":"2025-12-20T15:23:15.226189-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:53.727903-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-u1lf","title":"Digest: mol-deacon-patrol @ 2025-12-24 19:26","description":"Patrol 12: quiet","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T19:26:31.865491-08:00","updated_at":"2025-12-27T21:26:05.255683-08:00","deleted_at":"2025-12-27T21:26:05.255683-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-u201i","title":"Merge: dag-mjtm8k85","description":"branch: polecat/dag-mjtm8k85\ntarget: main\nsource_issue: dag-mjtm8k85\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T22:16:19.897281-08:00","created_by":"gastown/polecats/dag","updated_at":"2025-12-30T22:16:19.897281-08:00"}
|
||||
{"id":"gt-u29p","title":"Digest: mol-deacon-patrol","description":"Patrol #10: Stable","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T23:33:10.196304-08:00","updated_at":"2025-12-27T21:26:04.318297-08:00","deleted_at":"2025-12-27T21:26:04.318297-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-u2vg","title":"gt spawn --issue should auto-attach mol-polecat-work","description":"When spawning a polecat with --issue but no --molecule, the polecat gets an issue assigned and work assignment mail, but no molecule on their hook. They check 'gt mol status', see nothing, and are stuck.\n\nFix: If --issue is provided but --molecule is not, auto-attach mol-polecat-work (or a configurable default) to the polecat's hook.\n\nCurrent behavior:\n- Issue assigned in beads ✓\n- Mail sent ✓ \n- No molecule attached ✗\n\nExpected:\n- Issue assigned in beads ✓\n- Mail sent ✓\n- mol-polecat-work attached to hook ✓","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-23T19:53:24.817448-08:00","updated_at":"2025-12-27T21:29:52.853443-08:00","deleted_at":"2025-12-27T21:29:52.853443-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-u3mm7","title":"Digest: mol-deacon-patrol","description":"Patrol complete: 0 polecats, 0 gates, all witnesses/refineries healthy, no orphans","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T15:35:07.072498-08:00","updated_at":"2025-12-27T21:26:01.461122-08:00","deleted_at":"2025-12-27T21:26:01.461122-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -2283,6 +2292,7 @@
|
||||
{"id":"gt-u82","title":"Design: Mayor session cycling and handoff","description":"Design for Mayor session cycling and structured handoff.\n\n## Overview\n\nMayor coordinates across all rigs and runs for extended periods. Needs session cycling pattern with structured handoff notes.\n\n## Key Elements\n\n1. Session cycling recognition (when to cycle)\n2. Handoff note format (structured state capture)\n3. Handoff delivery (mail to self)\n4. Fresh session startup (reading and resuming)\n\n## Subtasks (implementation)\n\n- gt-g2d: Mayor session cycling prompting\n- gt-sye: Mayor startup protocol prompting\n- gt-vci: Mayor handoff mail template\n- gt-1le: town handoff command (optional, P2)\n\n**Design complete.** Each subtask has full specification in its description.","status":"tombstone","priority":1,"issue_type":"epic","created_at":"2025-12-15T20:03:16.125725-08:00","updated_at":"2025-12-25T01:30:41.67682-08:00","deleted_at":"2025-12-25T01:30:41.67682-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"epic"}
|
||||
{"id":"gt-u8df5","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 13: nominal","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T15:45:59.223504-08:00","updated_at":"2025-12-27T21:26:01.369774-08:00","deleted_at":"2025-12-27T21:26:01.369774-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-u8ybw","title":"Digest: mol-deacon-patrol","description":"Patrol 18: Nominal","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T23:53:19.814904-08:00","updated_at":"2025-12-27T21:26:04.083552-08:00","deleted_at":"2025-12-27T21:26:04.083552-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-u957f","title":"Merge: furiosa-mjtj9d4g","description":"branch: polecat/furiosa-mjtj9d4g\ntarget: main\nsource_issue: furiosa-mjtj9d4g\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T22:13:08.190976-08:00","created_by":"gastown/polecats/furiosa","updated_at":"2025-12-30T22:13:08.190976-08:00"}
|
||||
{"id":"gt-u95ku","title":"Digest: mol-deacon-patrol","description":"Patrol 4: routine, all healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T20:00:54.624814-08:00","updated_at":"2025-12-26T20:00:54.624814-08:00","closed_at":"2025-12-26T20:00:54.624766-08:00"}
|
||||
{"id":"gt-u9can","title":"Digest: mol-deacon-patrol","description":"Patrol 2: 1 msg (Nux done), health OK","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T19:42:03.116065-08:00","updated_at":"2025-12-28T19:42:03.116065-08:00","closed_at":"2025-12-28T19:42:03.116034-08:00"}
|
||||
{"id":"gt-ua5f","title":"Digest: mol-deacon-patrol","description":"Patrol: read mayor handoff (gt-mzal boot design), all agents up, furiosa working gt-oiv0, note: gt-4eim orphaned (angharad gone)","status":"tombstone","priority":4,"issue_type":"task","created_at":"2025-12-22T21:29:07.064593-08:00","updated_at":"2025-12-27T21:26:05.466931-08:00","deleted_at":"2025-12-27T21:26:05.466931-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -2291,6 +2301,7 @@
|
||||
{"id":"gt-uazec","title":"Digest: mol-deacon-patrol","description":"Patrol 3: Routine","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T20:44:36.529952-08:00","updated_at":"2025-12-25T20:44:36.529952-08:00","closed_at":"2025-12-25T20:44:36.529895-08:00"}
|
||||
{"id":"gt-ub5gh","title":"Digest: mol-deacon-patrol","description":"Patrol 6: All clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T15:43:56.849161-08:00","updated_at":"2025-12-25T15:43:56.849161-08:00","closed_at":"2025-12-25T15:43:56.84913-08:00"}
|
||||
{"id":"gt-ubd4","title":"Merge: gt-tnca.1","description":"branch: polecat/immortan\ntarget: main\nsource_issue: gt-tnca.1\nrig: gastown","status":"tombstone","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T00:18:22.782233-08:00","updated_at":"2025-12-27T21:27:22.861381-08:00","deleted_at":"2025-12-27T21:27:22.861381-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"merge-request"}
|
||||
{"id":"gt-uenzr","title":"Merge: slit-mjtj9dc8","description":"branch: polecat/slit-mjtj9dc8\ntarget: main\nsource_issue: slit-mjtj9dc8\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T22:12:47.166382-08:00","created_by":"gastown/polecats/slit","updated_at":"2025-12-30T22:12:47.166382-08:00"}
|
||||
{"id":"gt-uhc3","title":"gt mq list shows empty when MRs exist","description":"The gt mq list command returns empty results even when merge requests exist in the queue.","status":"closed","priority":2,"issue_type":"bug","assignee":"gastown/polecats/rictus","created_at":"2025-12-21T17:51:18.712633-08:00","updated_at":"2025-12-29T23:55:18.491893-08:00","closed_at":"2025-12-29T23:55:18.491893-08:00","close_reason":"Fixed - mq_list.go now uses r.BeadsPath() instead of r.Path to read from the git-synced beads location"}
|
||||
{"id":"gt-uhe4","title":"Digest: mol-deacon-patrol @ 2025-12-24 19:20","description":"Patrol complete: inbox empty, all agents healthy (Mayor, 2 Witnesses, 2 Refineries), no polecats, no orphans","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T19:20:09.935353-08:00","updated_at":"2025-12-27T21:26:05.330941-08:00","deleted_at":"2025-12-27T21:26:05.330941-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-uhqil","title":"Merge: furiosa-1766987668522","description":"branch: polecat/furiosa-1766987668522\ntarget: main\nsource_issue: furiosa-1766987668522\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-28T22:06:13.954083-08:00","created_by":"gastown/polecats/furiosa","updated_at":"2025-12-28T22:26:43.955772-08:00","closed_at":"2025-12-28T22:26:43.955772-08:00"}
|
||||
@@ -2345,12 +2356,13 @@
|
||||
{"id":"gt-vci","title":"Mayor handoff mail template","description":"Add MAYOR_HANDOFF mail template to templates.py.\n\n## Template Function\n\ndef mayor_handoff(\n active_swarms: List[SwarmStatus],\n rig_status: Dict[str, RigStatus],\n pending_escalations: List[Escalation],\n in_flight_decisions: List[Decision],\n recent_actions: List[str],\n delegated_work: List[DelegatedItem],\n user_requests: List[str],\n next_steps: List[str],\n warnings: Optional[str] = None,\n session_duration: Optional[str] = None,\n) -\u003e Message:\n metadata = {\n 'template': 'MAYOR_HANDOFF',\n 'timestamp': datetime.utcnow().isoformat(),\n 'session_duration': session_duration,\n 'active_swarm_count': len(active_swarms),\n 'pending_escalation_count': len(pending_escalations),\n }\n # ... format sections ...\n return Message.create(\n sender='mayor/',\n recipient='mayor/',\n subject='Session Handoff',\n body=body,\n priority='high',\n )\n\n## Metadata Fields\n\n- template: MAYOR_HANDOFF\n- timestamp: ISO format\n- session_duration: Human readable\n- active_swarm_count: Number of active swarms\n- pending_escalation_count: Number of escalations\n\n## Mail Priority\n\nUse priority='high' to ensure handoff is seen on startup.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-15T20:15:30.26323-08:00","updated_at":"2025-12-27T21:29:54.538148-08:00","dependencies":[{"issue_id":"gt-vci","depends_on_id":"gt-u82","type":"blocks","created_at":"2025-12-15T20:15:39.554108-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:54.538148-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-vcyt7","title":"Merge: gt-bca67","description":"branch: polecat/furiosa-mjtj9d4g\ntarget: main\nsource_issue: gt-bca67\nrig: gastown","status":"open","priority":1,"issue_type":"merge-request","created_at":"2025-12-30T20:53:46.618988-08:00","created_by":"gastown/polecats/furiosa","updated_at":"2025-12-30T20:53:46.618988-08:00"}
|
||||
{"id":"gt-vdp0","title":"Crew workers getting wrong CLAUDE.md (shows Refinery)","description":"## Problem\n\nCrew workers (emma, dave) have CLAUDE.md that says they're the Refinery.\n\n## Evidence\n\n```\n$ head -5 /Users/stevey/gt/beads/crew/emma/CLAUDE.md\n# Claude: Beads Refinery\nYou are the **Refinery** for the **beads** rig...\n```\n\n## Expected\n\nShould use crew.md.tmpl which correctly says:\n```\n# Crew Worker Context\nYou are a **crew worker** - the overseer's (human's) personal workspace...\n```\n\n## Impact\n\n- Crew workers have wrong identity in static context\n- `gt prime` correctly outputs crew context, but CLAUDE.md conflicts\n- Confusing role information\n\n## Fix\n\nCheck `gt crew create` or whatever populates CLAUDE.md for crew workers.","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-18T21:40:56.518032-08:00","updated_at":"2025-12-27T21:29:54.100639-08:00","dependencies":[{"issue_id":"gt-vdp0","depends_on_id":"gt-l4gm","type":"blocks","created_at":"2025-12-18T21:50:04.955247-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:54.100639-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-vdprb","title":"Feed-Based Wake Model for Patrol Agents","description":"## The Paradigm Shift\n\n\u003e **Backoff is not about polling less. It is about waiting for signals with a timeout.**\n\nThis epic captures the shift from time-driven to event-driven patrol wake.\n\n## Key Insight (Recovered from 2025-12-29 session crash)\n\nThe Beads activity feed (bd activity --follow) is the universal data plane for\nwake signals. Every meaningful action creates a beads mutation; agents subscribe to\nthe feed and wake within ~500ms. The timeout is just a safety net.\n\n**OLD**: Time-driven. Wake because time passed. Poll less when idle.\n**NEW**: Event-driven. Wake because signal arrived. Timeout is safety net.\n\n## Architecture\n\nANY MUTATION:\n bd create/update/close -\u003e issues.jsonl mutation\n -\u003e bd activity --follow sees it (~500ms)\n -\u003e All subscribed agents wake immediately\n\nPATROL AGENT:\n Runs bd activity --follow as background source\n Any output line = wake signal\n Timeout expiry = safety net (not primary wake)\n\n## Wake Sources (Priority Order)\n\n| Source | Latency | Purpose |\n|--------|---------|---------|\n| Feed | ~500ms | Primary - any beads mutation |\n| Nudge | Instant | Explicit wake (startup hooks) |\n| Timeout | Backoff | Safety net for missed signals |\n| Daemon | 5-60min | GUPP backstop, session recovery |\n\n## Key Design Decisions\n\n1. No wake_on conditions - signals carry no semantic meaning. Just wake up.\n Agent discovers reality by checking mail, beads, hook, git state.\n\n2. Read-only commands do not wake - gt status, bd show create no mutations.\n\n3. Daemon is recovery-focused - catches edge cases (GUPP violations, dead sessions).\n\n4. Keepalive file deprecated - the feed replaces the keepalive mechanism.\n\n## Reference\n\n- ~/gt/docs/patrol-system-design.md (Sleeping Agents section)\n- ~/gt/docs/PRIMING.md (Feed Is the Signal insight)\n\n## Related\n\n- gt-l6ro3: Patrol Exponential Backoff System (backoff timing, complements this)","status":"hooked","priority":1,"issue_type":"epic","assignee":"gastown/polecats/furiosa","created_at":"2025-12-29T17:02:14.195425-08:00","created_by":"mayor","updated_at":"2025-12-30T00:40:08.320291-08:00"}
|
||||
{"id":"gt-vdprb","title":"Feed-Based Wake Model for Patrol Agents","description":"## The Paradigm Shift\n\n\u003e **Backoff is not about polling less. It is about waiting for signals with a timeout.**\n\nThis epic captures the shift from time-driven to event-driven patrol wake.\n\n## Key Insight (Recovered from 2025-12-29 session crash)\n\nThe Beads activity feed (bd activity --follow) is the universal data plane for\nwake signals. Every meaningful action creates a beads mutation; agents subscribe to\nthe feed and wake within ~500ms. The timeout is just a safety net.\n\n**OLD**: Time-driven. Wake because time passed. Poll less when idle.\n**NEW**: Event-driven. Wake because signal arrived. Timeout is safety net.\n\n## Architecture\n\nANY MUTATION:\n bd create/update/close -\u003e issues.jsonl mutation\n -\u003e bd activity --follow sees it (~500ms)\n -\u003e All subscribed agents wake immediately\n\nPATROL AGENT:\n Runs bd activity --follow as background source\n Any output line = wake signal\n Timeout expiry = safety net (not primary wake)\n\n## Wake Sources (Priority Order)\n\n| Source | Latency | Purpose |\n|--------|---------|---------|\n| Feed | ~500ms | Primary - any beads mutation |\n| Nudge | Instant | Explicit wake (startup hooks) |\n| Timeout | Backoff | Safety net for missed signals |\n| Daemon | 5-60min | GUPP backstop, session recovery |\n\n## Key Design Decisions\n\n1. No wake_on conditions - signals carry no semantic meaning. Just wake up.\n Agent discovers reality by checking mail, beads, hook, git state.\n\n2. Read-only commands do not wake - gt status, bd show create no mutations.\n\n3. Daemon is recovery-focused - catches edge cases (GUPP violations, dead sessions).\n\n4. Keepalive file deprecated - the feed replaces the keepalive mechanism.\n\n## Reference\n\n- ~/gt/docs/patrol-system-design.md (Sleeping Agents section)\n- ~/gt/docs/PRIMING.md (Feed Is the Signal insight)\n\n## Related\n\n- gt-l6ro3: Patrol Exponential Backoff System (backoff timing, complements this)","status":"closed","priority":1,"issue_type":"epic","assignee":"gastown/polecats/furiosa","created_at":"2025-12-29T17:02:14.195425-08:00","created_by":"mayor","updated_at":"2025-12-30T22:10:00.772809-08:00","closed_at":"2025-12-30T22:10:00.772809-08:00","close_reason":"Feed-based wake model complete: patrol agents subscribe to bd activity --follow, daemon uses fixed 10-min recovery heartbeat, keepalive file infrastructure removed"}
|
||||
{"id":"gt-vdprb.1","title":"Patrol agents subscribe to bd activity --follow","description":"Each patrol agent (Deacon, Witness, Refinery) should run bd activity --follow as a background process. Any output line is a wake signal. This is the primary wake mechanism.\n\nImplementation:\n1. Add feed subscription to await-signal step logic\n2. Agent starts bd activity --follow on entering await-signal\n3. Any line of output breaks the wait immediately\n4. Timeout still applies as safety net\n\nSee patrol-system-design.md for full specification.","status":"closed","priority":1,"issue_type":"task","assignee":"gastown/polecats/furiosa","created_at":"2025-12-29T17:02:47.872208-08:00","created_by":"mayor","updated_at":"2025-12-29T21:58:33.934123-08:00","closed_at":"2025-12-29T21:58:33.934123-08:00","close_reason":"Implemented await-signal command that subscribes to bd activity --follow","dependencies":[{"issue_id":"gt-vdprb.1","depends_on_id":"gt-vdprb","type":"parent-child","created_at":"2025-12-29T17:02:47.872866-08:00","created_by":"mayor"},{"issue_id":"gt-vdprb.1","depends_on_id":"gt-l6ro3.3","type":"blocks","created_at":"2025-12-29T17:08:56.137406-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-vdprb.2","title":"Remove keepalive file infrastructure","description":"The keepalive mechanism (~/gt/daemon/activity.json) is deprecated in favor of feed-based wake.\n\nTODO:\n1. Remove keepalive.TouchTownActivity() calls from gt commands\n2. Remove keepalive.ReadTownActivity() from daemon\n3. Delete internal/keepalive package\n4. Update daemon to use longer base heartbeat (recovery-focused)\n\nWhitelist consideration: Some read-only commands might need to wake (TBD - none identified yet)","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-29T17:03:10.887382-08:00","created_by":"mayor","updated_at":"2025-12-29T17:03:10.887382-08:00","dependencies":[{"issue_id":"gt-vdprb.2","depends_on_id":"gt-vdprb.4","type":"blocks","created_at":"2025-12-29T17:09:11.896659-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-vdprb.2","title":"Remove keepalive file infrastructure","description":"The keepalive mechanism (~/gt/daemon/activity.json) is deprecated in favor of feed-based wake.\n\nTODO:\n1. Remove keepalive.TouchTownActivity() calls from gt commands\n2. Remove keepalive.ReadTownActivity() from daemon\n3. Delete internal/keepalive package\n4. Update daemon to use longer base heartbeat (recovery-focused)\n\nWhitelist consideration: Some read-only commands might need to wake (TBD - none identified yet)","status":"closed","priority":3,"issue_type":"task","assignee":"gastown/polecats/furiosa","created_at":"2025-12-29T17:03:10.887382-08:00","created_by":"mayor","updated_at":"2025-12-30T22:09:38.858765-08:00","closed_at":"2025-12-30T22:09:38.858765-08:00","close_reason":"Removed keepalive infrastructure: TouchTownActivity/ReadTownActivity deleted from keepalive.go, activity-based backoff removed from daemon.go (now uses fixed 10-min recovery interval), PersistentPreRun hook removed from root.go","dependencies":[{"issue_id":"gt-vdprb.2","depends_on_id":"gt-vdprb.4","type":"blocks","created_at":"2025-12-29T17:09:11.896659-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-vdprb.3","title":"Startup hooks nudge Deacon","description":"When a new Claude session starts (via startup hook), it should nudge Deacon so Deacon knows a new agent has appeared. This is one of Deacons extra wake sources for GUPP backstop.\n\nImplementation: Add gt nudge deacon session-started to the startup hook chain.","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/nux","created_at":"2025-12-29T17:03:17.160315-08:00","created_by":"mayor","updated_at":"2025-12-29T18:01:16.924201-08:00","closed_at":"2025-12-29T18:01:16.924201-08:00","close_reason":"Implemented: Added gt nudge deacon session-started to startup hooks, with special deacon target handling in nudge.go","dependencies":[{"issue_id":"gt-vdprb.3","depends_on_id":"gt-vdprb","type":"parent-child","created_at":"2025-12-29T17:03:17.160964-08:00","created_by":"mayor"},{"issue_id":"gt-vdprb.3","depends_on_id":"gt-vdprb.1","type":"blocks","created_at":"2025-12-29T17:09:40.073828-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-vdprb.4","title":"Daemon heartbeat becomes recovery-focused","description":"Update daemon heartbeat to be recovery-focused, not wake-focused.\n\nCurrent: Daemon pokes agents every 5-60min as primary wake.\nNew: Daemon only checks for:\n- Dead sessions that need restart\n- Agents with work-on-hook not progressing (GUPP violation)\n- Orphaned work\n\nFeed handles normal wake; daemon is the safety net for edge cases.","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/slit","created_at":"2025-12-29T17:03:23.47806-08:00","created_by":"mayor","updated_at":"2025-12-29T18:02:43.851199-08:00","closed_at":"2025-12-29T18:02:43.851199-08:00","close_reason":"Implemented recovery-focused daemon heartbeat: removed poke functions, added GUPP violation and orphaned work checks","dependencies":[{"issue_id":"gt-vdprb.4","depends_on_id":"gt-vdprb","type":"parent-child","created_at":"2025-12-29T17:03:23.478825-08:00","created_by":"mayor"},{"issue_id":"gt-vdprb.4","depends_on_id":"gt-vdprb.1","type":"blocks","created_at":"2025-12-29T17:09:05.198482-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-vdprb.5","title":"Documentation: Feed-based wake model","description":"Document the feed-based wake model in patrol-system-design.md and PRIMING.md.\n\nDONE (2025-12-29):\n- Updated patrol-system-design.md with full feed-based wake specification\n- Added Feed Is the Signal and Discover Dont Be Told insights to PRIMING.md\n- Committed as 39e46148","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-29T17:03:56.043996-08:00","created_by":"mayor","updated_at":"2025-12-29T17:04:01.193795-08:00","closed_at":"2025-12-29T17:04:01.193795-08:00","close_reason":"Completed 2025-12-29, commit 39e46148","dependencies":[{"issue_id":"gt-vdprb.5","depends_on_id":"gt-vdprb","type":"parent-child","created_at":"2025-12-29T17:03:56.044684-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-veez1","title":"Merge: rictus-mjtlq9xg","description":"branch: polecat/rictus-mjtlq9xg\ntarget: main\nsource_issue: rictus-mjtlq9xg\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T22:14:01.912377-08:00","created_by":"gastown/polecats/rictus","updated_at":"2025-12-30T22:14:01.912377-08:00"}
|
||||
{"id":"gt-vg4n","title":"Use Beads issue status as spawn source of truth","description":"Currently witness tracks spawned issues in .gastown/witness.json to prevent re-spawning:\n\n{\"spawned_issues\": [\"gt-abc1\", \"gt-def2\", ...]}\n\nThis is redundant with Beads issue status (in_progress). The witness could query:\n bd list --status=in_progress\n\nThe local list serves as a performance cache to avoid querying beads every cycle. Consider:\n1. Use Beads as source of truth\n2. Keep local cache with TTL\n3. Sync cache on witness start\n\nThis simplifies state management and ensures consistency.","status":"open","priority":4,"issue_type":"task","created_at":"2025-12-21T22:07:31.756863-08:00","updated_at":"2025-12-21T22:07:31.756863-08:00"}
|
||||
{"id":"gt-vg6u","title":"TIDY UP: Your previous work (gt-odvf: bd mol CLI docs) wa...","description":"TIDY UP: Your previous work (gt-odvf: bd mol CLI docs) was already merged to main. Check your git status is clean, sync beads, and if nothing to do, just run 'gt done'.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-21T17:26:20.360645-08:00","updated_at":"2025-12-27T21:29:56.520829-08:00","deleted_at":"2025-12-27T21:29:56.520829-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-vhby","title":"implement","description":"Implement the solution for gt-test123. Follow codebase conventions.\nFile discovered work as new issues with bd create.\n\nMake regular commits with clear messages.\nKeep changes focused on the assigned issue.\n\nDepends: load-context","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-21T21:48:26.321647-08:00","updated_at":"2025-12-25T14:12:42.228522-08:00","deleted_at":"2025-12-25T14:12:42.228522-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -2379,6 +2391,7 @@
|
||||
{"id":"gt-vz2xs","title":"Digest: mol-deacon-patrol","description":"Patrol 10: Halfway check, all healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T00:33:04.470774-08:00","updated_at":"2025-12-27T21:26:03.894642-08:00","deleted_at":"2025-12-27T21:26:03.894642-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-vzic","title":"README missing prerequisites section (tmux required)","description":"The README.md does not mention that tmux is required.\nAll agent sessions use tmux, but fresh users have no way to know this.\n\nAdd prerequisites section:\n- Go 1.23+\n- Git\n- tmux (required for agent sessions)\n- Claude Code CLI (for agents)","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-24T12:50:28.988771-08:00","updated_at":"2025-12-27T21:29:52.671896-08:00","dependencies":[{"issue_id":"gt-vzic","depends_on_id":"gt-jo9n","type":"blocks","created_at":"2025-12-24T12:52:04.860313-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:52.671896-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-w0e0","title":"Merge: gt-h1n5","description":"branch: polecat/rictus\ntarget: main\nsource_issue: gt-h1n5\nrig: gastown","status":"tombstone","priority":1,"issue_type":"merge-request","created_at":"2025-12-23T19:37:59.964737-08:00","updated_at":"2025-12-27T21:27:22.410168-08:00","deleted_at":"2025-12-27T21:27:22.410168-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"merge-request"}
|
||||
{"id":"gt-w1mjq","title":"Merge: gt-svdsy","description":"branch: polecat/capable-mjtltnm5\ntarget: main\nsource_issue: gt-svdsy\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T22:14:45.627874-08:00","created_by":"gastown/polecats/capable","updated_at":"2025-12-30T22:14:45.627874-08:00"}
|
||||
{"id":"gt-w1te9","title":"gt nudge should accept role shortcuts like 'mayor' not just 'gt-mayor'","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-30T19:33:00.115571-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T19:33:00.115571-08:00"}
|
||||
{"id":"gt-w3bu","title":"gt spawn: Enter key needs debounce delay after paste","description":"## Problem\n\nWhen spawning polecats via `gt spawn`, instructions are pasted into tmux but workers often sit idle at prompt because the Enter key arrives before the paste is fully processed.\n\n## Observed Behavior\n\n- Instructions pasted via tmux send-keys\n- Enter key sent immediately after\n- Worker session shows prompt with no input (paste not submitted)\n- Requires manual intervention to nudge workers\n\n## Expected Behavior\n\n- Paste completes fully\n- Enter key submits the pasted instructions\n- Worker begins executing immediately\n\n## Root Cause\n\nLikely a race condition between paste buffer processing and keypress handling. Need either:\n1. Debounce delay before sending Enter\n2. Longer delay (Tmax) to ensure paste completes\n3. Alternative submission mechanism\n\n## Impact\n\n- Swarm of 10 workers had multiple stalls at startup\n- Required manual tmux send-keys to unstick them\n- Defeats purpose of automated spawning\n\n## References\n\n- Observed during Mad Max swarm (Dec 18, 2025)\n- Affects gt spawn command in internal/cmd/spawn.go","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-18T21:06:50.734123-08:00","updated_at":"2025-12-27T21:29:54.126014-08:00","deleted_at":"2025-12-27T21:29:54.126014-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-w41ln","title":"E2E Test: Add a comment to internal/util/process.go","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-28T16:16:17.43602-08:00","created_by":"stevey","updated_at":"2025-12-28T16:21:56.724387-08:00","closed_at":"2025-12-28T16:21:56.724387-08:00"}
|
||||
@@ -2486,7 +2499,7 @@
|
||||
{"id":"gt-xheo6","title":"Cross-rig worktree support for crew","description":"Enable crew workers to work on other rigs without losing identity.\n\n**Problem**: When gastown/crew/joe needs to fix a beads bug, where do they work?\nCurrent options are all problematic: mayor's rig (coordination, not coding), random\ncrew clone (conflicts), community repo (file locks), dogs (wrong abstraction).\n\n**Solution**: Crew creates worktrees in target rigs with predictable paths.\n\nDirectory structure:\n```\n~/gt/\u003ctarget-rig\u003e/crew/\u003csource-rig\u003e-\u003cname\u003e/\n~/gt/beads/crew/gastown-joe/ # joe from gastown working on beads\n~/gt/gastown/crew/beads-wolf/ # wolf from beads working on gastown\n```\n\nKey principles:\n- Identity preserved: BD_ACTOR stays gastown/crew/joe\n- No conflicts: Each crew has own worktree\n- No indirection: Direct work, no delegation to dogs\n- Persistent: Worktree survives sessions (matches crew lifecycle)\n- Dogs remain for Deacon's infrastructure work only\n\nCommands:\n- gt worktree \u003crig\u003e - Create/enter worktree for rig\n- gt worktree list - Show your worktrees \n- gt worktree remove \u003crig\u003e - Clean up worktree","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-30T17:40:29.036817-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T18:05:16.831244-08:00","closed_at":"2025-12-30T18:05:16.831244-08:00","close_reason":"Cross-rig worktree support complete - all 4 tasks implemented."}
|
||||
{"id":"gt-xheo6.1","title":"Implement gt worktree create command","description":"Create worktree in target rig for cross-rig work.\n\nUsage: gt worktree \u003crig\u003e\n\nBehavior:\n1. Detect current identity (gastown/crew/joe)\n2. Compute worktree path: ~/gt/\u003crig\u003e/crew/\u003csource-rig\u003e-\u003cname\u003e/\n3. If worktree doesn't exist:\n - git worktree add \u003cpath\u003e main\n - Set up .git config for identity preservation\n4. cd to worktree (or print path for user to cd)\n5. Preserve BD_ACTOR, GT_ROLE, etc.\n\nEdge cases:\n- Worktree already exists → just enter it\n- Rig doesn't exist → error with helpful message\n- No crew identity → error (must be crew to use this)","status":"closed","priority":1,"issue_type":"task","assignee":"gastown/polecats/dementus","created_at":"2025-12-30T17:40:48.552114-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T18:01:38.977513-08:00","closed_at":"2025-12-30T18:01:38.977513-08:00","close_reason":"Implemented gt worktree command for cross-rig work","dependencies":[{"issue_id":"gt-xheo6.1","depends_on_id":"gt-xheo6","type":"parent-child","created_at":"2025-12-30T17:40:48.552745-08:00","created_by":"gastown/crew/joe"}]}
|
||||
{"id":"gt-xheo6.2","title":"Implement gt worktree list command","description":"List all worktrees owned by current crew member.\n\nUsage: gt worktree list\n\nOutput:\n```\nCross-rig worktrees for gastown/crew/joe:\n\n beads ~/gt/beads/crew/gastown-joe/ (clean)\n mayor ~/gt/mayor/crew/gastown-joe/ (2 uncommitted)\n```\n\nImplementation:\n- Scan all rigs in ~/gt/\n- Check for crew/\u003csource-rig\u003e-\u003cname\u003e/ directories\n- Show git status summary for each","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/valkyrie","created_at":"2025-12-30T17:40:49.847297-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T18:27:53.653569-08:00","closed_at":"2025-12-30T18:27:53.653569-08:00","close_reason":"Implemented gt worktree list command","dependencies":[{"issue_id":"gt-xheo6.2","depends_on_id":"gt-xheo6","type":"parent-child","created_at":"2025-12-30T17:40:49.847843-08:00","created_by":"gastown/crew/joe"}]}
|
||||
{"id":"gt-xheo6.3","title":"Implement gt worktree remove command","description":"Remove a cross-rig worktree.\n\nUsage: gt worktree remove \u003crig\u003e\n\nBehavior:\n1. Check for uncommitted changes → warn/abort\n2. git worktree remove \u003cpath\u003e\n3. Clean up directory if needed\n\nSafety:\n- Refuse if uncommitted changes (unless --force)\n- Confirm before removal","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T17:40:50.857156-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T18:55:43.996013-08:00","dependencies":[{"issue_id":"gt-xheo6.3","depends_on_id":"gt-xheo6","type":"parent-child","created_at":"2025-12-30T17:40:50.857664-08:00","created_by":"gastown/crew/joe"},{"issue_id":"gt-xheo6.3","depends_on_id":"gt-xheo6.2","type":"blocks","created_at":"2025-12-30T18:22:52.528468-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-xheo6.3","title":"Implement gt worktree remove command","description":"Remove a cross-rig worktree.\n\nUsage: gt worktree remove \u003crig\u003e\n\nBehavior:\n1. Check for uncommitted changes → warn/abort\n2. git worktree remove \u003cpath\u003e\n3. Clean up directory if needed\n\nSafety:\n- Refuse if uncommitted changes (unless --force)\n- Confirm before removal","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/nux","created_at":"2025-12-30T17:40:50.857156-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T22:08:13.25969-08:00","closed_at":"2025-12-30T22:08:13.25969-08:00","close_reason":"Already implemented and merged in d72cb6b9","dependencies":[{"issue_id":"gt-xheo6.3","depends_on_id":"gt-xheo6","type":"parent-child","created_at":"2025-12-30T17:40:50.857664-08:00","created_by":"gastown/crew/joe"},{"issue_id":"gt-xheo6.3","depends_on_id":"gt-xheo6.2","type":"blocks","created_at":"2025-12-30T18:22:52.528468-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-xheo6.4","title":"Document cross-rig worktree pattern","description":"Add documentation for crew cross-rig work pattern.\n\nUpdate:\n- CLAUDE.md crew context with worktree usage\n- docs/understanding-gas-town.md with role taxonomy clarification\n- PRIMING.md if needed\n\nKey points to document:\n- Crew vs Dogs distinction (dogs = Deacon's infra, not user work)\n- Identity preservation across rigs\n- When to use worktrees vs dispatch to local workers\n- Directory structure convention","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/dag","created_at":"2025-12-30T17:40:52.414239-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T18:03:02.738902-08:00","closed_at":"2025-12-30T18:03:02.738902-08:00","close_reason":"Added cross-rig worktree documentation to crew.md.tmpl and created docs/understanding-gas-town.md","dependencies":[{"issue_id":"gt-xheo6.4","depends_on_id":"gt-xheo6","type":"parent-child","created_at":"2025-12-30T17:40:52.414791-08:00","created_by":"gastown/crew/joe"}]}
|
||||
{"id":"gt-xhv1","title":"Digest: mol-deacon-patrol","description":"Patrol 18: OK","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T21:01:57.635721-08:00","updated_at":"2025-12-27T21:26:04.8779-08:00","deleted_at":"2025-12-27T21:26:04.8779-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-xhwlq","title":"mol-sync-workspace: Split handle-dirty-state into focused steps","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-30T19:11:05.175341-08:00","created_by":"gastown/crew/jack","updated_at":"2025-12-30T19:11:05.175341-08:00"}
|
||||
@@ -2525,7 +2538,7 @@
|
||||
{"id":"gt-xwige","title":"Remove keepalive file infrastructure","description":"The keepalive mechanism (~/gt/daemon/activity.json) is deprecated in favor of feed-based wake.\n\n**Current state:**\n- keepalive.TouchTownActivity() writes to activity.json on every gt/bd command\n- Daemon reads activity.json to calculate exponential backoff\n\n**New model (feed-based wake):**\n- Patrol agents subscribe to `bd activity --follow`\n- Any beads mutation wakes agents within ~500ms\n- Daemon heartbeat is recovery-focused, not wake-focused\n- Read-only commands don't need to wake the town\n\n**TODO:**\n1. Remove keepalive.TouchTownActivity() calls from gt commands\n2. Remove keepalive.ReadTownActivity() from daemon\n3. Delete internal/keepalive package\n4. Update daemon to use longer base heartbeat (recovery-focused)\n\n**Whitelist consideration:**\nSome read-only commands might need to wake (TBD):\n- gt mail inbox (checking for work?)\n- None identified yet\n\nSee docs/patrol-system-design.md for full feed-based wake design.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-29T16:35:53.250019-08:00","created_by":"mayor","updated_at":"2025-12-29T20:59:13.883207-08:00","closed_at":"2025-12-29T20:59:13.883207-08:00","close_reason":"Duplicate of gt-vdprb.2"}
|
||||
{"id":"gt-xx5u","title":"Digest: mol-deacon-patrol","description":"Patrol 10: OK","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T20:59:10.084625-08:00","updated_at":"2025-12-27T21:26:04.944096-08:00","deleted_at":"2025-12-27T21:26:04.944096-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-xxtl","title":"Implement bd mol bond --ephemeral flag","description":"Add --ephemeral flag to bd mol bond command to support ephemeral molecule bonding.\n\n## Context\nPhase 1.2 of Wisp Molecule Integration (gt-3x0z.2) discovered that this flag doesn't exist.\n\n## Requirements\n\n1. Add --ephemeral flag to mol bond command\n2. When --ephemeral is set:\n - Mark spawned issues with wisp=true\n - Optionally write to separate .beads-ephemeral/ storage (Phase 2)\n\n## Architecture Reference\nSee gastown architecture.md lines 487-491 for the full ephemeral storage design.\n\n## Related\n- gt-3x0z.2: Configure bd for ephemeral molecule bonding (closed - blocked on this)","status":"tombstone","priority":2,"issue_type":"feature","created_at":"2025-12-21T16:00:04.924875-08:00","updated_at":"2025-12-27T21:29:56.570559-08:00","deleted_at":"2025-12-27T21:29:56.570559-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"}
|
||||
{"id":"gt-xyzb5","title":"Add Boot shutdown to gt shutdown","description":"gt shutdown should stop Boot if running. Currently Boot is only spawned by daemon but never explicitly stopped.","status":"hooked","priority":2,"issue_type":"task","assignee":"gastown/polecats/rictus","created_at":"2025-12-30T21:54:37.28145-08:00","created_by":"mayor","updated_at":"2025-12-30T21:55:05.986017-08:00"}
|
||||
{"id":"gt-xyzb5","title":"Add Boot shutdown to gt shutdown","description":"gt shutdown should stop Boot if running. Currently Boot is only spawned by daemon but never explicitly stopped.","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/rictus","created_at":"2025-12-30T21:54:37.28145-08:00","created_by":"mayor","updated_at":"2025-12-30T22:09:41.542959-08:00","closed_at":"2025-12-30T22:09:41.542959-08:00","close_reason":"Added Boot shutdown to gt down command. Boot now stopped between Mayor and Deacon."}
|
||||
{"id":"gt-xzmtp","title":"Digest: mol-deacon-patrol","description":"Patrol 13: nominal","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T19:34:37.026367-08:00","updated_at":"2025-12-27T21:26:00.751658-08:00","deleted_at":"2025-12-27T21:26:00.751658-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-y0t","title":"session stop: --force flag is defined but not used","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-16T13:55:12.848848-08:00","updated_at":"2025-12-25T01:30:41.67682-08:00","deleted_at":"2025-12-25T01:30:41.67682-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"bug"}
|
||||
{"id":"gt-y14l7","title":"Activity stream infrastructure check","description":"Verify activity stream infrastructure exists and is sufficient for MQ/witness events.\n\nCheck:\n- Does gt feed already have event infrastructure?\n- Can we emit custom events from Go code?\n- What format do events need?\n\nIf infrastructure exists, close this. If not, implement minimal event emission.","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/cheedo","created_at":"2025-12-28T21:40:18.862686-08:00","created_by":"gastown/crew/jack","updated_at":"2025-12-29T23:37:30.258758-08:00","closed_at":"2025-12-29T23:37:30.258758-08:00","close_reason":"## Infrastructure Assessment: SUFFICIENT with minor gaps\n\n### Current Event Infrastructure\n\n1. **townlog** (internal/townlog/logger.go)\n - CAN emit events from Go code\n - Event types: spawn, wake, nudge, handoff, done, crash, kill\n - Output: ~/gt/logs/town.log (text format)\n - Convenience functions: LogSpawn, LogWake, LogNudge, LogDone, etc.\n - Used by: session.go, stop.go, log.go\n\n2. **bd activity** (beads CLI)\n - Shows issue/molecule state changes\n - Events from beads database mutations\n - This IS what gt feed TUI displays\n - To emit events: create/update beads issues\n\n3. **JSONLSource** (internal/tui/feed/events.go:214-290)\n - Ready to read JSONL events from file\n - Format: {timestamp, type, actor, target, message, rig, role}\n - Currently unused (no producer writes to this)\n\n4. **gt feed TUI** (internal/cmd/feed.go)\n - Wraps bd activity in interactive TUI\n - Agent tree + event stream panels\n - Can consume from BdActivitySource or JSONLSource\n\n### Answers to Task Questions\n\nQ: Does gt feed already have event infrastructure?\nA: YES - reads from bd activity (beads mutations) and has JSONLSource ready\n\nQ: Can we emit custom events from Go code?\nA: YES - townlog.Logger.Log() emits events, but they go to text log not activity stream\n\nQ: What format do events need?\nA: For gt feed: JSONL with {timestamp, type, actor, target, message, rig, role}\n\n### Gap Analysis\n\nFor MQ/Witness events to appear in gt feed, dependent tasks need to either:\n\n**Option A** (Recommended): Extend townlog to dual-write\n- Add new EventTypes (patrol_started, merge_started, etc.)\n- Write to JSONL file in addition to text log\n- Update gt feed to also consume from this file\n- ~50-100 lines of changes\n\n**Option B**: Use beads issues\n- Create operational beads for patrol cycles, merge requests\n- Their state changes appear automatically in bd activity\n- More invasive, creates many ephemeral beads\n\n### Files for Dependent Tasks\n\n- internal/townlog/logger.go - Add event types, dual-write\n- internal/tui/feed/events.go - JSONLSource already exists\n- internal/cmd/feed.go - Add secondary source (if needed)"}
|
||||
@@ -2546,7 +2559,7 @@
|
||||
{"id":"gt-ydcrh","title":"Digest: mol-deacon-patrol","description":"Patrol 2: all healthy, no callbacks, no gates, no orphans, no plugins","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T16:19:37.466306-08:00","updated_at":"2025-12-27T21:26:01.295954-08:00","deleted_at":"2025-12-27T21:26:01.295954-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-ye8l","title":"Merge: gt-3x1","description":"branch: polecat/Slit\ntarget: main\nsource_issue: gt-3x1\nrig: gastown","status":"tombstone","priority":1,"issue_type":"merge-request","created_at":"2025-12-19T14:53:52.344849-08:00","updated_at":"2025-12-27T21:27:22.775056-08:00","deleted_at":"2025-12-27T21:27:22.775056-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"merge-request"}
|
||||
{"id":"gt-yewf","title":"Role prompts have mismatched startup protocols","description":"Different role prompts describe different startup protocols:\n\n- deacon.md: Check gt mol status, spawn if none: bd mol spawn\n- refinery.md: Check bd list --status=in_progress, bond if none: gt mol bond\n- polecat.md: Check bd mol current\n\nThese should use consistent terminology and commands.\nThe propulsion principle should be applied uniformly.","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-24T12:51:22.22295-08:00","updated_at":"2025-12-27T21:29:55.544652-08:00","dependencies":[{"issue_id":"gt-yewf","depends_on_id":"gt-jo9n","type":"blocks","created_at":"2025-12-24T12:52:07.728283-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:55.544652-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-yfmee","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 10: All quiet.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T15:54:01.483643-08:00","updated_at":"2025-12-30T15:54:01.483643-08:00","closed_at":"2025-12-30T15:54:01.483592-08:00","close_reason":"Squashed from 15 wisps","dependencies":[{"issue_id":"gt-yfmee","depends_on_id":"gt-eph-4p3","type":"parent-child","created_at":"2025-12-30T15:54:01.484768-08:00","created_by":"deacon"}]}
|
||||
{"id":"gt-yfmee","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 10: All quiet.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T15:54:01.483643-08:00","updated_at":"2025-12-30T15:54:01.483643-08:00","closed_at":"2025-12-30T15:54:01.483592-08:00","close_reason":"Squashed from 15 wisps"}
|
||||
{"id":"gt-yg6u3","title":"Digest: mol-deacon-patrol","description":"Patrol 7: Quiet","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T07:26:30.255841-08:00","updated_at":"2025-12-27T21:26:03.635248-08:00","deleted_at":"2025-12-27T21:26:03.635248-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-yheg9","title":"Digest: mol-deacon-patrol","description":"Patrol 4: All clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T15:34:01.074755-08:00","updated_at":"2025-12-25T15:34:01.074755-08:00","closed_at":"2025-12-25T15:34:01.074729-08:00"}
|
||||
{"id":"gt-yhq23","title":"Digest: mol-deacon-patrol","description":"Patrol 13: All clear","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T00:03:51.430921-08:00","updated_at":"2025-12-27T21:26:03.976851-08:00","deleted_at":"2025-12-27T21:26:03.976851-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
|
||||
Reference in New Issue
Block a user