bd sync: 2025-12-25 11:57:18

This commit is contained in:
Steve Yegge
2025-12-25 11:57:18 -08:00
parent 62f603bbe1
commit 95d14d3fe2

View File

@@ -359,6 +359,11 @@
{"id":"gt-8tmz.30","title":"Proto debugging and inspection tools","description":"Tools for understanding cooked protos:\n- bd cook --dry-run (already planned)\n- Step-through cooking: see each compose rule applied\n- Diff between proto versions\n- Provenance tracing: which formula/rule produced this step?\n- Visualization of step graph (ASCII or graphviz)\n\nDeferred: post-launch polish","status":"open","priority":4,"issue_type":"task","created_at":"2025-12-23T20:06:46.58776-08:00","updated_at":"2025-12-23T20:06:46.58776-08:00","dependencies":[{"issue_id":"gt-8tmz.30","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T20:06:46.58989-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.31","title":"Formula validation specification","description":"Complete validation rules for formulas:\n- Required vs optional fields\n- Valid step ID patterns\n- Valid pointcut glob syntax\n- Variable reference validation\n- Compose rule ordering constraints\n- Type-specific validation (workflow vs expansion vs aspect)\n\nDeferred: post-launch polish","status":"open","priority":4,"issue_type":"task","created_at":"2025-12-23T20:06:47.618799-08:00","updated_at":"2025-12-23T20:06:47.618799-08:00","dependencies":[{"issue_id":"gt-8tmz.31","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T20:06:47.620975-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.32","title":"Consolidate molecular-chemistry.md with rig-cook-run.md","description":"Merge rig-cook-run.md into molecular-chemistry.md as the canonical chemical algebra spec:\n- Rig/Cook/Run as the lifecycle backbone\n- Full generation graph: Formula → Compound Formula → Proto → Mol/Wisp\n- Bond table at artifact level (symmetric)\n- Rig operator at source level\n- Unified vocabulary\n- Archive or redirect rig-cook-run.md","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T20:06:48.82201-08:00","updated_at":"2025-12-23T20:09:55.176385-08:00","closed_at":"2025-12-23T20:09:55.176385-08:00","close_reason":"Consolidated rig-cook-run.md into molecular-chemistry.md. Updated all references.","dependencies":[{"issue_id":"gt-8tmz.32","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T20:06:48.823692-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.33","title":"Map expansion should match nested child steps","status":"open","priority":2,"issue_type":"bug","created_at":"2025-12-25T11:50:05.247378-08:00","updated_at":"2025-12-25T11:50:05.247378-08:00","dependencies":[{"issue_id":"gt-8tmz.33","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-25T11:50:05.247973-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.34","title":"Expansion var overrides not implemented","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-25T11:50:17.317847-08:00","updated_at":"2025-12-25T11:50:17.317847-08:00","dependencies":[{"issue_id":"gt-8tmz.34","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-25T11:50:17.318327-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.35","title":"Inline step expansion (Step.Expand field)","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-25T11:50:30.099384-08:00","updated_at":"2025-12-25T11:50:30.099384-08:00","dependencies":[{"issue_id":"gt-8tmz.35","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-25T11:50:30.099886-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.36","title":"Validate expanded step IDs are unique","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-25T11:50:48.436691-08:00","updated_at":"2025-12-25T11:50:48.436691-08:00","dependencies":[{"issue_id":"gt-8tmz.36","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-25T11:50:48.437167-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.37","title":"Support nested expansion formulas","status":"open","priority":4,"issue_type":"feature","created_at":"2025-12-25T11:50:48.751806-08:00","updated_at":"2025-12-25T11:50:48.751806-08:00","dependencies":[{"issue_id":"gt-8tmz.37","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-25T11:50:48.75222-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.4","title":"Control flow: loop, gate, branch","description":"Implement control flow operators:\n- loop N { body } - fixed iteration\n- loop until COND { body } - conditional iteration with max bound\n- gate COND { body } - wait for condition\n- branch from/steps/join - parallel paths that rejoin\n\nConditions evaluated mechanically (step status, output fields).","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T18:04:33.194896-08:00","updated_at":"2025-12-23T18:04:33.194896-08:00","dependencies":[{"issue_id":"gt-8tmz.4","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T18:04:33.196543-08:00","created_by":"daemon"},{"issue_id":"gt-8tmz.4","depends_on_id":"gt-8tmz.7","type":"blocks","created_at":"2025-12-23T18:04:49.985527-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.5","title":"Aspects: AOP cross-cutting concerns","description":"Implement aspect-oriented composition:\n- Define aspects with pointcuts and advice\n- Apply aspects at bond time: bd bond mol --with-aspect security\n- Pointcuts use glob patterns to match join points\n\nEnables security-audit, logging, etc. as reusable concerns.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T18:04:34.128562-08:00","updated_at":"2025-12-23T18:04:34.128562-08:00","dependencies":[{"issue_id":"gt-8tmz.5","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T18:04:34.130564-08:00","created_by":"daemon"},{"issue_id":"gt-8tmz.5","depends_on_id":"gt-8tmz.2","type":"blocks","created_at":"2025-12-23T18:04:49.898125-08:00","created_by":"daemon"},{"issue_id":"gt-8tmz.5","depends_on_id":"gt-8tmz.6","type":"blocks","created_at":"2025-12-23T18:48:18.802195-08:00","created_by":"daemon"}]}
{"id":"gt-8tmz.6","title":"Selection operators: glob, filter, children","description":"Implement selection operators for targeting:\n- step(id) - specific step\n- glob(pattern) - pattern match (*.implement)\n- filter(predicate) - status/output predicates\n- children(step), descendants(step) - tree traversal\n\nUsed by advice, expansion, and aspects for targeting.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T18:04:35.447482-08:00","updated_at":"2025-12-23T18:04:35.447482-08:00","dependencies":[{"issue_id":"gt-8tmz.6","depends_on_id":"gt-8tmz","type":"parent-child","created_at":"2025-12-23T18:04:35.449213-08:00","created_by":"daemon"}]}
@@ -1403,12 +1408,12 @@
{"id":"mol-gastown-boot.ensure-witnesses.ensure-beads-witness","title":"Ensure beads witness","description":"Start the beads rig Witness.\n\n## Action\n```bash\ngt witness start beads\n```\n\n## Verify\n1. Session exists: `tmux has-session -t beads-witness 2\u003e/dev/null`\n2. Not stalled: `gt peek beads/witness` does NOT show \"\u003e Try\" prompt\n3. Heartbeat fresh: Last patrol cycle \u003c 5 min ago","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T11:48:10.226268-08:00","updated_at":"2025-12-25T11:48:10.226268-08:00","dependencies":[{"issue_id":"mol-gastown-boot.ensure-witnesses.ensure-beads-witness","depends_on_id":"mol-gastown-boot.ensure-witnesses","type":"parent-child","created_at":"2025-12-25T11:48:10.275745-08:00","created_by":"stevey"}]}
{"id":"mol-gastown-boot.ensure-witnesses.ensure-gastown-witness","title":"Ensure gastown witness","description":"Start the gastown rig Witness.\n\n## Action\n```bash\ngt witness start gastown\n```\n\n## Verify\n1. Session exists: `tmux has-session -t gastown-witness 2\u003e/dev/null`\n2. Not stalled: `gt peek gastown/witness` does NOT show \"\u003e Try\" prompt\n3. Heartbeat fresh: Last patrol cycle \u003c 5 min ago","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T11:48:10.226268-08:00","updated_at":"2025-12-25T11:48:10.226268-08:00","dependencies":[{"issue_id":"mol-gastown-boot.ensure-witnesses.ensure-gastown-witness","depends_on_id":"mol-gastown-boot.ensure-witnesses","type":"parent-child","created_at":"2025-12-25T11:48:10.263832-08:00","created_by":"stevey"}]}
{"id":"mol-gastown-boot.verify-town-health","title":"Verify town health","description":"Final verification that Gas Town is healthy.\n\n## Action\n```bash\ngt status\n```\n\n## Verify\n1. Daemon running: Shows daemon status OK\n2. Deacon active: Shows deacon in patrol mode\n3. All witnesses: Each rig witness shows active\n4. All refineries: Each rig refinery shows active\n\n## OnFail\nLog degraded state but consider boot complete. Some agents may need manual recovery.\nRun `gt doctor` for detailed diagnostics.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T11:48:10.226269-08:00","updated_at":"2025-12-25T11:48:10.226269-08:00","dependencies":[{"issue_id":"mol-gastown-boot.verify-town-health","depends_on_id":"mol-gastown-boot","type":"parent-child","created_at":"2025-12-25T11:48:10.323277-08:00","created_by":"stevey"},{"issue_id":"mol-gastown-boot.verify-town-health","depends_on_id":"mol-gastown-boot.ensure-witnesses","type":"blocks","created_at":"2025-12-25T11:48:10.371722-08:00","created_by":"stevey"},{"issue_id":"mol-gastown-boot.verify-town-health","depends_on_id":"mol-gastown-boot.ensure-refineries","type":"blocks","created_at":"2025-12-25T11:48:10.384311-08:00","created_by":"stevey"}]}
{"id":"mol-polecat-arm","title":"mol-polecat-arm","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","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-24T14:05:31.028166-08:00","updated_at":"2025-12-24T14:05:31.028166-08:00","labels":["template"]}
{"id":"mol-polecat-arm.assess","title":"Assess work status","description":"Categorize 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.\n","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-24T14:05:31.028167-08:00","updated_at":"2025-12-24T14:05:31.028167-08:00","dependencies":[{"issue_id":"mol-polecat-arm.assess","depends_on_id":"mol-polecat-arm","type":"parent-child","created_at":"2025-12-24T14:05:31.04175-08:00","created_by":"stevey"},{"issue_id":"mol-polecat-arm.assess","depends_on_id":"mol-polecat-arm.capture","type":"blocks","created_at":"2025-12-24T14:05:31.092029-08:00","created_by":"stevey"}]}
{"id":"mol-polecat-arm.capture","title":"Capture polecat state","description":"Capture recent tmux output for {{polecat_name}}.\n\n```bash\ntmux capture-pane -t gt-{{rig}}-{{polecat_name}} -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","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-24T14:05:31.028167-08:00","updated_at":"2025-12-24T14:05:31.028167-08:00","dependencies":[{"issue_id":"mol-polecat-arm.capture","depends_on_id":"mol-polecat-arm","type":"parent-child","created_at":"2025-12-24T14:05:31.029147-08:00","created_by":"stevey"}]}
{"id":"mol-polecat-arm.decide","title":"Decide intervention action","description":"Apply the nudge matrix to determine action for {{polecat_name}}.\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.\n","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-24T14:05:31.028168-08:00","updated_at":"2025-12-24T14:05:31.028168-08:00","dependencies":[{"issue_id":"mol-polecat-arm.decide","depends_on_id":"mol-polecat-arm","type":"parent-child","created_at":"2025-12-24T14:05:31.066877-08:00","created_by":"stevey"},{"issue_id":"mol-polecat-arm.decide","depends_on_id":"mol-polecat-arm.load-history","type":"blocks","created_at":"2025-12-24T14:05:31.117778-08:00","created_by":"stevey"}]}
{"id":"mol-polecat-arm.execute","title":"Execute intervention","description":"Take the decided action for {{polecat_name}}.\n\n**nudge-N**:\n```bash\ntmux send-keys -t gt-{{rig}}-{{polecat_name}} \"{{nudge_text}}\" Enter\n```\n\n**pre-kill-verify**:\n```bash\ncd polecats/{{polecat_name}}\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: {{polecat_name}} stuck\" -m \"...\"\n```\n\n**none**: No action needed.\n\nRecord: action taken, result, updated nudge count.\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 {{polecat_name}}\n\nThis data feeds back to the parent patrol's aggregate step.\n","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-24T14:05:31.028168-08:00","updated_at":"2025-12-24T14:05:31.028169-08:00","dependencies":[{"issue_id":"mol-polecat-arm.execute","depends_on_id":"mol-polecat-arm","type":"parent-child","created_at":"2025-12-24T14:05:31.079485-08:00","created_by":"stevey"},{"issue_id":"mol-polecat-arm.execute","depends_on_id":"mol-polecat-arm.decide","type":"blocks","created_at":"2025-12-24T14:05:31.130708-08:00","created_by":"stevey"}]}
{"id":"mol-polecat-arm.load-history","title":"Load intervention history","description":"Read nudge history for {{polecat_name}} from patrol state.\n\n```\nnudge_count = state.nudges[{{polecat_name}}].count\nlast_nudge_time = state.nudges[{{polecat_name}}].timestamp\n```\n\nThis data was loaded by the parent patrol's load-state step and passed\nto the arm via the bonding context.\n","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-24T14:05:31.028168-08:00","updated_at":"2025-12-24T14:05:31.028168-08:00","dependencies":[{"issue_id":"mol-polecat-arm.load-history","depends_on_id":"mol-polecat-arm","type":"parent-child","created_at":"2025-12-24T14:05:31.054317-08:00","created_by":"stevey"},{"issue_id":"mol-polecat-arm.load-history","depends_on_id":"mol-polecat-arm.assess","type":"blocks","created_at":"2025-12-24T14:05:31.104891-08:00","created_by":"stevey"}]}
{"id":"mol-polecat-arm","title":"mol-polecat-arm","description":"Single polecat inspection and action cycle.\n\nThis molecule is bonded dynamically by mol-witness-patrol's survey-workers step. Each 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| nudge_text | No | Text to send when nudging (default: \"How's progress?...\") |","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-25T11:56:45.852159-08:00","updated_at":"2025-12-25T11:56:45.852159-08:00","labels":["template"]}
{"id":"mol-polecat-arm.assess","title":"Assess work status","description":"Categorize 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.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T11:56:45.852161-08:00","updated_at":"2025-12-25T11:56:45.852161-08:00","dependencies":[{"issue_id":"mol-polecat-arm.assess","depends_on_id":"mol-polecat-arm","type":"parent-child","created_at":"2025-12-25T11:56:45.86567-08:00","created_by":"stevey"},{"issue_id":"mol-polecat-arm.assess","depends_on_id":"mol-polecat-arm.capture","type":"blocks","created_at":"2025-12-25T11:56:45.914392-08:00","created_by":"stevey"}]}
{"id":"mol-polecat-arm.capture","title":"Capture polecat state","description":"Capture recent tmux output for {{polecat_name}}.\n\n```bash\ntmux capture-pane -t gt-{{rig}}-{{polecat_name}} -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.)","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T11:56:45.85216-08:00","updated_at":"2025-12-25T11:56:45.852161-08:00","dependencies":[{"issue_id":"mol-polecat-arm.capture","depends_on_id":"mol-polecat-arm","type":"parent-child","created_at":"2025-12-25T11:56:45.853525-08:00","created_by":"stevey"}]}
{"id":"mol-polecat-arm.decide","title":"Decide intervention action","description":"Apply the nudge matrix to determine action for {{polecat_name}}.\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.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T11:56:45.852162-08:00","updated_at":"2025-12-25T11:56:45.852162-08:00","dependencies":[{"issue_id":"mol-polecat-arm.decide","depends_on_id":"mol-polecat-arm","type":"parent-child","created_at":"2025-12-25T11:56:45.889911-08:00","created_by":"stevey"},{"issue_id":"mol-polecat-arm.decide","depends_on_id":"mol-polecat-arm.load-history","type":"blocks","created_at":"2025-12-25T11:56:45.938918-08:00","created_by":"stevey"}]}
{"id":"mol-polecat-arm.execute","title":"Execute intervention","description":"Take the decided action for {{polecat_name}}.\n\n**nudge-N**:\n```bash\ntmux send-keys -t gt-{{rig}}-{{polecat_name}} \"{{nudge_text}}\" Enter\n```\n\n**pre-kill-verify**:\n```bash\ncd polecats/{{polecat_name}}\ngit status # Must be clean\ngit log origin/main..HEAD # Check for unpushed\nbd show \u003cassigned-issue\u003e # Verify closed/deferred\n\n# Verify productive work (for 'done' closures)\ngit log --oneline --grep='\u003cissue-id\u003e' | head -1\n```\n\n**Commit verification** (ZFC principle - agent makes the call):\n- If issue closed as 'done' but no commits reference it → flag for review\n- Legitimate exceptions: already fixed elsewhere, duplicate, deferred\n- Agent must provide justification if closing without commits\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: {{polecat_name}} stuck\" -m \"...\"\n```\n\n**none**: No action needed.\n\nRecord: action taken, result, updated nudge count.\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 {{polecat_name}}\n\nThis data feeds back to the parent patrol's aggregate step.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T11:56:45.852162-08:00","updated_at":"2025-12-25T11:56:45.852162-08:00","dependencies":[{"issue_id":"mol-polecat-arm.execute","depends_on_id":"mol-polecat-arm","type":"parent-child","created_at":"2025-12-25T11:56:45.902108-08:00","created_by":"stevey"},{"issue_id":"mol-polecat-arm.execute","depends_on_id":"mol-polecat-arm.decide","type":"blocks","created_at":"2025-12-25T11:56:45.951096-08:00","created_by":"stevey"}]}
{"id":"mol-polecat-arm.load-history","title":"Load intervention history","description":"Read nudge history for {{polecat_name}} from patrol state.\n\n```\nnudge_count = state.nudges[{{polecat_name}}].count\nlast_nudge_time = state.nudges[{{polecat_name}}].timestamp\n```\n\nThis data was loaded by the parent patrol's load-state step and passed to the arm via the bonding context.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T11:56:45.852161-08:00","updated_at":"2025-12-25T11:56:45.852161-08:00","dependencies":[{"issue_id":"mol-polecat-arm.load-history","depends_on_id":"mol-polecat-arm","type":"parent-child","created_at":"2025-12-25T11:56:45.877815-08:00","created_by":"stevey"},{"issue_id":"mol-polecat-arm.load-history","depends_on_id":"mol-polecat-arm.assess","type":"blocks","created_at":"2025-12-25T11:56:45.926695-08:00","created_by":"stevey"}]}
{"id":"mol-polecat-lease","title":"mol-polecat-lease","description":"Semaphore tracking a single polecat's lifecycle.\n\nUsed by Witness to track polecat lifecycle during patrol. The Witness bonds this proto for each active polecat, creating a lease that tracks the polecat from spawn through work to cleanup.\n\n## Variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| polecat | Yes | Name of the polecat |\n| issue | Yes | The issue assigned to the polecat |","status":"open","priority":2,"issue_type":"epic","created_at":"2025-12-25T11:48:08.929117-08:00","updated_at":"2025-12-25T11:48:08.929117-08:00","labels":["template"]}
{"id":"mol-polecat-lease.boot","title":"Boot","description":"Spawned. Verify it starts working.\n\nCheck if the polecat is alive and working:\n```bash\ngt peek {{polecat}}\n```\n\nIf idle for too long, nudge:\n```bash\ngt nudge {{polecat}} \"Please start working on your assigned issue.\"\n```\n\nTimeout: 60s before escalation to Mayor.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T11:48:08.929118-08:00","updated_at":"2025-12-25T11:48:08.929118-08:00","dependencies":[{"issue_id":"mol-polecat-lease.boot","depends_on_id":"mol-polecat-lease","type":"parent-child","created_at":"2025-12-25T11:48:08.930483-08:00","created_by":"stevey"}]}
{"id":"mol-polecat-lease.done","title":"Done","description":"Exit received. Ready for cleanup.\n\nThe polecat has completed its work and sent SHUTDOWN.\nPerform cleanup:\n```bash\ngt session kill {{polecat}}\ngt worktree prune {{polecat}}\n```\n\nUpdate beads state and close the lease.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-25T11:48:08.929119-08:00","updated_at":"2025-12-25T11:48:08.929119-08:00","dependencies":[{"issue_id":"mol-polecat-lease.done","depends_on_id":"mol-polecat-lease","type":"parent-child","created_at":"2025-12-25T11:48:08.95386-08:00","created_by":"stevey"},{"issue_id":"mol-polecat-lease.done","depends_on_id":"mol-polecat-lease.working","type":"blocks","created_at":"2025-12-25T11:48:08.977063-08:00","created_by":"stevey"}]}