bd sync: 2025-12-30 17:41:02
This commit is contained in:
@@ -302,6 +302,7 @@
|
||||
{"id":"gt-4nobz","title":"Merge: capable-1767140263101","description":"branch: polecat/capable-1767140263101\ntarget: main\nsource_issue: capable-1767140263101\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:26:48.125958-08:00","created_by":"gastown/polecats/capable","updated_at":"2025-12-30T16:26:48.125958-08:00"}
|
||||
{"id":"gt-4ol8f","title":"gt sling to town roles should use Town beads","description":"## Problem\n\nWhen Mayor starts from ~/gt (town root), `gt mol status` couldn't find beads pinned in rig beads.\n\n## Solution\n\nAdded cross-rig scanning for town-level roles (mayor, deacon):\n1. First check local beads directory \n2. If nothing found AND target is a town-level role, scan all registered rigs\n3. Return first pinned bead found\n\nThis makes `gt mol status` work correctly regardless of where Mayor is when checking hook status.\n\n## Tested\n\n1. `gt sling gt-552hb mayor` from gastown/mayor/rig/ - pins in rig beads ✓\n2. `gt mol status` from ~/gt - finds the pinned bead via cross-rig scan ✓","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-27T17:33:40.334303-08:00","created_by":"mayor","updated_at":"2025-12-27T21:29:45.731796-08:00","deleted_at":"2025-12-27T21:29:45.731796-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-4p1al","title":"Digest: mol-deacon-patrol","description":"P10","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T14:24:46.065008-08:00","updated_at":"2025-12-27T21:26:01.662897-08:00","deleted_at":"2025-12-27T21:26:01.662897-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-4q7wh","title":"Merge: nux-1767141948667","description":"branch: polecat/nux-1767141948667\ntarget: main\nsource_issue: nux-1767141948667\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:51:43.00373-08:00","created_by":"gastown/polecats/nux","updated_at":"2025-12-30T16:51:43.00373-08:00"}
|
||||
{"id":"gt-4qey","title":"gt mail: Cross-level routing is broken","description":"When Mayor sends mail to rig worker, message lands in wrong beads database. Sender's beads vs recipient's.","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-20T17:57:35.617292-08:00","updated_at":"2025-12-27T21:29:53.652416-08:00","deleted_at":"2025-12-27T21:29:53.652416-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-4qiqp","title":"Digest: mol-deacon-patrol","description":"Patrol 5: All clear","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T00:01:10.250364-08:00","updated_at":"2025-12-27T21:26:04.034526-08:00","deleted_at":"2025-12-27T21:26:04.034526-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-4rgsf","title":"Merge: furiosa-1767075024945","description":"branch: polecat/furiosa-1767075024945\ntarget: main\nsource_issue: furiosa-1767075024945\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-29T22:13:52.986187-08:00","created_by":"gastown/polecats/furiosa","updated_at":"2025-12-29T23:32:37.218051-08:00","closed_at":"2025-12-29T23:32:37.218051-08:00","close_reason":"Branch no longer exists on remote - already merged or cleaned up"}
|
||||
@@ -402,7 +403,7 @@
|
||||
{"id":"gt-5rg5c","title":"Digest: mol-deacon-patrol","description":"P6: stable","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T20:10:59.624402-08:00","updated_at":"2025-12-27T21:26:02.294341-08:00","deleted_at":"2025-12-27T21:26:02.294341-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-5rjtw","title":"Merge: valkyrie-1767074338488","description":"branch: polecat/valkyrie-1767074338488\ntarget: main\nsource_issue: valkyrie-1767074338488\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-29T22:03:51.278787-08:00","created_by":"gastown/polecats/valkyrie","updated_at":"2025-12-29T23:32:37.262282-08:00","closed_at":"2025-12-29T23:32:37.262282-08:00","close_reason":"Branch no longer exists on remote - already merged or cleaned up"}
|
||||
{"id":"gt-5tct","title":"gt mail send: add stdin and file input support for complex messages","description":"Current -m flag is fragile with multi-line messages containing backticks, quotes, or shell special chars. Add: 1) --stdin flag to read message body from stdin (heredoc-friendly), 2) -f/--file flag to read from file. This sidesteps shell quoting nightmares for handoff messages with code samples.","status":"tombstone","priority":2,"issue_type":"feature","created_at":"2025-12-23T03:47:50.514096-08:00","updated_at":"2025-12-27T21:29:56.150954-08:00","deleted_at":"2025-12-27T21:29:56.150954-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"}
|
||||
{"id":"gt-5tipl","title":"convoy --notify flag doesn't actually notify","description":"The gt convoy create --notify flag is captured but only stored in description. No code sends notification on convoy completion.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-30T14:13:40.209653-08:00","created_by":"mayor","updated_at":"2025-12-30T14:13:40.209653-08:00"}
|
||||
{"id":"gt-5tipl","title":"convoy --notify flag doesn't actually notify","description":"The gt convoy create --notify flag is captured but only stored in description. No code sends notification on convoy completion.","status":"closed","priority":2,"issue_type":"bug","assignee":"gastown/polecats/nux","created_at":"2025-12-30T14:13:40.209653-08:00","created_by":"mayor","updated_at":"2025-12-30T16:51:29.864136-08:00","closed_at":"2025-12-30T16:51:29.864136-08:00","close_reason":"Implemented: notify address stored in slot, added gt convoy notify command"}
|
||||
{"id":"gt-5tp","title":"Test message","description":"Testing GGT mail via beads","status":"tombstone","priority":2,"issue_type":"message","created_at":"2025-12-16T21:44:27.546781-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":"message"}
|
||||
{"id":"gt-5uf3","title":"Patrol step: check parked molecules for unblock","description":"Add patrol step to Deacon for checking parked molecules:\n\n```yaml\n- step: check-parked-molecules\n action: |\n For each molecule with:\n - status: in_progress\n - assignee: null\n - has step with external: blocked_by\n Check if external deps are now satisfied.\n If yes: spawn polecat to resume the molecule.\n```\n\nThis automates the resume process - no manual intervention needed when\nupstream dependencies ship.\n\nPart of cross-project dependency system.\nSee: docs/cross-project-deps.md\n\nDepends on: gt-in3x (spawn --continue)\nPriority: P3 (future automation, not required for launch)","status":"tombstone","priority":3,"issue_type":"feature","created_at":"2025-12-21T22:39:25.167767-08:00","updated_at":"2025-12-27T21:29:57.555818-08:00","dependencies":[{"issue_id":"gt-5uf3","depends_on_id":"gt-in3x","type":"blocks","created_at":"2025-12-21T22:39:44.777023-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:57.555818-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"}
|
||||
{"id":"gt-5v29","title":"Add 'wit' alias for witness command","description":"ref works as alias for refinery, but wit doesn't work for witness. Add Aliases: []string{\"wit\"} to witnessCmd.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-20T23:11:53.453692-08:00","updated_at":"2025-12-20T23:11:53.453692-08:00"}
|
||||
@@ -416,6 +417,7 @@
|
||||
{"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"}
|
||||
{"id":"gt-643ie","title":"Merge: slit-1767141951901","description":"branch: polecat/slit-1767141951901\ntarget: main\nsource_issue: slit-1767141951901\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:56:13.683501-08:00","created_by":"gastown/polecats/slit","updated_at":"2025-12-30T16:56:13.683501-08:00"}
|
||||
{"id":"gt-659gx","title":"Digest: mol-deacon-patrol","description":"Patrol 19: All healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T17:49:17.60911-08:00","updated_at":"2025-12-26T17:49:17.60911-08:00","closed_at":"2025-12-26T17:49:17.609075-08:00"}
|
||||
{"id":"gt-65a2","title":"Merge: gt-lnji","description":"branch: polecat/nux\ntarget: main\nsource_issue: gt-lnji\nrig: gastown","status":"tombstone","priority":1,"issue_type":"merge-request","created_at":"2025-12-22T23:36:23.454776-08:00","updated_at":"2025-12-27T21:27:22.526724-08:00","deleted_at":"2025-12-27T21:27:22.526724-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"merge-request"}
|
||||
{"id":"gt-65gwa","title":"bd admin compact --older-than=0 ignores the flag, uses default 30 days","description":"When running bd admin compact --prune --older-than=0, the output says 'No expired tombstones to prune (TTL: 30 days)' - the flag value is ignored.","status":"closed","priority":2,"issue_type":"bug","assignee":"gastown/polecats/dementus","created_at":"2025-12-28T22:38:10.95263-08:00","created_by":"stevey","updated_at":"2025-12-29T23:34:48.978317-08:00","closed_at":"2025-12-29T23:34:48.978317-08:00","close_reason":"Moved to bd-gigi - this is a beads bug, was filed in wrong rig (gastown). The fix needs to be made in the beads codebase at cmd/bd/compact_tombstone.go and cmd/bd/compact.go."}
|
||||
@@ -455,7 +457,7 @@
|
||||
{"id":"gt-6qzay","title":"Digest: mol-deacon-patrol","description":"Patrol 7: Quiet","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:15:59.128327-08:00","updated_at":"2025-12-25T19:15:59.128327-08:00","closed_at":"2025-12-25T19:15:59.12827-08:00"}
|
||||
{"id":"gt-6r18e","title":"HOP Foundation: Entity Identity \u0026 Federation","description":"Foundation work for HOP graph architecture. Enables agent provenance tracking, cross-workspace federation, and delegation semantics. See ~/gt/docs/hop/GRAPH-ARCHITECTURE.md for full design.","status":"open","priority":1,"issue_type":"epic","created_at":"2025-12-30T11:08:10.136469-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T11:08:10.136469-08:00"}
|
||||
{"id":"gt-6r18e.1","title":"Set GIT_AUTHOR_NAME per agent session","description":"Set GIT_AUTHOR_NAME to actor string (e.g., gastown/crew/joe) in agent session environment. GIT_AUTHOR_EMAIL stays as workspace owner. Enables git log --author queries for agent work.","status":"closed","priority":1,"issue_type":"task","assignee":"gastown/polecats/furiosa","created_at":"2025-12-30T11:08:24.620264-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T16:09:30.244412-08:00","closed_at":"2025-12-30T16:09:30.244412-08:00","close_reason":"Implemented: Added GIT_AUTHOR_NAME export to all agent session spawn locations (13 files updated). Enables git log --author queries for agent work.","dependencies":[{"issue_id":"gt-6r18e.1","depends_on_id":"gt-6r18e","type":"parent-child","created_at":"2025-12-30T11:08:24.62079-08:00","created_by":"gastown/crew/joe"}]}
|
||||
{"id":"gt-6r18e.1.1","title":"Clarify GIT_AUTHOR_EMAIL handling for agents","description":"When setting GIT_AUTHOR_NAME per agent (gt-6r18e.1), also need to decide GIT_AUTHOR_EMAIL:\n\nOption A (proposed): Keep overseer's git email\n- GIT_AUTHOR_EMAIL = steve.yegge@gmail.com (from git config)\n- This anchors ownership to the human\n- Agents are tools of the overseer\n\nOption B: Construct agent email\n- GIT_AUTHOR_EMAIL = gastown-crew-joe@gastown.local\n- Fully separates agent identity\n- May cause issues with GitHub/Bitbucket attribution\n\nRecommendation: Option A - keeps human ownership clear while GIT_AUTHOR_NAME shows which agent did the work.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T13:58:29.803201-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T13:58:29.803201-08:00","dependencies":[{"issue_id":"gt-6r18e.1.1","depends_on_id":"gt-6r18e.1","type":"parent-child","created_at":"2025-12-30T13:58:29.805139-08:00","created_by":"gastown/crew/joe"}]}
|
||||
{"id":"gt-6r18e.1.1","title":"Clarify GIT_AUTHOR_EMAIL handling for agents","description":"When setting GIT_AUTHOR_NAME per agent (gt-6r18e.1), also need to decide GIT_AUTHOR_EMAIL:\n\nOption A (proposed): Keep overseer's git email\n- GIT_AUTHOR_EMAIL = steve.yegge@gmail.com (from git config)\n- This anchors ownership to the human\n- Agents are tools of the overseer\n\nOption B: Construct agent email\n- GIT_AUTHOR_EMAIL = gastown-crew-joe@gastown.local\n- Fully separates agent identity\n- May cause issues with GitHub/Bitbucket attribution\n\nRecommendation: Option A - keeps human ownership clear while GIT_AUTHOR_NAME shows which agent did the work.","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/furiosa","created_at":"2025-12-30T13:58:29.803201-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T16:48:19.865247-08:00","closed_at":"2025-12-30T16:48:19.865247-08:00","close_reason":"Verified: Option A implemented and documented. GIT_AUTHOR_EMAIL not exported, so git uses workspace owner's email from git config. Documentation in docs/federation.md lines 94-98 is accurate.","dependencies":[{"issue_id":"gt-6r18e.1.1","depends_on_id":"gt-6r18e.1","type":"parent-child","created_at":"2025-12-30T13:58:29.805139-08:00","created_by":"gastown/crew/joe"}]}
|
||||
{"id":"gt-6r18e.2","title":"Default BD_ACTOR in beads create","description":"BUG: BD_ACTOR env var is only read in --no-db mode and daemon RPC path. Normal direct mode skips BD_ACTOR and falls back to $USER. The comment claims 'Viper handles BD_ACTOR automatically' but there's no actual viper binding. Fix: Add explicit os.Getenv(\"BD_ACTOR\") check in main.go line 441-448, same as the --no-db path at line 352-360.","status":"closed","priority":1,"issue_type":"task","assignee":"gastown/polecats/nux","created_at":"2025-12-30T11:08:25.504224-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T16:08:12.967566-08:00","closed_at":"2025-12-30T16:08:12.967566-08:00","close_reason":"Fixed BD_ACTOR handling in direct mode paths - commit 3ed25895 on beads repo","dependencies":[{"issue_id":"gt-6r18e.2","depends_on_id":"gt-6r18e","type":"parent-child","created_at":"2025-12-30T11:08:25.506365-08:00","created_by":"gastown/crew/joe"}]}
|
||||
{"id":"gt-6r18e.3","title":"Add workspace metadata file (.town.json)","description":"Create ~/gt/.town.json with owner email, workspace name, and public name. Anchors workspace to entity identity for federation.","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/nux","created_at":"2025-12-30T11:08:27.318742-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T16:17:27.391761-08:00","closed_at":"2025-12-30T16:17:27.391761-08:00","close_reason":"Added Owner and PublicName fields to TownConfig, bumped schema to v2, updated gt install command","dependencies":[{"issue_id":"gt-6r18e.3","depends_on_id":"gt-6r18e","type":"parent-child","created_at":"2025-12-30T11:08:27.320549-08:00","created_by":"gastown/crew/joe"}]}
|
||||
{"id":"gt-6r18e.4","title":"Design cross-workspace URI scheme","description":"Define URI format: gt://entity/chain/rig/issue-id. Document resolution semantics for local vs remote references. Update GRAPH-ARCHITECTURE.md with final spec.","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/dementus","created_at":"2025-12-30T11:08:28.901241-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T16:22:43.4735-08:00","closed_at":"2025-12-30T16:22:43.4735-08:00","close_reason":"Designed cross-workspace URI scheme: hop:// for federation, beads:// for cross-repo, local short forms. Updated GRAPH-ARCHITECTURE.md with full spec including resolution semantics.","dependencies":[{"issue_id":"gt-6r18e.4","depends_on_id":"gt-6r18e","type":"parent-child","created_at":"2025-12-30T11:08:28.903065-08:00","created_by":"gastown/crew/joe"}]}
|
||||
@@ -1156,26 +1158,26 @@
|
||||
{"id":"gt-gastown-crew-grip","title":"Crew worker grip in gastown - human-managed persistent workspace.","description":"Crew worker grip in gastown - human-managed persistent workspace.\n\nrole_type: crew\nrig: gastown\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T14:48:47.052927-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-29T14:56:24.095719-08:00","closed_at":"2025-12-29T14:56:24.095719-08:00","close_reason":"Crew moved to beads rig"}
|
||||
{"id":"gt-gastown-crew-jack","title":"Crew worker jack in gastown - human-managed persistent workspace.","description":"Crew worker jack in gastown - human-managed persistent workspace.\n\nrole_type: crew\nrig: gastown\nagent_state: running\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-29T14:49:02.451898-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T16:04:16.784114-08:00"}
|
||||
{"id":"gt-gastown-crew-joe","title":"Crew worker joe in gastown - human-managed persistent workspace.","description":"Crew worker joe in gastown - human-managed persistent workspace.\n\nrole_type: crew\nrig: gastown\nagent_state: running\nhook_bead: gt-7aw1m\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-29T14:49:17.861869-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T13:35:38.325819-08:00"}
|
||||
{"id":"gt-gastown-crew-max","title":"Crew worker max in gastown - human-managed persistent workspace.","description":"Crew worker max in gastown - human-managed persistent workspace.\n\nrole_type: crew\nrig: gastown\nagent_state: running\nhook_bead: \nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-29T14:49:33.272043-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T16:04:16.592066-08:00"}
|
||||
{"id":"gt-gastown-crew-max","title":"Crew worker max in gastown - human-managed persistent workspace.","description":"Crew worker max in gastown - human-managed persistent workspace.\n\nrole_type: crew\nrig: gastown\nagent_state: running\nhook_bead: \nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-29T14:49:33.272043-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T16:43:21.754215-08:00"}
|
||||
{"id":"gt-gastown-crew-wolf","title":"Crew worker wolf in gastown","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T14:52:01.595469-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-29T14:56:24.107543-08:00","closed_at":"2025-12-29T14:56:24.107543-08:00","close_reason":"Crew moved to beads rig"}
|
||||
{"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: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:56:09.595279-08:00","created_by":"mayor","updated_at":"2025-12-30T16:26:48.405399-08:00","closed_at":"2025-12-30T15:19:18.971303-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:18.939274-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_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:56:09.595279-08:00","created_by":"mayor","updated_at":"2025-12-30T16:45:27.160286-08:00","closed_at":"2025-12-30T16:45:27.160286-08:00","close_reason":"nuked","deleted_at":"2025-12-30T16:45:27.123031-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-30T15:19:19.110477-08:00","closed_at":"2025-12-30T15:19:19.110477-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:19.07805-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-30T16:26:59.619983-08:00","closed_at":"2025-12-30T15:19:19.250506-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:19.218596-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-30T16:45:27.317371-08:00","closed_at":"2025-12-30T16:45:27.317371-08:00","close_reason":"nuked","deleted_at":"2025-12-30T16:45:27.280601-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: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:43:05.226023-08:00","created_by":"mayor","updated_at":"2025-12-30T16:23:04.79579-08:00","closed_at":"2025-12-30T15:19:19.396719-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:19.361894-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-30T16:09:55.56437-08:00","closed_at":"2025-12-30T15:19:19.55041-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:19.515773-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: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:43:05.226023-08:00","created_by":"mayor","updated_at":"2025-12-30T16:45:27.469073-08:00","closed_at":"2025-12-30T16:45:27.469073-08:00","close_reason":"nuked","deleted_at":"2025-12-30T16:45:27.432621-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-30T16:49:14.433594-08:00","closed_at":"2025-12-30T16:45:27.621793-08:00","close_reason":"nuked","deleted_at":"2025-12-30T16:45:27.586451-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: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:53.302196-08:00","created_by":"mayor","updated_at":"2025-12-30T16:17:55.000083-08:00","closed_at":"2025-12-30T15:19:20.206529-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:20.173469-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: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:53.302196-08:00","created_by":"mayor","updated_at":"2025-12-30T16:51:43.289191-08:00","closed_at":"2025-12-30T16:45:27.772458-08:00","close_reason":"nuked","deleted_at":"2025-12-30T16:45:27.736714-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_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:58.123296-08:00","created_by":"mayor","updated_at":"2025-12-30T16:27:17.505658-08:00","closed_at":"2025-12-30T15:19:20.493908-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:20.461176-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: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:55.706657-08:00","created_by":"mayor","updated_at":"2025-12-30T16:15:39.634772-08:00","closed_at":"2025-12-30T15:19:20.629336-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:20.597419-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-toast","title":"gt-gastown-polecat-toast","description":"gt-gastown-polecat-toast\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-38doh\nrole_bead: gt-polecat-role\ncleanup_status: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:58:19.899125-08:00","created_by":"mayor","updated_at":"2025-12-30T16:28:18.735037-08:00","closed_at":"2025-12-30T15:19:20.766446-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:20.732323-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_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:58.123296-08:00","created_by":"mayor","updated_at":"2025-12-30T16:47:37.220074-08:00","closed_at":"2025-12-30T16:45:27.921668-08:00","close_reason":"nuked","deleted_at":"2025-12-30T16:45:27.886488-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: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T17:54:55.706657-08:00","created_by":"mayor","updated_at":"2025-12-30T16:56:13.955118-08:00","closed_at":"2025-12-30T16:45:28.07169-08:00","close_reason":"nuked","deleted_at":"2025-12-30T16:45:28.036118-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-toast","title":"gt-gastown-polecat-toast","description":"gt-gastown-polecat-toast\n\nrole_type: polecat\nrig: gastown\nagent_state: running\nhook_bead: gt-38doh\nrole_bead: gt-polecat-role\ncleanup_status: has_stash","status":"closed","priority":2,"issue_type":"agent","created_at":"2025-12-29T21:58:19.899125-08:00","created_by":"mayor","updated_at":"2025-12-30T16:45:28.220218-08:00","closed_at":"2025-12-30T16:45:28.220218-08:00","close_reason":"nuked","deleted_at":"2025-12-30T16:45:28.184484-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-valkyrie","title":"gt-gastown-polecat-valkyrie","description":"gt-gastown-polecat-valkyrie\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:58:58.583302-08:00","created_by":"mayor","updated_at":"2025-12-30T15:19:20.90588-08:00","closed_at":"2025-12-30T15:19:20.90588-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:20.873687-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-polecat-warboy","title":"gt-gastown-polecat-warboy","description":"gt-gastown-polecat-warboy\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:40.892638-08:00","created_by":"mayor","updated_at":"2025-12-30T15:19:21.040512-08:00","closed_at":"2025-12-30T15:19:21.040512-08:00","close_reason":"nuked","deleted_at":"2025-12-30T15:19:21.0084-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"agent"}
|
||||
{"id":"gt-gastown-refinery","title":"Refinery for gastown - processes merge queue.","description":"Refinery for gastown - processes merge queue.\n\nrole_type: refinery\nrig: gastown\nagent_state: running\nhook_bead: null\nrole_bead: gt-refinery-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-29T14:48:16.178399-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T15:05:50.915611-08:00"}
|
||||
@@ -1190,6 +1192,7 @@
|
||||
{"id":"gt-gby","title":"gt handoff: Unified agent lifecycle command","description":"## Summary\n\nUnified `gt handoff` command for ALL agent types to request lifecycle actions.\n\n## Usage\n\ngt handoff # Context-aware default\ngt handoff --shutdown # Terminate, cleanup, don't restart\ngt handoff --cycle # Restart with handoff mail\ngt handoff --restart # Fresh restart, no handoff\n\n## Context-Aware Defaults\n\n| Agent Type | Default | Reason |\n|------------|---------|--------|\n| Polecat | --shutdown | Ephemeral, work is done |\n| Witness | --cycle | Long-running, context full |\n| Refinery | --cycle | Long-running, context full |\n| Mayor | --cycle | Long-running, context full |\n| Crew | (sends mail only) | Human-managed |\n\n## What gt handoff Does\n\n1. **Verify safe to stop**\n - Git state clean (no uncommitted changes)\n - Work handed off (PR exists for polecats)\n\n2. **Send handoff mail to self** (for cycle/restart)\n - Captures current state\n - New session will read this\n\n3. **Send lifecycle request to manager**\n - Polecats/Refinery → Witness\n - Witness/Mayor → Daemon\n - Format: mail to \u003cmanager\u003e with action type\n\n4. **Set state: requesting_\u003caction\u003e**\n - Lifecycle manager checks this before acting\n\n5. **Wait for termination**\n - Don't self-exit - let manager kill session\n - Ensures clean handoff\n\n## Lifecycle Request Flow\n\nAgent Lifecycle Manager\n | |\n | 1. gt handoff --cycle |\n | a. Verify git clean |\n | b. Send handoff mail to self |\n | c. Set requesting_cycle=true |\n | d. Send lifecycle request |\n |------------------------------------→|\n | |\n | 2. Receive request\n | 3. Verify state |\n | 4. Kill session |\n | 5. Start new |\n | (for cycle) |\n | |\n | New session reads handoff |\n | Resumes work |\n\n## Who Manages Whom\n\n| Agent | Sends lifecycle request to |\n|-------|---------------------------|\n| Polecat | \u003crig\u003e/witness |\n| Refinery | \u003crig\u003e/witness |\n| Witness | daemon/ |\n| Mayor | daemon/ |\n\n## Implementation\n\n1. Detect current role (polecat, witness, refinery, mayor, crew)\n2. Apply context-aware default if no flag specified\n3. Run pre-flight checks (git clean, work handed off)\n4. Send handoff mail to self (if cycling)\n5. Send lifecycle request to appropriate manager\n6. Set requesting_\u003caction\u003e in state.json\n7. Wait (manager will kill us)\n\n## For Polecats (--shutdown)\n\nAdditional cleanup after kill:\n- Witness removes worktree\n- Witness deletes polecat branch\n- Polecat ceases to exist\n\n## Related Issues\n\n- gt-99m: Daemon (handles Mayor/Witness lifecycle)\n- gt-7ik: Ephemeral polecats (polecat cleanup)\n- gt-eu9: Witness session cycling","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-18T11:39:40.806863-08:00","updated_at":"2025-12-27T21:29:54.203457-08:00","dependencies":[{"issue_id":"gt-gby","depends_on_id":"gt-7ik","type":"blocks","created_at":"2025-12-18T11:39:46.423945-08:00","created_by":"daemon"},{"issue_id":"gt-gby","depends_on_id":"gt-eu9","type":"blocks","created_at":"2025-12-18T11:39:46.547204-08:00","created_by":"daemon"},{"issue_id":"gt-gby","depends_on_id":"gt-99m","type":"blocks","created_at":"2025-12-18T11:50:24.142182-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:54.203457-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"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":"open","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-30T16:47:36.872662-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"}
|
||||
@@ -1655,33 +1658,33 @@
|
||||
{"id":"gt-mol-07k","title":"Implement","description":"Implement the solution for gt-gmqe. 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.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T18:45:53.64976-08:00","updated_at":"2025-12-27T21:29:55.156264-08:00","dependencies":[{"issue_id":"gt-mol-07k","depends_on_id":"gt-mol-aux","type":"parent-child","created_at":"2025-12-25T18:45:53.650847-08:00","created_by":"mayor"},{"issue_id":"gt-mol-07k","depends_on_id":"gt-mol-1vj","type":"blocks","created_at":"2025-12-25T18:45:53.66264-08:00","created_by":"mayor"}],"deleted_at":"2025-12-27T21:29:55.156264-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-mol-0mz","title":"Load context","description":"Run gt prime and bd prime. Verify issue assignment.\nCheck inbox for any relevant messages.\n\nRead the assigned issue (gt-8tmz.36) and understand the requirements.\nIdentify any blockers or missing information.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:36.237689-08:00","updated_at":"2025-12-27T21:29:55.106067-08:00","deleted_at":"2025-12-27T21:29:55.106067-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-mol-1vj","title":"Load context","description":"Run gt prime and bd prime. Verify issue assignment.\nCheck inbox for any relevant messages.\n\nRead the assigned issue (gt-gmqe) and understand the requirements.\nIdentify any blockers or missing information.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T18:45:53.650028-08:00","updated_at":"2025-12-27T21:29:55.147812-08:00","dependencies":[{"issue_id":"gt-mol-1vj","depends_on_id":"gt-mol-aux","type":"parent-child","created_at":"2025-12-25T18:45:53.674603-08:00","created_by":"mayor"}],"deleted_at":"2025-12-27T21:29:55.147812-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-mol-265","title":"mol-deacon-patrol","description":"Mayor's daemon patrol loop.\n\nThe Deacon is the Mayor's background process that runs continuously, handling callbacks, monitoring rig health, and performing cleanup. Each patrol cycle runs these steps in sequence, then loops or exits.\n\n## Second-Order Monitoring\n\nWitnesses send WITNESS_PING messages to verify the Deacon is alive. This\nprevents the \"who watches the watchers\" problem - if the Deacon dies,\nWitnesses detect it and escalate to the Mayor.\n\nThe Deacon's agent bead last_activity timestamp is updated during each patrol\ncycle. Witnesses check this timestamp to verify health.","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-30T16:09:54.464672-08:00","updated_at":"2025-12-30T16:09:54.464672-08:00"}
|
||||
{"id":"gt-mol-265","title":"mol-deacon-patrol","description":"Mayor's daemon patrol loop.\n\nThe Deacon is the Mayor's background process that runs continuously, handling callbacks, monitoring rig health, and performing cleanup. Each patrol cycle runs these steps in sequence, then loops or exits.\n\n## Second-Order Monitoring\n\nWitnesses send WITNESS_PING messages to verify the Deacon is alive. This\nprevents the \"who watches the watchers\" problem - if the Deacon dies,\nWitnesses detect it and escalate to the Mayor.\n\nThe Deacon's agent bead last_activity timestamp is updated during each patrol\ncycle. Witnesses check this timestamp to verify health.","status":"closed","priority":2,"issue_type":"epic","assignee":"gastown/polecats/slit","created_at":"2025-12-30T16:09:54.464672-08:00","updated_at":"2025-12-30T16:55:37.262387-08:00","closed_at":"2025-12-30T16:55:37.262387-08:00","close_reason":"Deacon patrol cycle complete: all 15 steps executed. Key findings: Witness/Refinery healthy, no convoys or gates pending, cleanup flagged for manual fix (7 missing agent beads, 4 stale locks)"}
|
||||
{"id":"gt-mol-3f0","title":"Implement","description":"Implement the solution for gt-8tmz.34. 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.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:10.031026-08:00","updated_at":"2025-12-27T21:29:55.13109-08:00","dependencies":[{"issue_id":"gt-mol-3f0","depends_on_id":"gt-mol-xl8","type":"blocks","created_at":"2025-12-25T19:47:10.045526-08:00","created_by":"mayor"}],"deleted_at":"2025-12-27T21:29:55.13109-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-mol-3g1","title":"mol-polecat-work","description":"Full polecat lifecycle from assignment to decommission.\n\nThis proto enables nondeterministic idempotence for polecat work. A polecat that crashes after any step can restart, read its molecule state, and continue from the last completed step. No work is lost.\n\n## Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| issue | Yes | The source issue ID being worked on |","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-25T19:47:48.598459-08:00","updated_at":"2025-12-25T19:56:54.390868-08:00","closed_at":"2025-12-25T19:56:54.390868-08:00"}
|
||||
{"id":"gt-mol-430","title":"Check convoy completion","description":"Check convoy completion status.\n\nConvoys are coordination beads that track multiple issues across rigs. When all tracked issues close, the convoy auto-closes.\n\n**Step 1: Find open convoys**\n```bash\nbd list --type=convoy --status=open\n```\n\n**Step 2: For each open convoy, check tracked issues**\n```bash\nbd show \u003cconvoy-id\u003e\n# Look for 'tracks' or 'dependencies' field listing tracked issues\n```\n\n**Step 3: If all tracked issues are closed, close the convoy**\n```bash\n# Check each tracked issue\nfor issue in tracked_issues:\n bd show \u003cissue-id\u003e\n # If status is open/in_progress, convoy stays open\n # If all are closed (completed, wontfix, etc.), convoy is complete\n\n# Close convoy when all tracked issues are done\nbd close \u003cconvoy-id\u003e --reason \"All tracked issues completed\"\n```\n\n**Note**: Convoys support cross-prefix tracking (e.g., hq-* convoy can track gt-*, bd-* issues). Use full IDs when checking.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.466252-08:00","updated_at":"2025-12-30T16:09:54.466252-08:00","dependencies":[{"issue_id":"gt-mol-430","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.489544-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-430","depends_on_id":"gt-mol-cp0","type":"blocks","created_at":"2025-12-30T16:09:54.580726-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-430","title":"Check convoy completion","description":"Check convoy completion status.\n\nConvoys are coordination beads that track multiple issues across rigs. When all tracked issues close, the convoy auto-closes.\n\n**Step 1: Find open convoys**\n```bash\nbd list --type=convoy --status=open\n```\n\n**Step 2: For each open convoy, check tracked issues**\n```bash\nbd show \u003cconvoy-id\u003e\n# Look for 'tracks' or 'dependencies' field listing tracked issues\n```\n\n**Step 3: If all tracked issues are closed, close the convoy**\n```bash\n# Check each tracked issue\nfor issue in tracked_issues:\n bd show \u003cissue-id\u003e\n # If status is open/in_progress, convoy stays open\n # If all are closed (completed, wontfix, etc.), convoy is complete\n\n# Close convoy when all tracked issues are done\nbd close \u003cconvoy-id\u003e --reason \"All tracked issues completed\"\n```\n\n**Note**: Convoys support cross-prefix tracking (e.g., hq-* convoy can track gt-*, bd-* issues). Use full IDs when checking.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.466252-08:00","updated_at":"2025-12-30T16:48:10.829929-08:00","closed_at":"2025-12-30T16:48:10.829929-08:00","close_reason":"No open convoys found","dependencies":[{"issue_id":"gt-mol-430","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.489544-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-430","depends_on_id":"gt-mol-cp0","type":"blocks","created_at":"2025-12-30T16:09:54.580726-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-572","title":"Implement","description":"Implement the solution for gt-8tmz.36. 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.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:36.237423-08:00","updated_at":"2025-12-27T21:29:55.114325-08:00","dependencies":[{"issue_id":"gt-mol-572","depends_on_id":"gt-mol-0mz","type":"blocks","created_at":"2025-12-25T19:47:36.252069-08:00","created_by":"mayor"}],"deleted_at":"2025-12-27T21:29:55.114325-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-mol-74a","title":"Maintain dog pool","description":"Ensure dog pool has available workers for dispatch.\n\n**Step 1: Check dog pool status**\n```bash\ngt dog status\n# Shows idle/working counts\n```\n\n**Step 2: Ensure minimum idle dogs**\nIf idle count is 0 and working count is at capacity, consider spawning:\n```bash\n# If no idle dogs available\ngt dog add \u003cname\u003e\n# Names: alpha, bravo, charlie, delta, etc.\n```\n\n**Step 3: Retire stale dogs (optional)**\nDogs that have been idle for \u003e24 hours can be removed to save resources:\n```bash\ngt dog status \u003cname\u003e\n# Check last_active timestamp\n# If idle \u003e 24h: gt dog remove \u003cname\u003e\n```\n\n**Pool sizing guidelines:**\n- Minimum: 1 idle dog always available\n- Maximum: 4 dogs total (balance resources vs throughput)\n- Spawn on demand when pool is empty\n\n**Exit criteria:** Pool has at least 1 idle dog.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.467751-08:00","updated_at":"2025-12-30T16:09:54.467752-08:00","dependencies":[{"issue_id":"gt-mol-74a","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.52179-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-74a","depends_on_id":"gt-mol-930","type":"blocks","created_at":"2025-12-30T16:09:54.630637-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-81p","title":"Burn and respawn or loop","description":"Burn and let daemon respawn, or exit if context high.\n\nDecision point at end of patrol cycle:\n\nIf context is LOW:\n- Sleep briefly (avoid tight loop)\n- Return to inbox-check step\n\nIf context is HIGH:\n- Write state to persistent storage\n- Exit cleanly\n- Let the daemon orchestrator respawn a fresh Deacon\n\nThe daemon ensures Deacon is always running:\n```bash\n# Daemon respawns on exit\ngt daemon status\n```\n\nThis enables infinite patrol duration via context-aware respawning.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.469512-08:00","updated_at":"2025-12-30T16:09:54.469512-08:00","dependencies":[{"issue_id":"gt-mol-81p","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.560436-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-81p","depends_on_id":"gt-mol-hb9","type":"blocks","created_at":"2025-12-30T16:09:54.676939-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-930","title":"Check Witness and Refinery health","description":"Check Witness and Refinery health for each rig.\n\n**ZFC Principle**: You (Claude) make the judgment call about what is \"stuck\" or \"unresponsive\" - there are no hardcoded thresholds in Go. Read the signals, consider context, and decide.\n\nFor each rig, run:\n```bash\ngt witness status \u003crig\u003e\ngt refinery status \u003crig\u003e\n```\n\n**Signals to assess:**\n\n| Component | Healthy Signals | Concerning Signals |\n|-----------|-----------------|-------------------|\n| Witness | State: running, recent activity | State: not running, no heartbeat |\n| Refinery | State: running, queue processing | Queue stuck, merge failures |\n\n**Tracking unresponsive cycles:**\n\nMaintain in your patrol state (persisted across cycles):\n```\nhealth_state:\n \u003crig\u003e:\n witness:\n unresponsive_cycles: 0\n last_seen_healthy: \u003ctimestamp\u003e\n refinery:\n unresponsive_cycles: 0\n last_seen_healthy: \u003ctimestamp\u003e\n```\n\n**Decision matrix** (you decide the thresholds based on context):\n\n| Cycles Unresponsive | Suggested Action |\n|---------------------|------------------|\n| 1-2 | Note it, check again next cycle |\n| 3-4 | Attempt restart: gt witness restart \u003crig\u003e |\n| 5+ | Escalate to Mayor with context |\n\n**Restart commands:**\n```bash\ngt witness restart \u003crig\u003e\ngt refinery restart \u003crig\u003e\n```\n\n**Escalation:**\n```bash\ngt mail send mayor/ -s \"Health: \u003crig\u003e \u003ccomponent\u003e unresponsive\" \\\n -m \"Component has been unresponsive for N cycles. Restart attempts failed.\n Last healthy: \u003ctimestamp\u003e\n Error signals: \u003cdetails\u003e\"\n```\n\nReset unresponsive_cycles to 0 when component responds normally.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.467158-08:00","updated_at":"2025-12-30T16:09:54.467158-08:00","dependencies":[{"issue_id":"gt-mol-930","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.509203-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-930","depends_on_id":"gt-mol-9ye","type":"blocks","created_at":"2025-12-30T16:09:54.60181-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-930","depends_on_id":"gt-mol-qlh","type":"blocks","created_at":"2025-12-30T16:09:54.609066-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-930","depends_on_id":"gt-mol-h71","type":"blocks","created_at":"2025-12-30T16:09:54.616204-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-74a","title":"Maintain dog pool","description":"Ensure dog pool has available workers for dispatch.\n\n**Step 1: Check dog pool status**\n```bash\ngt dog status\n# Shows idle/working counts\n```\n\n**Step 2: Ensure minimum idle dogs**\nIf idle count is 0 and working count is at capacity, consider spawning:\n```bash\n# If no idle dogs available\ngt dog add \u003cname\u003e\n# Names: alpha, bravo, charlie, delta, etc.\n```\n\n**Step 3: Retire stale dogs (optional)**\nDogs that have been idle for \u003e24 hours can be removed to save resources:\n```bash\ngt dog status \u003cname\u003e\n# Check last_active timestamp\n# If idle \u003e 24h: gt dog remove \u003cname\u003e\n```\n\n**Pool sizing guidelines:**\n- Minimum: 1 idle dog always available\n- Maximum: 4 dogs total (balance resources vs throughput)\n- Spawn on demand when pool is empty\n\n**Exit criteria:** Pool has at least 1 idle dog.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.467751-08:00","updated_at":"2025-12-30T16:51:58.574111-08:00","closed_at":"2025-12-30T16:51:58.574111-08:00","close_reason":"Dog pool feature not yet implemented (gt dog command unavailable)","dependencies":[{"issue_id":"gt-mol-74a","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.52179-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-74a","depends_on_id":"gt-mol-930","type":"blocks","created_at":"2025-12-30T16:09:54.630637-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-81p","title":"Burn and respawn or loop","description":"Burn and let daemon respawn, or exit if context high.\n\nDecision point at end of patrol cycle:\n\nIf context is LOW:\n- Sleep briefly (avoid tight loop)\n- Return to inbox-check step\n\nIf context is HIGH:\n- Write state to persistent storage\n- Exit cleanly\n- Let the daemon orchestrator respawn a fresh Deacon\n\nThe daemon ensures Deacon is always running:\n```bash\n# Daemon respawns on exit\ngt daemon status\n```\n\nThis enables infinite patrol duration via context-aware respawning.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.469512-08:00","updated_at":"2025-12-30T16:55:23.646692-08:00","closed_at":"2025-12-30T16:55:23.646692-08:00","close_reason":"Patrol cycle complete - all 15 steps executed","dependencies":[{"issue_id":"gt-mol-81p","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.560436-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-81p","depends_on_id":"gt-mol-hb9","type":"blocks","created_at":"2025-12-30T16:09:54.676939-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-930","title":"Check Witness and Refinery health","description":"Check Witness and Refinery health for each rig.\n\n**ZFC Principle**: You (Claude) make the judgment call about what is \"stuck\" or \"unresponsive\" - there are no hardcoded thresholds in Go. Read the signals, consider context, and decide.\n\nFor each rig, run:\n```bash\ngt witness status \u003crig\u003e\ngt refinery status \u003crig\u003e\n```\n\n**Signals to assess:**\n\n| Component | Healthy Signals | Concerning Signals |\n|-----------|-----------------|-------------------|\n| Witness | State: running, recent activity | State: not running, no heartbeat |\n| Refinery | State: running, queue processing | Queue stuck, merge failures |\n\n**Tracking unresponsive cycles:**\n\nMaintain in your patrol state (persisted across cycles):\n```\nhealth_state:\n \u003crig\u003e:\n witness:\n unresponsive_cycles: 0\n last_seen_healthy: \u003ctimestamp\u003e\n refinery:\n unresponsive_cycles: 0\n last_seen_healthy: \u003ctimestamp\u003e\n```\n\n**Decision matrix** (you decide the thresholds based on context):\n\n| Cycles Unresponsive | Suggested Action |\n|---------------------|------------------|\n| 1-2 | Note it, check again next cycle |\n| 3-4 | Attempt restart: gt witness restart \u003crig\u003e |\n| 5+ | Escalate to Mayor with context |\n\n**Restart commands:**\n```bash\ngt witness restart \u003crig\u003e\ngt refinery restart \u003crig\u003e\n```\n\n**Escalation:**\n```bash\ngt mail send mayor/ -s \"Health: \u003crig\u003e \u003ccomponent\u003e unresponsive\" \\\n -m \"Component has been unresponsive for N cycles. Restart attempts failed.\n Last healthy: \u003ctimestamp\u003e\n Error signals: \u003cdetails\u003e\"\n```\n\nReset unresponsive_cycles to 0 when component responds normally.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.467158-08:00","updated_at":"2025-12-30T16:51:22.383802-08:00","closed_at":"2025-12-30T16:51:22.383802-08:00","close_reason":"Witness and Refinery healthy: both running, no issues detected","dependencies":[{"issue_id":"gt-mol-930","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.509203-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-930","depends_on_id":"gt-mol-9ye","type":"blocks","created_at":"2025-12-30T16:09:54.60181-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-930","depends_on_id":"gt-mol-qlh","type":"blocks","created_at":"2025-12-30T16:09:54.609066-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-930","depends_on_id":"gt-mol-h71","type":"blocks","created_at":"2025-12-30T16:09:54.616204-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-9ye","title":"Nudge newly spawned polecats","description":"Nudge newly spawned polecats that are ready for input.\n\nWhen polecats are spawned, their Claude session takes 10-20 seconds to initialize. The spawn command returns immediately without waiting. This step finds spawned polecats that are now ready and sends them a trigger to start working.\n\n**ZFC-Compliant Observation** (AI observes AI):\n\n```bash\n# View pending spawns with captured terminal output\ngt deacon pending\n```\n\nFor each pending session, analyze the captured output:\n- Look for Claude's prompt indicator \"\u003e \" at the start of a line\n- If prompt is visible, Claude is ready for input\n- Make the judgment call yourself - you're the AI observer\n\nFor each ready polecat:\n```bash\n# 1. Trigger the polecat\ngt nudge \u003csession\u003e \"Begin.\"\n\n# 2. Clear from pending list\ngt deacon pending \u003csession\u003e\n```\n\nThis triggers the UserPromptSubmit hook, which injects mail so the polecat sees its assignment.\n\n**Bootstrap mode** (daemon-only, no AI available):\nThe daemon uses `gt deacon trigger-pending` with regex detection. This ZFC violation is acceptable during cold startup when no AI agent is running yet.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.465648-08:00","updated_at":"2025-12-30T16:12:54.112712-08:00","closed_at":"2025-12-30T16:12:54.112712-08:00","close_reason":"No pending spawns in inbox","dependencies":[{"issue_id":"gt-mol-9ye","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.476685-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-9ye","depends_on_id":"gt-mol-cp0","type":"blocks","created_at":"2025-12-30T16:09:54.567143-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-a8b","title":"Load context","description":"Run gt prime and bd prime. Verify issue assignment.\nCheck inbox for any relevant messages.\n\nRead the assigned issue (gt-8tmz.10) and understand the requirements.\nIdentify any blockers or missing information.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:48.59927-08:00","updated_at":"2025-12-27T21:29:55.089396-08:00","deleted_at":"2025-12-27T21:29:55.089396-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-mol-ake","title":"Execute registered plugins","description":"Execute registered plugins.\n\nScan ~/gt/plugins/ for plugin directories. Each plugin has a plugin.md with YAML frontmatter defining its gate (when to run) and instructions (what to do).\n\nSee docs/deacon-plugins.md for full documentation.\n\nGate types:\n- cooldown: Time since last run (e.g., 24h)\n- cron: Schedule-based (e.g., \"0 9 * * *\")\n- condition: Metric threshold (e.g., wisp count \u003e 50)\n- event: Trigger-based (e.g., startup, heartbeat)\n\nFor each plugin:\n1. Read plugin.md frontmatter to check gate\n2. Compare against state.json (last run, etc.)\n3. If gate is open, execute the plugin\n\nPlugins marked parallel: true can run concurrently using Task tool subagents. Sequential plugins run one at a time in directory order.\n\nSkip this step if ~/gt/plugins/ does not exist or is empty.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.467448-08:00","updated_at":"2025-12-30T16:09:54.467448-08:00","dependencies":[{"issue_id":"gt-mol-ake","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.515438-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-ake","depends_on_id":"gt-mol-930","type":"blocks","created_at":"2025-12-30T16:09:54.623366-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-ake","title":"Execute registered plugins","description":"Execute registered plugins.\n\nScan ~/gt/plugins/ for plugin directories. Each plugin has a plugin.md with YAML frontmatter defining its gate (when to run) and instructions (what to do).\n\nSee docs/deacon-plugins.md for full documentation.\n\nGate types:\n- cooldown: Time since last run (e.g., 24h)\n- cron: Schedule-based (e.g., \"0 9 * * *\")\n- condition: Metric threshold (e.g., wisp count \u003e 50)\n- event: Trigger-based (e.g., startup, heartbeat)\n\nFor each plugin:\n1. Read plugin.md frontmatter to check gate\n2. Compare against state.json (last run, etc.)\n3. If gate is open, execute the plugin\n\nPlugins marked parallel: true can run concurrently using Task tool subagents. Sequential plugins run one at a time in directory order.\n\nSkip this step if ~/gt/plugins/ does not exist or is empty.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.467448-08:00","updated_at":"2025-12-30T16:51:59.444409-08:00","closed_at":"2025-12-30T16:51:59.444409-08:00","close_reason":"No plugins registered (~/gt/plugins/ is empty)","dependencies":[{"issue_id":"gt-mol-ake","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.515438-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-ake","depends_on_id":"gt-mol-930","type":"blocks","created_at":"2025-12-30T16:09:54.623366-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-aux","title":"mol-polecat-work","description":"Full polecat lifecycle from assignment to decommission.\n\nThis proto enables nondeterministic idempotence for polecat work. A polecat that crashes after any step can restart, read its molecule state, and continue from the last completed step. No work is lost.\n\n## Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| issue | Yes | The source issue ID being worked on |","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-25T18:45:53.649284-08:00","updated_at":"2025-12-27T21:29:55.16453-08:00","deleted_at":"2025-12-27T21:29:55.16453-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"}
|
||||
{"id":"gt-mol-cfu","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.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:36.238187-08:00","updated_at":"2025-12-25T19:54:35.405637-08:00","closed_at":"2025-12-25T19:54:35.405637-08:00","dependencies":[{"issue_id":"gt-mol-cfu","depends_on_id":"gt-mol-572","type":"blocks","created_at":"2025-12-25T19:47:36.320187-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-mol-cp0","title":"Handle callbacks from agents","description":"Handle callbacks from agents.\n\nCheck the Mayor's inbox for messages from:\n- Witnesses reporting polecat status\n- Refineries reporting merge results\n- Polecats requesting help or escalation\n- External triggers (webhooks, timers)\n\n```bash\ngt mail inbox\n# For each message:\ngt mail read \u003cid\u003e\n# Handle based on message type\n```\n\n**WITNESS_PING**:\nWitnesses periodically ping to verify Deacon is alive. Simply acknowledge\nand archive - the fact that you're processing mail proves you're running.\nYour agent bead last_activity is updated automatically during patrol.\n```bash\ngt mail archive \u003cmessage-id\u003e\n```\n\n**HELP / Escalation**:\nAssess and handle or forward to Mayor.\nArchive after handling:\n```bash\ngt mail archive \u003cmessage-id\u003e\n```\n\n**LIFECYCLE messages**:\nPolecats reporting completion, refineries reporting merge results.\nArchive after processing:\n```bash\ngt mail archive \u003cmessage-id\u003e\n```\n\n**DOG_DONE messages**:\nDogs report completion after infrastructure tasks (orphan-scan, session-gc, etc.).\nSubject format: `DOG_DONE \u003chostname\u003e`\nBody contains: task name, counts, status.\n```bash\n# Parse the report, log metrics if needed\ngt mail read \u003cid\u003e\n# Archive after noting completion\ngt mail archive \u003cmessage-id\u003e\n```\nDogs return to idle automatically. The report is informational - no action needed\nunless the dog reports errors that require escalation.\n\nCallbacks may spawn new polecats, update issue state, or trigger other actions.\n\n**Hygiene principle**: Archive messages after they're fully processed.\nKeep inbox near-empty - only unprocessed items should remain.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.465311-08:00","updated_at":"2025-12-30T16:11:55.760017-08:00","closed_at":"2025-12-30T16:11:55.760017-08:00","close_reason":"Inbox checked, 1 stale message archived","dependencies":[{"issue_id":"gt-mol-cp0","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.469948-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-cub","title":"Rotate logs and prune state","description":"Maintain daemon logs and state files.\n\n**Step 1: Check daemon.log size**\n```bash\n# Get log file size\nls -la ~/.beads/daemon*.log 2\u003e/dev/null || ls -la ~/gt/.beads/daemon*.log 2\u003e/dev/null\n```\n\nIf daemon.log exceeds 10MB:\n```bash\n# Rotate with date suffix and gzip\nLOGFILE=\"$HOME/gt/.beads/daemon.log\"\nif [ -f \"$LOGFILE\" ] \u0026\u0026 [ $(stat -f%z \"$LOGFILE\" 2\u003e/dev/null || stat -c%s \"$LOGFILE\") -gt 10485760 ]; then\n DATE=$(date +%Y-%m-%dT%H-%M-%S)\n mv \"$LOGFILE\" \"${LOGFILE%.log}-${DATE}.log\"\n gzip \"${LOGFILE%.log}-${DATE}.log\"\nfi\n```\n\n**Step 2: Archive old daemon logs**\n\nClean up daemon logs older than 7 days:\n```bash\nfind ~/gt/.beads/ -name \"daemon-*.log.gz\" -mtime +7 -delete\n```\n\n**Step 3: Prune state.json of dead sessions**\n\nThe state.json tracks active sessions. Prune entries for sessions that no longer exist:\n```bash\n# Check for stale session entries\ngt daemon status --json 2\u003e/dev/null\n```\n\nIf state.json references sessions not in tmux:\n- Remove the stale entries\n- The daemon's internal cleanup should handle this, but verify\n\n**Note**: Log rotation prevents disk bloat from long-running daemons.\nState pruning keeps runtime state accurate.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.468627-08:00","updated_at":"2025-12-30T16:09:54.468627-08:00","dependencies":[{"issue_id":"gt-mol-cub","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.541159-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-cub","depends_on_id":"gt-mol-lvw","type":"blocks","created_at":"2025-12-30T16:09:54.652903-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-cub","title":"Rotate logs and prune state","description":"Maintain daemon logs and state files.\n\n**Step 1: Check daemon.log size**\n```bash\n# Get log file size\nls -la ~/.beads/daemon*.log 2\u003e/dev/null || ls -la ~/gt/.beads/daemon*.log 2\u003e/dev/null\n```\n\nIf daemon.log exceeds 10MB:\n```bash\n# Rotate with date suffix and gzip\nLOGFILE=\"$HOME/gt/.beads/daemon.log\"\nif [ -f \"$LOGFILE\" ] \u0026\u0026 [ $(stat -f%z \"$LOGFILE\" 2\u003e/dev/null || stat -c%s \"$LOGFILE\") -gt 10485760 ]; then\n DATE=$(date +%Y-%m-%dT%H-%M-%S)\n mv \"$LOGFILE\" \"${LOGFILE%.log}-${DATE}.log\"\n gzip \"${LOGFILE%.log}-${DATE}.log\"\nfi\n```\n\n**Step 2: Archive old daemon logs**\n\nClean up daemon logs older than 7 days:\n```bash\nfind ~/gt/.beads/ -name \"daemon-*.log.gz\" -mtime +7 -delete\n```\n\n**Step 3: Prune state.json of dead sessions**\n\nThe state.json tracks active sessions. Prune entries for sessions that no longer exist:\n```bash\n# Check for stale session entries\ngt daemon status --json 2\u003e/dev/null\n```\n\nIf state.json references sessions not in tmux:\n- Remove the stale entries\n- The daemon's internal cleanup should handle this, but verify\n\n**Note**: Log rotation prevents disk bloat from long-running daemons.\nState pruning keeps runtime state accurate.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.468627-08:00","updated_at":"2025-12-30T16:53:52.431288-08:00","closed_at":"2025-12-30T16:53:52.431288-08:00","close_reason":"Daemon log at 7MB (under 10MB threshold), no archives over 7 days old","dependencies":[{"issue_id":"gt-mol-cub","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.541159-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-cub","depends_on_id":"gt-mol-lvw","type":"blocks","created_at":"2025-12-30T16:09:54.652903-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-dat","title":"Request shutdown","description":"Send shutdown request to Witness.\nWait for termination.\n\nThe polecat is now ready to be cleaned up.\nDo not exit directly - wait for Witness to kill the session.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:10.031563-08:00","updated_at":"2025-12-25T19:54:25.98509-08:00","closed_at":"2025-12-25T19:54:25.98509-08:00"}
|
||||
{"id":"gt-mol-dna","title":"End-of-cycle inbox hygiene","description":"Verify inbox hygiene before ending patrol cycle.\n\n**Step 1: Check inbox state**\n```bash\ngt mail inbox\n```\n\nInbox should be EMPTY or contain only just-arrived unprocessed messages.\n\n**Step 2: Archive any remaining processed messages**\n\nAll message types should have been archived during inbox-check processing:\n- WITNESS_PING → archived after acknowledging\n- HELP/Escalation → archived after handling\n- LIFECYCLE → archived after processing\n\nIf any were missed:\n```bash\n# For each stale message found:\ngt mail archive \u003cmessage-id\u003e\n```\n\n**Goal**: Inbox should have ≤2 active messages at end of cycle.\nDeacon mail should flow through quickly - no accumulation.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.468921-08:00","updated_at":"2025-12-30T16:09:54.468921-08:00","dependencies":[{"issue_id":"gt-mol-dna","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.547566-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-dna","depends_on_id":"gt-mol-cub","type":"blocks","created_at":"2025-12-30T16:09:54.660729-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-dna","title":"End-of-cycle inbox hygiene","description":"Verify inbox hygiene before ending patrol cycle.\n\n**Step 1: Check inbox state**\n```bash\ngt mail inbox\n```\n\nInbox should be EMPTY or contain only just-arrived unprocessed messages.\n\n**Step 2: Archive any remaining processed messages**\n\nAll message types should have been archived during inbox-check processing:\n- WITNESS_PING → archived after acknowledging\n- HELP/Escalation → archived after handling\n- LIFECYCLE → archived after processing\n\nIf any were missed:\n```bash\n# For each stale message found:\ngt mail archive \u003cmessage-id\u003e\n```\n\n**Goal**: Inbox should have ≤2 active messages at end of cycle.\nDeacon mail should flow through quickly - no accumulation.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.468921-08:00","updated_at":"2025-12-30T16:54:44.010848-08:00","closed_at":"2025-12-30T16:54:44.010848-08:00","close_reason":"Archived 2 stale messages, inbox now empty","dependencies":[{"issue_id":"gt-mol-dna","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.547566-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-dna","depends_on_id":"gt-mol-cub","type":"blocks","created_at":"2025-12-30T16:09:54.660729-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-g8x","title":"Request shutdown","description":"Send shutdown request to Witness.\nWait for termination.\n\nThe polecat is now ready to be cleaned up.\nDo not exit directly - wait for Witness to kill the session.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:48.599526-08:00","updated_at":"2025-12-27T21:29:55.081039-08:00","dependencies":[{"issue_id":"gt-mol-g8x","depends_on_id":"gt-mol-jpg","type":"blocks","created_at":"2025-12-25T19:47:48.657908-08:00","created_by":"mayor"}],"deleted_at":"2025-12-27T21:29:55.081039-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-mol-h71","title":"Fire notifications","description":"Fire notifications for convoy and cross-rig events.\n\nAfter convoy completion or cross-rig dependency resolution, notify relevant parties.\n\n**Convoy completion notifications:**\nWhen a convoy closes (all tracked issues done), notify the Overseer:\n```bash\n# Convoy gt-convoy-xxx just completed\ngt mail send mayor/ -s \"Convoy complete: \u003cconvoy-title\u003e\" \\\n -m \"Convoy \u003cid\u003e has completed. All tracked issues closed.\n Duration: \u003cstart to end\u003e\n Issues: \u003ccount\u003e\n\n Summary: \u003cbrief description of what was accomplished\u003e\"\n```\n\n**Cross-rig resolution notifications:**\nWhen a cross-rig dependency resolves, notify the affected rig:\n```bash\n# Issue bd-xxx closed, unblocking gt-yyy\ngt mail send gastown/witness -s \"Dependency resolved: \u003cbd-xxx\u003e\" \\\n -m \"External dependency bd-xxx has closed.\n Unblocked: gt-yyy (\u003ctitle\u003e)\n This issue may now proceed.\"\n```\n\n**Notification targets:**\n- Convoy complete → mayor/ (for strategic visibility)\n- Cross-rig dep resolved → \u003crig\u003e/witness (for operational awareness)\n\nKeep notifications brief and actionable. The recipient can run bd show for details.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.466856-08:00","updated_at":"2025-12-30T16:09:54.466856-08:00","dependencies":[{"issue_id":"gt-mol-h71","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.502658-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-h71","depends_on_id":"gt-mol-k9d","type":"blocks","created_at":"2025-12-30T16:09:54.594748-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-hb9","title":"Check own context limit","description":"Check own context limit.\n\nThe Deacon runs in a Claude session with finite context. Check if approaching the limit:\n\n```bash\ngt context --usage\n```\n\nIf context is high (\u003e80%), prepare for handoff:\n- Summarize current state\n- Note any pending work\n- Write handoff to molecule state\n\nThis enables the Deacon to burn and respawn cleanly.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.469207-08:00","updated_at":"2025-12-30T16:09:54.469207-08:00","dependencies":[{"issue_id":"gt-mol-hb9","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.55394-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-hb9","depends_on_id":"gt-mol-dna","type":"blocks","created_at":"2025-12-30T16:09:54.668866-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-h71","title":"Fire notifications","description":"Fire notifications for convoy and cross-rig events.\n\nAfter convoy completion or cross-rig dependency resolution, notify relevant parties.\n\n**Convoy completion notifications:**\nWhen a convoy closes (all tracked issues done), notify the Overseer:\n```bash\n# Convoy gt-convoy-xxx just completed\ngt mail send mayor/ -s \"Convoy complete: \u003cconvoy-title\u003e\" \\\n -m \"Convoy \u003cid\u003e has completed. All tracked issues closed.\n Duration: \u003cstart to end\u003e\n Issues: \u003ccount\u003e\n\n Summary: \u003cbrief description of what was accomplished\u003e\"\n```\n\n**Cross-rig resolution notifications:**\nWhen a cross-rig dependency resolves, notify the affected rig:\n```bash\n# Issue bd-xxx closed, unblocking gt-yyy\ngt mail send gastown/witness -s \"Dependency resolved: \u003cbd-xxx\u003e\" \\\n -m \"External dependency bd-xxx has closed.\n Unblocked: gt-yyy (\u003ctitle\u003e)\n This issue may now proceed.\"\n```\n\n**Notification targets:**\n- Convoy complete → mayor/ (for strategic visibility)\n- Cross-rig dep resolved → \u003crig\u003e/witness (for operational awareness)\n\nKeep notifications brief and actionable. The recipient can run bd show for details.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.466856-08:00","updated_at":"2025-12-30T16:51:05.995083-08:00","closed_at":"2025-12-30T16:51:05.995083-08:00","close_reason":"No convoy completions or cross-rig resolutions to notify","dependencies":[{"issue_id":"gt-mol-h71","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.502658-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-h71","depends_on_id":"gt-mol-k9d","type":"blocks","created_at":"2025-12-30T16:09:54.594748-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-hb9","title":"Check own context limit","description":"Check own context limit.\n\nThe Deacon runs in a Claude session with finite context. Check if approaching the limit:\n\n```bash\ngt context --usage\n```\n\nIf context is high (\u003e80%), prepare for handoff:\n- Summarize current state\n- Note any pending work\n- Write handoff to molecule state\n\nThis enables the Deacon to burn and respawn cleanly.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.469207-08:00","updated_at":"2025-12-30T16:55:07.166448-08:00","closed_at":"2025-12-30T16:55:07.166448-08:00","close_reason":"Context usage command not implemented (gt context --usage unavailable)","dependencies":[{"issue_id":"gt-mol-hb9","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.55394-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-hb9","depends_on_id":"gt-mol-dna","type":"blocks","created_at":"2025-12-30T16:09:54.668866-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-jpg","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.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:48.59976-08:00","updated_at":"2025-12-27T21:29:55.072671-08:00","dependencies":[{"issue_id":"gt-mol-jpg","depends_on_id":"gt-mol-uau","type":"blocks","created_at":"2025-12-25T19:47:48.687264-08:00","created_by":"mayor"}],"deleted_at":"2025-12-27T21:29:55.072671-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-mol-k9d","title":"Resolve external dependencies","description":"Resolve external dependencies across rigs.\n\nWhen an issue in one rig closes, any dependencies in other rigs should be notified. This enables cross-rig coordination without tight coupling.\n\n**Step 1: Check recent closures from feed**\n```bash\ngt feed --since 10m --plain | grep \"✓\"\n# Look for recently closed issues\n```\n\n**Step 2: For each closed issue, check cross-rig dependents**\n```bash\nbd show \u003cclosed-issue\u003e\n# Look at 'blocks' field - these are issues that were waiting on this one\n# If any blocked issue is in a different rig/prefix, it may now be unblocked\n```\n\n**Step 3: Update blocked status**\nFor blocked issues in other rigs, the closure should automatically unblock them (beads handles this). But verify:\n```bash\nbd blocked\n# Should no longer show the previously-blocked issue if dependency is met\n```\n\n**Cross-rig scenarios:**\n- bd-xxx closes → gt-yyy that depended on it is unblocked\n- External issue closes → internal convoy step can proceed\n- Rig A issue closes → Rig B issue waiting on it proceeds\n\nNo manual intervention needed if dependencies are properly tracked - this step just validates the propagation occurred.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.466557-08:00","updated_at":"2025-12-30T16:09:54.466557-08:00","dependencies":[{"issue_id":"gt-mol-k9d","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.496-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-k9d","depends_on_id":"gt-mol-430","type":"blocks","created_at":"2025-12-30T16:09:54.587873-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-lvw","title":"Detect cleanup needs","description":"**DETECT ONLY** - Check if cleanup is needed and dispatch to dog.\n\n**Step 1: Preview cleanup needs**\n```bash\ngt doctor -v\n# Check output for issues that need cleaning\n```\n\n**Step 2: If cleanup needed, dispatch to dog**\n```bash\n# Sling session-gc formula to an idle dog\ngt sling mol-session-gc deacon/dogs --var mode=conservative\n```\n\n**Important:** Do NOT run `gt doctor --fix` inline. Dogs handle cleanup.\nThe Deacon stays lightweight - detection only.\n\n**Step 3: If nothing to clean**\nSkip dispatch - system is healthy.\n\n**Cleanup types (for reference):**\n- orphan-sessions: Dead tmux sessions\n- orphan-processes: Orphaned Claude processes\n- wisp-gc: Old wisps past retention\n\n**Exit criteria:** Session GC dispatched to dog (if needed).","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.46833-08:00","updated_at":"2025-12-30T16:09:54.468331-08:00","dependencies":[{"issue_id":"gt-mol-lvw","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.534623-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-lvw","depends_on_id":"gt-mol-znx","type":"blocks","created_at":"2025-12-30T16:09:54.645408-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-qlh","title":"Evaluate pending async gates","description":"Evaluate pending async gates.\n\nGates are async coordination primitives that block until conditions are met.\nThe Deacon is responsible for monitoring gates and closing them when ready.\n\n**Timer gates** (await_type: timer):\nCheck if elapsed time since creation exceeds the timeout duration.\n\n```bash\n# List all open gates\nbd gate list --json\n\n# For each timer gate, check if elapsed:\n# - CreatedAt + Timeout \u003c Now → gate is ready to close\n# - Close with: bd gate close \u003cid\u003e --reason \"Timer elapsed\"\n```\n\n**GitHub gates** (await_type: gh:run, gh:pr) - handled in separate step.\n\n**Human/Mail gates** - require external input, skip here.\n\nAfter closing a gate, the Waiters field contains mail addresses to notify.\nSend a brief notification to each waiter that the gate has cleared.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.465953-08:00","updated_at":"2025-12-30T16:09:54.465953-08:00","dependencies":[{"issue_id":"gt-mol-qlh","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.483064-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-qlh","depends_on_id":"gt-mol-cp0","type":"blocks","created_at":"2025-12-30T16:09:54.573871-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-k9d","title":"Resolve external dependencies","description":"Resolve external dependencies across rigs.\n\nWhen an issue in one rig closes, any dependencies in other rigs should be notified. This enables cross-rig coordination without tight coupling.\n\n**Step 1: Check recent closures from feed**\n```bash\ngt feed --since 10m --plain | grep \"✓\"\n# Look for recently closed issues\n```\n\n**Step 2: For each closed issue, check cross-rig dependents**\n```bash\nbd show \u003cclosed-issue\u003e\n# Look at 'blocks' field - these are issues that were waiting on this one\n# If any blocked issue is in a different rig/prefix, it may now be unblocked\n```\n\n**Step 3: Update blocked status**\nFor blocked issues in other rigs, the closure should automatically unblock them (beads handles this). But verify:\n```bash\nbd blocked\n# Should no longer show the previously-blocked issue if dependency is met\n```\n\n**Cross-rig scenarios:**\n- bd-xxx closes → gt-yyy that depended on it is unblocked\n- External issue closes → internal convoy step can proceed\n- Rig A issue closes → Rig B issue waiting on it proceeds\n\nNo manual intervention needed if dependencies are properly tracked - this step just validates the propagation occurred.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.466557-08:00","updated_at":"2025-12-30T16:50:49.267725-08:00","closed_at":"2025-12-30T16:50:49.267725-08:00","close_reason":"No cross-rig closures to propagate; blocked issues are correctly tracked","dependencies":[{"issue_id":"gt-mol-k9d","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.496-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-k9d","depends_on_id":"gt-mol-430","type":"blocks","created_at":"2025-12-30T16:09:54.587873-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-lvw","title":"Detect cleanup needs","description":"**DETECT ONLY** - Check if cleanup is needed and dispatch to dog.\n\n**Step 1: Preview cleanup needs**\n```bash\ngt doctor -v\n# Check output for issues that need cleaning\n```\n\n**Step 2: If cleanup needed, dispatch to dog**\n```bash\n# Sling session-gc formula to an idle dog\ngt sling mol-session-gc deacon/dogs --var mode=conservative\n```\n\n**Important:** Do NOT run `gt doctor --fix` inline. Dogs handle cleanup.\nThe Deacon stays lightweight - detection only.\n\n**Step 3: If nothing to clean**\nSkip dispatch - system is healthy.\n\n**Cleanup types (for reference):**\n- orphan-sessions: Dead tmux sessions\n- orphan-processes: Orphaned Claude processes\n- wisp-gc: Old wisps past retention\n\n**Exit criteria:** Session GC dispatched to dog (if needed).","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.46833-08:00","updated_at":"2025-12-30T16:53:21.659155-08:00","closed_at":"2025-12-30T16:53:21.659155-08:00","close_reason":"Cleanup needed (7 missing agent beads, 4 stale locks, 1 diverged clone) but dog dispatch not available - requires manual 'gt doctor --fix'","dependencies":[{"issue_id":"gt-mol-lvw","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.534623-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-lvw","depends_on_id":"gt-mol-znx","type":"blocks","created_at":"2025-12-30T16:09:54.645408-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-qlh","title":"Evaluate pending async gates","description":"Evaluate pending async gates.\n\nGates are async coordination primitives that block until conditions are met.\nThe Deacon is responsible for monitoring gates and closing them when ready.\n\n**Timer gates** (await_type: timer):\nCheck if elapsed time since creation exceeds the timeout duration.\n\n```bash\n# List all open gates\nbd gate list --json\n\n# For each timer gate, check if elapsed:\n# - CreatedAt + Timeout \u003c Now → gate is ready to close\n# - Close with: bd gate close \u003cid\u003e --reason \"Timer elapsed\"\n```\n\n**GitHub gates** (await_type: gh:run, gh:pr) - handled in separate step.\n\n**Human/Mail gates** - require external input, skip here.\n\nAfter closing a gate, the Waiters field contains mail addresses to notify.\nSend a brief notification to each waiter that the gate has cleared.","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/rictus","created_at":"2025-12-30T16:09:54.465953-08:00","updated_at":"2025-12-30T16:47:13.779001-08:00","closed_at":"2025-12-30T16:47:13.779001-08:00","close_reason":"No pending gates to evaluate","dependencies":[{"issue_id":"gt-mol-qlh","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.483064-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-qlh","depends_on_id":"gt-mol-cp0","type":"blocks","created_at":"2025-12-30T16:09:54.573871-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-uau","title":"Implement","description":"Implement the solution for gt-8tmz.10. 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.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:48.599004-08:00","updated_at":"2025-12-27T21:29:55.097728-08:00","dependencies":[{"issue_id":"gt-mol-uau","depends_on_id":"gt-mol-a8b","type":"blocks","created_at":"2025-12-25T19:47:48.614361-08:00","created_by":"mayor"}],"deleted_at":"2025-12-27T21:29:55.097728-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-mol-xl8","title":"Load context","description":"Run gt prime and bd prime. Verify issue assignment.\nCheck inbox for any relevant messages.\n\nRead the assigned issue (gt-8tmz.34) and understand the requirements.\nIdentify any blockers or missing information.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:10.031297-08:00","updated_at":"2025-12-27T21:29:55.122589-08:00","deleted_at":"2025-12-27T21:29:55.122589-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-mol-znx","title":"Detect abandoned work","description":"**DETECT ONLY** - Check for orphaned state and dispatch to dog if found.\n\n**Step 1: Quick orphan scan**\n```bash\n# Check for in_progress issues with dead assignees\nbd list --status=in_progress --json | head -20\n```\n\nFor each in_progress issue, check if assignee session exists:\n```bash\ntmux has-session -t \u003csession\u003e 2\u003e/dev/null \u0026\u0026 echo \"alive\" || echo \"orphan\"\n```\n\n**Step 2: If orphans detected, dispatch to dog**\n```bash\n# Sling orphan-scan formula to an idle dog\ngt sling mol-orphan-scan deacon/dogs --var scope=town\n```\n\n**Important:** Do NOT fix orphans inline. Dogs handle recovery.\nThe Deacon's job is detection and dispatch, not execution.\n\n**Step 3: If no orphans detected**\nSkip dispatch - nothing to do.\n\n**Exit criteria:** Orphan scan dispatched to dog (if needed).","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.468041-08:00","updated_at":"2025-12-30T16:09:54.468041-08:00","dependencies":[{"issue_id":"gt-mol-znx","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.528259-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-znx","depends_on_id":"gt-mol-74a","type":"blocks","created_at":"2025-12-30T16:09:54.638026-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-mol-znx","title":"Detect abandoned work","description":"**DETECT ONLY** - Check for orphaned state and dispatch to dog if found.\n\n**Step 1: Quick orphan scan**\n```bash\n# Check for in_progress issues with dead assignees\nbd list --status=in_progress --json | head -20\n```\n\nFor each in_progress issue, check if assignee session exists:\n```bash\ntmux has-session -t \u003csession\u003e 2\u003e/dev/null \u0026\u0026 echo \"alive\" || echo \"orphan\"\n```\n\n**Step 2: If orphans detected, dispatch to dog**\n```bash\n# Sling orphan-scan formula to an idle dog\ngt sling mol-orphan-scan deacon/dogs --var scope=town\n```\n\n**Important:** Do NOT fix orphans inline. Dogs handle recovery.\nThe Deacon's job is detection and dispatch, not execution.\n\n**Step 3: If no orphans detected**\nSkip dispatch - nothing to do.\n\n**Exit criteria:** Orphan scan dispatched to dog (if needed).","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:09:54.468041-08:00","updated_at":"2025-12-30T16:52:28.808446-08:00","closed_at":"2025-12-30T16:52:28.808446-08:00","close_reason":"No in_progress issues found, no orphans to detect","dependencies":[{"issue_id":"gt-mol-znx","depends_on_id":"gt-mol-265","type":"parent-child","created_at":"2025-12-30T16:09:54.528259-08:00","created_by":"gastown/polecats/rictus"},{"issue_id":"gt-mol-znx","depends_on_id":"gt-mol-74a","type":"blocks","created_at":"2025-12-30T16:09:54.638026-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-molmall","title":"Mol Mall: Formula marketplace and aspect composition","description":"## Summary\n\nA marketplace for sharing molecule formulas using GitHub as backend, plus a new\n**aspect composition** capability for cooking that allows formulas to be applied\nas cross-cutting transformations to existing mols.\n\n## Key Insight\n\nFormulas aren't just standalone workflows—they're **transformations** you can\napply to other mols. This enables patterns like:\n- \"Apply Rule of Five code review to any coding task\"\n- \"Wrap any epic with security review steps\"\n- \"Add logging/metrics to any patrol molecule\"\n\n## Architecture\n\n```\nRemote Formulas (GitHub)\n ↓ install\nLocal Formulas (~/.gt/formulas/ or .beads/formulas/)\n ↓ cook --with\nMols (beads, git-tracked)\n ↓ pour/sling\nExecution (ephemeral or tracked)\n```\n\n## Formula Types\n\n1. **Standalone** - Complete workflows (mol-polecat-work, mol-deacon-patrol)\n2. **Aspects** - Cross-cutting concerns woven into other mols (rule-of-five)\n3. **Adapters** - Wrappers that make things runnable\n\n## Aspect Composition (New Cooking Capability)\n\n```bash\nbd cook my-epic --with rule-of-five,security-review\n```\n\nAspects declare injection points:\n\n```yaml\n# rule-of-five.formula.yaml\nkind: aspect\nname: rule-of-five\nversion: 1.2.0\n\ninject_after:\n tag: generates-code # matches any step with this tag\n\nsteps:\n - id: review-correctness\n title: \"Review: Correctness\"\n - id: review-edge-cases\n title: \"Review: Edge Cases\"\n - id: review-performance\n title: \"Review: Performance\"\n - id: review-security\n title: \"Review: Security\"\n - id: review-maintainability\n title: \"Review: Maintainability\"\n```\n\nInjection modes:\n- `inject_after: \u003cstep-id or tag\u003e` - insert steps after\n- `inject_before: \u003cstep-id or tag\u003e` - insert steps before\n- `wrap: \u003cstep-id or tag\u003e` - insert before AND after\n- `replace: \u003cstep-id or tag\u003e` - substitute entirely\n\n## The Mall Index\n\nA well-known repo maps short names to full references:\n\n```yaml\n# steveyegge/gt-mall/index.yaml\nformulas:\n rule-of-five:\n repo: steveyegge/gt-formulas\n path: aspects/rule-of-five.formula.yaml\n version: v1.2.0\n description: \"Five-lens code review\"\n tags: [review, quality]\n```\n\nCommands:\n- `gt mol search review` - search the index\n- `gt mol install rule-of-five` - fetch from GitHub\n- `gt mol install github.com/acme/formulas/custom@v1` - direct URL\n\n## Implementation Phases\n\n### Phase 1: Aspect Composition (Cooking)\n- Extend `bd cook` to accept `--with aspect1,aspect2`\n- Aspect application during mol generation\n- Local aspects in `.beads/formulas/`\n\n### Phase 2: Mall Index\n- Create gt-mall repo with index.yaml\n- `gt mol search` queries the index\n- `gt mol install` fetches and caches formulas\n\n### Phase 3: Publishing\n- `gt mol publish` pushes to your formula repo\n- PR workflow to add to mall index\n\n### Phase 4: Refinements\n- Aspect ordering and conflict detection\n- Aspect dependencies (`requires: [other-aspect]`)\n- Private formula repos (enterprise)\n- Local overrides/forks\n\n## Open Questions\n\n1. **Ordering conflicts**: Two aspects inject after same step—which goes first?\n2. **Aspect dependencies**: Aspect A requires aspect B?\n3. **Compile-time vs runtime**: Aspects are compile-time (baked into mol).\n Wisps remain runtime (slung dynamically).\n\n## Deferred Until\n\nGas Town patrols operational. Prerequisites:\n- [ ] Patrol system working (Deacon, Witness, Refinery)\n- [ ] Basic spawn/work/merge cycle\n- [ ] Activity feed showing work progress\n\nThen the mall becomes valuable for sharing patrol customizations.\n\n## Supersedes\n\nThis replaces gt-uzf2l which had the original marketplace concept but lacked\nthe aspect composition insight.\n\n## Related\n\n- Cooking system (bd cook)\n- Formula definitions (.formula.yaml)\n- Wisp architecture (runtime molecules)","notes":"See docs/formula_evolution.md for expanded thinking on: formula resolution hierarchy, combinators (\u003e\u003e, |, wrap, inject, extends), algebraic properties, higher abstractions, Mol Mall registry predictions, distribution scenarios, and open questions. The aspect composition in this design corresponds to the Wrapping (AOP) and Injection combinators in that doc.","status":"deferred","priority":2,"issue_type":"epic","created_at":"2025-12-26T00:33:44.380242-08:00","updated_at":"2025-12-26T00:36:57.3959-08:00"}
|
||||
{"id":"gt-mqbm","title":"Digest: mol-deacon-patrol","description":"Patrol: TRACER BULLET SUCCESS - gt-oiv0 merged to main, furiosa completed and exited cleanly, 0 polecats now, all agents up","status":"tombstone","priority":4,"issue_type":"task","created_at":"2025-12-22T23:13:30.087307-08:00","updated_at":"2025-12-27T21:26:05.441745-08:00","deleted_at":"2025-12-27T21:26:05.441745-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-mqu65","title":"Digest: mol-deacon-patrol","description":"Patrol 1: All agents healthy, no messages, no issues","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T10:13:57.610811-08:00","updated_at":"2025-12-27T21:26:03.601385-08:00","deleted_at":"2025-12-27T21:26:03.601385-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -1815,7 +1818,7 @@
|
||||
{"id":"gt-oqzf","title":"Digest: mol-deacon-patrol","description":"Patrol #15: 3/4 through","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T22:25:28.130003-08:00","updated_at":"2025-12-27T21:26:04.708812-08:00","deleted_at":"2025-12-27T21:26:04.708812-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-orr4q","title":"Merge: dementus-1767074970788","description":"branch: polecat/dementus-1767074970788\ntarget: main\nsource_issue: dementus-1767074970788\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-29T22:12:46.233617-08:00","created_by":"gastown/polecats/dementus","updated_at":"2025-12-29T23:32:37.235882-08:00","closed_at":"2025-12-29T23:32:37.235882-08:00","close_reason":"Branch no longer exists on remote - already merged or cleaned up"}
|
||||
{"id":"gt-osdmr","title":"Digest: mol-deacon-patrol","description":"Patrol 20: all healthy, handoff threshold reached","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-27T23:13:10.580733-08:00","updated_at":"2025-12-27T23:13:10.580733-08:00","closed_at":"2025-12-27T23:13:10.5807-08:00"}
|
||||
{"id":"gt-otsa8","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 3: All quiet. Agents healthy. No pending work.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T15:47:24.729906-08:00","updated_at":"2025-12-30T15:47:24.729906-08:00","closed_at":"2025-12-30T15:47:24.729866-08:00","close_reason":"Squashed from 15 wisps","dependencies":[{"issue_id":"gt-otsa8","depends_on_id":"gt-eph-sd3","type":"parent-child","created_at":"2025-12-30T15:47:24.730873-08:00","created_by":"deacon"}]}
|
||||
{"id":"gt-otsa8","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 3: All quiet. Agents healthy. No pending work.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T15:47:24.729906-08:00","updated_at":"2025-12-30T15:47:24.729906-08:00","closed_at":"2025-12-30T15:47:24.729866-08:00","close_reason":"Squashed from 15 wisps"}
|
||||
{"id":"gt-ouo","title":"gt swarm start: Does not spawn polecat sessions","description":"gt swarm start marks swarm as 'active' but doesn't start any polecat sessions.\n\nRepro:\n1. gt swarm create gastown --epic gt-hw6 --worker Toast --worker Nux\n2. gt swarm start gt-hw6\n3. gt session list - shows no new sessions\n\nExpected: Polecat sessions should start for each worker.\nActual: No sessions started, workers sit idle.","status":"tombstone","priority":0,"issue_type":"bug","created_at":"2025-12-17T22:25:43.430981-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-ov2","title":"Refinery agent: merge queue processing loop","description":"The Refinery agent processes the merge queue, merging polecat work to main.\n\n## Interface\n\n```go\ntype Refinery struct {\n rig *Rig\n queue *MergeQueue\n git *Git\n mail *Mailbox\n config RefineryConfig\n}\n\ntype RefineryConfig struct {\n AutoMerge bool // Auto-merge passing MRs\n RunTests bool // Run tests before merge\n TestCommand string // Command to run tests\n RequireReview bool // Require review before merge (future)\n}\n\nfunc NewRefinery(rig *Rig, ...) *Refinery\n\n// Lifecycle\nfunc (r *Refinery) Start() error\nfunc (r *Refinery) Stop() error\nfunc (r *Refinery) IsRunning() bool\n\n// Processing\nfunc (r *Refinery) ProcessQueue() error\nfunc (r *Refinery) ProcessMR(mr *MergeRequest) error\n```\n\n## Processing Loop\n\n1. Check queue for pending MRs\n2. For each pending MR:\n a. Fetch polecat branch\n b. Attempt merge to refinery/rig (local main)\n c. Run tests if configured\n d. If pass: push to origin, mark merged\n e. If fail: mark rejected, notify polecat\n3. Sleep, repeat\n\n## Merge Strategy\n\n- Fast-forward when possible\n- Merge commit when not\n- On conflict: reject MR, polecat must rebase\n\n## Test Integration\n\nIf tests configured:\n```bash\ncd refinery/rig\ngit merge polecat/branch\n\u003ctest_command\u003e # e.g., go test ./...\n```\nResult determines merge/reject.\n\n## Notifications\n\nOn merge success:\n- Mail to polecat: \"Your work merged\"\n- Update bead if issue tracked\n\nOn merge failure:\n- Mail to polecat: \"Merge failed: \u003creason\u003e\"\n- Include conflict details if applicable\n\n## Dependencies\n\nNeeds: Rig management, Git wrapper, Mail system, Merge queue","status":"tombstone","priority":0,"issue_type":"task","created_at":"2025-12-15T23:22:08.498771-08:00","updated_at":"2025-12-25T01:30:41.67682-08:00","dependencies":[{"issue_id":"gt-ov2","depends_on_id":"gt-u1j.14","type":"blocks","created_at":"2025-12-15T23:22:21.801826-08:00","created_by":"daemon"},{"issue_id":"gt-ov2","depends_on_id":"gt-u1j.6","type":"blocks","created_at":"2025-12-15T23:22:21.89716-08:00","created_by":"daemon"}],"deleted_at":"2025-12-25T01:30:41.67682-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
{"id":"gt-ov2uv","title":"Create AgentIdentity type for session name parsing","description":"attached_args: Create AgentIdentity type - depends on completed gt-atqr8\n\nCreate AgentIdentity type to parse and construct session names, replacing duplicated logic.\n\n## Files to modify\n- internal/session/identity.go (NEW)\n- internal/cmd/sling.go (update to use new type)\n- internal/cmd/handoff.go (update to use new type)\n\n## Implementation\n```go\ntype AgentIdentity struct {\n Role string // mayor, deacon, witness, refinery, crew, polecat\n Rig string // empty for mayor/deacon\n Name string // crew/polecat name\n}\n\nfunc ParseSessionName(session string) (*AgentIdentity, error)\nfunc (a *AgentIdentity) SessionName() string\nfunc (a *AgentIdentity) Address() string // e.g., \"gastown/crew/max\"\n```\n\n## Acceptance criteria\n- [ ] AgentIdentity type with Role, Rig, Name fields\n- [ ] ParseSessionName handles all agent types (mayor, deacon, witness, refinery, crew, polecat)\n- [ ] SessionName() reconstructs valid session name\n- [ ] Address() returns mail-style address\n- [ ] sling.go:sessionToAgentID replaced with ParseSessionName\n- [ ] handoff.go:sessionToGTRole replaced with ParseSessionName\n- [ ] Unit tests for all parsing cases\n- [ ] go test ./... passes","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T15:49:10.113644-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-28T16:23:27.939492-08:00","closed_at":"2025-12-28T16:23:27.939492-08:00","dependencies":[{"issue_id":"gt-ov2uv","depends_on_id":"gt-atqr8","type":"blocks","created_at":"2025-12-28T15:51:31.393311-08:00","created_by":"daemon"}]}
|
||||
@@ -2299,7 +2302,7 @@
|
||||
{"id":"gt-vuld8","title":"Digest: mol-deacon-patrol","description":"Patrol 20: All healthy, 2 crew active","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T17:49:39.892429-08:00","updated_at":"2025-12-27T21:26:01.10764-08:00","deleted_at":"2025-12-27T21:26:01.10764-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-vv4i","title":"Polecat template: move session close checklist into molecule steps","description":"Template has prose checklists for 'Before Signaling Done' and 'SESSION CLOSE PROTOCOL'. These should be encoded as tail steps in the polecat molecule, not repeated as prose in CLAUDE.md. Reduces duplication and ensures the steps are actually followed.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-23T16:56:50.666492-08:00","updated_at":"2025-12-27T21:29:55.908628-08:00","dependencies":[{"issue_id":"gt-vv4i","depends_on_id":"gt-t9u7","type":"parent-child","created_at":"2025-12-23T16:57:16.612852-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:55.908628-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-vx2qv","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 9: All healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T11:22:07.233471-08:00","updated_at":"2025-12-28T11:22:07.233471-08:00","closed_at":"2025-12-28T11:22:07.233434-08:00"}
|
||||
{"id":"gt-vyfvi","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 2: Witnessed escalation re: 14 polecats with unpushed work. All agents healthy. No pending work.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T15:45:46.369575-08:00","updated_at":"2025-12-30T15:45:46.369575-08:00","closed_at":"2025-12-30T15:45:46.369534-08:00","close_reason":"Squashed from 15 wisps","dependencies":[{"issue_id":"gt-vyfvi","depends_on_id":"gt-eph-4ra","type":"parent-child","created_at":"2025-12-30T15:45:46.37045-08:00","created_by":"deacon"}]}
|
||||
{"id":"gt-vyfvi","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 2: Witnessed escalation re: 14 polecats with unpushed work. All agents healthy. No pending work.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T15:45:46.369575-08:00","updated_at":"2025-12-30T15:45:46.369575-08:00","closed_at":"2025-12-30T15:45:46.369534-08:00","close_reason":"Squashed from 15 wisps"}
|
||||
{"id":"gt-vz151","title":"Add crew auto-start config to gt start","description":"gt start needs a config file to specify:\n- Which crew members auto-start per rig\n- Which rigs to auto-start (instead of requiring --all or --rigs flags)\n\nRequested defaults:\n- beads rig: dave\n- gastown rig: max, joe\n\nThis would allow 'gt start' to bring up the configured crew without manual flags.","status":"tombstone","priority":2,"issue_type":"feature","created_at":"2025-12-26T19:41:47.241478-08:00","updated_at":"2025-12-27T21:29:54.722339-08:00","deleted_at":"2025-12-27T21:29:54.722339-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"}
|
||||
{"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"}
|
||||
@@ -2355,7 +2358,7 @@
|
||||
{"id":"gt-wled7","title":"Use atomic write pattern for state files","description":"attached_args: Atomic write pattern for state files\n\nPrevent data loss from concurrent state file writes using atomic write pattern.\n\n## Files to modify\n- internal/witness/manager.go\n- internal/refinery/manager.go\n- internal/crew/manager.go\n- internal/swarm/manager.go\n\n## Problem\nState is saved directly to file - if process crashes mid-write, file corrupts.\n\n## Implementation\nReplace direct writes with atomic pattern:\n```go\nfunc atomicWriteJSON(path string, v interface{}) error {\n data, err := json.MarshalIndent(v, \"\", \" \")\n if err != nil {\n return err\n }\n tmpFile := path + \".tmp\"\n if err := os.WriteFile(tmpFile, data, 0644); err != nil {\n return err\n }\n return os.Rename(tmpFile, path) // Atomic on POSIX\n}\n```\n\n## Acceptance criteria\n- [ ] atomicWriteJSON helper created (in internal/util or similar)\n- [ ] All 4 manager saveState methods use atomic writes\n- [ ] .tmp files cleaned up on success\n- [ ] go test ./... passes\n- [ ] Manual test: state files survive kill -9","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T15:49:19.004767-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-28T15:58:00.223196-08:00","closed_at":"2025-12-28T15:58:00.223196-08:00"}
|
||||
{"id":"gt-wmhj","title":"tmux link-window auto-selects new window, causing agent confusion","description":"## Summary\n\nWhen running `gt crew at \u003cother\u003e` from inside a tmux session, the linked window auto-selects, causing the user to unknowingly switch agents.\n\n## Root Cause\n\n`internal/tmux/tmux.go:535-538` - `LinkWindow` doesn't use `-d` flag:\n```go\n_, err := t.run(\"link-window\", \"-s\", source) // Missing -d!\n```\n\nBy default, `tmux link-window` selects the newly linked window.\n\n## Reproduction\n\n1. Be in Max's tmux session talking to Max\n2. Ask Max to run `gt crew at joe`\n3. Max creates Joe's session and links it\n4. User is now in Joe's window without realizing it\n5. Max appears to have 'disappeared'\n\n## Fix\n\nAdd `-d` flag to prevent auto-selection:\n```go\n_, err := t.run(\"link-window\", \"-s\", source, \"-d\")\n```\n\n## Related\n\n- gt-09i4: Unify tmux session lifecycle (broader epic Max filed)\n","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-24T14:33:40.40319-08:00","updated_at":"2025-12-27T21:29:52.61366-08:00","deleted_at":"2025-12-27T21:29:52.61366-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-woitj","title":"Digest: mol-deacon-patrol","description":"Patrol 4: All agents healthy, routine","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T01:06:29.731567-08:00","updated_at":"2025-12-27T21:26:03.829456-08:00","deleted_at":"2025-12-27T21:26:03.829456-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-wotrp","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 4: All quiet.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T15:48:47.319267-08:00","updated_at":"2025-12-30T15:48:47.319267-08:00","closed_at":"2025-12-30T15:48:47.319233-08:00","close_reason":"Squashed from 15 wisps","dependencies":[{"issue_id":"gt-wotrp","depends_on_id":"gt-eph-8k9","type":"parent-child","created_at":"2025-12-30T15:48:47.320243-08:00","created_by":"deacon"}]}
|
||||
{"id":"gt-wotrp","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 4: All quiet.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T15:48:47.319267-08:00","updated_at":"2025-12-30T15:48:47.319267-08:00","closed_at":"2025-12-30T15:48:47.319233-08:00","close_reason":"Squashed from 15 wisps"}
|
||||
{"id":"gt-wpg","title":"Replaceable notifications via Claude Code queue","description":"Leverage Claude Code's ability to replace queued text for notifications that supersede previous ones.\n\n## Problem\n\nIf daemon sends 10 heartbeats while agent is busy, agent returns to see 10 stacked messages. Wasteful and noisy.\n\n## Solution\n\nUse Claude Code's queue replacement for:\n- Heartbeat messages (only latest matters)\n- Status updates that supersede previous\n- Progress notifications\n\n## Implementation\n\nNotifications get a 'slot' identifier. New notification in same slot replaces old one:\n- Slot: 'heartbeat' → only one heartbeat queued at a time\n- Slot: 'status-\u003crig\u003e' → latest status per rig\n- No slot → stacks normally (for unique messages)\n\n## Research Needed\n\n- How does Claude Code expose queue replacement?\n- tmux send-keys behavior with pending input\n- Alternative: clear + resend pattern","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-18T14:19:29.821949-08:00","updated_at":"2025-12-27T21:29:57.159975-08:00","dependencies":[{"issue_id":"gt-wpg","depends_on_id":"gt-99m","type":"blocks","created_at":"2025-12-18T14:19:46.656972-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:57.159975-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-wpj1","title":"Digest: mol-deacon-patrol","description":"Patrol 14: OK","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T21:00:35.116869-08:00","updated_at":"2025-12-27T21:26:04.910883-08:00","deleted_at":"2025-12-27T21:26:04.910883-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-wqck","title":"bd doctor: detect clone divergence emergencies","description":"Add doctor check to detect:\n1. Crew/Mayor on feature branches (should always be on main)\n2. Significant divergence between clones that should be in sync\n3. Distinguish from normal beads-sync vs main divergence (expected)\n\nContext: bd sync --status shows all divergence as equal, but some is emergency (clones drifted) vs normal (sync branch mechanics).","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T20:26:32.71018-08:00","updated_at":"2025-12-27T21:29:55.472673-08:00","deleted_at":"2025-12-27T21:29:55.472673-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -2401,6 +2404,11 @@
|
||||
{"id":"gt-xf5d","title":"Digest: mol-deacon-patrol","description":"Patrol 9","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T23:08:57.919962-08:00","updated_at":"2025-12-27T21:26:04.449625-08:00","deleted_at":"2025-12-27T21:26:04.449625-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-xfznm","title":"Digest: mol-deacon-patrol","description":"Patrol 15: all healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T21:59:55.813534-08:00","updated_at":"2025-12-27T21:26:00.490588-08:00","deleted_at":"2025-12-27T21:26:00.490588-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-xgqnb","title":"Day 1.5: Create role beads from CLAUDE.md content","description":"Create role beads from existing CLAUDE.md files:\n- gt-mayor-role (from mayor CLAUDE.md)\n- gt-witness-role (from witness CLAUDE.md)\n- gt-refinery-role (from refinery CLAUDE.md)\n\nEach role bead contains priming instructions and default_molecule.\n\nParent: gt-d0jqp","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-27T20:58:18.455282-08:00","created_by":"mayor","updated_at":"2025-12-28T00:51:56.6882-08:00","closed_at":"2025-12-28T00:51:56.6882-08:00","dependencies":[{"issue_id":"gt-xgqnb","depends_on_id":"gt-awu07","type":"blocks","created_at":"2025-12-27T20:58:51.902061-08:00","created_by":"daemon"},{"issue_id":"gt-xgqnb","depends_on_id":"gt-d0jqp","type":"parent-child","created_at":"2025-12-27T20:59:02.757231-08:00","created_by":"daemon"},{"issue_id":"gt-xgqnb","depends_on_id":"gt-gzp2y","type":"blocks","created_at":"2025-12-27T23:17:26.759727-08:00","created_by":"daemon"}]}
|
||||
{"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":"open","priority":1,"issue_type":"epic","created_at":"2025-12-30T17:40:29.036817-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T17:40:29.036817-08:00"}
|
||||
{"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":"open","priority":1,"issue_type":"task","created_at":"2025-12-30T17:40:48.552114-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T17:40:48.552114-08:00","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":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T17:40:49.847297-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T17:40:49.847297-08:00","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-30T17:40:50.857156-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"}]}
|
||||
{"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":"open","priority":2,"issue_type":"task","created_at":"2025-12-30T17:40:52.414239-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T17:40:52.414239-08:00","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-xicq","title":"Work on ga-lue: Implement Witness as Claude agent. Conver...","description":"Work on ga-lue: Implement Witness as Claude agent. Convert from shell script to Claude agent that monitors polecats, nudges idle ones, handles escalations. When done, submit MR (not PR) to integration branch for Refinery.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-19T22:58:08.310674-08:00","updated_at":"2025-12-27T21:29:56.897912-08:00","deleted_at":"2025-12-27T21:29:56.897912-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-xj9e5","title":"ZFC #7: Make message age filtering configurable","description":"**ZFC Violation:** internal/daemon/lifecycle.go:64-75\n\nGo hardcodes 6-hour max message age:\n```go\nconst MaxLifecycleMessageAge = 6 * time.Hour\n```\n\n**ZFC-compliant solution:**\n- Make this configurable per message type\n- Or let agents decide message relevance\n- Low priority - not blocking liftoff\n\nReference: ~/gt/docs/zfc-violations-audit.md #7","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-27T21:32:54.911989-08:00","created_by":"mayor","updated_at":"2025-12-27T21:32:54.911989-08:00"}
|
||||
@@ -2467,6 +2475,7 @@
|
||||
{"id":"gt-yls","title":"Document merge queue architecture","description":"Update docs/architecture.md with:\n\n- Merge Queue section explaining Beads-native approach\n- Engineer role (renamed from Refinery)\n- Session restart protocol\n- gt mq command reference\n- Federation considerations for queue\n\nAlso update any references to .gastown/ → config/.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-16T23:02:41.533065-08:00","updated_at":"2025-12-25T01:30:41.67682-08:00","dependencies":[{"issue_id":"gt-yls","depends_on_id":"gt-h5n","type":"blocks","created_at":"2025-12-16T23:02:56.043373-08:00","created_by":"daemon"}],"deleted_at":"2025-12-25T01:30:41.67682-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
{"id":"gt-ynp6","title":"gt context --usage: estimate remaining context via tmux line count","description":"## Summary\n\nImplement `gt context --usage` to estimate remaining context capacity.\n\n## Approach\n\nUse tmux scrollback buffer line count as proxy for token usage:\n- `tmux capture-pane -p | wc -l` gives current line count\n- Heuristics (tunable per model):\n - Opus 4.5: ~1800 lines = warning threshold\n - ~2000+ lines = critical, need handoff\n\n## Output Format\n```\nContext Usage: 1642 lines (~82%)\nStatus: WARNING - consider handoff soon\n```\n\n## Notes\n- Heuristics are model-specific, need config\n- Line count is proxy, not exact token count\n- Good enough for autonomous patrol decisions","status":"tombstone","priority":2,"issue_type":"feature","created_at":"2025-12-23T01:19:13.108332-08:00","updated_at":"2025-12-27T21:29:56.26736-08:00","deleted_at":"2025-12-27T21:29:56.26736-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"}
|
||||
{"id":"gt-yo8q8","title":"Digest: mol-deacon-patrol","description":"Patrol 12: all clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T08:17:55.490764-08:00","updated_at":"2025-12-28T08:17:55.490764-08:00","closed_at":"2025-12-28T08:17:55.490728-08:00"}
|
||||
{"id":"gt-yqxcq","title":"Merge: furiosa-1767141944421","description":"branch: polecat/furiosa-1767141944421\ntarget: main\nsource_issue: furiosa-1767141944421\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:49:14.137177-08:00","created_by":"gastown/polecats/furiosa","updated_at":"2025-12-30T16:49:14.137177-08:00"}
|
||||
{"id":"gt-yskrz","title":"Crew CLAUDE.md overwritten by polecat template","description":"The crew worker CLAUDE.md files (crew/max, crew/joe, crew/jack) have been overwritten with the polecat-CLAUDE.md template content.\n\n**Expected**: Crew workers should have mayor-like context (they share the rig repo, work on main branch, plan work)\n\n**Actual**: Crew CLAUDE.md says 'Polecat ace' and includes polecat-specific instructions (don't push to main, wait for Witness to kill session, etc.)\n\n**Impact**: \n- Crew workers getting wrong identity context\n- Ready Front planning guidance in gotchas section was lost\n- Crew workers told not to push to main (but they should)\n\n**Root cause**: Likely gt polecat template deployment hit crew directories\n\n**Fix needed**:\n- Restore crew CLAUDE.md template (or create one if missing)\n- Ensure template deployment only targets polecats/ directories\n- Add Ready Front planning section to crew template","status":"closed","priority":2,"issue_type":"bug","assignee":"gastown/polecats/morsov","created_at":"2025-12-28T21:38:53.66113-08:00","created_by":"gastown/crew/jack","updated_at":"2025-12-29T22:08:03.491829-08:00","closed_at":"2025-12-29T22:08:03.491829-08:00","close_reason":"Fixed crew CLAUDE.md files:\n1. Regenerated with correct crew template (not polecat template)\n2. Added CLAUDE.md to .gitignore to prevent cross-clone contamination\n3. Each crew member now has their own CLAUDE.md with correct identity"}
|
||||
{"id":"gt-yt1yc","title":"Digest: mol-deacon-patrol","description":"P16: stable","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T20:14:21.241655-08:00","updated_at":"2025-12-27T21:26:02.23698-08:00","deleted_at":"2025-12-27T21:26:02.23698-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-yt4py","title":"gt polecat add should spawn with --dangerously-skip-permissions","description":"When adding polecats via gt polecat add, the subsequent Claude session needs --dangerously-skip-permissions flag to run autonomously.\n\nCurrently:\n- gt polecat add creates worktree\n- tmux new-session spawns 'claude' without flags\n- Polecat gets stuck at permission prompts\n\nNeeded:\n- gt polecat add (or gt sling) should spawn with --dangerously-skip-permissions\n- Or store a config in polecat worktree indicating autonomous mode\n\nThis is critical for swarm automation - polecats can't self-approve permissions.","status":"hooked","priority":2,"issue_type":"feature","assignee":"gastown/polecats/dementus","created_at":"2025-12-28T16:31:53.841788-08:00","created_by":"mayor","updated_at":"2025-12-30T00:07:53.183681-08:00"}
|
||||
|
||||
11
.beads/mq/gt-4q7wh.json
Normal file
11
.beads/mq/gt-4q7wh.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "gt-4q7wh",
|
||||
"branch": "polecat/nux-1767141948667",
|
||||
"target": "main",
|
||||
"source_issue": "nux-1767141948667",
|
||||
"worker": "",
|
||||
"rig": "gastown",
|
||||
"title": "Merge: nux-1767141948667",
|
||||
"priority": 2,
|
||||
"created_at": "2025-12-30T16:51:43.00565-08:00"
|
||||
}
|
||||
11
.beads/mq/gt-643ie.json
Normal file
11
.beads/mq/gt-643ie.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "gt-643ie",
|
||||
"branch": "polecat/slit-1767141951901",
|
||||
"target": "main",
|
||||
"source_issue": "slit-1767141951901",
|
||||
"worker": "",
|
||||
"rig": "gastown",
|
||||
"title": "Merge: slit-1767141951901",
|
||||
"priority": 2,
|
||||
"created_at": "2025-12-30T16:56:13.685311-08:00"
|
||||
}
|
||||
11
.beads/mq/gt-gdbcb.json
Normal file
11
.beads/mq/gt-gdbcb.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "gt-gdbcb",
|
||||
"branch": "polecat/rictus-1767141956287",
|
||||
"target": "main",
|
||||
"source_issue": "rictus-1767141956287",
|
||||
"worker": "",
|
||||
"rig": "gastown",
|
||||
"title": "Merge: rictus-1767141956287",
|
||||
"priority": 2,
|
||||
"created_at": "2025-12-30T16:47:36.875216-08:00"
|
||||
}
|
||||
11
.beads/mq/gt-yqxcq.json
Normal file
11
.beads/mq/gt-yqxcq.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"id": "gt-yqxcq",
|
||||
"branch": "polecat/furiosa-1767141944421",
|
||||
"target": "main",
|
||||
"source_issue": "furiosa-1767141944421",
|
||||
"worker": "",
|
||||
"rig": "gastown",
|
||||
"title": "Merge: furiosa-1767141944421",
|
||||
"priority": 2,
|
||||
"created_at": "2025-12-30T16:49:14.139123-08:00"
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"last_failure": "2025-12-30T16:42:52.476289-08:00",
|
||||
"last_failure": "2025-12-30T17:40:37.91092-08:00",
|
||||
"failure_count": 1,
|
||||
"backoff_until": "2025-12-30T16:43:22.47629-08:00",
|
||||
"backoff_until": "2025-12-30T17:41:07.91092-08:00",
|
||||
"needs_manual_sync": false,
|
||||
"failure_reason": "git pull failed in worktree: exit status 128\nFrom github.com:steveyegge/gastown\n * branch beads-sync -\u003e FETCH_HEAD\nfatal: Cannot rebase onto multiple branches.\n"
|
||||
}
|
||||
Reference in New Issue
Block a user