bd sync: 2025-12-25 20:56:59
This commit is contained in:
@@ -1036,6 +1036,10 @@
|
||||
{"id":"gt-m0fx.1","title":"Polecat Arm (arm-toast)","description":"Single polecat inspection and action cycle.\n\nThis molecule is bonded dynamically by mol-witness-patrol's survey-workers step.\nEach polecat being monitored gets one arm that runs in parallel with other arms.\n\n## Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| polecat_name | Yes | Name of the polecat to inspect |\n| rig | Yes | Rig containing the polecat |\n\n## Step: capture\nCapture recent tmux output for toast.\n\n```bash\ntmux capture-pane -t gt-gastown-toast -p | tail -50\n```\n\nRecord:\n- Last activity timestamp (when was last tool call?)\n- Visible errors or stack traces\n- Completion indicators (\"Done\", \"Finished\", etc.)\n\n## Step: assess\nCategorize polecat state based on captured output.\n\nStates:\n- **working**: Recent tool calls, active processing\n- **idle**: At prompt, no recent activity\n- **error**: Showing errors or stack traces\n- **requesting_shutdown**: Sent LIFECYCLE/Shutdown mail\n- **done**: Showing completion indicators\n\nCalculate: minutes since last activity.\nNeeds: capture\n\n## Step: load-history\nRead nudge history for toast from patrol state.\n\n```\nnudge_count = state.nudges[toast].count\nlast_nudge_time = state.nudges[toast].timestamp\n```\n\nThis data was loaded by the parent patrol's load-state step and passed\nto the arm via the bonding context.\nNeeds: assess\n\n## Step: decide\nApply the nudge matrix to determine action for toast.\n\n| State | Idle Time | Nudge Count | Action |\n|-------|-----------|-------------|--------|\n| working | any | any | none |\n| idle | \u003c10min | any | none |\n| idle | 10-15min | 0 | nudge-1 (gentle) |\n| idle | 15-20min | 1 | nudge-2 (direct) |\n| idle | 20+min | 2 | nudge-3 (final) |\n| idle | any | 3 | escalate |\n| error | any | any | assess-severity |\n| requesting_shutdown | any | any | pre-kill-verify |\n| done | any | any | pre-kill-verify |\n\nNudge text:\n1. \"How's progress? Need any help?\"\n2. \"Please wrap up soon. What's blocking you?\"\n3. \"Final check. Will escalate in 5 min if no response.\"\n\nRecord decision and rationale.\nNeeds: load-history\n\n## Step: execute\nTake the decided action for toast.\n\n**nudge-N**:\n```bash\ntmux send-keys -t gt-gastown-toast \"{{nudge_text}}\" Enter\n```\n\n**pre-kill-verify**:\n```bash\ncd polecats/toast\ngit status # Must be clean\ngit log origin/main..HEAD # Check for unpushed\nbd show \u003cassigned-issue\u003e # Verify closed/deferred\n```\nIf clean: kill session, remove worktree, delete branch\nIf dirty: record failure, retry next cycle\n\n**escalate**:\n```bash\ngt mail send mayor/ -s \"Escalation: toast stuck\" -m \"...\"\n```\n\n**none**: No action needed.\n\nRecord: action taken, result, updated nudge count.\nNeeds: decide\n\n## Output\n\nThe arm completes with:\n- action_taken: none | nudge-1 | nudge-2 | nudge-3 | killed | escalated\n- result: success | failed | pending\n- updated_state: New nudge count and timestamp for toast\n\nThis data feeds back to the parent patrol's aggregate step.\n---\nbonded_from: mol-polecat-arm\nbonded_to: gt-m0fx\nbonded_ref: arm-toast\nbonded_at: 2025-12-23T10:00:00Z\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T23:28:07.781991-08:00","updated_at":"2025-12-23T23:28:07.95513-08:00","closed_at":"2025-12-23T23:28:07.95513-08:00","close_reason":"Closed","dependencies":[{"issue_id":"gt-m0fx.1","depends_on_id":"gt-m0fx","type":"parent-child","created_at":"2025-12-23T23:28:07.782459-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-m3hh","title":"Merge: gt-7hor","description":"branch: polecat/slit\ntarget: main\nsource_issue: gt-7hor\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-22T12:32:43.108463-08:00","updated_at":"2025-12-22T16:01:13.501585-08:00","closed_at":"2025-12-22T16:01:13.501585-08:00","close_reason":"Merged to main"}
|
||||
{"id":"gt-m5w4g","title":"Agent Communication Protocol","description":"Structured mail between agents for coordination.\n\n## Problem\nAgents communicate via freeform mail. This works but lacks parseable structure for automated handling.\n\n## Protocols\n\n### Witness to Refinery\n- POLECAT_READY: worker X completed, branch ready for merge\n- REWORK_COMPLETE: worker Y finished requested rework\n\n### Refinery to Witness \n- MERGE_SUCCESS: worker X merged, can be cleaned up\n- MERGE_FAILED: worker X needs rework (reason attached)\n- REWORK_REQUEST: please have worker X rebase on current main\n\n### Polecat to Witness\n- WORK_COMPLETE: done with assigned issue\n- NEED_HELP: stuck, requesting intervention\n\n### Any to Deacon\n- ESCALATION: problem requiring Mayor attention\n\n## Mail Format\nSubject: [PROTOCOL_TYPE] brief description\nBody: Structured YAML or JSON payload\n\n## Success Criteria\n- Patrol steps parse protocol messages automatically\n- Handlers exist for each protocol type\n- Integration test: polecat completes -\u003e witness notifies -\u003e refinery merges -\u003e witness cleans up\n\nConsolidates gt-0qki.","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-25T20:46:35.538744-08:00","updated_at":"2025-12-25T20:46:35.538744-08:00","dependencies":[{"issue_id":"gt-m5w4g","depends_on_id":"gt-psj76","type":"blocks","created_at":"2025-12-25T20:47:18.478538-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-m5w4g.1","title":"Protocol message specification","description":"Define YAML format for protocol messages. Subject: [PROTOCOL_TYPE] brief. Body: structured payload. Document all protocol types: POLECAT_READY, MERGE_SUCCESS, MERGE_FAILED, REWORK_REQUEST, WORK_COMPLETE, NEED_HELP, ESCALATION.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T20:56:27.493974-08:00","updated_at":"2025-12-25T20:56:27.493974-08:00","dependencies":[{"issue_id":"gt-m5w4g.1","depends_on_id":"gt-m5w4g","type":"parent-child","created_at":"2025-12-25T20:56:27.494443-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-m5w4g.2","title":"Witness-Refinery protocol handlers","description":"Implement handlers for: POLECAT_READY (witness→refinery: worker done, branch ready), MERGE_SUCCESS (refinery→witness: merged, cleanup ok), MERGE_FAILED (refinery→witness: needs rework), REWORK_REQUEST (refinery→witness: rebase needed).","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T20:56:28.618916-08:00","updated_at":"2025-12-25T20:56:28.618916-08:00","dependencies":[{"issue_id":"gt-m5w4g.2","depends_on_id":"gt-m5w4g","type":"parent-child","created_at":"2025-12-25T20:56:28.620996-08:00","created_by":"daemon"},{"issue_id":"gt-m5w4g.2","depends_on_id":"gt-m5w4g.1","type":"blocks","created_at":"2025-12-25T20:56:50.702111-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-m5w4g.3","title":"Polecat-Witness protocol handlers","description":"Implement handlers for: WORK_COMPLETE (polecat→witness: done with issue), NEED_HELP (polecat→witness: stuck, requesting intervention). Witness patrol steps should parse and act on these.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T20:56:29.752982-08:00","updated_at":"2025-12-25T20:56:29.752982-08:00","dependencies":[{"issue_id":"gt-m5w4g.3","depends_on_id":"gt-m5w4g","type":"parent-child","created_at":"2025-12-25T20:56:29.75638-08:00","created_by":"daemon"},{"issue_id":"gt-m5w4g.3","depends_on_id":"gt-m5w4g.1","type":"blocks","created_at":"2025-12-25T20:56:50.797519-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-m5w4g.4","title":"Agent protocol integration test","description":"End-to-end test: polecat completes work → sends WORK_COMPLETE → witness receives and sends POLECAT_READY → refinery merges → sends MERGE_SUCCESS → witness cleans up polecat. All via structured protocol messages.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T20:56:31.204129-08:00","updated_at":"2025-12-25T20:56:31.204129-08:00","dependencies":[{"issue_id":"gt-m5w4g.4","depends_on_id":"gt-m5w4g","type":"parent-child","created_at":"2025-12-25T20:56:31.207559-08:00","created_by":"daemon"},{"issue_id":"gt-m5w4g.4","depends_on_id":"gt-m5w4g.2","type":"blocks","created_at":"2025-12-25T20:56:50.900223-08:00","created_by":"daemon"},{"issue_id":"gt-m5w4g.4","depends_on_id":"gt-m5w4g.3","type":"blocks","created_at":"2025-12-25T20:56:50.995873-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-m72d","title":"Digest: mol-deacon-patrol @ 2025-12-24 19:21","description":"Patrol 4: quiet","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T19:21:43.191633-08:00","updated_at":"2025-12-24T19:21:43.191633-08:00","closed_at":"2025-12-24T19:21:43.191566-08:00","close_reason":"Squashed from wisp gt-7ip (9 issues)"}
|
||||
{"id":"gt-m8k03","title":"Digest: mol-deacon-patrol","description":"Patrol 19","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T20:53:32.127382-08:00","updated_at":"2025-12-25T20:53:32.127382-08:00","closed_at":"2025-12-25T20:53:32.127336-08:00","close_reason":"Squashed from 8 wisps","dependencies":[{"issue_id":"gt-m8k03","depends_on_id":"gt-wisp-i6i","type":"parent-child","created_at":"2025-12-25T20:53:32.128158-08:00","created_by":"deacon"}]}
|
||||
{"id":"gt-m9uq3","title":"Digest: mol-deacon-patrol","description":"Patrol 12: All green","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:33:56.421573-08:00","updated_at":"2025-12-25T19:33:56.421573-08:00","closed_at":"2025-12-25T19:33:56.421523-08:00","close_reason":"Squashed from 8 wisps","dependencies":[{"issue_id":"gt-m9uq3","depends_on_id":"gt-wisp-ovv","type":"parent-child","created_at":"2025-12-25T19:33:56.422427-08:00","created_by":"deacon"}]}
|
||||
@@ -1067,7 +1071,6 @@
|
||||
{"id":"gt-mol-g8x","title":"Request shutdown","description":"Send shutdown request to Witness.\nWait for termination.\n\nThe polecat is now ready to be cleaned up.\nDo not exit directly - wait for Witness to kill the session.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:48.599526-08:00","updated_at":"2025-12-25T19:56:53.314668-08:00","closed_at":"2025-12-25T19:56:53.314668-08:00","close_reason":"Submitted to merge queue, witness notified","dependencies":[{"issue_id":"gt-mol-g8x","depends_on_id":"gt-mol-3g1","type":"parent-child","created_at":"2025-12-25T19:47:48.643529-08:00","created_by":"mayor"},{"issue_id":"gt-mol-g8x","depends_on_id":"gt-mol-jpg","type":"blocks","created_at":"2025-12-25T19:47:48.657908-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-mol-i2o","title":"Self-review","description":"Review your own changes. Look for:\n- Bugs and edge cases\n- Style issues\n- Missing error handling\n- Security concerns\n\nFix any issues found before proceeding.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T18:45:53.650511-08:00","updated_at":"2025-12-25T19:51:45.253951-08:00","closed_at":"2025-12-25T19:51:45.253951-08:00","close_reason":"Parent orphaned","dependencies":[{"issue_id":"gt-mol-i2o","depends_on_id":"gt-mol-aux","type":"parent-child","created_at":"2025-12-25T18:45:53.710925-08:00","created_by":"mayor"},{"issue_id":"gt-mol-i2o","depends_on_id":"gt-mol-07k","type":"blocks","created_at":"2025-12-25T18:45:53.723219-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-mol-jpg","title":"Self-review","description":"Review your own changes. Look for:\n- Bugs and edge cases\n- Style issues\n- Missing error handling\n- Security concerns\n\nFix any issues found before proceeding.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:48.59976-08:00","updated_at":"2025-12-25T19:55:41.029494-08:00","closed_at":"2025-12-25T19:55:41.029494-08:00","close_reason":"Reviewed diff - clean renaming, no bugs or issues","dependencies":[{"issue_id":"gt-mol-jpg","depends_on_id":"gt-mol-3g1","type":"parent-child","created_at":"2025-12-25T19:47:48.672365-08:00","created_by":"mayor"},{"issue_id":"gt-mol-jpg","depends_on_id":"gt-mol-uau","type":"blocks","created_at":"2025-12-25T19:47:48.687264-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-mol-qf3","title":"Request shutdown","description":"Send shutdown request to Witness.\nWait for termination.\n\nThe polecat is now ready to be cleaned up.\nDo not exit directly - wait for Witness to kill the session.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:36.237956-08:00","updated_at":"2025-12-25T19:54:35.420318-08:00","closed_at":"2025-12-25T19:54:35.420318-08:00","dependencies":[{"issue_id":"gt-mol-qf3","depends_on_id":"gt-mol-c68","type":"parent-child","created_at":"2025-12-25T19:47:36.279069-08:00","created_by":"mayor"},{"issue_id":"gt-mol-qf3","depends_on_id":"gt-mol-cfu","type":"blocks","created_at":"2025-12-25T19:47:36.292697-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-mol-ttt","title":"Self-review","description":"Review your own changes. Look for:\n- Bugs and edge cases\n- Style issues\n- Missing error handling\n- Security concerns\n\nFix any issues found before proceeding.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:10.031815-08:00","updated_at":"2025-12-25T19:54:25.969063-08:00","closed_at":"2025-12-25T19:54:25.969063-08:00","close_reason":"wrong-rig: gt-8tmz.34 requires beads polecat - code is in ~/gt/beads/mayor/rig/internal/formula/, not gastown","dependencies":[{"issue_id":"gt-mol-ttt","depends_on_id":"gt-mol-8fn","type":"parent-child","created_at":"2025-12-25T19:47:10.099092-08:00","created_by":"mayor"},{"issue_id":"gt-mol-ttt","depends_on_id":"gt-mol-3f0","type":"blocks","created_at":"2025-12-25T19:47:10.112469-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-mol-uau","title":"Implement","description":"Implement the solution for gt-8tmz.10. Follow codebase conventions.\nFile discovered work as new issues with bd create.\n\nMake regular commits with clear messages.\nKeep changes focused on the assigned issue.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:48.599004-08:00","updated_at":"2025-12-25T19:55:16.452872-08:00","closed_at":"2025-12-25T19:55:16.452872-08:00","close_reason":"Renamed all engineer-in-box references to shiny across 6 files","dependencies":[{"issue_id":"gt-mol-uau","depends_on_id":"gt-mol-3g1","type":"parent-child","created_at":"2025-12-25T19:47:48.600105-08:00","created_by":"mayor"},{"issue_id":"gt-mol-uau","depends_on_id":"gt-mol-a8b","type":"blocks","created_at":"2025-12-25T19:47:48.614361-08:00","created_by":"mayor"}]}
|
||||
{"id":"gt-mol-xl8","title":"Load context","description":"Run gt prime and bd prime. Verify issue assignment.\nCheck inbox for any relevant messages.\n\nRead the assigned issue (gt-8tmz.34) and understand the requirements.\nIdentify any blockers or missing information.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:47:10.031297-08:00","updated_at":"2025-12-25T19:54:25.93544-08:00","closed_at":"2025-12-25T19:54:25.93544-08:00","close_reason":"wrong-rig: gt-8tmz.34 requires beads polecat - code is in ~/gt/beads/mayor/rig/internal/formula/, not gastown","dependencies":[{"issue_id":"gt-mol-xl8","depends_on_id":"gt-mol-8fn","type":"parent-child","created_at":"2025-12-25T19:47:10.05873-08:00","created_by":"mayor"}]}
|
||||
@@ -1169,6 +1172,10 @@
|
||||
{"id":"gt-ox9","title":"Test from Mayor","description":"This is a test message via GGT mail","status":"tombstone","priority":2,"issue_type":"message","created_at":"2025-12-16T22:04:31.483843-08:00","updated_at":"2025-12-25T01:30:41.67682-08:00","deleted_at":"2025-12-25T01:30:41.67682-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"message"}
|
||||
{"id":"gt-p2l2","title":"gt doctor: add Claude settings.json validation","description":"Add a new doctor check to validate Claude Code settings in worker directories:\n\n**Check for:**\n1. .claude/settings.json exists in polecats/*, crew/*, witness/rig, refinery/rig\n2. SessionStart hook has 'gt prime' command\n3. Autonomous roles (polecat, witness, refinery) have 'gt mail check --inject' in SessionStart\n4. Interactive roles (crew, mayor) have mail check in UserPromptSubmit only\n\n**Auto-fix capability:**\nUse internal/claude.EnsureSettingsForRole() to create missing settings files.\n\nContext: The spawn priming race condition fix (gt-6957) added embedded settings templates. Doctor should validate these are in place.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-22T17:59:02.326127-08:00","updated_at":"2025-12-22T17:59:02.326127-08:00"}
|
||||
{"id":"gt-p3v5n","title":"Witness Arm Bonding","description":"Witness manages polecats using Christmas Ornament pattern.\n\n## Problem\nWitness needs to monitor and intervene on multiple polecats. Current approach lacks per-worker tracking and the dynamic bonding pattern.\n\n## Christmas Ornament Pattern\n * mol-witness-patrol (trunk)\n /|\\\n +-----+ | +-----+\n o o o mol-polecat-arm (dynamic)\n ace nux toast\n\nEach polecat gets its own arm molecule bonded to the patrol. Fanout gate waits for all arms to complete.\n\n## Requirements\n- mol-polecat-arm bonded per active worker (bd mol bond)\n- Fanout gate aggregates arm results (waits-for: all-children)\n- State persists across witness sessions\n- Spawn/nudge/kill operations work from arm context\n\n## Key Commands\n- bd mol bond mol-polecat-arm \u003cpatrol-id\u003e --var worker=ace\n- bd gate create --await all-children\n\n## Success Criteria\n- Witness patrols with 3+ polecats work correctly\n- Arms capture and assess each worker independently\n- Aggregation step waits for all arms before proceeding","status":"open","priority":1,"issue_type":"epic","created_at":"2025-12-25T20:46:22.29819-08:00","updated_at":"2025-12-25T20:46:22.29819-08:00","dependencies":[{"issue_id":"gt-p3v5n","depends_on_id":"gt-psj76","type":"blocks","created_at":"2025-12-25T20:47:17.026491-08:00","created_by":"daemon"},{"issue_id":"gt-p3v5n","depends_on_id":"gt-twjr5","type":"blocks","created_at":"2025-12-25T20:55:05.133165-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-p3v5n.1","title":"mol-polecat-arm formula","description":"Define mol-polecat-arm.formula.yaml with steps: capture (gt peek worker), assess (analyze output for stalls/errors), intervene (gt nudge or escalate). This is the per-worker arm in Christmas Ornament pattern.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-25T20:56:07.924265-08:00","updated_at":"2025-12-25T20:56:07.924265-08:00","dependencies":[{"issue_id":"gt-p3v5n.1","depends_on_id":"gt-p3v5n","type":"parent-child","created_at":"2025-12-25T20:56:07.924724-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-p3v5n.2","title":"Dynamic arm bonding in witness patrol","description":"Witness survey step uses bd mol bond to attach mol-polecat-arm for each active worker. Variables: worker name, rig. Arms become children of the patrol molecule. Requires on_complete/for_each runtime support.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-25T20:56:09.24636-08:00","updated_at":"2025-12-25T20:56:09.24636-08:00","dependencies":[{"issue_id":"gt-p3v5n.2","depends_on_id":"gt-p3v5n","type":"parent-child","created_at":"2025-12-25T20:56:09.246818-08:00","created_by":"daemon"},{"issue_id":"gt-p3v5n.2","depends_on_id":"gt-p3v5n.1","type":"blocks","created_at":"2025-12-25T20:56:49.215515-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-p3v5n.3","title":"Fanout gate runtime evaluation","description":"Aggregate step uses waits-for: all-children. Deacon must evaluate this gate by checking if all dynamically-bonded arm children are complete. If no children bonded, gate passes immediately.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-25T20:56:10.4868-08:00","updated_at":"2025-12-25T20:56:10.4868-08:00","dependencies":[{"issue_id":"gt-p3v5n.3","depends_on_id":"gt-p3v5n","type":"parent-child","created_at":"2025-12-25T20:56:10.488846-08:00","created_by":"daemon"},{"issue_id":"gt-p3v5n.3","depends_on_id":"gt-p3v5n.2","type":"blocks","created_at":"2025-12-25T20:56:49.311282-08:00","created_by":"daemon"},{"issue_id":"gt-p3v5n.3","depends_on_id":"gt-twjr5.1","type":"blocks","created_at":"2025-12-25T20:56:59.237508-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-p3v5n.4","title":"Witness arm bonding integration test","description":"Test witness with 3 polecats. Verify: arms bonded per worker, each arm captures/assesses independently, aggregation waits for all arms, witness proceeds after aggregation.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T20:56:12.056218-08:00","updated_at":"2025-12-25T20:56:12.056218-08:00","dependencies":[{"issue_id":"gt-p3v5n.4","depends_on_id":"gt-p3v5n","type":"parent-child","created_at":"2025-12-25T20:56:12.056676-08:00","created_by":"daemon"},{"issue_id":"gt-p3v5n.4","depends_on_id":"gt-p3v5n.3","type":"blocks","created_at":"2025-12-25T20:56:49.406137-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-p9zh","title":"gt doctor: detect orphaned code on beads-sync branch","description":"After merging beads-sync to main, some code changes can be lost if the merge conflict resolution drops files.\n\nAdd a doctor check that runs:\n git diff main..beads-sync -- '*.go' '*.md'\n\nIf there are differences in code files (not just .beads/), warn about potentially orphaned work.\n\nToday's incident: Merge 96c773f lost mailbox.go and router.go changes from 5791752, requiring re-implementation.\n\nAcceptance:\n- gt doctor warns if beads-sync has unmerged code changes\n- Excludes .beads/ directory (expected to differ)\n- Shows file list of orphaned changes","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-20T22:01:56.794648-08:00","updated_at":"2025-12-20T22:19:59.777921-08:00","closed_at":"2025-12-20T22:19:59.777921-08:00","close_reason":"Implemented both checks: persistent-role-branches and beads-sync-orphans. Also added ensureMainBranch() to crew attach."}
|
||||
{"id":"gt-pbr3","title":"Add godoc comments to exported functions","description":"Several exported functions lack godoc comments. While not critical, adding documentation would improve code maintainability. Focus on:\n\n- Public API functions in each package\n- Exported types and their methods\n- Functions that have non-obvious behavior\n\nCan be addressed incrementally as code is touched.","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-21T21:35:26.732436-08:00","updated_at":"2025-12-21T22:20:01.785697-08:00","closed_at":"2025-12-21T22:20:01.785697-08:00","close_reason":"Deferred to post-launch. Documentation comments are nice-to-have for launch. Core functionality is documented; additional godoc can be added incrementally."}
|
||||
{"id":"gt-pc2p0","title":"Digest: mol-deacon-patrol","description":"Patrol 1: All agents healthy, no messages, no orphans","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T00:28:10.81431-08:00","updated_at":"2025-12-25T00:28:10.81431-08:00","closed_at":"2025-12-25T00:28:10.814279-08:00"}
|
||||
@@ -1183,13 +1190,16 @@
|
||||
{"id":"gt-plcg","title":"Add --account flag to gt spawn and gt crew attach","description":"Add --account=\u003chandle\u003e flag. Precedence: GT_ACCOUNT env \u003e --account flag \u003e default from config.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T03:24:23.832188-08:00","updated_at":"2025-12-23T04:04:18.491584-08:00","closed_at":"2025-12-23T04:04:18.491584-08:00","close_reason":"Added --account flag to gt spawn and gt crew at commands","dependencies":[{"issue_id":"gt-plcg","depends_on_id":"gt-58tu","type":"blocks","created_at":"2025-12-23T03:24:34.984336-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-pln0","title":"Digest: mol-deacon-patrol","description":"Patrol 6: OK","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T20:57:32.057118-08:00","updated_at":"2025-12-24T20:57:32.057118-08:00","closed_at":"2025-12-24T20:57:32.057089-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
{"id":"gt-pm5rs","title":"Digest: mol-deacon-patrol","description":"Patrol 3: nux exited (wrong-rig escalation), 11 sessions, all core healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T20:09:23.555634-08:00","updated_at":"2025-12-25T20:09:23.555634-08:00","closed_at":"2025-12-25T20:09:23.555585-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
{"id":"gt-pmef","title":"Test Patrol Parent","description":"[RESURRECTED] This issue was deleted but recreated as a tombstone to preserve hierarchical structure.\n\nOriginal description:\nTest parent for Christmas Ornament pattern","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T22:04:44.376339-08:00","updated_at":"2025-12-25T20:00:58.528107-08:00","closed_at":"2025-12-25T20:00:58.528111-08:00"}
|
||||
{"id":"gt-pmef.1","title":"Test Polecat Arm","description":"Test child for bonding pattern","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T22:04:44.468753-08:00","updated_at":"2025-12-25T01:33:01.061399-08:00","closed_at":"2025-12-25T01:33:01.061399-08:00","close_reason":"Test pollution cleanup","dependencies":[{"issue_id":"gt-pmef.1","depends_on_id":"gt-pmef","type":"parent-child","created_at":"2025-12-23T22:04:44.469169-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-pmef.1","title":"Test Polecat Arm","description":"Test child for bonding pattern","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T22:04:44.468753-08:00","updated_at":"2025-12-25T01:33:01.061399-08:00","closed_at":"2025-12-25T01:33:01.061399-08:00","close_reason":"Test pollution cleanup"}
|
||||
{"id":"gt-pnu4","title":"Test","description":"Body","status":"tombstone","priority":2,"issue_type":"message","created_at":"2025-12-20T21:38:39.019559-08:00","updated_at":"2025-12-25T14:12:42.272191-08:00","deleted_at":"2025-12-25T14:12:42.272191-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"message"}
|
||||
{"id":"gt-pnurj","title":"Digest: mol-deacon-patrol","description":"Patrol 20: Green - routine cycle complete, handing off","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:36:47.596964-08:00","updated_at":"2025-12-25T19:36:47.596964-08:00","closed_at":"2025-12-25T19:36:47.59691-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
{"id":"gt-poxd","title":"Create handoff beads for Witness and Refinery roles","description":"Each patrol role needs a pinned handoff bead to track attached molecules and patrol state.\n\n## Pattern (from Deacon)\n- Title: '\u003crole\u003e Handoff' (e.g., 'witness Handoff', 'refinery Handoff')\n- Status: pinned\n- Description contains structured state\n\n## Witness Handoff State\n\n```yaml\nattached_molecule: mol-witness-patrol\nattached_at: 2025-12-24T10:00:00Z\n\n# Nudge escalation tracking\nnudges:\n toast:\n count: 2\n last: \"2025-12-24T10:30:00Z\"\n ace:\n count: 0\n last: null\n\n# Polecats queued for cleanup\npending_cleanup:\n - nux # received POLECAT_DONE, awaiting verification\n```\n\n## Refinery Handoff State\n\n```yaml\nattached_molecule: mol-refinery-patrol\nattached_at: 2025-12-24T10:00:00Z\n\n# Merge queue tracking\nlast_processed_branch: polecat/toast\nbranches_merged_this_cycle: 3\n```\n\n## Tasks\n1. Create 'witness Handoff' bead in each rig's beads\n2. Create 'refinery Handoff' bead in each rig's beads\n3. Update Witness/Refinery startup to check handoff bead for attached work\n4. Update templates to document handoff bead usage\n5. Include nudge state schema for Witness\n6. Include merge state schema for Refinery\n\n## Note\nThese are rig-level beads (in gastown/.beads/, beads/.beads/), not town-level like deacon Handoff (in ~/gt/.beads/).\n\n## See Also\n- docs/witness-patrol-design.md - Theory of operation","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-23T13:19:41.055563-08:00","updated_at":"2025-12-24T23:21:03.212038-08:00","closed_at":"2025-12-24T23:21:03.212038-08:00","close_reason":"witness Handoff (gt-w98d) and refinery Handoff (gt-j3cx) beads exist; templates updated with documentation","dependencies":[{"issue_id":"gt-poxd","depends_on_id":"gt-y481","type":"parent-child","created_at":"2025-12-23T13:20:15.89851-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-pqhka","title":"Digest: mol-deacon-patrol","description":"Patrol 20: All agents healthy - triggering handoff","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T06:46:30.78827-08:00","updated_at":"2025-12-25T06:46:30.78827-08:00","closed_at":"2025-12-25T06:46:30.788236-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
{"id":"gt-psj76","title":"Patrol Lifecycle Completion","description":"Patrols complete their full cycle without wisp accumulation.\n\n## Problem\nPatrol wisps accumulate (73+ observed) because burn-or-loop step does not complete. This wastes storage and makes bd list noisy.\n\n## Requirements\n- Burn-or-loop step executes and burns completed wisps\n- Fresh wisp instantiated for next patrol cycle \n- Wisp GC runs periodically as safety net (orphan-check step)\n- Context cycling triggers gt handoff when budget exhausted\n- No wisp accumulation over time\n\n## Success Criteria\n- bd wisp list shows fewer than 5 wisps at any time\n- Patrols run indefinitely without intervention\n- Context cycles cleanly produce handoff mail\n\nThis is the foundation for all autonomous patrol work.","status":"open","priority":1,"issue_type":"epic","created_at":"2025-12-25T20:45:54.435395-08:00","updated_at":"2025-12-25T20:45:54.435395-08:00"}
|
||||
{"id":"gt-psj76.1","title":"Burn-or-loop step execution","description":"Fix step completion detection in patrol formulas. Ensure done() properly clears the molecule and triggers burn. Currently wisps accumulate because this step doesn't complete.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-25T20:55:21.305965-08:00","updated_at":"2025-12-25T20:55:21.305965-08:00","dependencies":[{"issue_id":"gt-psj76.1","depends_on_id":"gt-psj76","type":"parent-child","created_at":"2025-12-25T20:55:21.306455-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-psj76.2","title":"Wisp GC command","description":"Implement bd wisp gc command that cleans orphaned wisps older than a threshold (default 1h). Safety net for wisps that escape normal burn-or-loop cleanup. Should run as part of Deacon patrol.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-25T20:55:22.455591-08:00","updated_at":"2025-12-25T20:55:22.455591-08:00","dependencies":[{"issue_id":"gt-psj76.2","depends_on_id":"gt-psj76","type":"parent-child","created_at":"2025-12-25T20:55:22.457703-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-psj76.3","title":"Context cycling protocol","description":"Document and verify gt handoff pattern for patrol agents. Ensure hook chain works: handoff mail sent, session respawns, SessionStart hook runs gt prime, work continues from pinned molecule.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-25T20:55:23.973741-08:00","updated_at":"2025-12-25T20:55:23.973741-08:00","dependencies":[{"issue_id":"gt-psj76.3","depends_on_id":"gt-psj76","type":"parent-child","created_at":"2025-12-25T20:55:23.974279-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-psj76.4","title":"Patrol lifecycle integration test","description":"Verify patrol runs 3+ cycles without wisp accumulation. bd wisp list should show \u003c5 wisps. Context cycles cleanly produce handoff mail. Test with Deacon patrol.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T20:55:25.121614-08:00","updated_at":"2025-12-25T20:55:25.121614-08:00","dependencies":[{"issue_id":"gt-psj76.4","depends_on_id":"gt-psj76","type":"parent-child","created_at":"2025-12-25T20:55:25.123746-08:00","created_by":"daemon"},{"issue_id":"gt-psj76.4","depends_on_id":"gt-psj76.1","type":"blocks","created_at":"2025-12-25T20:56:44.636528-08:00","created_by":"daemon"},{"issue_id":"gt-psj76.4","depends_on_id":"gt-psj76.2","type":"blocks","created_at":"2025-12-25T20:56:44.733351-08:00","created_by":"daemon"},{"issue_id":"gt-psj76.4","depends_on_id":"gt-psj76.3","type":"blocks","created_at":"2025-12-25T20:56:44.825574-08:00","created_by":"daemon"}]}
|
||||
{"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":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T22:21:42.037058-08:00","updated_at":"2025-12-24T22:21:42.037058-08:00","closed_at":"2025-12-24T22:21:42.037029-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
{"id":"gt-pvzj","title":"Digest: mol-deacon-patrol @ 2025-12-24 20:23","description":"Patrol complete: inbox clear, all agents healthy, no orphans","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T20:23:09.751138-08:00","updated_at":"2025-12-24T20:23:09.751138-08:00","closed_at":"2025-12-24T20:23:09.751066-08:00","close_reason":"Squashed from wisp gt-sb2 (9 issues)"}
|
||||
@@ -1365,6 +1375,11 @@
|
||||
{"id":"gt-tvos","title":"load-context","description":"Run gt prime and bd prime. Verify issue assignment.\nCheck inbox for any relevant messages.\n\nRead the assigned issue (gt-test123) and understand the requirements.\nIdentify any blockers or missing information.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-21T21:48:26.32141-08:00","updated_at":"2025-12-25T14:12:42.239473-08:00","dependencies":[{"issue_id":"gt-tvos","depends_on_id":"gt-i4lo","type":"parent-child","created_at":"2025-12-21T21:48:26.323129-08:00","created_by":"stevey"}],"deleted_at":"2025-12-25T14:12:42.239473-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"task"}
|
||||
{"id":"gt-tw1g","title":"Startup hook should validate attached molecule is still open","description":"When the SessionStart hook outputs attached_molecule from the handoff bead, it should check if that molecule is still open. If closed, it should:\n1. Clear the stale attachment\n2. Auto-spawn a fresh patrol molecule\n3. Attach the new patrol\n\nCurrently it just outputs the stale reference without validation, leaving the Deacon confused about what to run.","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-23T13:16:51.73028-08:00","updated_at":"2025-12-23T13:16:51.73028-08:00"}
|
||||
{"id":"gt-twjr5","title":"Async Coordination Gates","description":"Agents wait for external events without polling.\n\n## Problem\nAgents cannot wait for external conditions (CI completion, human approval, timers) without wasteful polling or losing state on handoff.\n\n## Requirements\n- Gate issue type in beads (type=gate)\n- bd gate create --await timer:5m / gh:run:123 / human:approve / mail:pattern\n- Deacon evaluates pending gates each patrol cycle\n- Agents park work on gate, resume when condition met\n- Gate timeout and notification\n\n## Gate Types\n- timer:\u003cduration\u003e - Simple delay (5m, 1h, 24h)\n- gh:run:\u003cid\u003e - GitHub Actions run completion\n- gh:pr:\u003cid\u003e - PR merged/closed \n- human:\u003cprompt\u003e - Human approval required\n- mail:\u003cpattern\u003e - Wait for mail matching pattern\n\n## Success Criteria\n- Agent can create gate and suspend work\n- Deacon wakes agent when gate condition met\n- Gates survive session cycling\n\nConsolidates gt-31eg. Parallel work with no dependencies.","status":"open","priority":1,"issue_type":"epic","created_at":"2025-12-25T20:46:07.930952-08:00","updated_at":"2025-12-25T20:46:07.930952-08:00"}
|
||||
{"id":"gt-twjr5.1","title":"Gate issue type and bd gate create","description":"Add type=gate to beads schema. Implement bd gate create command with --await flag. Gates are special issues that represent wait conditions. Example: bd gate create --await timer:5m --title 'Wait for cooldown'","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-25T20:55:44.796316-08:00","updated_at":"2025-12-25T20:55:44.796316-08:00","dependencies":[{"issue_id":"gt-twjr5.1","depends_on_id":"gt-twjr5","type":"parent-child","created_at":"2025-12-25T20:55:44.7969-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-twjr5.2","title":"Timer gate evaluation","description":"Implement timer gate type. Format: timer:\u003cduration\u003e (5m, 1h, 24h). Deacon evaluates pending timer gates each patrol cycle. Gate closes when duration elapsed since creation. Simplest gate type - implement first.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-25T20:55:46.781785-08:00","updated_at":"2025-12-25T20:55:46.781785-08:00","dependencies":[{"issue_id":"gt-twjr5.2","depends_on_id":"gt-twjr5","type":"parent-child","created_at":"2025-12-25T20:55:46.783602-08:00","created_by":"daemon"},{"issue_id":"gt-twjr5.2","depends_on_id":"gt-twjr5.1","type":"blocks","created_at":"2025-12-25T20:56:46.669095-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-twjr5.3","title":"GitHub gates (gh:run, gh:pr)","description":"Implement GitHub gate types using gh CLI. gh:run:\u003cid\u003e waits for Actions run completion. gh:pr:\u003cid\u003e waits for PR merged/closed. Deacon polls status during patrol cycle.","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-25T20:55:48.108365-08:00","updated_at":"2025-12-25T20:55:48.108365-08:00","dependencies":[{"issue_id":"gt-twjr5.3","depends_on_id":"gt-twjr5","type":"parent-child","created_at":"2025-12-25T20:55:48.110599-08:00","created_by":"daemon"},{"issue_id":"gt-twjr5.3","depends_on_id":"gt-twjr5.1","type":"blocks","created_at":"2025-12-25T20:56:46.763122-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-twjr5.4","title":"Human and mail gates","description":"Implement human:\u003cprompt\u003e gate (requires explicit approval command). Implement mail:\u003cpattern\u003e gate (waits for mail matching pattern). These enable async human-in-loop workflows.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T20:55:49.832861-08:00","updated_at":"2025-12-25T20:55:49.832861-08:00","dependencies":[{"issue_id":"gt-twjr5.4","depends_on_id":"gt-twjr5","type":"parent-child","created_at":"2025-12-25T20:55:49.833369-08:00","created_by":"daemon"},{"issue_id":"gt-twjr5.4","depends_on_id":"gt-twjr5.1","type":"blocks","created_at":"2025-12-25T20:56:46.85494-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-twjr5.5","title":"Agent parking and resuming","description":"Implement gt park and gt resume commands. Agent parks work on a gate, state persists across sessions. When gate condition met, Deacon sends wake mail. Agent resumes from parked state. Critical for async workflows.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T20:55:51.294474-08:00","updated_at":"2025-12-25T20:55:51.294474-08:00","dependencies":[{"issue_id":"gt-twjr5.5","depends_on_id":"gt-twjr5","type":"parent-child","created_at":"2025-12-25T20:55:51.296459-08:00","created_by":"daemon"},{"issue_id":"gt-twjr5.5","depends_on_id":"gt-twjr5.2","type":"blocks","created_at":"2025-12-25T20:56:46.946883-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-ty3w4","title":"Digest: mol-deacon-patrol","description":"Final patrol cycle 20: all systems healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T11:22:00.43096-08:00","updated_at":"2025-12-25T11:22:00.43096-08:00","closed_at":"2025-12-25T11:22:00.430928-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
{"id":"gt-u0c1","title":"Merge: gt-qna4","description":"branch: polecat/capable\ntarget: main\nsource_issue: gt-qna4\nrig: gastown","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-20T07:47:28.453817-08:00","updated_at":"2025-12-20T23:17:25.792255-08:00","closed_at":"2025-12-20T23:17:25.792255-08:00","close_reason":"Branches nuked, MRs obsolete"}
|
||||
{"id":"gt-u0ccw","title":"Digest: mol-deacon-patrol","description":"P16: stable","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:59:59.331911-08:00","updated_at":"2025-12-25T19:59:59.331911-08:00","closed_at":"2025-12-25T19:59:59.331857-08:00"}
|
||||
@@ -1427,7 +1442,6 @@
|
||||
{"id":"gt-uym5","title":"Implement gt mol status command","description":"Show what's on an agent's hook.\n\n```bash\ngt mol status [target]\n```\n\nOutput:\n- What's slung (molecule name, associated issue)\n- Current phase and progress\n- Whether it's a wisp\n- Next action hint\n\nIf no target, shows current agent's status.\n\nAcceptance:\n- [ ] Read pinned bead attachment\n- [ ] Display molecule/issue info\n- [ ] Show phase progress\n- [ ] Indicate wisp vs durable","status":"closed","priority":1,"issue_type":"task","assignee":"gastown/nux","created_at":"2025-12-22T03:17:34.679963-08:00","updated_at":"2025-12-22T12:34:19.942265-08:00","closed_at":"2025-12-22T12:34:19.942265-08:00","close_reason":"Implemented gt mol status command with mol alias, auto-detection, progress display, wisp detection, and next action hints"}
|
||||
{"id":"gt-v0xqo","title":"Digest: mol-deacon-patrol","description":"Patrol 2: All clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T15:32:26.623344-08:00","updated_at":"2025-12-25T15:32:26.623344-08:00","closed_at":"2025-12-25T15:32:26.623315-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
{"id":"gt-v1pcg","title":"ApplyBranches/ApplyGates mutate steps in place","description":"ApplyBranches and ApplyGates claim to return a modified steps slice, but they actually mutate the original steps via the pointer map from buildStepMap().\n\n```go\n// ApplyBranches docstring says:\n// Returns the modified steps slice (steps are modified in place for dependencies).\n```\n\nThis is technically documented but violates the pattern established by ApplyLoops and ApplyAdvice which return new step slices.\n\nOptions:\n1. Document explicitly that these functions mutate in place (current behavior)\n2. Clone steps before modification for true immutability\n3. Accept this as intentional since it's an optimization\n\nThe current behavior is safe because cook.go doesn't reuse the input slice, but could cause subtle bugs if callers expect immutability.\n\nRecommend option 1 (document) or 2 (clone) for consistency.","status":"open","priority":3,"issue_type":"bug","created_at":"2025-12-25T15:14:01.921527-08:00","updated_at":"2025-12-25T15:14:01.921527-08:00","dependencies":[{"issue_id":"gt-v1pcg","depends_on_id":"gt-8tmz.4","type":"blocks","created_at":"2025-12-25T15:14:18.94711-08:00","created_by":"daemon"}]}
|
||||
{"id":"gt-v30g","title":"Digest: mol-deacon-patrol","description":"Patrol 6: Routine","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T22:36:38.029543-08:00","updated_at":"2025-12-24T22:36:38.029543-08:00","closed_at":"2025-12-24T22:36:38.029506-08:00","close_reason":"Squashed from 8 wisps"}
|
||||
{"id":"gt-v3bjf","title":"Digest: mol-deacon-patrol","description":"Patrol 14: Quiet","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T07:28:25.96187-08:00","updated_at":"2025-12-25T07:28:25.96187-08:00","closed_at":"2025-12-25T07:28:25.961842-08:00"}
|
||||
{"id":"gt-v5hv","title":"Work on ga-y6b: Implement Refinery as Claude agent. Conve...","description":"Work on ga-y6b: Implement Refinery as Claude agent. Convert from shell to Claude agent that processes MRs in merge queue, runs tests, merges to integration branch. When done, submit MR (not PR) to integration branch for Refinery.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-19T22:58:17.576892-08:00","updated_at":"2025-12-19T23:23:22.778407-08:00","closed_at":"2025-12-19T23:23:22.778407-08:00"}
|
||||
{"id":"gt-v5k","title":"Design: Failure modes and recovery","description":"Document failure modes and recovery strategies for Gas Town operations.\n\n## Critical Failure Modes\n\n### 1. Agent Crash Mid-Operation\n\n**Scenario**: Polecat crashes while committing, Witness crashes while verifying\n\n**Detection**:\n- Session suddenly gone (tmux check fails)\n- State shows 'working' but no session\n- Heartbeat stops (for Witness)\n\n**Recovery**:\n- Doctor detects via ZombieSessionCheck\n- Capture any recoverable state\n- Reset agent state to 'idle'\n- For Witness: auto-restart via supervisor or manual gt witness start\n\n### 2. Git State Corruption\n\n**Scenario**: Merge conflict, failed rebase, detached HEAD\n\n**Detection**:\n- Git commands fail\n- Dirty state that won't commit\n- Branch diverged from origin\n\n**Recovery**:\n- gt doctor reports git health issues\n- Manual intervention recommended\n- Severe cases: remove clone, re-clone\n\n### 3. Beads Sync Conflict\n\n**Scenario**: Two polecats modify same issue\n\n**Detection**:\n- bd sync fails with conflict\n- Beads tombstone mechanism handles most cases\n\n**Recovery**:\n- Beads has last-write-wins semantics\n- bd sync --force in extreme cases\n- Issues may need manual dedup\n\n### 4. Tmux Failure\n\n**Scenario**: Tmux server crashes, socket issues\n\n**Detection**:\n- All sessions inaccessible\n- \"no server running\" errors\n\n**Recovery**:\n- Kill any orphan processes\n- tmux kill-server \u0026\u0026 tmux start-server\n- All agent states reset to idle\n- Re-spawn active work\n\n### 5. Claude API Issues\n\n**Scenario**: Rate limits, outages, context limits\n\n**Detection**:\n- Sessions hang or produce errors\n- Repeated failure patterns\n\n**Recovery**:\n- Exponential backoff (handled by Claude Code)\n- For context limits: session cycling (mail-to-self)\n- For outages: wait and retry\n\n### 6. Disk Full\n\n**Scenario**: Clones, logs, or beads fill disk\n\n**Detection**:\n- Write operations fail\n- git/bd commands error\n\n**Recovery**:\n- Clean up logs: rm ~/.gastown/logs/*\n- Remove old polecat clones\n- gt doctor --fix can clean some cruft\n\n### 7. Network Failure\n\n**Scenario**: Can't reach GitHub, API servers\n\n**Detection**:\n- git fetch/push fails\n- Claude sessions hang\n\n**Recovery**:\n- Work continues locally\n- Queue pushes for later\n- Sync when connectivity restored\n\n## Recovery Principles\n\n1. **Fail safe**: Prefer stopping over corrupting\n2. **State is recoverable**: Git and beads have recovery mechanisms\n3. **Doctor heals**: gt doctor --fix handles common issues\n4. **Emergency stop**: gt stop --all as last resort\n5. **Human escalation**: Some failures need Overseer intervention\n\n## Implementation\n\n- Document each failure mode in architecture.md\n- Ensure doctor checks cover detection\n- Add recovery hints to error messages\n- Log all failures for debugging","status":"open","priority":1,"issue_type":"task","created_at":"2025-12-15T23:19:07.198289-08:00","updated_at":"2025-12-15T23:19:28.171942-08:00"}
|
||||
|
||||
Reference in New Issue
Block a user