bd sync: 2025-12-24 17:40:18
This commit is contained in:
@@ -533,6 +533,7 @@
|
||||
{"id":"gt-h262","title":"bd ready --blockers: prioritize issues that block other work","description":"bd ready should prioritize issues that are blocking other work.\n\n**From VC**: Blocker-first prioritization in GetReadyWork(). ~100 lines.\nAlgorithm: baseline-failure first, then discovered:blocker, then by priority.\n\n**Gas Town implementation**: CLI flag or default behavior:\n```bash\nbd ready --blockers-first # Or make this default\n```\n\nChecks dependency graph. Issues with many dependents surface first.\n\n**Value**: Unblocks parallelism faster. Critical path gets cleared.\n\n**VC lesson**: Without blocker priority, work can starve on discovered issues.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-20T20:30:18.426957-08:00","updated_at":"2025-12-20T20:30:18.426957-08:00","dependencies":[{"issue_id":"gt-h262","depends_on_id":"gt-zhpa","type":"parent-child","created_at":"2025-12-20T20:30:27.664473-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-h28m","title":"Deacon patrol banners: visual feedback on atom transitions","description":"Print large ASCII banners when transitioning between patrol atoms.\n\n## Problem\n\nWhen the deacon progresses through patrol atoms (steps), there is no visual feedback.\nThe operator cannot easily see what the deacon is doing without reading the full output.\n\n## Desired Behavior\n\nPrint banners on step start and completion:\n\n INBOX-CHECK - Checking for lifecycle requests, escalations, timers\n INBOX-CHECK COMPLETE - Processed 3 messages, 0 lifecycle requests\n\n## Benefits\n\n1. Scanability: Operator can glance at tmux and see what is happening\n2. Progress tracking: Easy to see where in the patrol loop we are\n3. Debugging: Clear demarcation between steps for troubleshooting\n\n## Implementation Options\n\n1. In deacon CLAUDE.md: Instruct agent to print banners\n2. gt patrol step start/end: Commands that print banners\n3. bd mol step hooks: Automatically on step transitions\n\n## Related\n\n- gt-id36: Deacon Kernel\n- gt-rana: Patrol System","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-22T03:04:14.290474-08:00","updated_at":"2025-12-22T14:54:55.972256-08:00","closed_at":"2025-12-22T14:54:55.972256-08:00","close_reason":"Implemented in deacon.md.tmpl - startup banner, step banners with emojis, cycle summary banner. Commit 8f47c92."}
|
||||
{"id":"gt-h2dc","title":"request-shutdown","description":"Send shutdown request to Witness.\nWait for termination.\n\nThe polecat is now ready to be cleaned up.\nDo not exit directly - wait for Witness to kill the session.\n\nDepends: generate-summary","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T22:04:43.421327-08:00","updated_at":"2025-12-21T22:05:10.503573-08:00","closed_at":"2025-12-21T22:05:10.503573-08:00","close_reason":"test cleanup","dependencies":[{"issue_id":"gt-h2dc","depends_on_id":"gt-jvr3","type":"parent-child","created_at":"2025-12-21T22:04:43.424974-08:00","created_by":"stevey"}],"wisp":true}
|
||||
{"id":"gt-h5e0","title":"Patrol hygiene: Witness/Refinery/Deacon inbox cleanup","description":"## Summary\nPatrol roles should clean up their inboxes as part of normal operation, not let messages accumulate.\n\n## Witness Patrol Cleanup\n- POLECAT_STARTED: archive after acknowledging\n- POLECAT_DONE: archive after cleanup complete\n- LIFECYCLE requests: archive after processing\n- Keep only: active work, unprocessed requests\n\n## Refinery Patrol Cleanup \n- MR Ready: archive after merge/reject decision\n- Swarm notices: archive after dispatch\n- Keep only: pending MRs in queue\n\n## Deacon Patrol Cleanup\n- Rotate daemon.log when \u003e10MB\n- Prune state.json of dead sessions\n- Archive old daemon logs (gzip, date-suffix)\n\n## Implementation\nEach patrol molecule should have a 'cleanup' phase at end of cycle.\n\n## Related\n- mol-town-shutdown (nuclear cleanup)\n- mol-witness-patrol, mol-refinery-patrol, mol-deacon-patrol","status":"open","priority":1,"issue_type":"feature","created_at":"2025-12-24T17:25:47.860346-08:00","updated_at":"2025-12-24T17:25:47.860346-08:00"}
|
||||
{"id":"gt-h5n","title":"Merge Queue in Beads: Universal chit system for all work","description":"\n\n**Design doc**: docs/merge-queue-design.md","status":"open","priority":0,"issue_type":"epic","created_at":"2025-12-16T23:01:45.782171-08:00","updated_at":"2025-12-17T13:43:43.211867-08:00"}
|
||||
{"id":"gt-h5n.1","title":"MR field parsing: extract structured fields from description","description":"Parse merge-request beads to extract structured fields:\n- branch: source branch name\n- target: target branch (main or integration/xxx)\n- source_issue: the work item being merged\n- worker: who did the work\n- rig: which rig\n- merge_commit: (set on close)\n- close_reason: (set on close)\n\nFields stored in description as YAML block or key: value lines.\nProvide helper functions: ParseMRFields(issue) and SetMRFields(issue, fields).\n\nReference: docs/merge-queue-design.md#merge-request-schema","status":"closed","priority":0,"issue_type":"task","created_at":"2025-12-17T13:47:46.682379-08:00","updated_at":"2025-12-18T18:50:42.591901-08:00","closed_at":"2025-12-18T11:46:18.970805-08:00","dependencies":[{"issue_id":"gt-h5n.1","depends_on_id":"gt-h5n","type":"parent-child","created_at":"2025-12-17T13:47:46.682911-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-h5n.10","title":"Auto-rebase on conflict: optional automatic rebase","description":"Implement automatic rebase as conflict resolution option.\n\nWhen on_conflict=auto_rebase and conflicts detected:\n1. Attempt: git rebase \u003ctarget\u003e \u003csource-branch\u003e\n2. If clean rebase: update source branch, continue merge\n3. If conflicts in rebase: abort, fall back to assign_back\n4. Force push rebased branch (worker's branch)\n\nRequires:\n- Worker branch must be force-pushable\n- Config: on_conflict: auto_rebase\n\nRisks:\n- Force push can confuse workers\n- Complex conflicts still need manual resolution\n\nReference: docs/merge-queue-design.md#conflict-resolution-strategies","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-17T13:52:26.397214-08:00","updated_at":"2025-12-17T13:52:26.397214-08:00","dependencies":[{"issue_id":"gt-h5n.10","depends_on_id":"gt-h5n","type":"parent-child","created_at":"2025-12-17T13:52:26.399236-08:00","created_by":"daemon"},{"issue_id":"gt-h5n.10","depends_on_id":"gt-3x1.4","type":"blocks","created_at":"2025-12-17T13:53:23.158089-08:00","created_by":"daemon"}]}
|
||||
@@ -616,6 +617,7 @@
|
||||
{"id":"gt-ingm.4","title":"Rewrite role templates without step lists","description":"Update:\n- prompts/roles/deacon.md\n- prompts/roles/refinery.md\n- prompts/roles/witness.md\n\nTemplates should describe HOW to run patrols (propulsion principle, bd mol current, bd close --continue) not WHAT the steps are. Steps come from proto beads.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-24T12:38:14.388135-08:00","updated_at":"2025-12-24T12:38:14.388135-08:00","dependencies":[{"issue_id":"gt-ingm.4","depends_on_id":"gt-ingm.2","type":"blocks","created_at":"2025-12-24T12:38:24.049212-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-ingm.5","title":"Standardize bd mol vs gt mol commands","description":"Audit all docs and templates for command usage.\n\nClarify:\n- gt mol = Gas Town wrapper (what does it add?)\n- bd mol = Beads molecule commands (authoritative)\n\nIf gt mol is thin wrapper, consider removing.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-24T12:38:15.50826-08:00","updated_at":"2025-12-24T12:38:15.50826-08:00"}
|
||||
{"id":"gt-ingm.6","title":"Remove spawn - use pour/wisp only (see bd-8y9t)","description":"Remove bd mol spawn entirely from vocabulary.\n\nReplace all references with:\n- bd pour \u003cproto\u003e - Create persistent mol (liquid)\n- bd wisp \u003cproto\u003e - Create ephemeral wisp (vapor)\n\n'spawn' doesn't fit the chemistry metaphor. Two phase transitions (pour/wisp) are clearer than one command with flags.\n\nSee bd-XXX for Beads-side removal.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-24T12:38:16.595926-08:00","updated_at":"2025-12-24T12:41:01.859024-08:00"}
|
||||
{"id":"gt-ioij","title":"mol-town-shutdown: Full Gas Town reset molecule","description":"## Summary\nMolecule for clean town shutdown/restart. Sling it to Mayor when ready to reboot.\n\n## Steps\n1. Clear all inboxes (witness, refinery, crew - all rigs)\n2. Unhook all agents (remove stale molecule attachments)\n3. Kill any active polecats\n4. Stop daemon\n5. Rotate/archive logs\n6. bd sync + git push\n7. Send Mayor handoff (what's next)\n8. Restart daemon fresh\n\n## Invocation\n```\ngt hook mol-town-shutdown # attach it\n# Mayor runs it on next session\n```\n\n## Related\n- Patrol cleanup (continuous) vs shutdown (nuclear)\n- See gt-xxx for patrol hygiene","status":"open","priority":1,"issue_type":"feature","created_at":"2025-12-24T17:25:45.295151-08:00","updated_at":"2025-12-24T17:25:45.295151-08:00"}
|
||||
{"id":"gt-is3e","title":"self-review","description":"Review your own changes. Look for:\n- Bugs and edge cases\n- Style issues\n- Missing error handling\n- Security concerns\n\nFix any issues found before proceeding.\n\nDepends: implement","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T22:04:43.421121-08:00","updated_at":"2025-12-21T22:05:10.502518-08:00","closed_at":"2025-12-21T22:05:10.502518-08:00","close_reason":"test cleanup","dependencies":[{"issue_id":"gt-is3e","depends_on_id":"gt-jvr3","type":"parent-child","created_at":"2025-12-21T22:04:43.423812-08:00","created_by":"stevey"},{"issue_id":"gt-is3e","depends_on_id":"gt-16rv","type":"blocks","created_at":"2025-12-21T22:04:43.424395-08:00","created_by":"stevey"}],"wisp":true}
|
||||
{"id":"gt-isje","title":"Implement mol bond command for dynamic child molecules","description":"Add 'gt mol bond' command that creates child molecules at runtime with variable substitution.\n\nUsage from mol-witness-patrol survey-workers step:\n```bash\nbd mol bond mol-polecat-arm $PATROL_WISP_ID \\\n --ref arm-$polecat \\\n --var polecat_name=$polecat \\\n --var rig=\u003crig\u003e\n```\n\nThis creates child wisps like patrol-x7k.arm-ace with variables expanded.\n\nImplementation:\n1. Add 'bond' subcommand to mol command\n2. Accept: proto ID, parent ID, --ref for child suffix, --var key=value pairs\n3. Call InstantiateMolecule with Context map populated from --var flags\n4. Return created child ID\n\nCritical for Christmas Ornament pattern - without this, Witness cannot spawn per-polecat inspection arms.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-23T21:35:56.192637-08:00","updated_at":"2025-12-23T21:43:44.601758-08:00","closed_at":"2025-12-23T21:43:44.601758-08:00","close_reason":"Implemented mol bond command for dynamic child molecule creation"}
|
||||
{"id":"gt-it0e","title":"Merge: gt-oiv0","description":"branch: polecat/furiosa\ntarget: main\nsource_issue: gt-oiv0\nrig: gastown","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-22T22:09:36.611121-08:00","updated_at":"2025-12-22T22:21:03.024596-08:00","closed_at":"2025-12-22T22:21:03.024596-08:00","close_reason":"Merged to main"}
|
||||
@@ -750,7 +752,7 @@
|
||||
{"id":"gt-nriy","title":"Test: Alpha to Beta","description":"Sibling communication test","status":"open","priority":2,"issue_type":"message","assignee":"gastown-beta","created_at":"2025-12-20T21:44:00.731578-08:00","updated_at":"2025-12-20T21:44:00.731578-08:00","labels":["thread:thread-d94865313b74"],"sender":"Steve Yegge","wisp":true}
|
||||
{"id":"gt-nsyy","title":"Merge: gt-h6eq.7","description":"branch: polecat/dag\ntarget: main\nsource_issue: gt-h6eq.7\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T11:42:39.260767-08:00","updated_at":"2025-12-23T12:22:23.453965-08:00","closed_at":"2025-12-23T12:22:23.453965-08:00","close_reason":"Merged to main in gt-h6eq swarm"}
|
||||
{"id":"gt-nti8","title":"Polecats should not push branches to remote","description":"## Current Behavior\n\nPolecats push their branches to origin (e.g., `polecat/furiosa`), which pollutes the remote with many short-lived branches.\n\n## Desired Behavior\n\nPolecats should only commit locally. The Refinery handles all remote pushes:\n1. Polecat works on local `polecat/\u003cname\u003e` branch\n2. Polecat signals done (state → idle)\n3. Refinery pulls from local polecat branch\n4. Refinery runs tests, merges to main\n5. Refinery pushes main to remote\n6. If PR review needed, Refinery creates the PR\n\n## Benefits\n\n- Clean remote (no branch pollution)\n- Clear responsibility (Refinery is the quality gate)\n- Simpler cleanup (local branches deleted with worktree)\n- Less noise in GitHub UI\n\n## Trade-offs\n\n- If polecat crashes before Refinery merges, code is lost locally\n- But beads issue remains open, another polecat can redo the work\n- This is acceptable for ephemeral workers\n\n## Implementation\n\nIn polecat CLAUDE.md or landing protocol:\n- Remove `git push origin HEAD` from workflow\n- Replace with just `git commit` + signal done\n- Refinery handles the rest","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-21T14:13:48.804954-08:00","updated_at":"2025-12-21T14:13:48.804954-08:00"}
|
||||
{"id":"gt-nvql","title":"max Handoff","description":"attached_molecule: gt-g2p7\nattached_at: 2025-12-24T00:05:39Z","status":"pinned","priority":2,"issue_type":"task","created_at":"2025-12-23T11:47:59.020501-08:00","updated_at":"2025-12-23T16:05:39.696737-08:00"}
|
||||
{"id":"gt-nvql","title":"max Handoff","status":"pinned","priority":2,"issue_type":"task","created_at":"2025-12-23T11:47:59.020501-08:00","updated_at":"2025-12-24T17:38:29.511168-08:00"}
|
||||
{"id":"gt-nz6t","title":"Remove unused style helper functions","description":"internal/style/style.go defines RenderSuccess, RenderWarning, RenderError, and RenderInfo helper functions that are never used. Code uses style.Success.Render() directly instead. Either use the helpers consistently or remove them.","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-21T21:34:43.822193-08:00","updated_at":"2025-12-21T21:50:45.224202-08:00","closed_at":"2025-12-21T21:50:45.224202-08:00","close_reason":"Removed 4 unused style helper functions (RenderSuccess, RenderWarning, RenderError, RenderInfo)"}
|
||||
{"id":"gt-o29j","title":"inspect-workers","description":"Capture output for each working polecat.\n\n```bash\ngt peek \u003crig\u003e/\u003cpolecat\u003e\n```\n\nNeeds: survey-workers","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T01:41:54.506324-08:00","updated_at":"2025-12-23T04:39:39.684381-08:00","closed_at":"2025-12-23T04:39:39.684381-08:00","close_reason":"Parent gt-751s superseded by Christmas Ornament pattern","dependencies":[{"issue_id":"gt-o29j","depends_on_id":"gt-751s","type":"parent-child","created_at":"2025-12-23T01:41:54.56996-08:00","created_by":"stevey"},{"issue_id":"gt-o29j","depends_on_id":"gt-ep7f","type":"blocks","created_at":"2025-12-23T01:41:54.577076-08:00","created_by":"stevey"}]}
|
||||
{"id":"gt-o3is","title":"gt sling pinToHook doesn't set pinned boolean field","description":"## Updated Root Cause Analysis (2025-12-23)\n\nThe issue is **NOT** in gt as originally thought. It's in the beads (bd) codebase.\n\n### What happens:\n1. `bd pin` correctly sets pinned=1 in SQLite\n2. Any subsequent `bd` command (even `bd show`) resets pinned to 0\n3. This happens even with `--no-auto-import` and `--sandbox` flags\n\n### Evidence:\n```bash\n$ bd --no-daemon pin gt-k08o --for=max\n📌 Pinned gt-k08o to max's hook\n\n$ sqlite3 beads.db 'SELECT id, pinned FROM issues WHERE id=\"gt-k08o\"'\ngt-k08o|1 # ← Correct immediately after pin\n\n$ bd --no-daemon --no-auto-import show gt-k08o\n[shows issue without pinned field]\n\n$ sqlite3 beads.db 'SELECT id, pinned FROM issues WHERE id=\"gt-k08o\"' \ngt-k08o|0 # ← WRONG\\! bd show overwrote it\n```\n\n### Where to look:\nThe bug is likely in one of these beads code paths:\n- Some import/hydration running despite --no-auto-import\n- WAL mode not flushing before subsequent reads\n- Multi-repo or redirect handling corrupting pinned field\n\n### Workaround:\nThe handoff bead attachment mechanism (AttachMolecule) works correctly.\nThe pinned field is cosmetic for `bd hook` visibility only.\ngt sling correctly uses AttachMolecule for work assignment.\n\n### Next steps:\nCreate a beads issue to fix this properly in the bd codebase.\nThis is not a gt issue.","notes":"Created beads bug: bd-phtv in ~/gt/beads","status":"closed","priority":1,"issue_type":"bug","assignee":"gastown/furiosa","created_at":"2025-12-23T04:41:12.668958-08:00","updated_at":"2025-12-23T19:31:43.218529-08:00","closed_at":"2025-12-23T19:31:43.218529-08:00","close_reason":"Root-caused to beads codebase, not gt. Created beads bug bd-phtv to track the actual fix."}
|
||||
@@ -831,9 +833,9 @@
|
||||
{"id":"gt-qvn7.4.1","title":"Deacon CLAUDE.md for patrol execution","description":"Update Deacon role CLAUDE.md for patrol execution.\n\n## Key Additions\n\n### Role Definition\n\n```markdown\n## Your Role: DEACON\n\nYou are the Deacon - Gas Towns heartbeat process.\nYou run mol-deacon-patrol continuously.\n\nYour job:\n- Check mail for callbacks\n- Spawn polecats for ready work\n- Monitor rig health (basic)\n- Cycle context when full\n```\n\n### Patrol Execution\n\n```markdown\n## Patrol Execution\n\nYou run mol-deacon-patrol on your hook.\n\nOn each heartbeat from the daemon:\n1. Check your current step: bd hook\n2. Execute that step\n3. Advance: bd mol advance mol-deacon-patrol\n4. If COMPLETE: restart the patrol or cycle context\n\nThe daemon keeps you alive. Your job is to run the patrol.\n```\n\n### Heartbeat Response\n\n```markdown\n## Heartbeat Response\n\nWhen you see \"HEARTBEAT: ...\" from the daemon:\n- If idle: check your hook, start/resume patrol\n- If mid-step: continue working\n- If waiting: the heartbeat reminds you to check state\n\nHeartbeats are your clock tick. Use them.\n```\n\n### Context Cycling\n\n```markdown\n## Context Cycling\n\nWhen context is high (\u003e80%):\n1. Write state to molecule\n2. Run: gt handoff -s \"Deacon cycling\" -m \"Context full\"\n3. Exit cleanly\n4. Daemon respawns you\n5. You wake, prime, read hook, continue\n```\n\n## File\n\ndeacon/CLAUDE.md (in town root)","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:38:35.345899-08:00","updated_at":"2025-12-24T15:38:35.345899-08:00","dependencies":[{"issue_id":"gt-qvn7.4.1","depends_on_id":"gt-qvn7.4","type":"parent-child","created_at":"2025-12-24T15:38:35.347599-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-qvn7.4.2","title":"mol-deacon-patrol minimal formula","description":"Create minimal mol-deacon-patrol formula for tracer bullet.\n\n## Simplified Patrol (v0.1)\n\n```yaml\nformula: mol-deacon-patrol-v01\ndescription: Minimal Deacon patrol for tracer bullet.\nversion: 1\n\nsteps:\n - id: inbox-check\n title: Check inbox\n description: |\n Run: gt mail inbox\n Handle any messages.\n Note any spawn requests or status updates.\n\n - id: spawn-work\n title: Spawn polecat for ready work\n needs: [inbox-check]\n description: |\n Run: bd ready\n If work available and no polecat already working it:\n gt spawn --issue \u003cfirst-ready\u003e --rig gastown\n If no work: proceed to next step.\n\n - id: self-inspect\n title: Assess context and decide loop vs cycle\n needs: [spawn-work]\n description: |\n Evaluate whether to loop (reset) or cycle (handoff).\n \n ## Heuristics\n \n **Favor LOOP (bd mol reset):**\n - Context \u003c 60%\n - No errors in this cycle\n - Patrol completed normally\n \n **Favor CYCLE (gt handoff):**\n - Context \u003e 80%\n - Errors encountered\n - Been running \u003e 1 hour without cycle\n - Model suggests refresh would help\n \n **Action:**\n - If LOOP: bd mol reset mol-deacon-patrol\n - If CYCLE: gt handoff -s \"Deacon cycling\" -m \"Context: X%, cycles: N\"\n```\n\n## Loop via Reset\n\nAfter self-inspect, if staying:\n```bash\nbd mol reset mol-deacon-patrol\n```\n\nThis resets all steps to pending, current_step to inbox-check.\nDeacon immediately continues with fresh patrol cycle.\n\n## Cycle via Handoff\n\nIf context high or refresh needed:\n```bash\ngt handoff -s \"Deacon cycling\" -m \"Context high, cycling for fresh start\"\n```\n\nDaemon respawns fresh Deacon with mol-deacon-patrol on hook.\n\n## Location\n\n.beads/formulas/mol-deacon-patrol-v01.formula.yaml","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:38:48.948745-08:00","updated_at":"2025-12-24T15:55:47.528043-08:00","dependencies":[{"issue_id":"gt-qvn7.4.2","depends_on_id":"gt-qvn7.4","type":"parent-child","created_at":"2025-12-24T15:38:48.950928-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-qvn7.4.3","title":"Deacon initialization with patrol molecule","description":"Ensure Deacon always has mol-deacon-patrol on hook.\n\n## The Problem\n\nWhen Deacon starts fresh, it needs:\n1. mol-deacon-patrol bonded\n2. Molecule pinned to hook\n3. Ready to execute\n\n## Solution: Bootstrap in gt prime\n\nWhen gt prime runs for role=deacon:\n\n1. Check if mol-deacon-patrol exists on hook\n2. If not: bond it and pin it\n3. Then show execution prompt\n\n```go\n// In prime.go for deacon role\nif role == \"deacon\" \u0026\u0026 !hasPatrolOnHook() {\n // Bond the patrol formula\n bondDeaconPatrol()\n // Pin to hook\n pinToHook(\"deacon\", patrolMolID)\n}\n```\n\n## Alternative: Deacon Startup Hook\n\nOr handle in Deacon SessionStart hook:\n- Check hook\n- If empty: gt mol bond mol-deacon-patrol \u0026\u0026 gt mol pin\n\n## Files\n\n- cmd/gt/prime.go (if handling in prime)\n- deacon/hooks/session-start.sh (if handling in hook)","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:39:00.670376-08:00","updated_at":"2025-12-24T15:39:00.670376-08:00","dependencies":[{"issue_id":"gt-qvn7.4.3","depends_on_id":"gt-qvn7.4","type":"parent-child","created_at":"2025-12-24T15:39:00.672391-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-qvn7.5","title":"Phase 5: Integration and Demo","description":"$(cat /tmp/phase5.md)","status":"open","priority":0,"issue_type":"epic","created_at":"2025-12-24T15:35:52.803427-08:00","updated_at":"2025-12-24T15:35:52.803427-08:00","dependencies":[{"issue_id":"gt-qvn7.5","depends_on_id":"gt-qvn7","type":"parent-child","created_at":"2025-12-24T15:35:52.805435-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.5","depends_on_id":"gt-qvn7.3","type":"blocks","created_at":"2025-12-24T15:36:00.648003-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.5","depends_on_id":"gt-qvn7.4","type":"blocks","created_at":"2025-12-24T15:36:00.730985-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-qvn7.5","title":"Phase 5: Integration and Demo","description":"$(cat /tmp/phase5.md)","status":"deferred","priority":0,"issue_type":"epic","created_at":"2025-12-24T15:35:52.803427-08:00","updated_at":"2025-12-24T17:32:51.412133-08:00","dependencies":[{"issue_id":"gt-qvn7.5","depends_on_id":"gt-qvn7","type":"parent-child","created_at":"2025-12-24T15:35:52.805435-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.5","depends_on_id":"gt-qvn7.3","type":"blocks","created_at":"2025-12-24T15:36:00.648003-08:00","created_by":"daemon"},{"issue_id":"gt-qvn7.5","depends_on_id":"gt-qvn7.4","type":"blocks","created_at":"2025-12-24T15:36:00.730985-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-qvn7.5.1","title":"End-to-end integration test","description":"Create and run end-to-end integration test.\n\n## Test Scenario\n\n1. Clean state: no polecats, fresh beads\n2. Create test issue: simple documentation fix\n3. Verify Deacon sees it: bd ready shows issue\n4. Trigger Deacon: send heartbeat or wait\n5. Verify spawn: gt polecats shows new polecat\n6. Watch polecat work: tmux attach\n7. Verify completion: issue closed, MR created\n\n## Test Script\n\n```bash\n#!/bin/bash\n# e2e-test.sh\n\n# 1. Clean state\ngt polecat remove --all\nbd create \"Test: update README typo\" --type=task --priority=1\n\n# 2. Verify ready\nbd ready | grep \"update README\"\n\n# 3. Wait for Deacon or trigger\n# (manual for v0.1)\n\n# 4. Watch\ngt status\ngt polecats gastown\n\n# 5. Wait for completion\n# (manual observation for v0.1)\n\n# 6. Verify\nbd list --status=closed | grep \"update README\"\n```\n\n## Success Criteria\n\n- Issue created and visible in bd ready\n- Polecat spawned and working\n- Issue closed with commit reference\n- No manual intervention (except observation)","status":"open","priority":0,"issue_type":"task","created_at":"2025-12-24T15:39:20.642596-08:00","updated_at":"2025-12-24T15:39:20.642596-08:00","dependencies":[{"issue_id":"gt-qvn7.5.1","depends_on_id":"gt-qvn7.5","type":"parent-child","created_at":"2025-12-24T15:39:20.64439-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-qvn7.5.2","title":"Documentation humility pass","description":"Update documentation with humble framing.\n\n## Changes Needed\n\n### README.md\n\n- Add \"Experimental\" or \"Alpha\" badge\n- Clarify current state vs future vision\n- List what works vs what is planned\n- Include honest limitations section\n\n### Architecture docs\n\n- Mark autonomous features as \"planned\"\n- Distinguish implemented from designed\n- Add \"Current Status\" sections\n\n### CLAUDE.md files\n\n- Remove claims about autonomous operation (where not true)\n- Add \"v0.1\" qualifiers to features\n- Be honest about manual steps required\n\n## Tone\n\nNOT: \"Gas Town automatically manages agent lifecycles\"\nYES: \"Gas Town provides infrastructure for agent lifecycle management.\n v0.1 requires some manual coordination.\"\n\nNOT: \"The Refinery processes merges autonomously\"\nYES: \"The Refinery is designed for autonomous merge processing.\n v0.1 demonstrates the pattern with manual triggering.\"\n\n## Files to Review\n\n- README.md\n- docs/architecture.md\n- docs/quickstart.md (if exists)\n- CLAUDE.md files for all roles","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-24T15:39:32.215796-08:00","updated_at":"2025-12-24T15:39:32.215796-08:00","dependencies":[{"issue_id":"gt-qvn7.5.2","depends_on_id":"gt-qvn7.5","type":"parent-child","created_at":"2025-12-24T15:39:32.217795-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-qvn7.5.2","title":"Documentation humility pass","description":"Update documentation with humble framing.\n\n## Changes Needed\n\n### README.md\n\n- Add \"Experimental\" or \"Alpha\" badge\n- Clarify current state vs future vision\n- List what works vs what is planned\n- Include honest limitations section\n\n### Architecture docs\n\n- Mark autonomous features as \"planned\"\n- Distinguish implemented from designed\n- Add \"Current Status\" sections\n\n### CLAUDE.md files\n\n- Remove claims about autonomous operation (where not true)\n- Add \"v0.1\" qualifiers to features\n- Be honest about manual steps required\n\n## Tone\n\nNOT: \"Gas Town automatically manages agent lifecycles\"\nYES: \"Gas Town provides infrastructure for agent lifecycle management.\n v0.1 requires some manual coordination.\"\n\nNOT: \"The Refinery processes merges autonomously\"\nYES: \"The Refinery is designed for autonomous merge processing.\n v0.1 demonstrates the pattern with manual triggering.\"\n\n## Files to Review\n\n- README.md\n- docs/architecture.md\n- docs/quickstart.md (if exists)\n- CLAUDE.md files for all roles","status":"in_progress","priority":1,"issue_type":"task","created_at":"2025-12-24T15:39:32.215796-08:00","updated_at":"2025-12-24T17:32:52.520522-08:00"}
|
||||
{"id":"gt-qvn7.5.3","title":"Demo recording","description":"Record a terminal demo of the tracer bullet.\n\n## Recording Tool\n\nUse asciinema:\n```bash\nbrew install asciinema\nasciinema rec gastown-demo.cast\n```\n\n## Demo Script\n\n1. Show gt status (the town)\n2. Show bd ready (available work)\n3. Show Deacon running (tmux session)\n4. Trigger spawn (create issue, Deacon picks it up)\n5. Show polecat working (tmux attach briefly)\n6. Show completion (bd list, issue closed)\n7. Show MR created (bd list --type=merge-request)\n\n## Tips\n\n- Practice run first\n- Keep it under 3 minutes\n- Add commentary (terminal echo or voiceover)\n- Show the key moments clearly\n\n## Output\n\n- gastown-demo.cast (asciinema file)\n- gastown-demo.gif (optional, for embedding)\n- YouTube/Vimeo upload (optional)","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-24T15:39:43.630035-08:00","updated_at":"2025-12-24T15:39:43.630035-08:00","dependencies":[{"issue_id":"gt-qvn7.5.3","depends_on_id":"gt-qvn7.5","type":"parent-child","created_at":"2025-12-24T15:39:43.632383-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-qwin","title":"Refinery and witness rigs should redirect .beads to mayor rig","description":"The refinery's rig clone and witness rig clones should have their .beads directories redirect to the mayor's rig beads (like polecats do).\n\nCurrent state:\n- Polecats have .beads symlinked/redirected to mayor rig beads\n- Refinery and witness have their own .beads (or none)\n\nDesired state:\n- refinery/rig/.beads -\u003e mayor/rig/.beads (or equivalent redirect)\n- witness/rig/.beads -\u003e mayor/rig/.beads (or equivalent redirect)\n\nThis ensures all rig agents share the same issue tracking state.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-22T14:27:37.703044-08:00","updated_at":"2025-12-22T14:27:37.703044-08:00"}
|
||||
{"id":"gt-qwyu","title":"Test issue for spawn molecule","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T21:58:43.699993-08:00","updated_at":"2025-12-21T21:59:10.936251-08:00","closed_at":"2025-12-21T21:59:10.936251-08:00","close_reason":"test cleanup"}
|
||||
@@ -980,7 +982,7 @@
|
||||
{"id":"gt-w3bu","title":"gt spawn: Enter key needs debounce delay after paste","description":"## Problem\n\nWhen spawning polecats via `gt spawn`, instructions are pasted into tmux but workers often sit idle at prompt because the Enter key arrives before the paste is fully processed.\n\n## Observed Behavior\n\n- Instructions pasted via tmux send-keys\n- Enter key sent immediately after\n- Worker session shows prompt with no input (paste not submitted)\n- Requires manual intervention to nudge workers\n\n## Expected Behavior\n\n- Paste completes fully\n- Enter key submits the pasted instructions\n- Worker begins executing immediately\n\n## Root Cause\n\nLikely a race condition between paste buffer processing and keypress handling. Need either:\n1. Debounce delay before sending Enter\n2. Longer delay (Tmax) to ensure paste completes\n3. Alternative submission mechanism\n\n## Impact\n\n- Swarm of 10 workers had multiple stalls at startup\n- Required manual tmux send-keys to unstick them\n- Defeats purpose of automated spawning\n\n## References\n\n- Observed during Mad Max swarm (Dec 18, 2025)\n- Affects gt spawn command in internal/cmd/spawn.go","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-18T21:06:50.734123-08:00","updated_at":"2025-12-18T21:08:22.400899-08:00","closed_at":"2025-12-18T21:08:22.400899-08:00"}
|
||||
{"id":"gt-w5dj","title":"Merge: gt-unrd","description":"branch: polecat/Ace\ntarget: main\nsource_issue: gt-unrd\nrig: gastown","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-19T15:42:06.600633-08:00","updated_at":"2025-12-19T18:26:14.106188-08:00","closed_at":"2025-12-19T17:48:09.590076-08:00"}
|
||||
{"id":"gt-w775","title":"MR: gt-svi.1 (polecat/Furiosa)","description":"branch: polecat/Furiosa\ntarget: main\nsource_issue: gt-svi.1","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-18T20:21:40.921429-08:00","updated_at":"2025-12-18T20:21:54.163532-08:00","closed_at":"2025-12-18T20:21:54.163532-08:00"}
|
||||
{"id":"gt-w98d","title":"witness Handoff","description":"attached_molecule: gt-87jz\nattached_at: 2025-12-24T00:23:42Z","status":"pinned","priority":2,"issue_type":"task","created_at":"2025-12-23T16:23:42.292529-08:00","updated_at":"2025-12-23T16:23:42.603527-08:00"}
|
||||
{"id":"gt-w98d","title":"witness Handoff","status":"pinned","priority":2,"issue_type":"task","created_at":"2025-12-23T16:23:42.292529-08:00","updated_at":"2025-12-24T17:38:29.438001-08:00"}
|
||||
{"id":"gt-w9o","title":"/restart: Personal slash command for in-place agent restart","description":"Create ~/.claude/commands/restart.md that restarts current Gas Town agent in place.\n\n## Detection\n- Read tmux session name: gt-mayor, gt-witness-*, gt-refinery-*, gt-polecat-*\n- Fallback: check GT_ROLE env var\n\n## Behavior by role\n- mayor: gt mayor restart (sends Ctrl-C, loop respawns)\n- witness: gt witness restart\n- refinery: gt refinery restart \n- polecat: gt polecat restart (or witness-mediated)\n\n## Command format\nUses backticks for inline bash to detect context, then instructs Claude to run appropriate restart.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-18T18:32:30.043125-08:00","updated_at":"2025-12-18T18:43:17.182303-08:00","closed_at":"2025-12-18T18:43:17.182303-08:00"}
|
||||
{"id":"gt-wav5","title":"Merge: gt-a95","description":"branch: polecat/Ace\ntarget: main\nsource_issue: gt-a95\nrig: gastown","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-20T21:23:08.375434-08:00","updated_at":"2025-12-20T21:23:08.454391-08:00","closed_at":"2025-12-20T21:23:08.454391-08:00","close_reason":"Historical import"}
|
||||
{"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":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T00:10:43.433441-08:00","updated_at":"2025-12-24T00:10:43.600601-08:00","closed_at":"2025-12-24T00:10:43.600601-08:00"}
|
||||
|
||||
Reference in New Issue
Block a user