From 7d387a209f9994207c38b81771cceb5981b58f5d Mon Sep 17 00:00:00 2001 From: Steve Yegge Date: Fri, 26 Dec 2025 16:52:44 -0800 Subject: [PATCH] bd sync: 2025-12-26 16:52:44 --- .beads/issues.jsonl | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 87e675a4..46fd65e6 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -225,6 +225,7 @@ {"id":"gt-4u5z.6","title":"Design future federation model","description":"Document how remote/federated refinery would work in the future.\n\n## Options to document\n1. Git bundles - portable patches, no branches on origin\n2. Dedicated integration branch pattern (integration/*)\n3. Hybrid - local for same-machine, bundles for remote\n\n## Deliverable\nDesign doc in docs/federation-refinery.md or similar.\nNot implementing now - just capturing the design for when needed.","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-23T20:25:32.265488-08:00","updated_at":"2025-12-23T21:28:20.96312-08:00","closed_at":"2025-12-23T21:28:20.96312-08:00","close_reason":"Deferred - will address if/when needed","dependencies":[{"issue_id":"gt-4u5z.6","depends_on_id":"gt-4u5z","type":"parent-child","created_at":"2025-12-23T20:25:32.267467-08:00","created_by":"daemon"}]} {"id":"gt-4u5z.7","title":"Add migration path for existing rigs","description":"Existing rigs have refinery as clone. Need migration path.\n\n## Options\n1. Manual: User runs 'gt rig migrate' or similar\n2. Automatic: Detect clone, convert to worktree on next start\n3. Deprecation: Old rigs work but warn, new rigs use worktree\n\n## Considerations\n- Don't break existing setups\n- Clear upgrade path\n- Handle in-flight MRs during migration","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-23T20:25:33.746893-08:00","updated_at":"2025-12-23T21:28:20.972695-08:00","closed_at":"2025-12-23T21:28:20.972695-08:00","close_reason":"Deferred - will address if/when needed","dependencies":[{"issue_id":"gt-4u5z.7","depends_on_id":"gt-4u5z","type":"parent-child","created_at":"2025-12-23T20:25:33.749766-08:00","created_by":"daemon"},{"issue_id":"gt-4u5z.7","depends_on_id":"gt-4u5z.1","type":"blocks","created_at":"2025-12-23T20:25:44.086388-08:00","created_by":"daemon"}]} {"id":"gt-4v1eo","title":"Ephemeral protos: Remove proto-as-bead storage, cook inline","description":"## Summary\n\nRefactor the molecular chemistry stack so protos are ephemeral in-memory data structures, not persisted beads with `[template]` labels.\n\n## Current State\n\n```\nFormula (.formula.json) → cook → Proto (bead with [template]) → pour/wisp → Mol/Wisp\n```\n\nProtos are stored as beads issues with `labels: [\"template\"]`, polluting the DB with template definitions that duplicate the formula files.\n\n## Target State\n\n```\nFormula (.formula.json) → pour/wisp (cook inline) → Mol/Wisp\n```\n\nProtos exist only as in-memory data structures during the cook→pour/wisp pipeline. Formula catalog IS the proto library.\n\n## Changes Required\n\n1. **Remove template bead storage** - `bd cook` no longer writes to DB\n2. **`bd cook` becomes preview** - outputs proto JSON to stdout (like --dry-run)\n3. **`bd pour`/`bd wisp` cook inline** - take formula name, cook on the fly\n4. **`bd mol bond` accepts formula names** - cooks inline when bonding templates\n5. **Remove `[template]` label handling** - no more template beads\n6. **Update docs** - molecular-chemistry.md, molecule-algebra.md\n\n## Benefits\n\n- No DB pollution from template beads\n- Single source of truth (formulas in .beads/formulas/)\n- Simpler mental model: formulas → instances\n- Faster (no DB round-trip for protos)\n\n## Deferred\n\nStaged parameterization (proto currying) - punt until someone needs it:\n```bash\nbd cook mol-feature --var team=backend # Partially bound proto\nbd pour \u003cproto-id\u003e --var priority=high # Further binding\n```\n\n## Depends On\n\n- gt-8tmz (Molecule Algebra) core work should be mostly complete first\n\n## Context\n\nDiscussion: Mayor session 2025-12-25, ultrathink on proto storage","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-25T14:27:32.801474-08:00","updated_at":"2025-12-25T17:22:33.998876-08:00","closed_at":"2025-12-25T17:22:33.998876-08:00","close_reason":"Implemented ephemeral protos. Formulas are now cooked inline without storing proto beads.","dependencies":[{"issue_id":"gt-4v1eo","depends_on_id":"gt-8tmz","type":"blocks","created_at":"2025-12-25T14:27:37.721843-08:00","created_by":"daemon"}]} +{"id":"gt-4vd2s","title":"Digest: mol-deacon-patrol","description":"Patrol 14: all clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T16:52:06.454837-08:00","updated_at":"2025-12-26T16:52:06.454837-08:00","closed_at":"2025-12-26T16:52:06.454802-08:00","close_reason":"Squashed from 9 wisps","dependencies":[{"issue_id":"gt-4vd2s","depends_on_id":"gt-wisp-jom","type":"parent-child","created_at":"2025-12-26T16:52:06.45568-08:00","created_by":"stevey"}]} {"id":"gt-4vw2j","title":"Digest: mol-deacon-patrol","description":"Patrol 2: All healthy - no changes from cycle 1","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:28:05.581568-08:00","updated_at":"2025-12-25T19:28:05.581568-08:00","closed_at":"2025-12-25T19:28:05.581518-08:00","close_reason":"Squashed from 8 wisps"} {"id":"gt-4x1bi","title":"Digest: mol-deacon-patrol","description":"Patrol 20: Final cycle, all services healthy, handoff","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T20:53:50.12613-08:00","updated_at":"2025-12-25T20:53:50.12613-08:00","closed_at":"2025-12-25T20:53:50.12609-08:00","close_reason":"Squashed from 8 wisps"} {"id":"gt-4xas","title":"Merge fix/spawn-beads-path branch to main","description":"Branch has gt nudge command; main has notification deduplication. Both valuable.\n\nKey insight: Only ~10 commits diverged each way in mayor/rig.\n- Branch: 9509afa feat(nudge): Add gt nudge command (MISSING from main)\n- Main: d2fccd5 slot-based notification deduplication (KEEP)\n\nMerge plan:\n1. git merge fix/spawn-beads-path --no-ff\n2. Keep nudge.go from branch\n3. Keep notification.go from main\n4. Merge tmux.go (both NudgeSession AND SendKeysReplace)\n5. go build \u0026\u0026 go test\n6. Deploy to ~/.local/bin/gt","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-20T13:28:01.684557-08:00","updated_at":"2025-12-20T13:30:55.817964-08:00","closed_at":"2025-12-20T13:30:55.817964-08:00"} @@ -781,7 +782,6 @@ {"id":"gt-fuqx","title":"Merge: gt-ci84","description":"branch: polecat/slit\ntarget: main\nsource_issue: gt-ci84\nrig: gastown","status":"closed","priority":1,"issue_type":"merge-request","created_at":"2025-12-23T19:38:21.954136-08:00","updated_at":"2025-12-24T00:18:03.075287-08:00","closed_at":"2025-12-23T23:30:30.859023-08:00"} {"id":"gt-fuz6p","title":"Digest: mol-deacon-patrol","description":"Patrol 3: All healthy, quiet","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T00:29:38.649433-08:00","updated_at":"2025-12-25T00:29:38.649433-08:00","closed_at":"2025-12-25T00:29:38.649388-08:00","close_reason":"Squashed from 8 wisps"} {"id":"gt-fv80v","title":"Digest: mol-deacon-patrol","description":"Patrol 9: All healthy, no messages","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T17:58:55.897968-08:00","updated_at":"2025-12-25T17:58:55.897968-08:00","closed_at":"2025-12-25T17:58:55.897919-08:00","close_reason":"Squashed from 8 wisps"} -{"id":"gt-fyrlv","title":"Digest: mol-deacon-patrol","description":"Patrol 11: all clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T16:50:40.001788-08:00","updated_at":"2025-12-26T16:50:40.001788-08:00","closed_at":"2025-12-26T16:50:40.001749-08:00","close_reason":"Squashed from 9 wisps","dependencies":[{"issue_id":"gt-fyrlv","depends_on_id":"gt-wisp-z85","type":"parent-child","created_at":"2025-12-26T16:50:40.002574-08:00","created_by":"stevey"}]} {"id":"gt-fz2o1","title":"Digest: mol-deacon-patrol","description":"Patrol 5: clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T14:23:14.185469-08:00","updated_at":"2025-12-26T14:23:14.185469-08:00","closed_at":"2025-12-26T14:23:14.18543-08:00","close_reason":"Squashed from 9 wisps"} {"id":"gt-g0cp","title":"Digest: mol-deacon-patrol","description":"Patrol OK: town quiet","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-23T02:46:38.594856-08:00","updated_at":"2025-12-23T02:46:38.594856-08:00","closed_at":"2025-12-23T02:46:38.594818-08:00","close_reason":"Squashed from 5 wisps"} {"id":"gt-g1ud","title":"Direct test","description":"Testing direct bd create","status":"tombstone","priority":2,"issue_type":"message","created_at":"2025-12-20T17:45:55.058067-08:00","updated_at":"2025-12-25T14:12:42.282698-08:00","labels":["from:test-sender"],"deleted_at":"2025-12-25T14:12:42.282698-08:00","deleted_by":"daemon","delete_reason":"delete","original_type":"message"} @@ -908,6 +908,7 @@ {"id":"gt-ia0s","title":"Review: Beads Universal Data Plane documentation","description":"Review new docs/beads-data-plane.md (275 lines) for accuracy.\n\n## Commit\n- 54c8269: Add Beads Universal Data Plane documentation\n\n## Review focus\n- Accuracy of beads architecture description\n- Correct field mappings (mail → beads fields)\n- Two-level architecture (town vs rig beads) correctly explained","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-23T14:27:49.410707-08:00","updated_at":"2025-12-23T14:27:49.410707-08:00"} {"id":"gt-iahc","title":"Merge: gt-h6eq.6","description":"branch: polecat/keeper\ntarget: main\nsource_issue: gt-h6eq.6\nrig: gastown","status":"closed","priority":3,"issue_type":"merge-request","created_at":"2025-12-23T11:42:12.738221-08:00","updated_at":"2025-12-23T12:22:23.469304-08:00","closed_at":"2025-12-23T12:22:23.469304-08:00","close_reason":"Merged to main in gt-h6eq swarm"} {"id":"gt-ib6y","title":"Digest: mol-deacon-patrol @ 2025-12-24 19:48","description":"Patrol 19: All healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T19:48:16.252232-08:00","updated_at":"2025-12-24T19:48:16.252232-08:00","closed_at":"2025-12-24T19:48:16.252177-08:00","close_reason":"Squashed from wisp gt-h7w (9 issues)"} +{"id":"gt-ibnip","title":"Digest: mol-deacon-patrol","description":"Patrol 15: all clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T16:52:34.23124-08:00","updated_at":"2025-12-26T16:52:34.23124-08:00","closed_at":"2025-12-26T16:52:34.231199-08:00","close_reason":"Squashed from 9 wisps","dependencies":[{"issue_id":"gt-ibnip","depends_on_id":"gt-wisp-1bf","type":"parent-child","created_at":"2025-12-26T16:52:34.23213-08:00","created_by":"stevey"}]} {"id":"gt-ic0j","title":"🤝 HANDOFF: Timing fixes applied","description":"Fixed mayor attach timing bug. Completed: timing fix, gt-tulx, Emma beads-6v2. Remaining P1: gt-17zr, gt-kcee, gt-szsq. Run gt prime on startup.","status":"closed","priority":2,"issue_type":"message","created_at":"2025-12-18T22:19:57.731032-08:00","updated_at":"2025-12-18T23:28:33.950423-08:00","closed_at":"2025-12-18T23:28:33.950423-08:00"} {"id":"gt-ictki","title":"Digest: mol-deacon-patrol","description":"Patrol complete: 2 mayor handoffs (not for deacon), all agents healthy, no orphans","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T14:18:54.990463-08:00","updated_at":"2025-12-26T14:18:54.990463-08:00","closed_at":"2025-12-26T14:18:54.990425-08:00","close_reason":"Squashed from 9 wisps"} {"id":"gt-id36","title":"Deacon Kernel: event processing molecule architecture","description":"\nExtend the Deacon from \"health orchestrator\" to \"event processing kernel\" that runs a \nmolecule (rounds) each wake cycle, like an OS kernel scheduler.\n\n## Core Insight\n\nThe Deacon already has:\n- Wake cycle (daemon poke, timer, lifecycle request)\n- Mail as event queue\n- Health scanning\n- Lifecycle processing\n\nBut it is REACTIVE. This epic makes it PROACTIVE with a structured molecule:\n\n```\nDeacon Wake\n├── Step 0: Session Check (should I cycle myself?)\n├── Step 1: Health Scan (Mayor, Witnesses, Crew, Refineries)\n├── Step 2: Lifecycle Processing (cycle/restart/shutdown requests)\n├── Step 3: Plugin Execution (scheduled, event-triggered, human-requested)\n├── Step 4: Event Callbacks (timers, subscriptions)\n└── Step 5: Heartbeat + Wait\n```\n\n## Key Design Decisions\n\n1. **Session cycling first** - Token costs are quadratic with session length.\n Deacon should aggressively cycle to fresh sessions. First step of every\n wake is \"do I need a new session?\" based on context budget.\n\n2. **Pinned bead with marching orders** - A pinned bead (like gt prime for\n agents) defines the Deacon's rounds molecule. This is the Deacon's\n \"kernel\" - its operating loop.\n\n3. **Keepalive file for daemon quieting** - Instead of daemon tmux-poking\n the Deacon (which interrupts work), Deacon writes a keepalive file.\n Daemon reads it and backs off. Worst case: Deacon forgets, gets one\n extra heartbeat it squelches.\n\n4. **Molecule-based rounds** - The wake cycle becomes a molecule with steps.\n Each step can have plugins (inline attention). Steps can be added/modified\n by updating the pinned bead.\n\n## Architecture\n\n```\nGo Daemon (minimal, dumb)\n├── Reads {townRoot}/deacon/keepalive.json\n├── If fresh: do nothing\n├── If stale: poke Deacon (fallback)\n└── Process lifecycle requests (still daemon's job)\n\nDeacon (Claude agent, smart)\n├── Wakes: poke, timer, mail event\n├── Writes keepalive (quiets daemon for duration of rounds)\n├── Runs rounds molecule:\n│ ├── session-check: cycle if context budget low\n│ ├── health-scan: check agents, remediate\n│ ├── lifecycle: process requests\n│ ├── plugins: run scheduled/triggered plugins\n│ ├── events: process timer/event callbacks\n│ └── complete: update heartbeat, wait\n└── Reads marching orders from pinned bead\n```\n\n## Relation to Existing Work\n\n- Extends gt-5af (Deacon infrastructure) - CLOSED\n- Relates to gt-axz (Plugin architecture) - P3\n- Fits into phase3-deacon of gt-ngpz (Christmas Plan)\n- Enables gt-976 (Crew lifecycle) as part of health-scan step\n","status":"closed","priority":1,"issue_type":"epic","created_at":"2025-12-20T21:46:08.076178-08:00","updated_at":"2025-12-25T20:45:33.620523-08:00","closed_at":"2025-12-25T20:45:33.620523-08:00","close_reason":"Deacon kernel operational: running mol-deacon-patrol, processing callbacks, health scanning. Keepalive and plugin scheduler are polish items.","dependencies":[{"issue_id":"gt-id36","depends_on_id":"gt-976","type":"blocks","created_at":"2025-12-20T21:48:05.215593-08:00","created_by":"daemon"}]} @@ -1112,7 +1113,6 @@ {"id":"gt-md2rg","title":"Test Patrol for Bonding","description":"Parent issue for mol bond CLI test","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T02:11:14.237475-08:00","updated_at":"2025-12-25T02:11:14.63729-08:00","closed_at":"2025-12-25T02:11:14.63729-08:00","close_reason":"Closed"} {"id":"gt-md2rg.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-md2rg\nbonded_ref: arm-toast\nbonded_at: 2025-12-23T10:00:00Z\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T02:11:14.340033-08:00","updated_at":"2025-12-25T02:11:14.533784-08:00","closed_at":"2025-12-25T02:11:14.533784-08:00","close_reason":"Closed","dependencies":[{"issue_id":"gt-md2rg.1","depends_on_id":"gt-md2rg","type":"parent-child","created_at":"2025-12-25T02:11:14.340492-08:00","created_by":"daemon"}]} {"id":"gt-mdgt8","title":"Convert formula files from YAML to JSON","description":"Formulas currently use .formula.yaml but the project avoids YAML. Convert to .formula.json for consistency with the rest of the codebase. This blocks implementing compose operators (advice, expand, etc.) since the schema needs to be right first.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-25T01:23:06.149396-08:00","updated_at":"2025-12-25T01:47:23.273434-08:00","closed_at":"2025-12-25T01:47:23.273434-08:00","close_reason":"Converted all 9 formula files from YAML to JSON"} -{"id":"gt-mf70m","title":"Digest: mol-deacon-patrol","description":"Patrol 10: all clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T16:50:12.30971-08:00","updated_at":"2025-12-26T16:50:12.30971-08:00","closed_at":"2025-12-26T16:50:12.309675-08:00","close_reason":"Squashed from 9 wisps","dependencies":[{"issue_id":"gt-mf70m","depends_on_id":"gt-wisp-1gh","type":"parent-child","created_at":"2025-12-26T16:50:12.310491-08:00","created_by":"stevey"}]} {"id":"gt-mfatq","title":"Digest: mol-deacon-patrol","description":"Patrol 17: Nominal","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T23:52:57.848245-08:00","updated_at":"2025-12-24T23:52:57.848245-08:00","closed_at":"2025-12-24T23:52:57.848212-08:00","close_reason":"Squashed from 8 wisps"} {"id":"gt-mh5s","title":"Refinery gates: test/lint/build before merge","description":"Before merging polecat work to main, run configurable quality gates.\n\n**From VC**: internal/gates/ - parallel execution with timeout, any failure = overall failure.\n\n**Gas Town implementation**: Refinery config with gate commands:\n```yaml\ngates:\n test:\n cmd: go test ./...\n timeout: 5m\n lint:\n cmd: golangci-lint run\n timeout: 2m\n build:\n cmd: go build ./...\n timeout: 3m\nparallel: true\n```\n\nIf gates fail, don't merge. Polecat can iterate and retry.\n\n**Value**: Prevents broken code from reaching main. VC had 90.9% gate pass rate.\n\n**VC complexity**: ~200 lines Go\n**Gas Town complexity**: ~10 lines YAML","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-20T20:30:12.44681-08:00","updated_at":"2025-12-20T20:30:12.44681-08:00","dependencies":[{"issue_id":"gt-mh5s","depends_on_id":"gt-zhpa","type":"parent-child","created_at":"2025-12-20T20:30:27.402708-08:00","created_by":"daemon"}]} {"id":"gt-mjso","title":"Merge: gt-rixa","description":"branch: polecat/furiosa\ntarget: main\nsource_issue: gt-rixa\nrig: gastown","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-21T14:09:26.367745-08:00","updated_at":"2025-12-21T17:20:27.506572-08:00","closed_at":"2025-12-21T17:20:27.506572-08:00","close_reason":"ORPHANED: Branch never pushed, worktree deleted"} @@ -1281,7 +1281,6 @@ {"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)"} {"id":"gt-pyqv","title":"Work on ga-ct2: Add MR workflow to polecat completion. Wh...","description":"Work on ga-ct2: Add MR workflow to polecat completion. When polecat completes work, auto-create MR to integration branch. When done, submit MR (not PR) to integration branch for Refinery.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-19T22:58:35.473928-08:00","updated_at":"2025-12-21T17:20:42.831549-08:00"} {"id":"gt-pytfu","title":"Digest: mol-deacon-patrol","description":"Patrol 16: All clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T16:33:56.257524-08:00","updated_at":"2025-12-25T16:33:56.257524-08:00","closed_at":"2025-12-25T16:33:56.257491-08:00"} -{"id":"gt-pze3g","title":"Digest: mol-deacon-patrol","description":"Patrol 12: all clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T16:51:08.053558-08:00","updated_at":"2025-12-26T16:51:08.053558-08:00","closed_at":"2025-12-26T16:51:08.053517-08:00","close_reason":"Squashed from 9 wisps","dependencies":[{"issue_id":"gt-pze3g","depends_on_id":"gt-wisp-d7g","type":"parent-child","created_at":"2025-12-26T16:51:08.054358-08:00","created_by":"stevey"}]} {"id":"gt-q16tj","title":"Digest: mol-deacon-patrol","description":"Patrol complete: inbox empty, all agents healthy, fixed invalid hook attachment on gt-w98d","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T13:18:37.954041-08:00","updated_at":"2025-12-26T13:18:37.954041-08:00","closed_at":"2025-12-26T13:18:37.954007-08:00","close_reason":"Squashed from 9 wisps"} {"id":"gt-q1z4","title":"Digest: mol-deacon-patrol","description":"Patrol 13: Routine","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T22:37:57.933025-08:00","updated_at":"2025-12-24T22:37:57.933025-08:00","closed_at":"2025-12-24T22:37:57.932989-08:00","close_reason":"Squashed from 8 wisps"} {"id":"gt-q3ac","title":"Digest: mol-deacon-patrol @ 2025-12-24 19:24","description":"Patrol 9: quiet","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T19:24:50.821721-08:00","updated_at":"2025-12-24T19:24:50.821721-08:00","closed_at":"2025-12-24T19:24:50.821645-08:00","close_reason":"Squashed from wisp gt-dri (9 issues)"} @@ -1398,7 +1397,7 @@ {"id":"gt-selw","title":"gt spawn: add --polecat flag for explicit worker selection","description":"Currently gt spawn requires positional arg format:\n```\ngt spawn gastown/Angharad --issue gt-xyz\n```\n\nBut I tried the more intuitive flag form:\n```\ngt spawn --issue gt-xyz --polecat Angharad\n```\n\nThis failed with 'unknown flag: --polecat'.\n\nThe flag form is more discoverable and consistent with other commands. Add --polecat flag as alternative to positional arg.","status":"closed","priority":2,"issue_type":"bug","created_at":"2025-12-19T01:41:38.540563-08:00","updated_at":"2025-12-19T01:57:17.0307-08:00","closed_at":"2025-12-19T01:57:17.0307-08:00"} {"id":"gt-shj28","title":"Digest: mol-deacon-patrol","description":"P15: stable","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:59:23.72785-08:00","updated_at":"2025-12-25T19:59:23.72785-08:00","closed_at":"2025-12-25T19:59:23.72782-08:00"} {"id":"gt-shnp","title":"Create Refinery role template","description":"Add Refinery template to internal/templates/roles/:\n- refinery.md.tmpl with full role context\n- Variables: rig name, working directory, handoff bead ID\n- Update SeedRoleTemplates to include it\n- gt prime uses this template for Refinery context","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-19T18:09:28.951284-08:00","updated_at":"2025-12-25T20:38:42.320178-08:00","closed_at":"2025-12-25T20:38:42.320178-08:00","close_reason":"Already implemented: refinery.md.tmpl exists, CLAUDE.md exists at ~/gt/gastown/refinery/, gt prime detects RoleRefinery","dependencies":[{"issue_id":"gt-shnp","depends_on_id":"gt-ktal","type":"blocks","created_at":"2025-12-19T18:09:39.706849-08:00","created_by":"daemon"}]} -{"id":"gt-sij0a","title":"GT_ROLE env var not set correctly for crew workers","status":"pinned","priority":1,"issue_type":"bug","created_at":"2025-12-26T16:49:12.570524-08:00","updated_at":"2025-12-26T16:49:25.339202-08:00"} +{"id":"gt-sij0a","title":"GT_ROLE env var not set correctly for crew workers","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-26T16:49:12.570524-08:00","updated_at":"2025-12-26T16:52:27.307259-08:00","closed_at":"2025-12-26T16:52:27.307259-08:00","close_reason":"Fixed GT_ROLE not being set for crew workers in crew_at.go and crew_lifecycle.go"} {"id":"gt-sj02z","title":"Digest: mol-deacon-patrol","description":"Patrol 16: Quiet","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T19:19:09.886984-08:00","updated_at":"2025-12-25T19:19:09.886984-08:00","closed_at":"2025-12-25T19:19:09.886929-08:00"} {"id":"gt-sl5rw","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 20: final before handoff","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T13:31:45.905226-08:00","updated_at":"2025-12-26T13:31:45.905226-08:00","closed_at":"2025-12-26T13:31:45.90519-08:00","close_reason":"Squashed from 9 wisps"} {"id":"gt-slo","title":"Fix TestHasPolecat test failure","status":"tombstone","priority":0,"issue_type":"bug","created_at":"2025-12-17T17:30:19.474356-08:00","updated_at":"2025-12-25T01:30:41.67682-08:00","deleted_at":"2025-12-25T01:30:41.67682-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"bug"} @@ -1511,7 +1510,6 @@ {"id":"gt-u82","title":"Design: Mayor session cycling and handoff","description":"Design for Mayor session cycling and structured handoff.\n\n## Overview\n\nMayor coordinates across all rigs and runs for extended periods. Needs session cycling pattern with structured handoff notes.\n\n## Key Elements\n\n1. Session cycling recognition (when to cycle)\n2. Handoff note format (structured state capture)\n3. Handoff delivery (mail to self)\n4. Fresh session startup (reading and resuming)\n\n## Subtasks (implementation)\n\n- gt-g2d: Mayor session cycling prompting\n- gt-sye: Mayor startup protocol prompting\n- gt-vci: Mayor handoff mail template\n- gt-1le: town handoff command (optional, P2)\n\n**Design complete.** Each subtask has full specification in its description.","status":"tombstone","priority":1,"issue_type":"epic","created_at":"2025-12-15T20:03:16.125725-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":"epic"} {"id":"gt-u8df5","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 13: nominal","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T15:45:59.223504-08:00","updated_at":"2025-12-26T15:45:59.223504-08:00","closed_at":"2025-12-26T15:45:59.223473-08:00","close_reason":"Squashed from 9 wisps","dependencies":[{"issue_id":"gt-u8df5","depends_on_id":"gt-wisp-b7t","type":"parent-child","created_at":"2025-12-26T15:45:59.224201-08:00","created_by":"stevey"}]} {"id":"gt-u8ybw","title":"Digest: mol-deacon-patrol","description":"Patrol 18: Nominal","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T23:53:19.814904-08:00","updated_at":"2025-12-24T23:53:19.814904-08:00","closed_at":"2025-12-24T23:53:19.81487-08:00","close_reason":"Squashed from 8 wisps"} -{"id":"gt-u9j87","title":"Digest: mol-deacon-patrol","description":"Patrol 13: all clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T16:51:39.007112-08:00","updated_at":"2025-12-26T16:51:39.007112-08:00","closed_at":"2025-12-26T16:51:39.007075-08:00","close_reason":"Squashed from 9 wisps","dependencies":[{"issue_id":"gt-u9j87","depends_on_id":"gt-wisp-hrp","type":"parent-child","created_at":"2025-12-26T16:51:39.00791-08:00","created_by":"stevey"}]} {"id":"gt-ua5f","title":"Digest: mol-deacon-patrol","description":"Patrol: read mayor handoff (gt-mzal boot design), all agents up, furiosa working gt-oiv0, note: gt-4eim orphaned (angharad gone)","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-22T21:29:07.064593-08:00","updated_at":"2025-12-22T21:29:07.064593-08:00","closed_at":"2025-12-22T21:29:07.064557-08:00","close_reason":"Squashed from 5 wisps"} {"id":"gt-uadg","title":"Digest: mol-deacon-patrol","description":"Patrol complete: all agents healthy, no lifecycle requests, 9 in-progress items noted","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T23:20:11.959796-08:00","updated_at":"2025-12-24T23:20:11.959796-08:00","closed_at":"2025-12-24T23:20:11.959761-08:00","close_reason":"Squashed from 8 wisps"} {"id":"gt-uapyg","title":"Digest: mol-deacon-patrol","description":"Patrol cycle 15: nominal","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T15:46:42.564849-08:00","updated_at":"2025-12-26T15:46:42.564849-08:00","closed_at":"2025-12-26T15:46:42.564806-08:00","close_reason":"Squashed from 9 wisps","dependencies":[{"issue_id":"gt-uapyg","depends_on_id":"gt-wisp-s73","type":"parent-child","created_at":"2025-12-26T15:46:42.565658-08:00","created_by":"stevey"}]} @@ -1566,7 +1564,6 @@ {"id":"gt-vjv","title":"Add bulk session stop command (gt session stop --all)","description":"When decommissioning a rig, need to stop multiple sessions one at a time. A --all or --rig flag would allow: gt session stop --rig gastown","status":"closed","priority":3,"issue_type":"feature","created_at":"2025-12-18T11:33:33.394649-08:00","updated_at":"2025-12-18T11:38:51.399298-08:00","closed_at":"2025-12-18T11:38:51.399298-08:00"} {"id":"gt-vjw","title":"Swarm learning: Session cleanup missing from swarm workflow","description":"## Problem\n\nAfter Enders Game swarm completed (18 issues merged), 16 polecat sessions were left running but idle. No automated cleanup occurred.\n\n## What Should Happen\n\n1. Witness detects polecat completed work (idle at prompt)\n2. Witness verifies git state is clean\n3. Witness shuts down session\n4. Witness reports completion to Mayor\n\n## GGT Components\n\n- gt-cxx: Witness context cycling (covers self-cycling)\n- gt-u1j.9: Witness daemon heartbeat loop\n- gt-kmn.6: Witness swarm landing protocol\n\n## Recommendation\n\nAdd to Witness responsibilities:\n- Monitor for 'work complete' signals (DONE keyword, idle detection)\n- Automated session shutdown after verification\n- Swarm completion reporting to Mayor\n\nSee also: architecture.md 'Worker Cleanup (Witness-Owned)' section which describes this but it wasn't implemented in PGT.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-16T01:27:52.796587-08:00","updated_at":"2025-12-25T01:30:41.67682-08:00","deleted_at":"2025-12-25T01:30:41.67682-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"} {"id":"gt-vlpvi","title":"Digest: mol-deacon-patrol","description":"Patrol 15: All agents healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T03:56:28.353902-08:00","updated_at":"2025-12-25T03:56:28.353902-08:00","closed_at":"2025-12-25T03:56:28.35387-08:00","close_reason":"Squashed from 8 wisps"} -{"id":"gt-vlrot","title":"Digest: mol-deacon-patrol","description":"Patrol 8: all clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-26T16:49:15.096297-08:00","updated_at":"2025-12-26T16:49:15.096297-08:00","closed_at":"2025-12-26T16:49:15.096253-08:00","close_reason":"Squashed from 9 wisps","dependencies":[{"issue_id":"gt-vlrot","depends_on_id":"gt-wisp-t1n","type":"parent-child","created_at":"2025-12-26T16:49:15.097126-08:00","created_by":"stevey"}]} {"id":"gt-vm85o","title":"Mol Mall: Formula Package Registry","description":"A package registry for sharing and discovering formulas, schematics, and protocols.\n\n## Concept\n\nLike npm/Maven/Go modules but for workflow definitions.\n\n```\nmol-mall.io/\n├── @gastown/ # Official Gas Town formulas\n│ ├── shiny\n│ ├── polecat-work\n│ └── release\n├── @acme-corp/ # Enterprise org (private)\n│ └── compliance-review\n├── @linus/ # Individual publisher\n│ └── kernel-review\n└── community/ # Unscoped public formulas\n └── towers-of-hanoi\n```\n\n## Resolution Hierarchy\n\n```\n1. Project: ./.beads/formulas/ # Project-specific\n2. Rig: ~/gt/\u003crig\u003e/.formulas/ # Rig-wide\n3. Town: ~/gt/.formulas/ # Town-wide (mayor stdlib)\n4. User: ~/.gastown/formulas/ # Personal collection\n5. Mall: mol-mall.io/ # Published packages\n```\n\n## Package Manifest\n\n```toml\n[package]\nname = \"shiny\"\nversion = \"1.2.0\"\ndescription = \"Engineer in a Box\"\nauthors = [\"Gas Town \u003cgastown@example.com\u003e\"]\nlicense = \"MIT\"\n\n[dependencies]\n\"@gastown/review-patterns\" = \"^2.0\"\n```\n\n## Distribution Scenarios\n\n1. **Celebrity Formulas**: Expert-curated workflows (e.g., Linus kernel review)\n2. **Enterprise Compliance**: Private company formulas\n3. **Standard Library**: @gastown/* blessed defaults\n4. **Community Ecosystem**: Varying quality, needs ratings/verification\n\n## Open Questions\n\n1. Versioning semantics - SemVer? Breaking change rules?\n2. Security model - sandboxing? signing? permissions?\n3. Private registries - self-hosted? authentication?\n4. Lock files - formulas.lock format?\n\n## Related\n\n- docs/formula_evolution.md - package ecosystem parallel section\n- gt-8ws7o - Schematic (can be published)\n- gt-y3jb9 - Protocol (can be published)\n","status":"open","priority":4,"issue_type":"epic","created_at":"2025-12-26T01:01:24.551028-08:00","updated_at":"2025-12-26T01:01:24.551028-08:00"} {"id":"gt-vmk7","title":"Guardrail: Verify commits exist before closing polecat issues","description":"## Updated Approach (ZFC)\n\nThe original proposal was for mechanical guardrails in bd close. This contradicts the ZFC principle: all decisions go to models, not code.\n\n## Correct Solution\n\nThe verification should happen in **mol-polecat-arm** execute step, not bd close:\n\nIn the pre-kill-verify action:\n```bash\n# Current steps\ngit status # Must be clean\ngit log origin/main..HEAD # Check for unpushed\nbd show \u003cassigned-issue\u003e # Verify closed/deferred\n\n# ADD: Verify productive work\ngit log --oneline --grep='\u003cissue-id\u003e' | head -1\n# If no commits AND issue being closed as 'done' → flag for review\n```\n\nThe agent (Witness) makes the decision. The mol gives it the verification step.\n\n## Why Not Code Guardrails\n\nPolecats have legitimate reasons to close issues without commits:\n- Already done (someone else fixed it)\n- Deferred (out of scope)\n- Escalated (needs human decision)\n- Duplicate (merged with another issue)\n\nA code guardrail would block all these. The mol step lets the agent verify AND make the judgment call.\n\n## Implementation\n\nUpdate mol-polecat-arm execute step to include commit verification for 'done' closures.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-23T14:35:24.695717-08:00","updated_at":"2025-12-25T00:51:13.479024-08:00","closed_at":"2025-12-25T00:51:13.479024-08:00","close_reason":"Added commit verification to mol-polecat-arm execute step. Agent verifies issue-referencing commits exist for done closures per ZFC principle."} {"id":"gt-vmm9","title":"Digest: mol-deacon-patrol @ 2025-12-24 19:26","description":"Patrol 13: quiet","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T19:26:56.830842-08:00","updated_at":"2025-12-24T19:26:56.830842-08:00","closed_at":"2025-12-24T19:26:56.830768-08:00","close_reason":"Squashed from wisp gt-s46 (9 issues)"}