bd sync: 2025-12-30 18:26:49
This commit is contained in:
@@ -125,7 +125,7 @@
|
||||
{"id":"gt-1z4m","title":"gt swarm is implemented but undocumented","description":"internal/swarm/ package is fully implemented with:\n- gt swarm create\n- gt swarm status\n- gt swarm list\n- gt swarm land\n- gt swarm cancel\n- gt swarm start\n\nBut no documentation exists for it:\n- Not in README\n- Not in architecture.md (uses different terminology)\n- Not in any role prompts\n\nEither:\n1. Document gt swarm as the canonical mechanism\n2. Or deprecate it in favor of gt sling\n\nRelated to gt-6n13 (competing molecule mechanisms)","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/cheedo","created_at":"2025-12-24T12:51:23.768049-08:00","updated_at":"2025-12-30T10:36:54.057795-08:00","closed_at":"2025-12-30T10:36:54.057795-08:00","close_reason":"Added docs/swarm.md with full swarm documentation and updated reference.md with CLI commands","dependencies":[{"issue_id":"gt-1z4m","depends_on_id":"gt-jo9n","type":"blocks","created_at":"2025-12-24T12:52:07.817907-08:00","created_by":"daemon"},{"issue_id":"gt-1z4m","depends_on_id":"gt-e0qj2","type":"blocks","created_at":"2025-12-26T23:21:29.370789-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-202k","title":"Digest: mol-deacon-patrol @ 2025-12-24 19:44","description":"Patrol 6: All healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T19:44:33.079069-08:00","updated_at":"2025-12-27T21:26:05.137605-08:00","deleted_at":"2025-12-27T21:26:05.137605-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-20fhw","title":"test-agent-verify","status":"tombstone","priority":2,"issue_type":"agent","created_at":"2025-12-28T01:29:55.22014-08:00","created_by":"mayor","updated_at":"2025-12-28T01:30:01.423217-08:00","deleted_at":"2025-12-28T01:30:01.423217-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"agent"}
|
||||
{"id":"gt-215tk","title":"Merge: warboy-1767106060799","description":"branch: polecat/warboy-1767106060799\ntarget: main\nsource_issue: warboy-1767106060799\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:40:55.502012-08:00","created_by":"gastown/polecats/warboy","updated_at":"2025-12-30T10:40:55.502012-08:00"}
|
||||
{"id":"gt-215tk","title":"Merge: warboy-1767106060799","description":"branch: polecat/warboy-1767106060799\ntarget: main\nsource_issue: warboy-1767106060799\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:40:55.502012-08:00","created_by":"gastown/polecats/warboy","updated_at":"2025-12-30T18:23:22.225653-08:00","closed_at":"2025-12-30T18:23:22.225653-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-21lh","title":"Polecat template: remove redundant 'Finding Work' section","description":"The 'Finding Work' section (bd ready, bd list, bd show) is general-purpose guidance that may not apply to polecats who are spawned with specific work. Either remove for polecats or clarify this is for discovering additional work during execution.","status":"tombstone","priority":3,"issue_type":"task","created_at":"2025-12-23T16:56:55.230827-08:00","updated_at":"2025-12-27T21:29:57.456286-08:00","dependencies":[{"issue_id":"gt-21lh","depends_on_id":"gt-t9u7","type":"parent-child","created_at":"2025-12-23T16:57:16.772763-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:57.456286-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-22ng","title":"Create activity aggregator","description":"Component that connects to multiple rig beads daemons and merges their activity into a unified view. Polls GetMutations and GetWorkerStatus from each rig, groups by rig/worker. Handles connection failures gracefully.\n\nBLOCKED BY (Beads rig):\n- bd-gqxd: Enrich MutationEvent with title and assignee\n- bd-l13p: Add GetWorkerStatus RPC endpoint\n- bd-0oqz: Add GetMoleculeProgress RPC endpoint","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T16:27:08.249115-08:00","updated_at":"2025-12-23T16:27:53.545952-08:00","dependencies":[{"issue_id":"gt-22ng","depends_on_id":"gt-rivr","type":"parent-child","created_at":"2025-12-23T16:28:30.603166-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-22xxi","title":"Digest: mol-deacon-patrol","description":"Patrol 7: All clear","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T15:48:54.44952-08:00","updated_at":"2025-12-27T21:26:03.108112-08:00","deleted_at":"2025-12-27T21:26:03.108112-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -301,10 +301,10 @@
|
||||
{"id":"gt-4nn.2","title":"Molecule instantiation: create child beads from template","description":"When instantiating a molecule on a work bead:\n\n## Transaction Flow\n\n1. Parse molecule's `## Step:` sections from description\n2. Begin SQLite transaction\n3. For each step, create child issue:\n - ID: `{parent-id}.{step-ref}` or generated\n - Title: step title (from header or first line)\n - Description: step prose instructions\n - Type: task\n - Priority: inherit from parent\n4. Add `instantiated-from` edge from each step to molecule:\n ```sql\n INSERT INTO dependencies (issue_id, depends_on_id, type, metadata)\n VALUES (step_id, mol_id, 'instantiated-from', '{\"step\": \"implement\"}');\n ```\n5. Wire inter-step dependencies from `Needs:` lines\n6. Commit transaction (atomic - all or nothing)\n\n## Parsing Conventions\n\n```markdown\n## Step: \u003cref\u003e\n\u003cprose instructions\u003e\nNeeds: \u003cstep\u003e, \u003cstep\u003e # optional\nTier: haiku|sonnet|opus # optional hint\n```\n\n## Parameterization\n\nSteps can have `{{variable}}` placeholders:\n```markdown\n## Step: implement\nImplement {{feature_name}} in {{target_file}}.\n```\n\nContext map provided at instantiation time.\n\n## API\n\n```go\nfunc (s *Store) InstantiateMolecule(mol *Issue, parent *Issue, ctx map[string]string) ([]*Issue, error)\nfunc ParseMoleculeSteps(description string) ([]MoleculeStep, error)\n```\n\nImplementation lives in `internal/beads/molecule.go`.","status":"tombstone","priority":0,"issue_type":"task","created_at":"2025-12-18T18:06:52.071066-08:00","updated_at":"2025-12-27T21:29:45.578981-08:00","dependencies":[{"issue_id":"gt-4nn.2","depends_on_id":"gt-4nn","type":"parent-child","created_at":"2025-12-18T18:06:52.072554-08:00","created_by":"daemon"},{"issue_id":"gt-4nn.2","depends_on_id":"gt-4nn.1","type":"blocks","created_at":"2025-12-18T18:07:02.949242-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:45.578981-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-4nn.3","title":"Molecule CLI: bd molecule commands","description":"Add molecule commands to bd:\n\n## Commands\n\n```bash\nbd molecule list # List molecules (type: molecule)\nbd molecule show \u003cid\u003e # Show molecule with parsed steps\nbd molecule parse \u003cid\u003e # Validate and show parsed structure \nbd molecule instantiate \u003cmol-id\u003e --parent=\u003cissue-id\u003e # Create steps\nbd molecule instances \u003cmol-id\u003e # Show all instantiations\n```\n\n## gt spawn integration\n\n```bash\ngt spawn --issue \u003cid\u003e --molecule \u003cmol-id\u003e\n```\n\nThis should:\n1. Call `bd molecule instantiate` (creates child beads atomically)\n2. Spawn polecat on first ready step\n3. Polecat grinds through via `bd ready`\n\n## Output Examples\n\n```\n$ bd molecule show mol-abc\n\nmol-abc: Engineer in a Box\nType: molecule\n\nSteps (5):\n design → (ready first)\n implement → Needs: design\n review → Needs: implement\n test → Needs: implement \n submit → Needs: review, test\n \nInstances: 3\n```\n\n```\n$ bd molecule instances mol-abc\n\nParent Status Created\ngt-xyz done 2025-12-15\ngt-abc active 2025-12-17 (3/5 complete)\ngt-def pending 2025-12-18\n```","status":"tombstone","priority":0,"issue_type":"task","created_at":"2025-12-18T18:06:53.919884-08:00","updated_at":"2025-12-27T21:29:45.5705-08:00","dependencies":[{"issue_id":"gt-4nn.3","depends_on_id":"gt-4nn","type":"parent-child","created_at":"2025-12-18T18:06:53.921621-08:00","created_by":"daemon"},{"issue_id":"gt-4nn.3","depends_on_id":"gt-4nn.2","type":"blocks","created_at":"2025-12-18T18:07:03.048941-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:45.5705-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-4nn.4","title":"Built-in molecules: engineer-in-box, quick-fix, research","description":"Create built-in molecules as Beads issues:\n\n## engineer-in-box\n\n```markdown\nid: mol-engineer-in-box\ntype: molecule\ntitle: Engineer in a Box\n\nFull workflow from design to merge.\n\n## Step: design\nThink carefully about architecture. Consider:\n- Existing patterns in the codebase\n- Trade-offs between approaches \n- Testability and maintainability\n\nWrite a brief design summary before proceeding.\n\n## Step: implement\nWrite the code. Follow codebase conventions.\nNeeds: design\n\n## Step: review\nSelf-review the changes. Look for:\n- Bugs and edge cases\n- Style issues\n- Missing error handling\nNeeds: implement\n\n## Step: test\nWrite and run tests. Cover happy path and edge cases.\nFix any failures before proceeding.\nNeeds: implement\n\n## Step: submit\nSubmit for merge via refinery.\nNeeds: review, test\n```\n\n## quick-fix\n\n```markdown\nid: mol-quick-fix\ntype: molecule \ntitle: Quick Fix\n\nFast path for small changes.\n\n## Step: implement\nMake the fix. Keep it focused.\n\n## Step: test\nRun relevant tests. Fix any regressions.\nNeeds: implement\n\n## Step: submit\nSubmit for merge.\nNeeds: test\n```\n\n## research\n\n```markdown\nid: mol-research\ntype: molecule\ntitle: Research\n\nInvestigation workflow.\n\n## Step: investigate\nExplore the question. Search code, read docs, \nunderstand context. Take notes.\n\n## Step: document\nWrite up findings. Include:\n- What you learned\n- Recommendations\n- Open questions\nNeeds: investigate\n```\n\n## Storage\n\nBuilt-in molecules live in `\u003ctown\u003e/.beads/` as regular issues.\nCreated during `gt install` or `bd init`.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-18T18:07:04.574565-08:00","updated_at":"2025-12-27T21:29:54.167707-08:00","dependencies":[{"issue_id":"gt-4nn.4","depends_on_id":"gt-4nn","type":"parent-child","created_at":"2025-12-18T18:07:04.576587-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:54.167707-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"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-4nobz","title":"Merge: capable-1767140263101","description":"branch: polecat/capable-1767140263101\ntarget: main\nsource_issue: capable-1767140263101\nrig: gastown","status":"closed","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-30T18:23:22.162592-08:00","closed_at":"2025-12-30T18:23:22.162592-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"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-4q7wh","title":"Merge: nux-1767141948667","description":"branch: polecat/nux-1767141948667\ntarget: main\nsource_issue: nux-1767141948667\nrig: gastown","status":"closed","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-30T18:23:22.133548-08:00","closed_at":"2025-12-30T18:23:22.133548-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"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"}
|
||||
@@ -419,7 +419,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-643ie","title":"Merge: slit-1767141951901","description":"branch: polecat/slit-1767141951901\ntarget: main\nsource_issue: slit-1767141951901\nrig: gastown","status":"closed","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-30T18:23:22.127882-08:00","closed_at":"2025-12-30T18:23:22.127882-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"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."}
|
||||
@@ -440,7 +440,7 @@
|
||||
{"id":"gt-6k02h","title":"Digest: mol-deacon-patrol","description":"Patrol 6: routine","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T10:16:49.768628-08:00","updated_at":"2025-12-27T21:26:03.576856-08:00","deleted_at":"2025-12-27T21:26:03.576856-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-6k8","title":"Interrupt vs Queue mail semantics","description":"Add priority/delivery semantics to mail messages.\n\n## Semantics\n\n| Type | Delivery | Use Case |\n|------|----------|----------|\n| Interrupt | tmux send-keys | Lifecycle, URGENT, stuck detection |\n| Queue | Create message only | Normal mail, status, heartbeat |\n\n## Implementation\n\n- `bd mail send --interrupt` uses tmux send-keys notification\n- Default is queue (agent checks with `gt mail check`)\n- Urgent flag on messages for interrupt delivery\n\n## Agent Side\n\n- `gt mail check --quiet` - non-blocking check for queued mail\n- `gt mail wait` - block until mail arrives (for idle agents)\n- Heartbeats become queued, agent checks at natural breakpoints","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-18T14:19:28.408196-08:00","updated_at":"2025-12-27T21:29:57.168288-08:00","dependencies":[{"issue_id":"gt-6k8","depends_on_id":"gt-99m","type":"blocks","created_at":"2025-12-18T14:19:46.529252-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:57.168288-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-6l2au","title":"Digest: mol-deacon-patrol","description":"Patrol 14: All clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T00:04:09.604588-08:00","updated_at":"2025-12-25T00:04:09.604588-08:00","closed_at":"2025-12-25T00:04:09.604555-08:00"}
|
||||
{"id":"gt-6l7h1","title":"Merge: morsov-dogs","description":"branch: polecat/morsov-dogs\ntarget: main\nsource_issue: morsov-dogs\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:41:30.107301-08:00","created_by":"gastown/polecats/morsov","updated_at":"2025-12-30T10:41:30.107301-08:00"}
|
||||
{"id":"gt-6l7h1","title":"Merge: morsov-dogs","description":"branch: polecat/morsov-dogs\ntarget: main\nsource_issue: morsov-dogs\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:41:30.107301-08:00","created_by":"gastown/polecats/morsov","updated_at":"2025-12-30T18:23:22.219951-08:00","closed_at":"2025-12-30T18:23:22.219951-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-6lt3","title":"Work on ga-rd4: Add gt polecat status command. Show detai...","description":"Work on ga-rd4: Add gt polecat status command. Show detailed polecat status including current issue, session state, last activity time. When done, submit MR (not PR) to integration branch for Refinery.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-19T22:58:26.320627-08:00","updated_at":"2025-12-27T21:29:56.881071-08:00","deleted_at":"2025-12-27T21:29:56.881071-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-6lwa7","title":"Digest: mol-deacon-patrol","description":"Patrol 1: All healthy, no messages","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T13:50:55.047597-08:00","updated_at":"2025-12-27T21:26:03.165198-08:00","deleted_at":"2025-12-27T21:26:03.165198-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-6m3e","title":"bd create --dedup: semantic deduplication before issue creation","description":"Before creating issue, check for semantic duplicates using AI similarity.\n\n**From VC**: internal/deduplication/ - AI-powered batch comparison. ~300 lines.\nVC had issue pollution problem: 438 issues with ~350+ spam because no early dedup.\n\n**Gas Town implementation**: CLI flag on bd create:\n```bash\nbd create --dedup --title=\"Fix auth bug\" --description=\"...\"\n```\n\nChecks recent issues (7-day window) with AI similarity. If confidence \u003e0.85, warns or blocks.\n\n**Value**: Prevents pollution from parallel workers discovering same issues.\n\n**VC lesson**: 115 issues filed in single day (Nov 2) because supervisor over-discovered without dedup. Rate limiting + dedup are essential.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-20T20:30:17.305652-08:00","updated_at":"2025-12-20T20:30:17.305652-08:00","dependencies":[{"issue_id":"gt-6m3e","depends_on_id":"gt-zhpa","type":"parent-child","created_at":"2025-12-20T20:30:27.599806-08:00","created_by":"daemon"}]}
|
||||
@@ -546,7 +546,7 @@
|
||||
{"id":"gt-7x7rf","title":"Digest: mol-deacon-patrol","description":"Patrol 12: clear","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T18:15:51.554671-08:00","updated_at":"2025-12-27T21:26:01.006017-08:00","deleted_at":"2025-12-27T21:26:01.006017-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-7xtn","title":"Bug: MRs appearing in bd ready output","description":"merge-request beads are showing up in `bd ready` output alongside actual work items.\n\n## Problem\n`bd ready` is meant to show work available for polecats to claim. MRs are internal workflow items processed by the Refinery, not polecat work.\n\n## Example\n```\n| P1 | merge-request | bd-3zzh | Merge: bd-tvu3 |\n| P1 | merge-request | bd-fcl1 | Merge: bd-au0.5 |\n```\n\n## Possible Fixes\n1. **Filter by type** - `bd ready` excludes type=merge-request, type=gate, type=molecule\n2. **Set assignee on submit** - MR assigned to refinery/ when created, so not 'unassigned'\n3. **Set status=in_progress** - MR starts in_progress since it's queued for processing\n\n## Related\n- gate beads also showing (bd-hyp6, bd-wu62) - same issue","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-23T14:38:29.507419-08:00","updated_at":"2025-12-27T21:29:52.965432-08:00","deleted_at":"2025-12-27T21:29:52.965432-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-7yc3u","title":"Digest: mol-deacon-patrol","description":"Patrol 2: all healthy, no incidents","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T21:52:09.555378-08:00","updated_at":"2025-12-27T21:26:00.593285-08:00","deleted_at":"2025-12-27T21:26:00.593285-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-804je","title":"Merge: dementus-1767146229184","description":"branch: polecat/dementus-1767146229184\ntarget: main\nsource_issue: dementus-1767146229184\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T18:01:50.010863-08:00","created_by":"gastown/polecats/dementus","updated_at":"2025-12-30T18:01:50.010863-08:00"}
|
||||
{"id":"gt-804je","title":"Merge: dementus-1767146229184","description":"branch: polecat/dementus-1767146229184\ntarget: main\nsource_issue: dementus-1767146229184\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T18:01:50.010863-08:00","created_by":"gastown/polecats/dementus","updated_at":"2025-12-30T18:23:22.116095-08:00","closed_at":"2025-12-30T18:23:22.116095-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-80g0k","title":"Digest: mol-deacon-patrol","description":"Patrol 13: Quick cycle, all quiet","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T17:08:36.666314-08:00","updated_at":"2025-12-27T21:26:02.950916-08:00","deleted_at":"2025-12-27T21:26:02.950916-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-81rh4","title":"Digest: mol-deacon-patrol","description":"Patrol 13: All clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T16:18:56.391947-08:00","updated_at":"2025-12-25T16:18:56.391947-08:00","closed_at":"2025-12-25T16:18:56.391918-08:00"}
|
||||
{"id":"gt-81zgq","title":"Merge: nux-1767079896198","description":"branch: polecat/nux-1767079896198\ntarget: main\nsource_issue: nux-1767079896198\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-29T23:38:17.859423-08:00","created_by":"gastown/polecats/nux","updated_at":"2025-12-29T23:55:11.863853-08:00","closed_at":"2025-12-29T23:55:11.863853-08:00","close_reason":"Stale MR from nuked polecat"}
|
||||
@@ -557,7 +557,7 @@
|
||||
{"id":"gt-83zh4","title":"Merge: nux-1767075895486","description":"branch: polecat/nux-1767075895486\ntarget: main\nsource_issue: nux-1767075895486\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-29T22:28:28.554902-08:00","created_by":"gastown/polecats/nux","updated_at":"2025-12-30T01:01:04.353761-08:00","closed_at":"2025-12-30T01:01:04.353761-08:00","close_reason":"Already merged to main"}
|
||||
{"id":"gt-85a","title":"gt spawn: Not injecting work instructions to session","description":"gt spawn starts session but doesn't inject the issue assignment.\n\nRepro:\n1. gt spawn gastown/Toast --issue gt-2ux\n2. Session starts but polecat just sees Claude prompt\n3. No issue context injected\n\nExpected: Polecat should receive issue details automatically.\nActual: Polecat sits at blank prompt, needs manual injection.","status":"tombstone","priority":0,"issue_type":"bug","created_at":"2025-12-17T22:28:02.583003-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-85gfs","title":"Digest: mol-deacon-patrol","description":"Patrol 20: all healthy, doctor pass, handoff cycle","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T19:37:50.9058-08:00","updated_at":"2025-12-27T21:26:00.694201-08:00","deleted_at":"2025-12-27T21:26:00.694201-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-860md","title":"Merge: capable-1767146233256","description":"branch: polecat/capable-1767146233256\ntarget: main\nsource_issue: capable-1767146233256\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T18:03:37.996927-08:00","created_by":"gastown/polecats/capable","updated_at":"2025-12-30T18:03:37.996927-08:00"}
|
||||
{"id":"gt-860md","title":"Merge: capable-1767146233256","description":"branch: polecat/capable-1767146233256\ntarget: main\nsource_issue: capable-1767146233256\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T18:03:37.996927-08:00","created_by":"gastown/polecats/capable","updated_at":"2025-12-30T18:23:22.098333-08:00","closed_at":"2025-12-30T18:23:22.098333-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-86w","title":"CLI: doctor diagnostics and auto-repair","description":"GGT completely lacks the doctor command which is critical for debugging.\n\nRequired Commands:\n- gt doctor [\u003crig\u003e] - Run diagnostic checks\n- gt doctor --fix - Auto-repair common issues\n\nChecks to Implement:\nWorkspace Level: Config validity, Mayor mailbox, Rig registry\nRig Level: Git state, clone health, witness/refinery presence, beads sync\nSwarm Level: Stuck detection, zombie sessions, heartbeat health\n\nPGT Reference: gastown-py/src/gastown/cli/dashboard_cmd.py","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-16T14:46:34.721484-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-88r9s","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 5: all healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T15:39:36.316364-08:00","updated_at":"2025-12-27T21:26:01.43596-08:00","deleted_at":"2025-12-27T21:26:01.43596-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-88sb7","title":"Merge: dementus-1767079823043","description":"branch: polecat/dementus-1767079823043\ntarget: main\nsource_issue: dementus-1767079823043\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-29T23:37:42.270498-08:00","created_by":"gastown/polecats/dementus","updated_at":"2025-12-29T23:44:03.52339-08:00","closed_at":"2025-12-29T23:44:03.52339-08:00","close_reason":"Already merged to main"}
|
||||
@@ -683,7 +683,7 @@
|
||||
{"id":"gt-9g82","title":"Polecat wisp architecture: Proto → Wisp → Mol pattern","description":"Design the three-layer architecture for polecat lifecycle:\n\n## The Insight\n\nPolecats should run a ONE-SHOT WISP (not looping like patrols):\n\n**Step 1: Onboard**\n- Read full polecat protocol (polecat.md template)\n- Learn Gas Town operation, exit strategies, molecule protocol\n- This is the 'how to be a polecat' education\n\n**Step 2: Execute Mol**\n- Run the assigned molecule (the actual work item)\n- Could span multiple sessions via session continuity\n- The mol is pure work content (epic, issue, feature)\n\n**Step 3: Cleanup**\n- Run final step of the wisp\n- Self-delete / request shutdown\n\n## Three Layers\n\n- **Proto**: polecat.md template (instructions for being a polecat)\n- **Wisp**: One-shot harness instantiated from proto (wraps the mol)\n- **Mol**: The work item (issue/epic being processed)\n\n## Why This Matters\n\n1. **Separation of concerns**: Protocol (how) vs Work (what)\n2. **Reusability**: Same wisp harness wraps any mol\n3. **Extensibility**: Plugin points for custom behavior\n4. **Session continuity**: Wisp handles multi-session, not the mol\n5. **Blurred control/data planes**: Intentional in Gas Town\n\n## Design Questions\n\n1. How does proto (polecat.md) become a wisp instance?\n2. What are the plugin/extension points?\n3. Should all 'engineer in a box' mols use proto → wisp → mol?\n4. How does this relate to refinery/deacon patterns?","status":"tombstone","priority":1,"issue_type":"epic","created_at":"2025-12-22T15:54:17.446941-08:00","updated_at":"2025-12-27T21:29:53.192117-08:00","deleted_at":"2025-12-27T21:29:53.192117-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"}
|
||||
{"id":"gt-9guv2","title":"Messaging Channels: Unified list/queue/announce/nudge system","description":"Implement the full messaging channel system for Gas Town.\n\nTWO PARALLEL SYSTEMS:\n1. Durable (polling): mail - list, queue, announce\n2. Real-time (ephemeral): nudge - channels\n\nARCHITECTURE:\n- Config: ~/gt/config/messaging.json (town-level)\n- Messages: beads (.beads/issues.jsonl with type=message)\n\nCHANNEL TYPES:\n- list:name - Fan-out, each recipient gets copy (DONE)\n- queue:name - Claim-based, exactly-once processing (gt-02431)\n- announce:name - Bulletin board, read-only (gt-cqvgt)\n- nudge channel:name - Real-time fan-out (gt-3txyh)\n\nPRIORITY ORDER:\n1. Queues - solves real polecat cleanup race condition\n2. Nudge channels - gt broadcast mostly works but channels add precision\n3. Announces - nice-to-have bulletin boards","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-30T18:10:03.23413-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T18:10:03.23413-08:00"}
|
||||
{"id":"gt-9h40s","title":"Digest: mol-deacon-patrol","description":"Patrol 17: clear","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T18:17:31.839529-08:00","updated_at":"2025-12-27T21:26:00.963428-08:00","deleted_at":"2025-12-27T21:26:00.963428-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-9hfky","title":"Merge: toast-1767140378007","description":"branch: polecat/toast-1767140378007\ntarget: main\nsource_issue: toast-1767140378007\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:28:18.45737-08:00","created_by":"gastown/polecats/toast","updated_at":"2025-12-30T16:28:18.45737-08:00"}
|
||||
{"id":"gt-9hfky","title":"Merge: toast-1767140378007","description":"branch: polecat/toast-1767140378007\ntarget: main\nsource_issue: toast-1767140378007\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:28:18.45737-08:00","created_by":"gastown/polecats/toast","updated_at":"2025-12-30T18:23:22.151001-08:00","closed_at":"2025-12-30T18:23:22.151001-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-9hwkn","title":"Messaging infrastructure: lists, queues, channels","description":"Multi-recipient and broadcast messaging for Gas Town.\n\n## Phases\n\n**Phase 1 - Foundation**: Config directory (gt-i6jvc)\n**Phase 1 - Core**: list:, queue:, @group (requires agent-as-bead for @group)\n**Phase 2 - Channels**: announce:, #channel, gt channel publish\n\n## Addressing Syntax\n\n| Prefix | Resolution | Storage | Claim? |\n|--------|------------|---------|--------|\n| `@group` | Dynamic (bead queries) | Fan-out (N copies) | No |\n| `list:name` | Static config | Fan-out (N copies) | No |\n| `queue:name` | Static config | Shared (1 copy) | Yes |\n| `announce:name` | Static config | Shared (1 copy) | No |\n| `#channel` | Dynamic (tmux) | None (ephemeral) | No |\n\n## Alignment with Agent-as-Bead\n\n@group resolution now uses agent bead queries:\n- @rig/gastown → bd list --type=agent --rig=gastown\n- @witnesses → bd list --type=agent --role_type=witness\n\nThis replaces the originally planned filesystem scanner (gt-xo05b, now closed).\n\n## Independent Work\n\nConfig-based features (list:, queue:, announce:) can proceed without agent identity.\nOnly @group requires the agent schema from Pillar 1.","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-26T14:51:18.855183-08:00","updated_at":"2025-12-27T22:17:21.485287-08:00"}
|
||||
{"id":"gt-9iojp","title":"Swarm: E2E Swarm Test Epic","description":"Swarm molecule orchestrating epic gt-1tpts.\n\nEpic: gt-1tpts\nCoordinator: ","status":"closed","priority":3,"issue_type":"molecule","created_at":"2025-12-29T17:59:49.255101-08:00","created_by":"gastown/polecats/rictus","updated_at":"2025-12-29T18:02:47.855278-08:00","closed_at":"2025-12-29T18:02:47.855278-08:00","close_reason":"E2E Test: All tasks complete, swarm landed","dependencies":[{"issue_id":"gt-9iojp","depends_on_id":"gt-1tpts","type":"relates-to","created_at":"2025-12-29T17:59:49.25603-08:00","created_by":"gastown/polecats/rictus"}]}
|
||||
{"id":"gt-9its","title":"Digest: mol-deacon-patrol","description":"Patrol #11","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T22:24:28.490294-08:00","updated_at":"2025-12-27T21:26:04.742199-08:00","deleted_at":"2025-12-27T21:26:04.742199-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -737,7 +737,7 @@
|
||||
{"id":"gt-a817","title":"Update polecat CLAUDE.md with molecule workflow","description":"Add molecule execution guidance to polecat context:\n\n## What to Add\n\n### Molecule Awareness\n- Polecats execute Wisps (ephemeral molecule instances)\n- The work assignment mail includes molecule context\n- Current step is tracked in the wisp\n\n### Workflow Protocol\n1. Read assignment (includes molecule ID and current step)\n2. Execute current step\n3. Update step status via bd mol step\n4. Generate summary when all steps complete\n5. Run bd mol squash to compress wisp into digest\n\n### Key Commands\n- bd mol show \u003cwisp-id\u003e - view current molecule state\n- bd mol step \u003cwisp-id\u003e --status=complete - mark step done\n- bd mol squash \u003cwisp-id\u003e --summary='...' - complete molecule\n\n### Summary Generation\nWhen completing work, generate a summary that:\n- Lists what was accomplished\n- Notes any deviations from the plan\n- Captures key decisions made\n- This becomes the permanent digest","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-21T16:33:05.36066-08:00","updated_at":"2025-12-27T21:29:56.545663-08:00","dependencies":[{"issue_id":"gt-a817","depends_on_id":"gt-62hm","type":"blocks","created_at":"2025-12-21T16:33:17.457167-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:56.545663-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-a95","title":"Refinery background daemon mode","description":"Refinery currently only works in foreground mode. Background daemon is stubbed.\n\n## Current State\nmanager.go line 128-129:\n```go\n// Background mode: spawn a new process\n// For MVP, we just mark as running - actual daemon implementation in gt-ov2\nreturn nil\n```\n\n## Requirements\n\n### 1. Background Process Spawning\n```go\nfunc (m *Manager) Start(foreground bool) error {\n if !foreground {\n // Spawn gt refinery start --foreground as subprocess\n cmd := exec.Command(os.Args[0], \"refinery\", \"start\", m.rig.Name, \"--foreground\")\n cmd.Start() // Don't wait\n // Record PID\n }\n}\n```\n\n### 2. PID File Management\n- Write PID to .gastown/refinery.pid\n- Check PID validity on status\n- Clean up stale PID files\n\n### 3. Log Output\n- Redirect stdout/stderr to .gastown/refinery.log\n- Log rotation (optional for MVP)\n\n### 4. Graceful Shutdown\n- Handle SIGTERM/SIGINT\n- Complete current merge before exit\n- Update state to stopped\n\n### 5. Health Check\n- Process existence check via kill -0\n- Optional: heartbeat file with timestamp\n\n## Files to Modify\n- internal/refinery/manager.go: Start(), Status(), process spawning\n\n## Acceptance Criteria\n- [ ] gt refinery start \u003crig\u003e spawns background process\n- [ ] gt refinery status shows running with PID\n- [ ] gt refinery stop sends SIGTERM and waits\n- [ ] Logs written to .gastown/refinery.log\n- [ ] Survives terminal close","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-16T14:46:53.366619-08:00","updated_at":"2025-12-27T21:29:54.461089-08:00","deleted_at":"2025-12-27T21:29:54.461089-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-a9y","title":"File locking for concurrent access","description":"Add file locking for concurrent access safety.\n\n## At-Risk Files\n- .gastown/swarms.json (or per-swarm state.json)\n- .gastown/refinery.json\n- polecats/\u003cname\u003e/state.json\n- inbox.jsonl files\n\n## Go File Locking\nUse syscall.Flock for advisory locking:\n```go\ntype FileLock struct {\n file *os.File\n}\n\nfunc AcquireLock(path string, timeout time.Duration) (*FileLock, error) {\n f, err := os.OpenFile(path+\".lock\", os.O_CREATE|os.O_RDWR, 0644)\n if err != nil {\n return nil, err\n }\n // Use syscall.Flock with timeout\n}\n\nfunc (l *FileLock) Release() error\n```\n\n## Integration Pattern\n```go\nfunc (m *Manager) saveState(ref *Refinery) error {\n lock, err := AcquireLock(m.stateFile(), 5*time.Second)\n if err != nil {\n return fmt.Errorf(\"could not acquire lock: %w\", err)\n }\n defer lock.Release()\n \n // Read-modify-write cycle\n}\n```\n\n## New Package\ninternal/filelock/\n├── lock.go # FileLock, AcquireLock\n└── lock_test.go\n\n## Apply To\n- internal/refinery/manager.go: loadState/saveState\n- internal/cmd/swarm.go: SwarmStore\n- internal/mail/mailbox.go: Append, rewrite\n- internal/polecat/manager.go: state operations\n\n## Timeout Handling\nDefault 5 second timeout. Return error if lock not acquired.\n\n## Acceptance Criteria\n- [ ] Lock files created (.lock extension)\n- [ ] Timeout on lock contention\n- [ ] All state files protected\n- [ ] Locks released on error paths","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-16T14:48:15.641938-08:00","updated_at":"2025-12-16T16:06:32.441426-08:00"}
|
||||
{"id":"gt-aa1jz","title":"Merge: keeper-dogs","description":"branch: polecat/keeper-dogs\ntarget: main\nsource_issue: keeper-dogs\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:36:28.246013-08:00","created_by":"gastown/polecats/keeper","updated_at":"2025-12-30T10:36:28.246013-08:00"}
|
||||
{"id":"gt-aa1jz","title":"Merge: keeper-dogs","description":"branch: polecat/keeper-dogs\ntarget: main\nsource_issue: keeper-dogs\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:36:28.246013-08:00","created_by":"gastown/polecats/keeper","updated_at":"2025-12-30T18:23:22.23671-08:00","closed_at":"2025-12-30T18:23:22.23671-08:00"}
|
||||
{"id":"gt-aa4ao","title":"Digest: mol-deacon-patrol","description":"Patrol 13: clear","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T18:16:10.046179-08:00","updated_at":"2025-12-27T21:26:00.99733-08:00","deleted_at":"2025-12-27T21:26:00.99733-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-aa5l","title":"Digest: mol-deacon-patrol","description":"Patrol #14: Stable","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T23:34:09.997525-08:00","updated_at":"2025-12-27T21:26:04.28514-08:00","deleted_at":"2025-12-27T21:26:04.28514-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-aatkf","title":"Digest: mol-deacon-patrol","description":"Patrol 15: All healthy.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T03:09:32.135786-08:00","updated_at":"2025-12-28T03:09:32.135786-08:00","closed_at":"2025-12-28T03:09:32.135752-08:00"}
|
||||
@@ -788,7 +788,6 @@
|
||||
{"id":"gt-azztl","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 13: All healthy - Witness/Refinery running, 7 polecats monitored","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T16:24:16.990488-08:00","updated_at":"2025-12-30T16:24:16.990488-08:00","closed_at":"2025-12-30T16:24:16.99042-08:00","close_reason":"Squashed from 15 wisps","dependencies":[{"issue_id":"gt-azztl","depends_on_id":"gt-eph-z45","type":"parent-child","created_at":"2025-12-30T16:24:16.991441-08:00","created_by":"deacon"}]}
|
||||
{"id":"gt-b00d7","title":"Digest: mol-deacon-patrol","description":"Patrol 12: Mayor OK, 11 sessions","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T20:37:01.615713-08:00","updated_at":"2025-12-27T21:26:02.114479-08:00","deleted_at":"2025-12-27T21:26:02.114479-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-b089l","title":"Digest: mol-deacon-patrol","description":"Patrol 13: Quiet","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T07:28:09.102947-08:00","updated_at":"2025-12-27T21:26:03.617976-08:00","deleted_at":"2025-12-27T21:26:03.617976-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-b0g9a","title":"Merge: nux-1767075895486","description":"branch: polecat/nux-1767075895486\ntarget: main\nsource_issue: nux-1767075895486\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-29T22:27:33.43977-08:00","created_by":"gastown/polecats/nux","updated_at":"2025-12-29T23:32:37.20935-08:00","closed_at":"2025-12-29T23:32:37.20935-08:00"}
|
||||
{"id":"gt-b0rk4","title":"Merge: rictus-1767073382273","description":"branch: polecat/rictus-1767073382273\ntarget: main\nsource_issue: rictus-1767073382273\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-29T21:56:39.176645-08:00","created_by":"gastown/polecats/rictus","updated_at":"2025-12-29T23:32:37.288296-08:00","closed_at":"2025-12-29T23:32:37.288296-08:00","close_reason":"Branch no longer exists on remote - already merged or cleaned up"}
|
||||
{"id":"gt-b1g","title":"MVP Cutover: GGT replaces PGT for batch work","description":"When this is closed, stop using town and start using gt.\n\n## Acceptance Criteria\n\n1. gt spawn assigns issue to polecat and starts session\n2. gt spawn --epic spawns workers for all epic children\n3. gt session manages tmux lifecycle \n4. gt send / gt inbox work for mail\n5. Refinery processes merge queue with semantic merges\n6. Integration branches created and landed correctly\n7. gt stop --all halts all sessions\n8. One successful test batch completed end-to-end\n\n## What Must Work\n\n- Spawn polecat with issue assignment\n- Spawn workers for epic children\n- Session start/stop/attach\n- Mail send/inbox/read\n- Refinery merge loop (semantic)\n- Integration branch → main landing\n- Witness cleanup protocol\n- Emergency stop\n\n## What Can Be Deferred\n\n- Doctor checks (use PGT)\n- TUI dashboard\n- Plugin system\n- Federation\n- Ephemeral rigs\n- Detailed landing reports\n\n## Test Plan\n\n1. Create epic with 2 tasks, spawn 2 workers\n2. Verify polecats get assigned and sessions start\n3. Simulate task completion\n4. Verify Refinery merges to integration\n5. Verify landing to main\n6. Verify cleanup\n\n## Validation\n\nRun one real batch implementing GGT issues using GGT.\n\n## Note\n\nNo \"swarm IDs\" - just spawn workers for epic, let merge queue coordinate.","status":"tombstone","priority":0,"issue_type":"epic","created_at":"2025-12-16T00:11:09.148751-08:00","updated_at":"2025-12-27T21:29:45.690461-08:00","dependencies":[{"issue_id":"gt-b1g","depends_on_id":"gt-u1j.19","type":"blocks","created_at":"2025-12-16T00:11:36.196292-08:00","created_by":"daemon"},{"issue_id":"gt-b1g","depends_on_id":"gt-kmn.4","type":"blocks","created_at":"2025-12-16T00:11:36.273483-08:00","created_by":"daemon"},{"issue_id":"gt-b1g","depends_on_id":"gt-kmn.6","type":"blocks","created_at":"2025-12-16T00:11:36.351097-08:00","created_by":"daemon"},{"issue_id":"gt-b1g","depends_on_id":"gt-kmn.7","type":"blocks","created_at":"2025-12-16T00:11:36.431641-08:00","created_by":"daemon"},{"issue_id":"gt-b1g","depends_on_id":"gt-u1j.22","type":"blocks","created_at":"2025-12-16T00:11:36.511124-08:00","created_by":"daemon"},{"issue_id":"gt-b1g","depends_on_id":"gt-ov2","type":"blocks","created_at":"2025-12-16T00:11:51.609649-08:00","created_by":"daemon"},{"issue_id":"gt-b1g","depends_on_id":"gt-rm3","type":"blocks","created_at":"2025-12-16T00:11:51.69062-08:00","created_by":"daemon"},{"issue_id":"gt-b1g","depends_on_id":"gt-u1j.6","type":"blocks","created_at":"2025-12-16T21:36:32.942855-08:00","created_by":"daemon"},{"issue_id":"gt-b1g","depends_on_id":"gt-u1j.12","type":"blocks","created_at":"2025-12-16T21:36:35.053559-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:45.690461-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"}
|
||||
{"id":"gt-b1krg","title":"Digest: mol-deacon-patrol","description":"Patrol 20: Nominal - Handoff threshold reached","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T23:54:04.619206-08:00","updated_at":"2025-12-27T21:26:04.067261-08:00","deleted_at":"2025-12-27T21:26:04.067261-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -830,7 +829,7 @@
|
||||
{"id":"gt-bmjw","title":"gt polecat add: should handle existing branch gracefully","description":"## Problem\n\n`gt polecat add gastown Nux` fails if the branch `polecat/Nux` already exists.\n\n## Current Behavior\n\n```\nfatal: a branch named 'polecat/Nux' already exists\n```\n\n## Expected Behavior\n\nShould either:\n1. Reuse the existing branch\n2. Or prompt to delete/recreate\n3. Or auto-suffix: polecat/Nux-2\n\n## Context\n\nBranch may exist from previous polecat that was removed but branch wasn't cleaned up.","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-18T21:52:09.361672-08:00","updated_at":"2025-12-27T21:29:57.068569-08:00","deleted_at":"2025-12-27T21:29:57.068569-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-bmnru","title":"Digest: mol-deacon-patrol","description":"Patrol complete: both rigs healthy, handoff threshold reached","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T19:29:27.182707-08:00","updated_at":"2025-12-28T19:29:27.182707-08:00","closed_at":"2025-12-28T19:29:27.182673-08:00"}
|
||||
{"id":"gt-bnch","title":"Human escalation: notify overseer when self-heal fails","description":"Lightweight escalation extracted from Deacon epic (gt-5af).\n\n**Implementation**: Config in town.json or similar:\n```yaml\nescalation:\n contact: steve@example.com # or slack webhook\n triggers:\n - daemon_cant_restart\n - session_missing_5min\n```\n\n**Trigger points**:\n- Go daemon can't restart a session after N attempts\n- Agent detects it's stuck and can't recover\n- Witness can't reach polecat\n\n**Mechanism**: \n- Simple: `gt mail send --human` already exists\n- Enhanced: email/slack via external script\n\n**Weight**: Small config + one code path in daemon\n**Value**: High for unattended operation - human gets notified instead of silent failure","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-20T20:40:46.661514-08:00","updated_at":"2025-12-20T20:40:46.661514-08:00"}
|
||||
{"id":"gt-bnfus","title":"Merge: rictus-1767138835254","description":"branch: polecat/rictus-1767138835254\ntarget: main\nsource_issue: rictus-1767138835254\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:27:17.227149-08:00","created_by":"gastown/polecats/rictus","updated_at":"2025-12-30T16:27:17.227149-08:00"}
|
||||
{"id":"gt-bnfus","title":"Merge: rictus-1767138835254","description":"branch: polecat/rictus-1767138835254\ntarget: main\nsource_issue: rictus-1767138835254\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:27:17.227149-08:00","created_by":"gastown/polecats/rictus","updated_at":"2025-12-30T18:23:22.156739-08:00","closed_at":"2025-12-30T18:23:22.156739-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-bnik","title":"gt nudge should accept partial/fuzzy session names","description":"Currently gt nudge requires the exact tmux session name (e.g., gt-gastown-crew-max). Should be more forgiving:\n\n1. Accept partial matches when unambiguous (e.g., 'max' → gt-gastown-crew-max)\n2. Accept shorthand like 'gastown/max' or 'crew/max'\n3. Show helpful error with suggestions when ambiguous\n\nExamples that should work:\n- gt nudge max '...' → matches gt-gastown-crew-max\n- gt nudge gastown/max '...' → matches gt-gastown-crew-max\n- gt nudge beads-dave '...' → matches gt-beads-crew-dave","status":"tombstone","priority":3,"issue_type":"feature","created_at":"2025-12-20T17:53:44.834337-08:00","updated_at":"2025-12-27T21:29:57.605927-08:00","deleted_at":"2025-12-27T21:29:57.605927-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"}
|
||||
{"id":"gt-bnlev","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 20: final cycle before handoff","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T15:48:49.95776-08:00","updated_at":"2025-12-27T21:26:01.312421-08:00","deleted_at":"2025-12-27T21:26:01.312421-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-bo8mo","title":"Witness: must send MERGE_READY to Refinery after POLECAT_DONE","description":"Integration test gt-7psb8 revealed that Witness processes POLECAT_DONE but doesn't send MERGE_READY to Refinery.\n\nObserved:\n- Witness receives POLECAT_DONE from furiosa\n- Witness verifies branch pushed\n- Witness kills polecat session\n- Witness notifies Mayor\n- NO MERGE_READY sent to Refinery\n\nExpected: After successful pre-kill verification, Witness should send MERGE_READY to gastown/refinery with the MR details.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-28T13:11:54.428918-08:00","created_by":"mayor","updated_at":"2025-12-28T13:58:05.348621-08:00","closed_at":"2025-12-28T13:58:05.348621-08:00"}
|
||||
@@ -845,6 +844,7 @@
|
||||
{"id":"gt-btiy","title":"Digest: mol-deacon-patrol @ 2025-12-24 19:26","description":"Patrol 11: 8 sessions OK","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T19:26:07.651546-08:00","updated_at":"2025-12-27T21:26:05.264082-08:00","deleted_at":"2025-12-27T21:26:05.264082-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-budeb","title":"Witness: auto-nuke polecats after merge","description":"## Problem\nPolecats linger after merge. Manual cleanup required.\n\n## ZFC-Compliant Solution\nAdd step to `mol-witness-patrol.formula.toml`:\n\n```toml\n[[step]]\nid = \"cleanup-merged-polecats\"\ntitle = \"Remove polecats after merge\"\ndescription = \"\"\"\n1. Check inbox for MERGED messages from refinery: gt mail inbox\n2. For each MERGED notification:\n - Extract polecat name from message\n - Verify branch is actually gone: git branch -r | grep polecat/\u003cname\u003e\n - Kill session if running: tmux kill-session -t gt-\u003crig\u003e-\u003cpolecat\u003e\n - Remove worktree: gt polecat remove \u003crig\u003e/\u003cpolecat\u003e --force\n - Delete the MERGED mail\n3. Log cleanup in state.json\n\"\"\"\ndepends_on = [\"check-ready-branches\"]\n```\n\n## Why This Works\n- Witness agent receives MERGED signal from refinery (mail)\n- Agent verifies before acting (checks branch really gone)\n- Agent runs gt/tmux commands\n- No daemon code\n\n## Files\n- formulas/mol-witness-patrol.formula.toml","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T16:41:05.378581-08:00","created_by":"mayor","updated_at":"2025-12-27T21:29:54.705393-08:00","dependencies":[{"issue_id":"gt-budeb","depends_on_id":"gt-qpwv4","type":"blocks","created_at":"2025-12-27T16:41:17.546202-08:00","created_by":"daemon"},{"issue_id":"gt-budeb","depends_on_id":"gt-6qyt1","type":"blocks","created_at":"2025-12-27T16:41:17.593651-08:00","created_by":"daemon"},{"issue_id":"gt-budeb","depends_on_id":"gt-ztpe8","type":"relates-to","created_at":"2025-12-27T20:59:10.707161-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:54.705393-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-bum4e","title":"Digest: mol-deacon-patrol","description":"Patrol 7: Nominal","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T23:49:07.765741-08:00","updated_at":"2025-12-27T21:26:04.17697-08:00","deleted_at":"2025-12-27T21:26:04.17697-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-bx4ki","title":"Merge: keeper-dogs","description":"branch: polecat/keeper-dogs\ntarget: main\nsource_issue: keeper-dogs\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:53:39.673172-08:00","created_by":"gastown/polecats/keeper","updated_at":"2025-12-30T10:53:39.673172-08:00"}
|
||||
{"id":"gt-bxi8","title":"bd mail send: pinned column missing from schema","description":"gt mail send fails with: sqlite3: SQL logic error: table issues has no column named pinned\n\nLikely a schema migration issue - bd schema has 'pinned' field but SQLite table doesn't.\n\n## Reproduction\ngt mail send gastown/Immortan -s 'test' -m 'test'\n\n## Error\ntable issues has no column named pinned\n\n## Fix\nEither:\n1. Add migration to add pinned column\n2. Remove pinned from insert if not present\n3. Regenerate DB from JSONL","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-19T14:53:09.262403-08:00","updated_at":"2025-12-27T21:29:54.016795-08:00","deleted_at":"2025-12-27T21:29:54.016795-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-bz2pu","title":"Digest: mol-deacon-patrol","description":"Patrol 9: All agents healthy, 1 orphan process cleaned, no mail","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T17:43:34.631017-08:00","updated_at":"2025-12-27T21:26:01.159742-08:00","deleted_at":"2025-12-27T21:26:01.159742-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-bzd","title":"beads: Stop searching upward when .beads found","description":"## Problem\n\nWhen running bd commands in a nested directory structure with multiple .beads directories, bd shows a confusing warning:\n\n```\n╔══════════════════════════════════════════════════════════════════════════╗\n║ WARNING: 2 beads databases detected in directory hierarchy ║\n╠══════════════════════════════════════════════════════════════════════════╣\n║ Multiple databases can cause confusion and database pollution. ║\n║ ║\n║ /Users/stevey/gt/gastown/.beads (261 issues) ║\n║ /Users/stevey/gt/.beads (21 issues) ║\n║ ║\n║ WARNING: Not using the closest database! Check your BEADS_DB setting. ║\n║ ║\n║ RECOMMENDED: Consolidate or remove unused databases to avoid confusion. ║\n╚══════════════════════════════════════════════════════════════════════════╝\n```\n\n## Why This Is Wrong\n\nIn Gas Town, nested .beads directories are **intentional and necessary**:\n- Town level: /Users/stevey/gt/.beads (mail, town-level issues)\n- Rig level: /Users/stevey/gt/gastown/.beads (gastown project issues)\n- Worker level: polecats have their own beads in worktrees\n\nThese are **unrelated** beads instances for different scopes. They should never be consolidated.\n\n## Expected Behavior\n\nWhen bd finds a .beads directory, it should:\n1. Use that directory (closest ancestor wins)\n2. **Stop searching upward** - do not look for parent .beads directories\n3. **No warning** about multiple databases\n\n## Current Behavior\n\nbd searches all the way up to root, finds all .beads directories, and warns about \"multiple databases\" even though they are separate, intentional instances.\n\n## Fix\n\nIn the database discovery code, stop the upward search as soon as a .beads directory is found. The first .beads found is the one to use, and parent directories are out of scope.\n\n## Note\n\nThis is a beads issue, filed here for tracking. Should be implemented in the beads codebase.","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-18T19:09:44.295743-08:00","updated_at":"2025-12-27T21:29:54.14296-08:00","deleted_at":"2025-12-27T21:29:54.14296-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
@@ -917,7 +917,7 @@
|
||||
{"id":"gt-cp63h","title":"Digest: mol-deacon-patrol","description":"Patrol 18: all healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T15:57:04.065336-08:00","updated_at":"2025-12-28T15:57:04.065336-08:00","closed_at":"2025-12-28T15:57:04.065303-08:00"}
|
||||
{"id":"gt-cpm2","title":"Automatic spawn for ready work","description":"Auto-spawn polecats for ready work:\n\nWhen Witness has capacity (active_workers \u003c max_workers):\n1. Query bd ready for unblocked issues\n2. Filter to rig-appropriate work (by prefix or epic)\n3. For each ready issue up to capacity:\n - gt spawn --issue \u003cid\u003e\n - Track that we spawned for this issue\n\nConfiguration (in rig config.json):\n- max_workers: 4 (default)\n- spawn_delay: 5s between spawns\n- auto_spawn: true/false\n\nThis enables 'fire and forget' swarming:\n- Mayor creates epic with children\n- Mayor tells Witness to work epic\n- Witness spawns polecats automatically\n- Witness cleans up as they complete","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-20T03:14:24.724136-08:00","updated_at":"2025-12-27T21:29:53.798185-08:00","dependencies":[{"issue_id":"gt-cpm2","depends_on_id":"gt-53w6","type":"parent-child","created_at":"2025-12-20T03:14:37.365334-08:00","created_by":"daemon"},{"issue_id":"gt-cpm2","depends_on_id":"gt-mxyj","type":"blocks","created_at":"2025-12-20T03:14:38.957826-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:53.798185-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-cppy0","title":"Digest: mol-deacon-patrol","description":"Patrol 20: All healthy, handoff triggered","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T15:24:01.602815-08:00","updated_at":"2025-12-27T21:26:03.132568-08:00","deleted_at":"2025-12-27T21:26:03.132568-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-cpxxv","title":"Merge: organic-1767106082951","description":"branch: polecat/organic-1767106082951\ntarget: main\nsource_issue: organic-1767106082951\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:42:25.2268-08:00","created_by":"gastown/polecats/organic","updated_at":"2025-12-30T10:42:25.2268-08:00"}
|
||||
{"id":"gt-cpxxv","title":"Merge: organic-1767106082951","description":"branch: polecat/organic-1767106082951\ntarget: main\nsource_issue: organic-1767106082951\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:42:25.2268-08:00","created_by":"gastown/polecats/organic","updated_at":"2025-12-30T18:23:22.208549-08:00","closed_at":"2025-12-30T18:23:22.208549-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-cqvgt","title":"Implement announce:name address type for bulletin-board messaging","description":"Add support for announce:name addresses for read-only bulletin boards.\n\nSEMANTICS:\n- Messages to announce:name create ONE copy in shared location\n- All eligible readers can read (no claiming, no removal)\n- Messages retained up to retain_count, oldest pruned\n- No inbox pollution - readers check the announce channel explicitly\n\nUSE CASE:\nLow urgency broadcast that does not need ack, e.g. clean up your branches.\n\nIMPLEMENTATION:\n1. Add isAnnounceAddress() / parseAnnounceName() helpers\n2. Add sendToAnnounce() - creates message in announce location\n3. Add gt mail announces - list available announce channels\n4. Add gt mail read-announce \u003cchannel\u003e - read messages from channel\n5. Add retention pruning on new message\n\nCONFIG (already in messaging.json schema):\nannounces.alerts.readers = [@town]\nannounces.alerts.retain_count = 100","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-30T18:09:49.463812-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T18:09:49.463812-08:00","dependencies":[{"issue_id":"gt-cqvgt","depends_on_id":"gt-27bzi","type":"blocks","created_at":"2025-12-30T18:17:27.476669-08:00","created_by":"gastown/crew/max"}]}
|
||||
{"id":"gt-cr0","title":"Consolidate design docs into beads descriptions","description":"The markdown design docs (swarm-shutdown-design.md, polecat-beads-access-design.md, mayor-handoff-design.md) will decay. Extract key decisions and prompting templates into the beads descriptions themselves, then archive or remove the markdown files. Beads are the source of truth.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-15T20:24:05.45131-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-cr9","title":"Harness Design \u0026 Documentation","description":"The harness (Gas Town installation directory) needs design cleanup, documentation, and tooling.\n\n## Current Problems\n\n1. **Shared harness confusion**: ~/ai is shared by PGT and GGT with overlapping structures\n - PGT uses ~/ai/mayor/ as town-level Mayor home\n - GGT Mayor works in ~/ai/mayor/rigs/gastown/\n - ~/ai/gastown/ has both .gastown/ (PGT) and mayor/ (git clone)\n\n2. **Beads redirect**: ~/ai/.beads/redirect → mayor/rigs/gastown/.beads\n - This is specific to GGT's decentralized structure\n - Should be documented as an example\n\n3. **architecture.md**: Verify rig-level mayor/rig/ is shown correctly\n\n4. **No harness creation tooling**: Users must manually set up\n\n## Proposed Work\n\n- Document what a harness IS (installation directory)\n- Create harness creation command or template repo\n- Update architecture.md if needed \n- Create example harness configuration for docs\n- Resolve PGT/GGT sharing issue","status":"tombstone","priority":1,"issue_type":"epic","created_at":"2025-12-17T17:15:08.769961-08:00","updated_at":"2025-12-27T21:29:54.253374-08:00","deleted_at":"2025-12-27T21:29:54.253374-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"}
|
||||
@@ -1000,7 +1000,6 @@
|
||||
{"id":"gt-dy2k8","title":"Digest: mol-deacon-patrol","description":"Patrol 20: quiet, handoff threshold reached","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T19:50:21.56188-08:00","updated_at":"2025-12-28T19:50:21.56188-08:00","closed_at":"2025-12-28T19:50:21.561844-08:00"}
|
||||
{"id":"gt-dyz3.1","title":"Polecat Arm (arm-toast)","description":"Single polecat inspection and action cycle.\n\nThis molecule is bonded dynamically by mol-witness-patrol's survey-workers step.\nEach polecat being monitored gets one arm that runs in parallel with other arms.\n\n## Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| polecat_name | Yes | Name of the polecat to inspect |\n| rig | Yes | Rig containing the polecat |\n\n## Step: capture\nCapture recent tmux output for toast.\n\n```bash\ntmux capture-pane -t gt-gastown-toast -p | tail -50\n```\n\nRecord:\n- Last activity timestamp (when was last tool call?)\n- Visible errors or stack traces\n- Completion indicators (\"Done\", \"Finished\", etc.)\n\n## Step: assess\nCategorize polecat state based on captured output.\n\nStates:\n- **working**: Recent tool calls, active processing\n- **idle**: At prompt, no recent activity\n- **error**: Showing errors or stack traces\n- **requesting_shutdown**: Sent LIFECYCLE/Shutdown mail\n- **done**: Showing completion indicators\n\nCalculate: minutes since last activity.\nNeeds: capture\n\n## Step: load-history\nRead nudge history for toast from patrol state.\n\n```\nnudge_count = state.nudges[toast].count\nlast_nudge_time = state.nudges[toast].timestamp\n```\n\nThis data was loaded by the parent patrol's load-state step and passed\nto the arm via the bonding context.\nNeeds: assess\n\n## Step: decide\nApply the nudge matrix to determine action for toast.\n\n| State | Idle Time | Nudge Count | Action |\n|-------|-----------|-------------|--------|\n| working | any | any | none |\n| idle | \u003c10min | any | none |\n| idle | 10-15min | 0 | nudge-1 (gentle) |\n| idle | 15-20min | 1 | nudge-2 (direct) |\n| idle | 20+min | 2 | nudge-3 (final) |\n| idle | any | 3 | escalate |\n| error | any | any | assess-severity |\n| requesting_shutdown | any | any | pre-kill-verify |\n| done | any | any | pre-kill-verify |\n\nNudge text:\n1. \"How's progress? Need any help?\"\n2. \"Please wrap up soon. What's blocking you?\"\n3. \"Final check. Will escalate in 5 min if no response.\"\n\nRecord decision and rationale.\nNeeds: load-history\n\n## Step: execute\nTake the decided action for toast.\n\n**nudge-N**:\n```bash\ntmux send-keys -t gt-gastown-toast \"{{nudge_text}}\" Enter\n```\n\n**pre-kill-verify**:\n```bash\ncd polecats/toast\ngit status # Must be clean\ngit log origin/main..HEAD # Check for unpushed\nbd show \u003cassigned-issue\u003e # Verify closed/deferred\n```\nIf clean: kill session, remove worktree, delete branch\nIf dirty: record failure, retry next cycle\n\n**escalate**:\n```bash\ngt mail send mayor/ -s \"Escalation: toast stuck\" -m \"...\"\n```\n\n**none**: No action needed.\n\nRecord: action taken, result, updated nudge count.\nNeeds: decide\n\n## Output\n\nThe arm completes with:\n- action_taken: none | nudge-1 | nudge-2 | nudge-3 | killed | escalated\n- result: success | failed | pending\n- updated_state: New nudge count and timestamp for toast\n\nThis data feeds back to the parent patrol's aggregate step.\n---\nbonded_from: mol-polecat-arm\nbonded_to: gt-dyz3\nbonded_ref: arm-toast\nbonded_at: 2025-12-23T10:00:00Z\n","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T21:55:26.823047-08:00","updated_at":"2025-12-27T21:29:55.377417-08:00","deleted_at":"2025-12-27T21:29:55.377417-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-e01cj","title":"Digest: mol-deacon-patrol","description":"Cycle 11: quiet","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T13:19:46.280919-08:00","updated_at":"2025-12-28T13:19:46.280919-08:00","closed_at":"2025-12-28T13:19:46.280887-08:00"}
|
||||
{"id":"gt-e0p84","title":"Merge: toast-1767081120579","description":"branch: polecat/toast-1767081120579\ntarget: main\nsource_issue: toast-1767081120579\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-29T23:56:27.54274-08:00","created_by":"gastown/polecats/toast","updated_at":"2025-12-30T00:34:53.052362-08:00","closed_at":"2025-12-30T00:34:53.052362-08:00"}
|
||||
{"id":"gt-e0qj2","title":"Documentation overhaul: User Guide approach","description":"## Problem\n\nCurrent docs are:\n1. **Grandiose** - Too much vision, belongs in ~/gt/docs (HOP), not here\n2. **Verbose** - Need bullets/tables, not sections. Too many separate files.\n3. **Bottom-up** - Written as we built. Users need top-down.\n\nGas Town is a simple agent orchestrator (4-10 → 20-30 agents). Not a manifesto.\n\n## Target Structure\n\n### 1. Features at a Glance\n- Persistent agent identities with mail inboxes and \"work hooks\"\n- Sling work to agents, pinned to their hook\n- Universal Propulsion: If hook is pinned, RUN IT\n- Hooks survive crash, shutdown, compaction, restart\n- Self-sling for auto-restart workflows\n- Pin individual beads or entire epics\n\n### 2. Available Workflows\n- tmux mode vs no-tmux (raw Claude Code)\n- Full Gas Town vs partial (single roles)\n- Modular and resilient - one role at a time\n\n### 3. Cooking Formulas\n- Molecules = chains of issues (railroad tracks)\n- Formulas = step descriptions (atoms)\n- Cook formulas → molecules → durable workflows\n- Examples: release molecule, deacon patrol, polecat workflow, shiny\n\n### 4. (Optional) MEOW Deep Dive\n- Structured epics as chained work graphs\n- Serial/parallel branches, gates, loops, algebra\n- States of matter, polymorphic bond operators\n- But users just need to cook formulas\n\n## Deliverable\n\nOne README + maybe one or two supporting docs. Radically condensed.\n","status":"tombstone","priority":1,"issue_type":"epic","created_at":"2025-12-26T23:21:03.464073-08:00","created_by":"stevey","updated_at":"2025-12-27T21:29:45.798259-08:00","deleted_at":"2025-12-27T21:29:45.798259-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"}
|
||||
{"id":"gt-e0u3r","title":"gt sling: Make target path parsing more forgiving","description":"Current parsing rejects valid-looking paths like 'gastown/nux' or 'gastown/polecats/nux'.\n\nShould accept:\n- gastown/nux (polecat)\n- gastown/Nux (polecat, case-insensitive)\n- gastown/polecats/nux (explicit)\n- gastown/crew/max (crew)\n- gastown (auto-spawn)\n\nThe help says 'gastown/Toast' works but it doesn't. Parser is too strict.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-28T00:42:00.738517-08:00","created_by":"mayor","updated_at":"2025-12-28T00:54:34.999256-08:00","closed_at":"2025-12-28T00:54:34.999256-08:00"}
|
||||
{"id":"gt-e1n86","title":"Template and Formula Distribution: Embed in binary, detect staleness","description":"## Problem\n\nTwo types of Gas Town infrastructure live in `.beads/` but have unclear distribution:\n\n1. **Role templates** (`*.md.tmpl`) - embedded in binary, rendered to CLAUDE.md on setup\n2. **Patrol formulas** (`*.formula.json`) - currently just exist, no clear seeding path\n\nWhen `gt` is rebuilt with updated templates/formulas, existing installations don't auto-update.\n\n## Current State\n\n- Templates: embedded via `//go:embed`, written on `gt install`/`gt rig init`\n- Formulas: exist in `.beads/formulas/` but no seeding mechanism\n- `bd init` creates empty structure (correct - bd shouldn't know Gas Town)\n- No staleness detection for either\n\n## Proposed Solution\n\n### 1. Embed formulas in `gt` binary\n\n```go\n//go:embed formulas/*.formula.json\nvar formulaFS embed.FS\n```\n\n### 2. Seed formulas during setup\n\n`gt install` and `gt rig init` write embedded formulas to `.beads/formulas/`.\n\n### 3. Hash-based staleness detection\n\n`gt doctor` checks:\n- CLAUDE.md hash vs embedded template hash\n- Formula files hash vs embedded formula hash\n\nIf stale → warn. `gt doctor --fix` refreshes.\n\n### 4. Keep bd/gt boundary clean\n\n- `bd` stays generic: `bd cook \u003cpath\u003e` takes any formula path\n- `gt` knows where formulas live, handles distribution\n- Patrol formulas are Gas Town infrastructure, not beads concern\n\n## Tasks\n\n1. Move formulas to embedded FS in gt binary\n2. Add formula seeding to `gt install` / `gt rig init`\n3. Add hash storage for templates and formulas\n4. Add staleness detection to `gt doctor`\n5. Add `--fix` flag to refresh stale files","status":"tombstone","priority":2,"issue_type":"epic","created_at":"2025-12-25T20:04:28.044085-08:00","updated_at":"2025-12-27T21:29:54.960657-08:00","deleted_at":"2025-12-27T21:29:54.960657-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"}
|
||||
@@ -1058,7 +1057,6 @@
|
||||
{"id":"gt-eph-prb","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","created_at":"2025-12-28T13:10:43.794259-08:00","updated_at":"2025-12-28T13:12:32.296019-08:00","closed_at":"2025-12-28T13:12:32.296019-08:00"}
|
||||
{"id":"gt-eph-tc2","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","assignee":"gastown/polecats/capable","created_at":"2025-12-28T09:55:41.718758-08:00","updated_at":"2025-12-30T00:33:10.653177-08:00","closed_at":"2025-12-30T00:33:10.653177-08:00","close_reason":"Health check complete: All witnesses and refineries running normally (gastown, beads)","dependencies":[{"issue_id":"gt-eph-tc2","depends_on_id":"gt-eph-hfj","type":"parent-child","created_at":"2025-12-28T09:55:41.74114-08:00","created_by":"deacon"},{"issue_id":"gt-eph-tc2","depends_on_id":"gt-eph-8fu","type":"blocks","created_at":"2025-12-28T09:55:41.796618-08:00","created_by":"deacon"},{"issue_id":"gt-eph-tc2","depends_on_id":"gt-eph-ei9","type":"blocks","created_at":"2025-12-28T09:55:41.803807-08:00","created_by":"deacon"}]}
|
||||
{"id":"gt-eph-xvc","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-28T09:54:49.167697-08:00","updated_at":"2025-12-28T09:55:21.262397-08:00","closed_at":"2025-12-28T09:55:21.262397-08:00","dependencies":[{"issue_id":"gt-eph-xvc","depends_on_id":"gt-eph-zdk","type":"blocks","created_at":"2025-12-28T09:54:49.289859-08:00","created_by":"deacon"}]}
|
||||
{"id":"gt-eph-y0n","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":"hooked","priority":2,"issue_type":"epic","created_at":"2025-12-28T15:51:49.772331-08:00","updated_at":"2025-12-28T15:51:57.231065-08:00"}
|
||||
{"id":"gt-eph-zdk","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-28T09:54:49.167404-08:00","updated_at":"2025-12-30T16:29:32.066879-08:00","closed_at":"2025-12-30T16:29:32.066884-08:00"}
|
||||
{"id":"gt-eqys","title":"gt spawn: pasted work assignment needs manual Enter to start","description":"## Problem\n\nAfter `gt spawn` pastes the work assignment into Claude, the session waits for Enter.\n\n## Current Behavior\n\n1. `gt spawn gastown/Rictus --issue gt-xxx`\n2. Session starts, work is pasted\n3. Claude shows 'Pasted text #1 +53 lines' but doesn't start\n4. Must manually send Enter or attach and press Enter\n\n## Expected\n\nThe spawn should send Enter after pasting to kick off the work.\n\n## Related\n\nSame debounce issue as tmux notifications (gt-vnp9).","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-18T21:54:14.111101-08:00","updated_at":"2025-12-27T21:29:57.060019-08:00","deleted_at":"2025-12-27T21:29:57.060019-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-er0u","title":"Work on ga-yp3: Polecat inbox system for reliable work as...","description":"Work on ga-yp3: Polecat inbox system for reliable work assignment. This is P1 priority. See bd show ga-yp3 for full design spec.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-19T21:57:34.473056-08:00","updated_at":"2025-12-27T21:29:56.915155-08:00","deleted_at":"2025-12-27T21:29:56.915155-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -1165,7 +1163,7 @@
|
||||
{"id":"gt-gahh2","title":"Digest: mol-deacon-patrol","description":"Patrol 8: Quick cycle, all quiet","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T17:06:40.938636-08:00","updated_at":"2025-12-27T21:26:02.992556-08:00","deleted_at":"2025-12-27T21:26:02.992556-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-gastown-crew-fang","title":"Crew worker fang in gastown - human-managed persistent workspace.","description":"Crew worker fang 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:31.614218-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-29T14:56:24.101811-08:00","closed_at":"2025-12-29T14:56:24.101811-08:00","close_reason":"Crew moved to beads rig"}
|
||||
{"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-30T18:05:03.272065-08:00"}
|
||||
{"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-30T18:25:56.500419-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-30T18:05:56.389671-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-30T18:04:09.644301-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"}
|
||||
@@ -1187,7 +1185,7 @@
|
||||
{"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-30T18:04:15.972092-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-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-30T18:22:54.754707-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"}
|
||||
{"id":"gt-gastown-witness","title":"Witness for gastown - monitors polecat health and progress.","description":"Witness for gastown - monitors polecat health and progress.\n\nrole_type: witness\nrig: gastown\nagent_state: running\nhook_bead: null\nrole_bead: gt-witness-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-29T14:48:00.691337-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-30T07:24:49.528656-08:00"}
|
||||
@@ -1202,7 +1200,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-gdbcb","title":"Merge: rictus-1767141956287","description":"branch: polecat/rictus-1767141956287\ntarget: main\nsource_issue: rictus-1767141956287\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:47:36.872662-08:00","created_by":"gastown/polecats/rictus","updated_at":"2025-12-30T18:23:22.145399-08:00","closed_at":"2025-12-30T18:23:22.145399-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-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"}
|
||||
@@ -1313,7 +1311,7 @@
|
||||
{"id":"gt-hqymv","title":"Digest: mol-deacon-patrol","description":"Patrol 9: all clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T11:05:04.952768-08:00","updated_at":"2025-12-25T11:05:04.952768-08:00","closed_at":"2025-12-25T11:05:04.952741-08:00"}
|
||||
{"id":"gt-hr2bg","title":"Digest: mol-deacon-patrol","description":"Patrol 4: gastown+beads witnesses/refineries healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T18:38:43.666431-08:00","updated_at":"2025-12-27T21:26:00.912967-08:00","deleted_at":"2025-12-27T21:26:00.912967-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-hrgpg","title":"Unified Beads Namespace - prefix-based routing across town","description":"Vision: Run bd commands from anywhere in town, with prefix-based routing.\n\nCurrent state:\n- Town beads at ~/gt/.beads/ with hq-* prefix\n- Rig beads at ~/gt/\u003crig\u003e/mayor/rig/.beads/ with rig-specific prefixes (gt-, bd-, wy-, etc.)\n- Redirects allow agents to use specific beads location\n- No automatic prefix-based routing\n\nDesired state:\n- bd show gt-xyz from ANYWHERE in town → routes to gastown beads\n- bd show hq-abc from ANYWHERE in town → routes to town beads \n- bd show wy-def from ANYWHERE in town → routes to wyvern beads\n- Prefix determines beads location automatically\n\nImplementation options:\n1. Registry file at town root mapping prefix → beads location\n2. bd wrapper/hook that reads prefix and routes\n3. Unified store with namespace prefixes (more invasive)\n\nRelated work:\n- gt-0pdhj: Remove hardcoded gastown dependencies\n- Template fixes needed for deacon, witness, refinery CLAUDE.md","status":"tombstone","priority":1,"issue_type":"epic","created_at":"2025-12-26T18:35:49.567861-08:00","updated_at":"2025-12-27T21:29:45.806641-08:00","deleted_at":"2025-12-27T21:29:45.806641-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"epic"}
|
||||
{"id":"gt-hrhts","title":"Merge: cheedo-1767146245543","description":"branch: polecat/cheedo-1767146245543\ntarget: main\nsource_issue: cheedo-1767146245543\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T18:00:27.282044-08:00","created_by":"gastown/polecats/cheedo","updated_at":"2025-12-30T18:00:27.282044-08:00"}
|
||||
{"id":"gt-hrhts","title":"Merge: cheedo-1767146245543","description":"branch: polecat/cheedo-1767146245543\ntarget: main\nsource_issue: cheedo-1767146245543\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T18:00:27.282044-08:00","created_by":"gastown/polecats/cheedo","updated_at":"2025-12-30T18:23:22.122058-08:00","closed_at":"2025-12-30T18:23:22.122058-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-hs6y","title":"Add 'gt account list' command","description":"Show registered accounts from accounts.yaml. Mark default with asterisk. Show handle, email, description.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-23T03:24:18.277191-08:00","updated_at":"2025-12-27T21:29:56.192362-08:00","dependencies":[{"issue_id":"gt-hs6y","depends_on_id":"gt-58tu","type":"blocks","created_at":"2025-12-23T03:24:34.631592-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:56.192362-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-hshfy","title":"Digest: mol-deacon-patrol","description":"P15","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T14:26:19.128265-08:00","updated_at":"2025-12-27T21:26:01.618206-08:00","deleted_at":"2025-12-27T21:26:01.618206-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-htto","title":"Heartbeat convention: simple liveness signal for agents","description":"Lightweight liveness signal extracted from Deacon epic (gt-5af).\n\n**Implementation**: Each agent writes a timestamp file on activity:\n```bash\necho '{\"ts\":\"'$(date -Iseconds)'\"}' \u003e ~/gt/\u003crole\u003e/heartbeat.json\n```\n\n**Integration points**:\n- SessionStart hook writes heartbeat\n- Periodic activity (mail check, work completion) refreshes it\n- `gt status` shows staleness (e.g., 'mayor: 5m ago')\n\n**Weight**: ~5 lines per agent\n**Value**: Quick debugging - see which agents are active at a glance\n\nNo monitoring daemon needed - human checks `gt status` when curious.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-20T20:40:45.459903-08:00","updated_at":"2025-12-20T20:40:45.459903-08:00"}
|
||||
@@ -1339,13 +1337,13 @@
|
||||
{"id":"gt-i6jvc","title":"Config directory and schema for messaging","description":"Create ~/gt/config/ directory structure for messaging configuration.\n\n## Deliverables\n\n1. Create ~/gt/config/ directory\n2. Define JSON schema for lists.json:\n ```json\n {\n \"oncall\": [\"mayor/\", \"gastown/witness\"],\n \"cleanup/gastown\": [\"gastown/witness\", \"deacon/\"]\n }\n ```\n3. Define JSON schema for queues.json (if separate from lists)\n4. Add config loading utility in internal/config/\n\n## Acceptance\n- Config directory exists\n- Schema documented\n- Load/parse functions work","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T14:51:36.803749-08:00","updated_at":"2025-12-28T14:07:37.693255-08:00","closed_at":"2025-12-28T14:07:37.693255-08:00"}
|
||||
{"id":"gt-i6k1","title":"Clean up duplicate patrol protos (gt-qflq, gt-iep9)","description":"There are duplicate protos for patrol molecules:\n\n## Duplicates\n\n| Old Proto | New Proto | Name |\n|-----------|-----------|------|\n| gt-qflq | mol-witness-patrol | mol-witness-patrol |\n| gt-iep9 | mol-deacon-patrol | mol-deacon-patrol |\n\nThe old gt-* prefix protos were created before the formula cooking system.\nThe new mol-* prefix protos were created by `bd cook`.\n\n## Action\n\n1. Close or delete the old gt-* protos\n2. Update any references to use the new mol-* protos\n3. Verify `bd mol list` shows clean output\n\n## Root Cause\n\nThe bd cook command uses the formula name as the proto ID (mol-*), \nnot the project prefix (gt-*). This is probably correct behavior,\nbut means we have legacy protos to clean up.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T13:50:11.424341-08:00","updated_at":"2025-12-27T21:29:55.510323-08:00","deleted_at":"2025-12-27T21:29:55.510323-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-i6pub","title":"Digest: mol-deacon-patrol","description":"Patrol complete: 0 callbacks, no gates, all witnesses/refineries healthy, no orphans","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-27T22:15:38.387794-08:00","updated_at":"2025-12-27T22:15:38.387794-08:00","closed_at":"2025-12-27T22:15:38.387759-08:00"}
|
||||
{"id":"gt-i6xqu","title":"Merge: toast-1767146237529","description":"branch: polecat/toast-1767146237529\ntarget: main\nsource_issue: toast-1767146237529\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T18:03:32.882144-08:00","created_by":"gastown/polecats/toast","updated_at":"2025-12-30T18:03:32.882144-08:00"}
|
||||
{"id":"gt-i6xqu","title":"Merge: toast-1767146237529","description":"branch: polecat/toast-1767146237529\ntarget: main\nsource_issue: toast-1767146237529\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T18:03:32.882144-08:00","created_by":"gastown/polecats/toast","updated_at":"2025-12-30T18:23:22.104571-08:00","closed_at":"2025-12-30T18:23:22.104571-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-i73jh","title":"Digest: mol-deacon-patrol","description":"Patrol 11: all healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T21:57:41.693222-08:00","updated_at":"2025-12-27T21:26:00.524485-08:00","deleted_at":"2025-12-27T21:26:00.524485-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-i7eif","title":"Digest: mol-deacon-patrol","description":"Patrol 11: all clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T08:17:28.507015-08:00","updated_at":"2025-12-28T08:17:28.507015-08:00","closed_at":"2025-12-28T08:17:28.506983-08:00"}
|
||||
{"id":"gt-i7tmd","title":"Merge: rictus-1767084016819","description":"branch: polecat/rictus-1767084016819\ntarget: main\nsource_issue: rictus-1767084016819\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T00:58:46.107892-08:00","created_by":"gastown/polecats/rictus","updated_at":"2025-12-30T01:01:27.168699-08:00","closed_at":"2025-12-30T01:01:27.168699-08:00","close_reason":"Already merged to main"}
|
||||
{"id":"gt-i7wcn","title":"Polecat sessions terminate unexpectedly during work","description":"During swarm bd-784c, polecat sessions (Toast, Nux) terminated mid-task without completing their work.\n\n**Observed:**\n- Polecats were actively working (edits in progress, tests running)\n- Sessions suddenly showed 'not running' in gt polecat status\n- tmux sessions existed but were empty/reset\n- Work was partially complete (some commits made, issue still open)\n\n**Impact:**\n- Lost work progress\n- Required manual intervention to restart\n- Unclear if work was saved/committed\n\n**Suggestion:**\n- Add session health monitoring\n- Auto-restart on unexpected termination\n- Log session exit reasons","status":"closed","priority":2,"issue_type":"bug","assignee":"gastown/polecats/toast","created_at":"2025-12-28T22:14:07.876275-08:00","created_by":"beads/crew/emma","updated_at":"2025-12-29T22:07:52.213183-08:00","closed_at":"2025-12-29T22:07:52.213183-08:00","close_reason":"Implemented session health monitoring and auto-restart for crashed polecats. Changes include: (1) daemon now proactively checks polecat session health and auto-restarts crashed sessions with work-on-hook, (2) added polecat support to lifecycle identity mapping, (3) added 'gt session check' command for manual health checking."}
|
||||
{"id":"gt-i9s7o","title":"Add tmux crash detection hooks","description":"Use tmux hooks to detect when agent panes die unexpectedly.\n\n## tmux Hooks to Use\n- pane-died: fires when a pane exits\n- session-closed: fires when session ends\n\n## Implementation\n```bash\nset-hook -g pane-died 'run-shell \"gt log pane-died #{pane_id} #{pane_dead_status}\"'\nset-hook -g session-closed 'run-shell \"gt log session-closed #{session_name}\"'\n```\n\n## Integration\n- gt spawn should set these hooks on agent sessions\n- Distinguish expected exits (handoff, done) from crashes\n- Capture last N lines of output on crash\n- Record exit code/signal for forensics\n\n## gt log crash command\n- Parse pane-died events\n- Show crash history\n- Filter by agent, time range","status":"tombstone","priority":1,"issue_type":"feature","created_at":"2025-12-26T15:29:40.899086-08:00","updated_at":"2025-12-27T21:29:45.882716-08:00","deleted_at":"2025-12-27T21:29:45.882716-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"}
|
||||
{"id":"gt-i9y2a","title":"Merge: toast-1767146237529","description":"branch: polecat/toast-1767146237529\ntarget: main\nsource_issue: toast-1767146237529\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T18:04:15.703708-08:00","created_by":"gastown/polecats/toast","updated_at":"2025-12-30T18:04:15.703708-08:00"}
|
||||
{"id":"gt-i9y2a","title":"Merge: toast-1767146237529","description":"branch: polecat/toast-1767146237529\ntarget: main\nsource_issue: toast-1767146237529\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T18:04:15.703708-08:00","created_by":"gastown/polecats/toast","updated_at":"2025-12-30T18:23:22.091455-08:00","closed_at":"2025-12-30T18:23:22.091455-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-ia0s","title":"Review: Beads Universal Data Plane documentation","description":"Review new docs/beads-data-plane.md (275 lines) for accuracy.\n\n## Commit\n- 54c8269: Add Beads Universal Data Plane documentation\n\n## Review focus\n- Accuracy of beads architecture description\n- Correct field mappings (mail → beads fields)\n- Two-level architecture (town vs rig beads) correctly explained","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-23T14:27:49.410707-08:00","updated_at":"2025-12-23T14:27:49.410707-08:00","dependencies":[{"issue_id":"gt-ia0s","depends_on_id":"gt-e0qj2","type":"blocks","created_at":"2025-12-26T23:21:29.418109-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-iahc","title":"Merge: gt-h6eq.6","description":"branch: polecat/keeper\ntarget: main\nsource_issue: gt-h6eq.6\nrig: gastown","status":"tombstone","priority":3,"issue_type":"merge-request","created_at":"2025-12-23T11:42:12.738221-08:00","updated_at":"2025-12-27T21:27:22.997501-08:00","deleted_at":"2025-12-27T21:27:22.997501-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"merge-request"}
|
||||
{"id":"gt-ib6y","title":"Digest: mol-deacon-patrol @ 2025-12-24 19:48","description":"Patrol 19: All healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T19:48:16.252232-08:00","updated_at":"2025-12-27T21:26:05.038122-08:00","deleted_at":"2025-12-27T21:26:05.038122-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -1448,7 +1446,7 @@
|
||||
{"id":"gt-jqpm","title":"Digest: mol-deacon-patrol @ 2025-12-24 19:23","description":"Patrol 6: quiet","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T19:23:13.766787-08:00","updated_at":"2025-12-27T21:26:05.297252-08:00","deleted_at":"2025-12-27T21:26:05.297252-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-js27","title":"Digest: mol-deacon-patrol","description":"Patrol #10: Halfway checkpoint","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T22:23:51.816965-08:00","updated_at":"2025-12-27T21:26:04.750688-08:00","deleted_at":"2025-12-27T21:26:04.750688-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-jsbvm","title":"Digest: mol-deacon-patrol","description":"Patrol 17: healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-27T20:24:35.506429-08:00","updated_at":"2025-12-27T21:26:00.027249-08:00","deleted_at":"2025-12-27T21:26:00.027249-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-jsoiw","title":"Merge: dag-1767146241770","description":"branch: polecat/dag-1767146241770\ntarget: main\nsource_issue: dag-1767146241770\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T18:03:10.023436-08:00","created_by":"gastown/polecats/dag","updated_at":"2025-12-30T18:03:10.023436-08:00"}
|
||||
{"id":"gt-jsoiw","title":"Merge: dag-1767146241770","description":"branch: polecat/dag-1767146241770\ntarget: main\nsource_issue: dag-1767146241770\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T18:03:10.023436-08:00","created_by":"gastown/polecats/dag","updated_at":"2025-12-30T18:23:22.110363-08:00","closed_at":"2025-12-30T18:23:22.110363-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-jsup","title":"gt sling: patrol spawning must use wisp storage, not main DB","description":"**P0 Launch Blocker**\n\ngt sling to patrol roles (witness/refinery/deacon) currently spawns patrols into the main beads database instead of wisp storage. This will pollute the permanent database with ephemeral patrol cycles.\n\n**Root cause:**\nspawnMoleculeFromProto() with IsWisp=true uses `--db .beads-wisp/beads.db`, but the patrol TEMPLATE (e.g., gt-qp2w for mol-witness-patrol) only exists in the main database. So bd mol run fails with 'no issue found'.\n\n**The fix:**\nbd mol run needs to support reading the template from the main DB while writing the spawned instance to wisp storage. This is a cross-database spawn operation.\n\nOptions:\n1. Add `--template-db` flag to bd mol run (read template from here, write instance to --db)\n2. Copy template to wisp DB before spawning\n3. Make bd mol run automatically check main DB for templates when using wisp storage\n\n**Workaround applied (MUST REVERT):**\nSet IsWisp=false in slingToWitness/slingToRefinery/slingToDeacon patrol spawning.\n\n**Files:**\n- internal/cmd/sling.go: lines 680, 883, 1050 (IsWisp: false)\n- Needs fix in bd mol run (beads repo)","status":"tombstone","priority":0,"issue_type":"bug","created_at":"2025-12-23T16:30:56.128658-08:00","updated_at":"2025-12-27T21:29:45.469219-08:00","deleted_at":"2025-12-27T21:29:45.469219-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-jtey3","title":"Digest: mol-deacon-patrol","description":"P20 - handoff","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T14:27:42.306007-08:00","updated_at":"2025-12-27T21:26:01.577074-08:00","deleted_at":"2025-12-27T21:26:01.577074-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-jtp71","title":"Digest: mol-deacon-patrol","description":"Patrol 9: all healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T21:56:37.563658-08:00","updated_at":"2025-12-27T21:26:00.54203-08:00","deleted_at":"2025-12-27T21:26:00.54203-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -1740,7 +1738,7 @@
|
||||
{"id":"gt-nc9y","title":"gt polecat done should auto-stop running session","description":"Currently 'gt polecat done' fails if session is running, requiring a separate 'gt session stop' first. This is unnecessary friction - done should just stop the session automatically since that's always what you want.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-23T04:12:13.30724-08:00","updated_at":"2025-12-23T04:12:13.30724-08:00"}
|
||||
{"id":"gt-nd18","title":"Merge: gt-caih","description":"branch: polecat/furiosa\ntarget: main\nsource_issue: gt-caih\nrig: gastown","status":"tombstone","priority":1,"issue_type":"merge-request","created_at":"2025-12-23T01:15:24.2771-08:00","updated_at":"2025-12-27T21:27:22.443431-08:00","deleted_at":"2025-12-27T21:27:22.443431-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"merge-request"}
|
||||
{"id":"gt-ndm2m","title":"Digest: mol-deacon-patrol","description":"Patrol 19: All healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T14:00:27.991392-08:00","updated_at":"2025-12-27T21:26:01.754018-08:00","deleted_at":"2025-12-27T21:26:01.754018-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-nduix","title":"Merge: nux-1767138828269","description":"branch: polecat/nux-1767138828269\ntarget: main\nsource_issue: nux-1767138828269\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:17:54.717032-08:00","created_by":"gastown/polecats/nux","updated_at":"2025-12-30T16:17:54.717032-08:00"}
|
||||
{"id":"gt-nduix","title":"Merge: nux-1767138828269","description":"branch: polecat/nux-1767138828269\ntarget: main\nsource_issue: nux-1767138828269\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:17:54.717032-08:00","created_by":"gastown/polecats/nux","updated_at":"2025-12-30T18:23:22.173668-08:00","closed_at":"2025-12-30T18:23:22.173668-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-ne1t","title":"Design molecule step hooks","description":"Hooks that fire between molecule steps. When a bead in a molecule closes, trigger hook that can spawn agent attention to prompts/requests. This enables reactive orchestration - the molecule drives, hooks respond. Gas Town feature built on Beads data plane.","status":"tombstone","priority":2,"issue_type":"feature","created_at":"2025-12-21T17:53:14.568075-08:00","updated_at":"2025-12-27T21:29:56.503969-08:00","deleted_at":"2025-12-27T21:29:56.503969-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"}
|
||||
{"id":"gt-ne41f","title":"Hardcoded 'gastown' rig in Deacon patrol context","description":"In prime.go, the Deacon patrol context hardcodes 'gastown' as the rig name.\n\n**Location**: prime.go L807\n\n```go\nrigBeadsDir := filepath.Join(ctx.TownRoot, \"gastown\", \"mayor\", \"rig\")\n```\n\nThis breaks if:\n- The rig is renamed\n- The town has multiple rigs\n- The Deacon is deployed to a different rig\n\n**Fix options**:\n1. Detect rig from context (ctx.Rig)\n2. Use town-level beads for Deacon patrol\n3. Pass rig name as parameter\n\nThe Deacon is a town-level role, so option 2 may be most appropriate.","status":"tombstone","priority":2,"issue_type":"bug","created_at":"2025-12-25T22:03:12.131973-08:00","updated_at":"2025-12-27T21:29:54.886015-08:00","deleted_at":"2025-12-27T21:29:54.886015-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-ne9he","title":"gt crew add: role_bead field references non-existent bead","description":"## Problem\n\nWhen `gt crew add` creates an agent bead (e.g., `gt-crew-gastown-grip`), it sets:\n```\nrole_bead: gt-crew-gastown-grip-role\n```\n\nThis is WRONG. It creates per-instance role bead references that don't exist.\n\n## Correct Pattern\n\nRole beads are SHARED templates defining what a role IS. Agent beads reference them:\n\n| Role Type | Role Bead (shared) | Agent Bead (per-instance) |\n|-----------|-------------------|---------------------------|\n| Mayor | gt-mayor-role | gt-mayor |\n| Deacon | gt-deacon-role | gt-deacon |\n| Witness | gt-witness-role | gt-witness-\u003crig\u003e |\n| Refinery | gt-refinery-role | gt-refinery-\u003crig\u003e |\n| Crew | gt-crew-role | gt-crew-\u003crig\u003e-\u003cname\u003e |\n| Polecat | gt-polecat-role | gt-polecat-\u003crig\u003e-\u003cname\u003e |\n\n## Current State\n\nWorking correctly:\n- gt-mayor → gt-mayor-role ✅\n- gt-witness-gastown → gt-witness-role ✅\n- gt-refinery-gastown → gt-refinery-role ✅\n\nBroken:\n- gt-deacon → gt-deacon-role (bead doesn't exist)\n- gt-crew-* → gt-crew-\u003crig\u003e-\u003cname\u003e-role (wrong pattern, beads don't exist)\n- gt-polecat-* → (not set at all)\n\n## Code Locations\n\n1. `internal/cmd/crew_add.go:91` - sets `RoleBead: crewID + \"-role\"`\n Should be: `RoleBead: \"gt-crew-role\"`\n\n2. `internal/polecat/manager.go:220,426` - doesn't set RoleBead\n Should set: `RoleBead: \"gt-polecat-role\"`\n\n## Fix Required\n\n1. Create missing role beads: gt-crew-role, gt-polecat-role, gt-deacon-role\n2. Fix crew_add.go to use shared gt-crew-role\n3. Fix polecat/manager.go to use shared gt-polecat-role\n4. Update existing crew agent beads to point to gt-crew-role","status":"closed","priority":3,"issue_type":"bug","created_at":"2025-12-29T13:03:46.315753-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-29T13:42:28.491572-08:00","closed_at":"2025-12-29T13:42:28.491572-08:00","close_reason":"Fixed. Created shared role beads (gt-crew-role, gt-polecat-role, gt-deacon-role). Fixed code to reference shared role beads. Updated existing crew agent beads via bd slot set."}
|
||||
@@ -1759,7 +1757,6 @@
|
||||
{"id":"gt-nj3e5","title":"Digest: mol-deacon-patrol","description":"Patrol 5: all healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-27T23:04:44.720601-08:00","updated_at":"2025-12-27T23:04:44.720601-08:00","closed_at":"2025-12-27T23:04:44.720566-08:00"}
|
||||
{"id":"gt-njem","title":"Remove gt mail dependency on bd mail commands","description":"Replaced bd mail send/inbox/read/ack with bd create/list/show/close. Messages are now stored as beads issues with type=message.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-20T17:52:43.47722-08:00","updated_at":"2025-12-27T21:29:56.72792-08:00","deleted_at":"2025-12-27T21:29:56.72792-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-njr","title":"Engineer session restart protocol","description":"Implement session restart flow for when the Engineer needs to split work:\n\n1. Engineer creates subtask(s) in Beads assigned to self\n2. Engineer sends handoff mail to self (🤝 HANDOFF)\n3. Engineer sends restart request to Witness\n4. Witness verifies:\n - Handoff mail exists in Engineer outbox/sent\n - Subtasks filed in Beads\n5. Witness restarts the Refinery session (new Engineer context)\n\nThis enables \"occasionally consistent, eventually convergent\" work patterns.\nThe Refinery continues; the Engineer gets fresh context.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-16T23:02:48.22994-08:00","updated_at":"2025-12-27T21:29:54.402848-08:00","dependencies":[{"issue_id":"gt-njr","depends_on_id":"gt-h5n","type":"blocks","created_at":"2025-12-16T23:02:56.148564-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:54.402848-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-nk6u8","title":"Merge: furiosa-1767082251065","description":"branch: polecat/furiosa-1767082251065\ntarget: main\nsource_issue: furiosa-1767082251065\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T00:15:29.234552-08:00","created_by":"gastown/polecats/furiosa","updated_at":"2025-12-30T01:01:04.294738-08:00","closed_at":"2025-12-30T01:01:04.294738-08:00"}
|
||||
{"id":"gt-nk7i","title":"Digest: mol-deacon-patrol","description":"Patrol 13: OK","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T21:00:14.154408-08:00","updated_at":"2025-12-27T21:26:04.919231-08:00","deleted_at":"2025-12-27T21:26:04.919231-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-nm1oi","title":"Deacon Patrol","description":"Mayor's daemon patrol loop for handling callbacks, health checks, and cleanup.","status":"closed","priority":2,"issue_type":"molecule","created_at":"2025-12-26T13:08:21.347354-08:00","updated_at":"2025-12-29T20:57:41.78458-08:00","closed_at":"2025-12-29T20:57:41.78458-08:00","close_reason":"Duplicate patrol molecule beads - keeping gt-t5i07, gt-8ynws, gt-kt9qq"}
|
||||
{"id":"gt-nm8op","title":"Digest: mol-deacon-patrol","description":"Routine patrol, town stable","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T19:23:55.238487-08:00","updated_at":"2025-12-28T19:23:55.238487-08:00","closed_at":"2025-12-28T19:23:55.238453-08:00"}
|
||||
@@ -1768,7 +1765,7 @@
|
||||
{"id":"gt-noih","title":"test pin issue","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-23T11:45:42.660977-08:00","updated_at":"2025-12-27T21:29:56.059848-08:00","deleted_at":"2025-12-27T21:29:56.059848-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-npnph","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 9: nominal","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T15:44:12.479941-08:00","updated_at":"2025-12-27T21:26:01.402635-08:00","deleted_at":"2025-12-27T21:26:01.402635-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-nq1a","title":"Add 'gt account add' command","description":"Register new account: create config dir, spawn claude with CLAUDE_CONFIG_DIR set, user completes /login, add entry to accounts.yaml.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-23T03:24:19.444213-08:00","updated_at":"2025-12-27T21:29:56.184087-08:00","dependencies":[{"issue_id":"gt-nq1a","depends_on_id":"gt-58tu","type":"blocks","created_at":"2025-12-23T03:24:34.722487-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:56.184087-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-nq5l9","title":"Merge: nux-1767087680976","description":"branch: polecat/nux-1767087680976\ntarget: main\nsource_issue: nux-1767087680976\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T13:43:41.690209-08:00","created_by":"gastown/polecats/nux","updated_at":"2025-12-30T13:43:41.690209-08:00"}
|
||||
{"id":"gt-nq5l9","title":"Merge: nux-1767087680976","description":"branch: polecat/nux-1767087680976\ntarget: main\nsource_issue: nux-1767087680976\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T13:43:41.690209-08:00","created_by":"gastown/polecats/nux","updated_at":"2025-12-30T18:23:22.19108-08:00","closed_at":"2025-12-30T18:23:22.19108-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-nq6j","title":"Rename .beads-ephemeral to .beads-wisps in docs","description":"The wisp storage directory should be named `.beads-wisps/` not `.beads-ephemeral/`.\n\nAlso fix the architecture: Witness and Refinery share mayor/rig's beads and wisps.\nThey don't have separate ephemeral stores.\n\n## Files to update\n- docs/wisp-architecture.md\n- docs/architecture.md \n- ~/gt/docs/patrol-system-design.md\n- ~/gt/CLAUDE.md\n\n## Changes\n1. Rename `.beads-ephemeral/` → `.beads-wisps/` everywhere\n2. Remove incorrect references to witness/.beads-ephemeral/ and refinery/rig/.beads-ephemeral/\n3. Clarify that all rig-level patrols use mayor/rig/.beads-wisps/","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-21T23:38:04.110859-08:00","updated_at":"2025-12-27T21:29:53.358466-08:00","deleted_at":"2025-12-27T21:29:53.358466-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-nqrh","title":"Auto-restart patrol agents after N loops","description":"All patrol roles should auto-restart to keep context usage low. Role-specific heuristics:\n\n**Deacon**: \n- 20 patrol loops without major incident\n- Immediate restart after ANY extraordinary action (lifecycle request, remediation, escalation)\n- Rationale: Keep context short so there's headroom if something big comes up\n\n**Witness**:\n- Based on polecats processed (not loop count)\n- Restart after processing N polecats (spawns, nudges, decommissions)\n- Suggested N: 10-15 polecats\n\n**Refinery**:\n- Based on MRs processed (not loop count) \n- Restart after processing N merge requests\n- Suggested N: 5-10 MRs (merges are context-heavy)\n\nBenefits:\n- Keeps context fresh (better focus/performance)\n- Reduces cost (quadratic increase vs conversation length)\n- Preserves headroom for handling surprises\n- Simple and predictable (no context estimation needed)\n\nEach role tracks their metric in state file and hands off when threshold reached.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-23T14:00:00.093148-08:00","updated_at":"2025-12-27T21:29:52.990581-08:00","deleted_at":"2025-12-27T21:29:52.990581-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-nrawz","title":"Digest: mol-deacon-patrol","description":"Patrol 8: routine","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T10:17:21.167521-08:00","updated_at":"2025-12-27T21:26:03.560638-08:00","deleted_at":"2025-12-27T21:26:03.560638-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -1900,7 +1897,7 @@
|
||||
{"id":"gt-psuw7","title":"Day 2.2: Remove PID/tmux state inference","description":"Remove ZFC violations where Go infers state from signals:\n- No more PID file checks\n- No more tmux session parsing\n- No more branch pattern analysis\n\nDaemon becomes pure transport layer.\n\nReference: ~/gt/docs/zfc-violations-audit.md\n\nParent: gt-d0jqp","notes":"Removed PID/tmux state inference from refinery Status(), witness Status(), daemon ensureDeaconRunning(), and daemon pokeDeacon(). Daemon now trusts agent bead state per ZFC. Removed 78 lines of inference code.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-27T20:58:00.780322-08:00","created_by":"mayor","updated_at":"2025-12-28T01:56:50.21619-08:00","closed_at":"2025-12-28T01:56:50.216193-08:00","dependencies":[{"issue_id":"gt-psuw7","depends_on_id":"gt-39ttg","type":"blocks","created_at":"2025-12-27T20:58:38.848679-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-pt7mw","title":"Digest: mol-deacon-patrol","description":"Cycle 7: quiet","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T13:15:06.558474-08:00","updated_at":"2025-12-28T13:15:06.558474-08:00","closed_at":"2025-12-28T13:15:06.558434-08:00"}
|
||||
{"id":"gt-pu1t5","title":"Fix CLI mismatches from bd-2fs7 (wisp-\u003eephemeral migration)","description":"bd-2fs7 moved wisp/pour under bd mol, but gastown wasn't updated.\n\nFixed:\n- router.go: --wisp -\u003e --ephemeral for bd create\n- patrol_helpers.go: bd wisp create -\u003e bd mol wisp create \n- wisp_check.go: bd wisp gc -\u003e bd mol wisp gc\n\nThis was causing handoff failures (gt mail send errored with 'unknown flag: --wisp').","status":"tombstone","priority":0,"issue_type":"bug","created_at":"2025-12-27T15:00:52.52154-08:00","created_by":"mayor","updated_at":"2025-12-27T21:29:45.175296-08:00","deleted_at":"2025-12-27T21:29:45.175296-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-pulkh","title":"Merge: ace-dogs","description":"branch: polecat/ace-dogs\ntarget: main\nsource_issue: ace-dogs\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:36:01.968469-08:00","created_by":"gastown/polecats/ace","updated_at":"2025-12-30T10:36:01.968469-08:00"}
|
||||
{"id":"gt-pulkh","title":"Merge: ace-dogs","description":"branch: polecat/ace-dogs\ntarget: main\nsource_issue: ace-dogs\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:36:01.968469-08:00","created_by":"gastown/polecats/ace","updated_at":"2025-12-30T18:23:22.242649-08:00","closed_at":"2025-12-30T18:23:22.242649-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-pv93","title":"Post-work discovery: AI analysis finds follow-on issues","description":"AI analyzes completed work to discover: bugs, punted work, follow-on tasks.\n\n**From VC**: Supervisor.AnalyzeResult() with iterative refinement. ~300 lines.\n\n**Gas Town implementation**: Post-work hook in molecule:\n```yaml\npost_work:\n discover:\n - bugs\n - punted_items\n - follow_on_work\n file_as: beads\n```\n\nPolecat output gets analyzed by AI, discovered work becomes beads issues.\n\n**Value**: Nothing gets forgotten. VC found ~25% more issues with refinement.\n\n**Key**: Use semantic deduplication (gt-xxx) to avoid pollution.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-20T20:30:14.723338-08:00","updated_at":"2025-12-20T20:30:14.723338-08:00","dependencies":[{"issue_id":"gt-pv93","depends_on_id":"gt-zhpa","type":"parent-child","created_at":"2025-12-20T20:30:27.534886-08:00","created_by":"daemon"},{"issue_id":"gt-pv93","depends_on_id":"gt-6m3e","type":"related","created_at":"2025-12-20T20:30:35.115095-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-pvox","title":"Digest: mol-deacon-patrol","description":"Patrol #4: 2 Witnesses OK, 2 Refineries OK","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T22:21:42.037058-08:00","updated_at":"2025-12-27T21:26:04.802034-08:00","deleted_at":"2025-12-27T21:26:04.802034-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-pvzj","title":"Digest: mol-deacon-patrol @ 2025-12-24 20:23","description":"Patrol complete: inbox clear, all agents healthy, no orphans","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T20:23:09.751138-08:00","updated_at":"2025-12-27T21:26:05.021658-08:00","deleted_at":"2025-12-27T21:26:05.021658-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -2108,7 +2105,7 @@
|
||||
{"id":"gt-svi.4","title":"gt mq retry: retry a failed MR","description":"Implement 'gt mq retry \u003cid\u003e' to retry a failed merge request.\n\nActions:\n1. Verify MR exists and is in failed state (open with failure labels)\n2. Remove failure labels (needs-rebase, needs-fix)\n3. Reset to ready state\n4. Optionally re-run immediately (--now flag)\n\nOptions:\n- --now: immediately process (instead of waiting for Engineer loop)\n\nReference: docs/merge-queue-design.md#cli-commands","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-17T13:50:36.336017-08:00","updated_at":"2025-12-27T21:29:54.386372-08:00","dependencies":[{"issue_id":"gt-svi.4","depends_on_id":"gt-svi","type":"parent-child","created_at":"2025-12-17T13:50:36.3382-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:54.386372-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-svi.5","title":"gt mq reject: manual MR rejection","description":"Implement 'gt mq reject \u003cid\u003e --reason \"...\"' for manual rejection.\n\nActions:\n1. Verify MR exists and is open\n2. Close MR with close_reason=rejected\n3. Notify worker via mail (optional)\n4. Do NOT close source issue (work not done)\n\nOptions:\n- --reason REASON: required explanation\n- --notify: send mail to worker\n\nReference: docs/merge-queue-design.md#cli-commands","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-17T13:50:38.691775-08:00","updated_at":"2025-12-27T21:29:54.378041-08:00","dependencies":[{"issue_id":"gt-svi.5","depends_on_id":"gt-svi","type":"parent-child","created_at":"2025-12-17T13:50:38.693749-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:54.378041-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-svjyr","title":"Digest: mol-deacon-patrol","description":"Patrol 3: inbox clear, all healthy","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T14:21:48.063307-08:00","updated_at":"2025-12-27T21:26:01.712636-08:00","deleted_at":"2025-12-27T21:26:01.712636-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-svmj8","title":"Merge: cheedo-1767088553821","description":"branch: polecat/cheedo-1767088553821\ntarget: main\nsource_issue: cheedo-1767088553821\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:37:17.026847-08:00","created_by":"gastown/polecats/cheedo","updated_at":"2025-12-30T10:37:17.026847-08:00"}
|
||||
{"id":"gt-svmj8","title":"Merge: cheedo-1767088553821","description":"branch: polecat/cheedo-1767088553821\ntarget: main\nsource_issue: cheedo-1767088553821\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:37:17.026847-08:00","created_by":"gastown/polecats/cheedo","updated_at":"2025-12-30T18:23:22.23117-08:00","closed_at":"2025-12-30T18:23:22.23117-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-sw95t","title":"Digest: mol-deacon-patrol","description":"P20: stable - handoff triggered","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T20:15:29.507422-08:00","updated_at":"2025-12-27T21:26:02.212221-08:00","deleted_at":"2025-12-27T21:26:02.212221-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-swqfx","title":"Digest: mol-deacon-patrol","description":"Patrol 17","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T14:57:10.122945-08:00","updated_at":"2025-12-26T14:57:10.122945-08:00","closed_at":"2025-12-26T14:57:10.122884-08:00"}
|
||||
{"id":"gt-swrw","title":"Merge: gt-3x0z.4","description":"branch: polecat/rictus\ntarget: main\nsource_issue: gt-3x0z.4\nrig: gastown","status":"tombstone","priority":1,"issue_type":"merge-request","created_at":"2025-12-21T16:18:10.46877-08:00","updated_at":"2025-12-27T21:27:22.593005-08:00","deleted_at":"2025-12-27T21:27:22.593005-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"merge-request"}
|
||||
@@ -2223,7 +2220,7 @@
|
||||
{"id":"gt-u41w","title":"Merge: gt-5af.1","description":"branch: polecat/Ace\ntarget: main\nsource_issue: gt-5af.1\nrig: gastown","status":"tombstone","priority":1,"issue_type":"merge-request","created_at":"2025-12-19T17:30:40.48203-08:00","updated_at":"2025-12-27T21:27:22.717062-08:00","deleted_at":"2025-12-27T21:27:22.717062-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"merge-request"}
|
||||
{"id":"gt-u4fh","title":"Remove stubbed ProcessMRFromQueue and mrqueue package","description":"internal/refinery/engineer.go has stubbed ProcessMRFromQueue() that returns hardcoded failure.\ninternal/mrqueue/ package exists but isn't used.\n\nThis was aspirational 'beads-based MR automation' but:\n1. Refinery agent just runs git commands per role prompt\n2. manager.ProcessMR() is already fully implemented if we need Go automation\n3. The stub creates confusion about what's working\n\nEither:\n1. Remove engineer.ProcessMRFromQueue and mrqueue package entirely\n2. Or finish implementing it if there's a real use case\n\nLeaning toward removal - YAGNI.","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/rictus","created_at":"2025-12-24T13:04:53.050803-08:00","updated_at":"2025-12-30T00:47:50.801985-08:00","closed_at":"2025-12-30T00:47:50.801985-08:00","close_reason":"Removed ProcessMRFromQueue, mrqueue package, and related queue handlers from engineer.go. Manager.ProcessMR is the working implementation.","dependencies":[{"issue_id":"gt-u4fh","depends_on_id":"gt-jo9n","type":"blocks","created_at":"2025-12-24T13:05:00.183378-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-u56bb","title":"Digest: mol-deacon-patrol","description":"Patrol 20: Mayor OK, 11 sessions","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T20:37:45.08665-08:00","updated_at":"2025-12-27T21:26:02.044341-08:00","deleted_at":"2025-12-27T21:26:02.044341-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-u65t8","title":"Merge: valkyrie-1767106008400","description":"branch: polecat/valkyrie-1767106008400\ntarget: main\nsource_issue: valkyrie-1767106008400\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:43:03.503911-08:00","created_by":"gastown/polecats/valkyrie","updated_at":"2025-12-30T10:43:03.503911-08:00"}
|
||||
{"id":"gt-u65t8","title":"Merge: valkyrie-1767106008400","description":"branch: polecat/valkyrie-1767106008400\ntarget: main\nsource_issue: valkyrie-1767106008400\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T10:43:03.503911-08:00","created_by":"gastown/polecats/valkyrie","updated_at":"2025-12-30T18:23:22.202888-08:00","closed_at":"2025-12-30T18:23:22.202888-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-u6nri","title":"Wire up created_by field for beads issues","description":"## Goal\nAdd actor/creator attribution to beads issues created by gastown.\n\n## Done\n- Added CreatedBy field to Issue struct\n- Added Actor field to CreateOptions\n- Pass --actor to bd create\n\n## Remaining\n1. Add ActorString() method to RoleInfo\n2. Update beads.Create() callers to pass Actor\n3. Update direct bd create exec calls to add --actor\n\n## Context\nBeads GH #748 added created_by field. Gastown needs to populate it.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T19:22:56.217959-08:00","updated_at":"2025-12-27T21:29:54.730971-08:00","deleted_at":"2025-12-27T21:29:54.730971-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-u6siy","title":"Day 3.3: Witness sends MERGE_READY to refinery","description":"When polecat completes work:\n1. Witness detects completion (hook_bead closed, state=stopped)\n2. Witness sends mail to refinery: MERGE_READY\n3. Mail includes branch name and work bead ID\n\nParent: gt-hwka3","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-27T20:58:04.438294-08:00","created_by":"mayor","updated_at":"2025-12-28T09:51:24.398745-08:00","closed_at":"2025-12-28T09:51:24.398745-08:00","dependencies":[{"issue_id":"gt-u6siy","depends_on_id":"gt-hwka3","type":"parent-child","created_at":"2025-12-27T20:58:47.941899-08:00","created_by":"daemon"},{"issue_id":"gt-u6siy","depends_on_id":"gt-gizsv","type":"blocks","created_at":"2025-12-27T20:58:59.577532-08:00","created_by":"daemon"},{"issue_id":"gt-u6siy","depends_on_id":"gt-qpwv4","type":"relates-to","created_at":"2025-12-27T20:59:10.640353-08:00","created_by":"daemon"},{"issue_id":"gt-u6siy","depends_on_id":"gt-k294l","type":"blocks","created_at":"2025-12-27T23:17:28.250458-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-u7dxq","title":"Activity feed improvements","description":"Make the activity feed (gt feed) a first-class TUI experience using charmbracelet.\n\n## Vision\n\nA real-time dashboard showing all Gas Town activity with:\n- Agent tree organized by role (mayor, witnesses, crew, polecats)\n- Live event stream\n- Vim-style navigation\n- Filtering and search\n\n## Architecture\n\nTwo-tier event system:\n- ~/gt/.events.jsonl (raw, audit) - all events from gt, bd, agents\n- Feed daemon curates → ~/gt/.feed.jsonl (user-facing) - filtered, deduped\n\nTUI reads from curated feed for smooth UX.\n\n## Layout (Dashboard + Stream)\n```\n┌─────────────────────────────────────────────────────────────┐\n│ GT Feed Filter: all │\n├─────────────────────────────────────────────────────────────┤\n│ gastown/ │\n│ 🎩 mayor [10:30] Dispatched gt-xyz → Toast │\n│ 👁 witness [10:28] Nudged polecat-3 (idle 5m) │\n│ 🏭 refinery [10:25] Merged PR #123 │\n│ 👷 crew/ │\n│ joe [10:22] ✓ Completed gt-95j13 │\n│ max [10:18] → Working on gt-s6r44 │\n│ 😺 polecats/ │\n│ Toast [10:30] Received gt-xyz, starting... │\n├─────────────────────────────────────────────────────────────┤\n│ [10:30] 😺 Toast: Received molecule gt-xyz │\n│ [10:28] 👁 witness: Nudged polecat-3 after 5m idle │\n│ [10:25] 🏭 refinery: Merged PR #123 │\n├─────────────────────────────────────────────────────────────┤\n│ j/k: scroll /: search f: filter q: quit ?: help │\n└─────────────────────────────────────────────────────────────┘\n```\n\n## Key Features\n1. Real-time updates - events stream in live\n2. Agent tree - all agents grouped by role with status\n3. Vim-style navigation - j/k, gg/G, /search\n4. Filtering - by rig, role, event type, time\n5. Collapsible sections\n6. Details on select\n\n## Tech Stack\n- bubbletea - TUI framework\n- bubbles - viewport, list components\n- lipgloss - styling (already have)\n\n## Success Criteria\n- Feed is beautiful and scannable at a glance\n- Agent activity visible in real-time\n- Works in any terminal, degrades gracefully for pipes","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-28T11:01:43.337499-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-29T19:19:34.794909-08:00","dependencies":[{"issue_id":"gt-u7dxq","depends_on_id":"gt-sb6m4","type":"blocks","created_at":"2025-12-28T11:02:43.136872-08:00","created_by":"daemon"},{"issue_id":"gt-u7dxq","depends_on_id":"gt-zc6ma","type":"blocks","created_at":"2025-12-28T11:02:43.165368-08:00","created_by":"daemon"},{"issue_id":"gt-u7dxq","depends_on_id":"gt-1ydd9","type":"blocks","created_at":"2025-12-28T11:02:43.194997-08:00","created_by":"daemon"},{"issue_id":"gt-u7dxq","depends_on_id":"gt-7aw1m","type":"blocks","created_at":"2025-12-28T11:02:43.224956-08:00","created_by":"daemon"},{"issue_id":"gt-u7dxq","depends_on_id":"gt-38doh","type":"blocks","created_at":"2025-12-28T12:46:47.283782-08:00","created_by":"daemon"},{"issue_id":"gt-u7dxq","depends_on_id":"gt-1uhmj","type":"blocks","created_at":"2025-12-28T12:46:47.313034-08:00","created_by":"daemon"}]}
|
||||
@@ -2339,7 +2336,7 @@
|
||||
{"id":"gt-wav5","title":"Merge: gt-a95","description":"branch: polecat/Ace\ntarget: main\nsource_issue: gt-a95\nrig: gastown","status":"tombstone","priority":1,"issue_type":"merge-request","created_at":"2025-12-20T21:23:08.375434-08:00","updated_at":"2025-12-27T21:27:22.642527-08:00","deleted_at":"2025-12-27T21:27:22.642527-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"merge-request"}
|
||||
{"id":"gt-wewf.1","title":"Polecat Arm (arm-toast)","description":"Single polecat inspection and action cycle.\n\nThis molecule is bonded dynamically by mol-witness-patrol's survey-workers step.\nEach polecat being monitored gets one arm that runs in parallel with other arms.\n\n## Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| polecat_name | Yes | Name of the polecat to inspect |\n| rig | Yes | Rig containing the polecat |\n\n## Step: capture\nCapture recent tmux output for toast.\n\n```bash\ntmux capture-pane -t gt-gastown-toast -p | tail -50\n```\n\nRecord:\n- Last activity timestamp (when was last tool call?)\n- Visible errors or stack traces\n- Completion indicators (\"Done\", \"Finished\", etc.)\n\n## Step: assess\nCategorize polecat state based on captured output.\n\nStates:\n- **working**: Recent tool calls, active processing\n- **idle**: At prompt, no recent activity\n- **error**: Showing errors or stack traces\n- **requesting_shutdown**: Sent LIFECYCLE/Shutdown mail\n- **done**: Showing completion indicators\n\nCalculate: minutes since last activity.\nNeeds: capture\n\n## Step: load-history\nRead nudge history for toast from patrol state.\n\n```\nnudge_count = state.nudges[toast].count\nlast_nudge_time = state.nudges[toast].timestamp\n```\n\nThis data was loaded by the parent patrol's load-state step and passed\nto the arm via the bonding context.\nNeeds: assess\n\n## Step: decide\nApply the nudge matrix to determine action for toast.\n\n| State | Idle Time | Nudge Count | Action |\n|-------|-----------|-------------|--------|\n| working | any | any | none |\n| idle | \u003c10min | any | none |\n| idle | 10-15min | 0 | nudge-1 (gentle) |\n| idle | 15-20min | 1 | nudge-2 (direct) |\n| idle | 20+min | 2 | nudge-3 (final) |\n| idle | any | 3 | escalate |\n| error | any | any | assess-severity |\n| requesting_shutdown | any | any | pre-kill-verify |\n| done | any | any | pre-kill-verify |\n\nNudge text:\n1. \"How's progress? Need any help?\"\n2. \"Please wrap up soon. What's blocking you?\"\n3. \"Final check. Will escalate in 5 min if no response.\"\n\nRecord decision and rationale.\nNeeds: load-history\n\n## Step: execute\nTake the decided action for toast.\n\n**nudge-N**:\n```bash\ntmux send-keys -t gt-gastown-toast \"{{nudge_text}}\" Enter\n```\n\n**pre-kill-verify**:\n```bash\ncd polecats/toast\ngit status # Must be clean\ngit log origin/main..HEAD # Check for unpushed\nbd show \u003cassigned-issue\u003e # Verify closed/deferred\n```\nIf clean: kill session, remove worktree, delete branch\nIf dirty: record failure, retry next cycle\n\n**escalate**:\n```bash\ngt mail send mayor/ -s \"Escalation: toast stuck\" -m \"...\"\n```\n\n**none**: No action needed.\n\nRecord: action taken, result, updated nudge count.\nNeeds: decide\n\n## Output\n\nThe arm completes with:\n- action_taken: none | nudge-1 | nudge-2 | nudge-3 | killed | escalated\n- result: success | failed | pending\n- updated_state: New nudge count and timestamp for toast\n\nThis data feeds back to the parent patrol's aggregate step.\n---\nbonded_from: mol-polecat-arm\nbonded_to: gt-wewf\nbonded_ref: arm-toast\nbonded_at: 2025-12-23T10:00:00Z\n","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T00:10:43.433441-08:00","updated_at":"2025-12-27T21:29:55.6126-08:00","deleted_at":"2025-12-27T21:29:55.6126-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-wexr","title":"Polecat role references deprecated 'swarm' terminology","description":"prompts/roles/polecat.md line 12 says:\n'Part of a swarm: Other polecats may be working on related issues in parallel'\n\nBut architecture.md explicitly states:\n'There are no swarm IDs - just epics with children'\n\nThe swarm concept has been replaced by streams/dependency model.\nUpdate polecat.md to remove swarm references.","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-24T12:50:32.097647-08:00","updated_at":"2025-12-27T21:29:52.655198-08:00","dependencies":[{"issue_id":"gt-wexr","depends_on_id":"gt-jo9n","type":"blocks","created_at":"2025-12-24T12:52:05.023976-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:52.655198-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"bug"}
|
||||
{"id":"gt-wfuve","title":"Merge: nux-1767087680976","description":"branch: polecat/nux-1767087680976\ntarget: main\nsource_issue: nux-1767087680976\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T13:57:05.359055-08:00","created_by":"mayor","updated_at":"2025-12-30T13:57:05.359055-08:00"}
|
||||
{"id":"gt-wfuve","title":"Merge: nux-1767087680976","description":"branch: polecat/nux-1767087680976\ntarget: main\nsource_issue: nux-1767087680976\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T13:57:05.359055-08:00","created_by":"mayor","updated_at":"2025-12-30T18:23:22.185449-08:00","closed_at":"2025-12-30T18:23:22.185449-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-whpnr","title":"Digest: mol-deacon-patrol","description":"Patrol 3: all clear","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T18:09:46.3409-08:00","updated_at":"2025-12-27T21:26:01.082412-08:00","deleted_at":"2025-12-27T21:26:01.082412-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-whrlq","title":"Digest: mol-deacon-patrol","description":"Patrol 4: All healthy.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T03:04:29.713193-08:00","updated_at":"2025-12-28T03:04:29.713193-08:00","closed_at":"2025-12-28T03:04:29.713159-08:00"}
|
||||
{"id":"gt-wib7t","title":"Digest: mol-deacon-patrol","description":"Patrol 20: Final patrol, all healthy, handoff triggered","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-25T07:30:06.242412-08:00","updated_at":"2025-12-27T21:26:03.609649-08:00","deleted_at":"2025-12-27T21:26:03.609649-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
@@ -2424,8 +2421,8 @@
|
||||
{"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":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-30T17:40:29.036817-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T18:05:16.831244-08:00","closed_at":"2025-12-30T18:05:16.831244-08:00","close_reason":"Cross-rig worktree support complete - all 4 tasks implemented."}
|
||||
{"id":"gt-xheo6.1","title":"Implement gt worktree create command","description":"Create worktree in target rig for cross-rig work.\n\nUsage: gt worktree \u003crig\u003e\n\nBehavior:\n1. Detect current identity (gastown/crew/joe)\n2. Compute worktree path: ~/gt/\u003crig\u003e/crew/\u003csource-rig\u003e-\u003cname\u003e/\n3. If worktree doesn't exist:\n - git worktree add \u003cpath\u003e main\n - Set up .git config for identity preservation\n4. cd to worktree (or print path for user to cd)\n5. Preserve BD_ACTOR, GT_ROLE, etc.\n\nEdge cases:\n- Worktree already exists → just enter it\n- Rig doesn't exist → error with helpful message\n- No crew identity → error (must be crew to use this)","status":"closed","priority":1,"issue_type":"task","assignee":"gastown/polecats/dementus","created_at":"2025-12-30T17:40:48.552114-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T18:01:38.977513-08:00","closed_at":"2025-12-30T18:01:38.977513-08:00","close_reason":"Implemented gt worktree command for cross-rig work","dependencies":[{"issue_id":"gt-xheo6.1","depends_on_id":"gt-xheo6","type":"parent-child","created_at":"2025-12-30T17:40:48.552745-08:00","created_by":"gastown/crew/joe"}]}
|
||||
{"id":"gt-xheo6.2","title":"Implement gt worktree list command","description":"List all worktrees owned by current crew member.\n\nUsage: gt worktree list\n\nOutput:\n```\nCross-rig worktrees for gastown/crew/joe:\n\n beads ~/gt/beads/crew/gastown-joe/ (clean)\n mayor ~/gt/mayor/crew/gastown-joe/ (2 uncommitted)\n```\n\nImplementation:\n- Scan all rigs in ~/gt/\n- Check for crew/\u003csource-rig\u003e-\u003cname\u003e/ directories\n- Show git status summary for each","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/capable","created_at":"2025-12-30T17:40:49.847297-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T18:03:18.471865-08:00","closed_at":"2025-12-30T18:03:18.471865-08:00","close_reason":"Implemented gt worktree list command with role detection, cross-rig worktree scanning, and git status display","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":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/toast","created_at":"2025-12-30T17:40:50.857156-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T18:03:14.728163-08:00","closed_at":"2025-12-30T18:03:14.728163-08:00","close_reason":"Implemented gt worktree remove command with safety checks","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.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":"in_progress","priority":2,"issue_type":"task","assignee":"gastown/polecats/valkyrie","created_at":"2025-12-30T17:40:49.847297-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T18:23:45.63978-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-30T18:22:28.603619-08:00","dependencies":[{"issue_id":"gt-xheo6.3","depends_on_id":"gt-xheo6","type":"parent-child","created_at":"2025-12-30T17:40:50.857664-08:00","created_by":"gastown/crew/joe"},{"issue_id":"gt-xheo6.3","depends_on_id":"gt-xheo6.2","type":"blocks","created_at":"2025-12-30T18:22:52.528468-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-xheo6.4","title":"Document cross-rig worktree pattern","description":"Add documentation for crew cross-rig work pattern.\n\nUpdate:\n- CLAUDE.md crew context with worktree usage\n- docs/understanding-gas-town.md with role taxonomy clarification\n- PRIMING.md if needed\n\nKey points to document:\n- Crew vs Dogs distinction (dogs = Deacon's infra, not user work)\n- Identity preservation across rigs\n- When to use worktrees vs dispatch to local workers\n- Directory structure convention","status":"closed","priority":2,"issue_type":"task","assignee":"gastown/polecats/dag","created_at":"2025-12-30T17:40:52.414239-08:00","created_by":"gastown/crew/joe","updated_at":"2025-12-30T18:03:02.738902-08:00","closed_at":"2025-12-30T18:03:02.738902-08:00","close_reason":"Added cross-rig worktree documentation to crew.md.tmpl and created docs/understanding-gas-town.md","dependencies":[{"issue_id":"gt-xheo6.4","depends_on_id":"gt-xheo6","type":"parent-child","created_at":"2025-12-30T17:40:52.414791-08:00","created_by":"gastown/crew/joe"}]}
|
||||
{"id":"gt-xhv1","title":"Digest: mol-deacon-patrol","description":"Patrol 18: OK","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T21:01:57.635721-08:00","updated_at":"2025-12-27T21:26:04.8779-08:00","deleted_at":"2025-12-27T21:26:04.8779-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-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"}
|
||||
@@ -2455,7 +2452,7 @@
|
||||
{"id":"gt-xtvfs","title":"Digest: mol-deacon-patrol","description":"P6 clear","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T14:23:38.312556-08:00","updated_at":"2025-12-27T21:26:01.695912-08:00","deleted_at":"2025-12-27T21:26:01.695912-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-xuhrh","title":"Digest: mol-deacon-patrol","description":"Patrol 15: Nominal","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-24T23:52:13.56346-08:00","updated_at":"2025-12-27T21:26:04.108181-08:00","deleted_at":"2025-12-27T21:26:04.108181-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-xuzo","title":"Add self-check context guidance to role CLAUDE.md files","description":"Each role's CLAUDE.md needs guidance for context self-management:\n\n- After each patrol cycle, self-assess context pressure\n- Heuristics: feeling compressed, lots of tool calls, long session\n- If triggered: initiate handoff before continuing\n\nRoles to update:\n- Mayor (~/gt/CLAUDE.md)\n- Witness template\n- Refinery template \n- Polecat template\n- Crew template\n- Deacon template\n\nThis is the 'inversion of control' - agents decide when to cycle, not external monitoring.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T01:46:14.197485-08:00","updated_at":"2025-12-23T14:27:07.564589-08:00"}
|
||||
{"id":"gt-xv6b6","title":"Merge: dementus-1767140140908","description":"branch: polecat/dementus-1767140140908\ntarget: main\nsource_issue: dementus-1767140140908\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:23:04.501981-08:00","created_by":"gastown/polecats/dementus","updated_at":"2025-12-30T16:23:04.501981-08:00"}
|
||||
{"id":"gt-xv6b6","title":"Merge: dementus-1767140140908","description":"branch: polecat/dementus-1767140140908\ntarget: main\nsource_issue: dementus-1767140140908\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:23:04.501981-08:00","created_by":"gastown/polecats/dementus","updated_at":"2025-12-30T18:23:22.168115-08:00","closed_at":"2025-12-30T18:23:22.168115-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-xv8vu","title":"Digest: mol-deacon-patrol","description":"P8","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-26T14:24:17.018292-08:00","updated_at":"2025-12-27T21:26:01.679568-08:00","deleted_at":"2025-12-27T21:26:01.679568-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-xveby","title":"Digest: mol-deacon-patrol","description":"Cycle 9: quiet","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T13:17:31.34652-08:00","updated_at":"2025-12-28T13:17:31.34652-08:00","closed_at":"2025-12-28T13:17:31.346483-08:00"}
|
||||
{"id":"gt-xvner","title":"Digest: mol-deacon-patrol","description":"Patrol 7: All clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T00:01:49.871554-08:00","updated_at":"2025-12-25T00:01:49.871554-08:00","closed_at":"2025-12-25T00:01:49.871519-08:00"}
|
||||
@@ -2496,7 +2493,7 @@
|
||||
{"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-yp0yu","title":"Digest: mol-deacon-patrol","description":"Patrol 13: quiet","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-28T19:47:37.589573-08:00","updated_at":"2025-12-28T19:47:37.589573-08:00","closed_at":"2025-12-28T19:47:37.589542-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-yqxcq","title":"Merge: furiosa-1767141944421","description":"branch: polecat/furiosa-1767141944421\ntarget: main\nsource_issue: furiosa-1767141944421\nrig: gastown","status":"closed","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-30T18:23:22.139493-08:00","closed_at":"2025-12-30T18:23:22.139493-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"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"}
|
||||
@@ -2561,7 +2558,7 @@
|
||||
{"id":"gt-ztpe8","title":"Day 4.4: Witness calls nuke after MERGED signal","description":"When refinery sends MERGED:\n1. Witness receives MERGED mail\n2. Witness calls gt polecat nuke\n3. Full sandbox cleanup\n4. Agent bead removed\n\nParent: gt-4a2qt","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-27T20:58:06.121096-08:00","created_by":"mayor","updated_at":"2025-12-28T16:12:33.049315-08:00","closed_at":"2025-12-28T16:12:33.049315-08:00","dependencies":[{"issue_id":"gt-ztpe8","depends_on_id":"gt-4a2qt","type":"parent-child","created_at":"2025-12-27T20:58:46.285651-08:00","created_by":"daemon"},{"issue_id":"gt-ztpe8","depends_on_id":"gt-z99nh","type":"blocks","created_at":"2025-12-27T20:59:03.489419-08:00","created_by":"daemon"},{"issue_id":"gt-ztpe8","depends_on_id":"gt-budeb","type":"relates-to","created_at":"2025-12-27T20:59:10.701299-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-zut3","title":"Immediate daemon notification on lifecycle request","description":"When gt handoff sends a lifecycle request to the daemon (via bd mail send deacon/), the daemon only discovers it on its next heartbeat poll (every 5 min). Workers wait unnecessarily for retirement.\n\n## Current Behavior\n1. Worker runs gt handoff\n2. Lifecycle mail sent to deacon/ via beads\n3. Worker blocks waiting for retirement\n4. Daemon heartbeat runs (up to 5 min later)\n5. Daemon processes lifecycle request and kills session\n\n## Expected Behavior\nLifecycle requests should be processed immediately, not on poll interval.\n\n## Proposed Solutions\n\n### Option A: SIGUSR1 Signal (simplest)\n1. Add SIGUSR1 handler in daemon that calls ProcessLifecycleRequests()\n2. gt handoff reads daemon.pid and sends SIGUSR1 after mail send\n\n### Option B: Unix Socket\n1. Daemon listens on ~/gt/daemon/lifecycle.sock\n2. gt handoff connects and sends 'process' message\n\n### Option C: Watchfile + fsnotify\n1. gt handoff touches ~/gt/daemon/lifecycle.trigger\n2. Daemon uses fsnotify to detect and process\n\nRecommend Option A for simplicity.\n\n## Affected Files\n- internal/daemon/daemon.go - add signal handler\n- internal/cmd/handoff.go - send signal after mail","status":"tombstone","priority":1,"issue_type":"feature","created_at":"2025-12-20T20:20:07.616335-08:00","updated_at":"2025-12-27T21:29:53.627184-08:00","deleted_at":"2025-12-27T21:29:53.627184-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"}
|
||||
{"id":"gt-zv7h6","title":"Move polecat pending tracking from Deacon to Witness","description":"Problem: gt deacon pending handles polecat observation at the wrong level. Hierarchy should be Witness→polecats, Deacon→Witnesses.\n\nSolution:\n1. Add gt witness pending - shows pending polecats in this rig\n2. Route POLECAT_STARTED mail to Witness (not just Deacon)\n3. Deacon keeps backup role but does not directly manage polecats\n\nDepends on gt-0yqqw (messaging infrastructure) for proper routing.","status":"tombstone","priority":2,"issue_type":"feature","created_at":"2025-12-25T13:40:04.410664-08:00","updated_at":"2025-12-27T21:29:55.206628-08:00","dependencies":[{"issue_id":"gt-zv7h6","depends_on_id":"gt-0yqqw","type":"blocks","created_at":"2025-12-25T13:40:13.195143-08:00","created_by":"daemon"}],"deleted_at":"2025-12-27T21:29:55.206628-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"feature"}
|
||||
{"id":"gt-zvfnu","title":"Merge: furiosa-1767138824776","description":"branch: polecat/furiosa-1767138824776\ntarget: main\nsource_issue: furiosa-1767138824776\nrig: gastown","status":"open","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:09:55.270207-08:00","created_by":"gastown/polecats/furiosa","updated_at":"2025-12-30T16:09:55.270207-08:00"}
|
||||
{"id":"gt-zvfnu","title":"Merge: furiosa-1767138824776","description":"branch: polecat/furiosa-1767138824776\ntarget: main\nsource_issue: furiosa-1767138824776\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-30T16:09:55.270207-08:00","created_by":"gastown/polecats/furiosa","updated_at":"2025-12-30T18:23:22.179554-08:00","closed_at":"2025-12-30T18:23:22.179554-08:00","close_reason":"Stale MR - cleanup"}
|
||||
{"id":"gt-zvte2","title":"Standardize agent bead naming: prefix-rig-role-name","description":"## The Problem\n\nAgent bead IDs use INCONSISTENT naming patterns:\n\n| Current (WRONG) | Should Be (prefix-rig-role-name) |\n|-----------------|----------------------------------|\n| gt-witness-gastown | gt-gastown-witness |\n| gt-refinery-gastown | gt-gastown-refinery |\n| gt-crew-gastown-max | gt-gastown-crew-max |\n| gt-polecat-gastown-Toast | gt-gastown-polecat-Toast |\n\nTown-level agents (no rig) are OK:\n- gt-mayor ✓\n- gt-deacon ✓\n\n## The Convention\n\n```\nprefix-rig-role-name\n\nWhere:\n- prefix: always 'gt'\n- rig: rig name (absent for town-level agents)\n- role: witness|refinery|crew|polecat|mayor|deacon\n- name: agent name (absent for singleton roles like witness/refinery)\n```\n\nExamples:\n- `gt-gastown-witness` (rig=gastown, role=witness, no name)\n- `gt-gastown-crew-max` (rig=gastown, role=crew, name=max)\n- `gt-beads-polecat-Toast` (rig=beads, role=polecat, name=Toast)\n- `gt-mayor` (no rig, role=mayor, no name)\n\n## Files to Update\n\n### Agent bead ID generation\n- internal/cmd/status.go (lines 316-335)\n- internal/daemon/lifecycle.go (lines 546-579)\n- internal/cmd/crew_add.go\n- internal/polecat/manager.go\n- internal/rig/manager.go\n- internal/doctor/agent_beads_check.go\n- internal/cmd/prime.go\n- internal/session/names.go (session names vs bead IDs)\n\n### Commands to verify\n- gt status - displays agent beads\n- gt doctor - creates missing agent beads\n- gt rig add - creates witness/refinery beads\n- gt crew add - creates crew beads\n- gt sling - routes by agent ID\n- gt mol status - looks up agent by ID\n\n## Migration\n\n1. Update all ID generation code\n2. Create new agent beads with correct IDs\n3. Migrate hook/role slots to new beads\n4. Update any mail addresses\n5. Delete old incorrectly-named beads\n\n## Also from this session\n\nRole bead slot cleanup was done - CreateAgentBead now calls bd slot set.\nBut legacy description parsing still exists in daemon/lifecycle.go.\n\n## Reference\n- ~/gt/docs/agent-as-bead.md\n- Session 2025-12-29: Fixed role bead patterns (gt-crew-role etc)","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-29T14:10:33.310182-08:00","created_by":"gastown/crew/max","updated_at":"2025-12-29T14:56:14.529153-08:00","closed_at":"2025-12-29T14:56:14.529153-08:00","close_reason":"Completed: standardized agent bead naming to prefix-rig-role-name"}
|
||||
{"id":"gt-zwcga","title":"Merge: rictus-1767073382273","description":"attached_args: Code review this merge request\n\nbranch: polecat/rictus-1767073382273\ntarget: main\nsource_issue: rictus-1767073382273\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","assignee":"gastown/polecats/dag","created_at":"2025-12-29T21:57:47.577268-08:00","created_by":"gastown/polecats/rictus","updated_at":"2025-12-29T22:03:22.355518-08:00","closed_at":"2025-12-29T22:03:22.355518-08:00","close_reason":"REJECTED: Fix already on main (81b250ee). Branch is stale - merging would revert 10e79789 (swarm worker tracking fix) and other important commits. No action needed."}
|
||||
{"id":"gt-zwggj","title":"Digest: mol-refinery-patrol","description":"Patrol: Closed 21 merge requests that were already merged to main. All tests passed. Queue now empty.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-30T01:03:03.874755-08:00","updated_at":"2025-12-30T01:03:03.874755-08:00","closed_at":"2025-12-30T01:03:03.87472-08:00","close_reason":"Squashed from 10 wisps","dependencies":[{"issue_id":"gt-zwggj","depends_on_id":"gt-eph-wnr","type":"parent-child","created_at":"2025-12-30T01:03:03.875706-08:00","created_by":"mayor"}]}
|
||||
|
||||
Reference in New Issue
Block a user