bd sync: 2025-12-25 15:14:23

This commit is contained in:
Steve Yegge
2025-12-25 15:14:23 -08:00
parent fca672d907
commit fecef96b07

View File

@@ -189,6 +189,7 @@
{"id":"gt-4qiqp","title":"Digest: mol-deacon-patrol","description":"Patrol 5: All clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T00:01:10.250364-08:00","updated_at":"2025-12-25T00:01:10.250364-08:00","closed_at":"2025-12-25T00:01:10.250335-08:00","close_reason":"Squashed from 8 wisps"}
{"id":"gt-4ry6","title":"Digest: mol-deacon-patrol","description":"Patrol 3: Quick scan, stable","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T23:06:31.826181-08:00","updated_at":"2025-12-24T23:06:31.826181-08:00","closed_at":"2025-12-24T23:06:31.826149-08:00","close_reason":"Squashed from 8 wisps"}
{"id":"gt-4tfp","title":"Digest: mol-deacon-patrol","description":"Patrol #5: Stable","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T23:31:29.654233-08:00","updated_at":"2025-12-24T23:31:29.654233-08:00","closed_at":"2025-12-24T23:31:29.654202-08:00","close_reason":"Squashed from 8 wisps"}
{"id":"gt-4u180","title":"Digest: mol-deacon-patrol","description":"Patrol 17: All healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T15:09:00.821464-08:00","updated_at":"2025-12-25T15:09:00.821464-08:00","closed_at":"2025-12-25T15:09:00.821437-08:00","close_reason":"Squashed from 8 wisps","dependencies":[{"issue_id":"gt-4u180","depends_on_id":"gt-3wx4b","type":"parent-child","created_at":"2025-12-25T15:09:00.82215-08:00","created_by":"deacon"}]}
{"id":"gt-4u5z","title":"Refinery as Worktree: Local MR Integration","description":"Move refinery from separate clone to git worktree. Polecats stop pushing to origin - refinery sees their branches locally. MRs become wisps (ephemeral). Only main gets pushed after merge.\n\n## Goals\n- Origin stays clean (only main + beads-sync branches)\n- No orphaned polecat branches ever\n- Simpler mental model for MR coordination\n- Faster integration (no network for local MR ops)\n\n## Trade-offs\n- Machine crash = redo pending work (acceptable, beads track state)\n- Future federation needs different approach (bundles or integration branch)\n\n## Components Affected\n- Rig initialization (refinery setup)\n- Spawn/polecat workflow (remove origin push)\n- Refinery manager (local branch access)\n- Documentation (architecture, workflows)\n- Molecule templates (remove push instructions)","status":"closed","priority":2,"issue_type":"epic","created_at":"2025-12-23T20:24:56.517669-08:00","updated_at":"2025-12-23T21:28:22.512455-08:00","closed_at":"2025-12-23T21:28:22.512455-08:00","close_reason":"Complete: refinery as worktree, local branches, wisp MRs"}
{"id":"gt-4u5z.1","title":"Update rig init to create refinery as worktree","description":"Modify rig initialization to create refinery as a git worktree instead of a separate clone.\n\n## Changes\n- internal/rig/init.go or similar - change refinery setup\n- Create worktree at \u003crig\u003e/refinery/ with branch 'refinery'\n- Remove clone logic for refinery\n- Update any path assumptions\n\n## Considerations\n- Refinery worktree should track main (or its own branch?)\n- May need to handle existing rigs (migration path)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T20:25:25.927013-08:00","updated_at":"2025-12-23T20:31:07.100875-08:00","closed_at":"2025-12-23T20:31:07.100875-08:00","close_reason":"Rig init now creates refinery as worktree of mayor clone","dependencies":[{"issue_id":"gt-4u5z.1","depends_on_id":"gt-4u5z","type":"parent-child","created_at":"2025-12-23T20:25:25.92745-08:00","created_by":"daemon"}]}
{"id":"gt-4u5z.2","title":"Remove origin push from polecat workflow","description":"Polecats should no longer push their branches to origin.\n\n## Changes\n- internal/cmd/done.go - remove 'git push origin HEAD'\n- internal/cmd/mq_submit.go - remove branch push\n- Molecule templates - remove push instructions\n- Any hooks that push polecat branches\n\n## Verification\n- Polecat completes work without pushing\n- Branch stays local\n- Refinery can still see the branch (via shared .git)","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T20:25:27.079456-08:00","updated_at":"2025-12-23T20:33:43.173059-08:00","closed_at":"2025-12-23T20:33:43.173059-08:00","close_reason":"Removed origin push from done.go, mq_submit.go, spawn.go, and molecule templates","dependencies":[{"issue_id":"gt-4u5z.2","depends_on_id":"gt-4u5z","type":"parent-child","created_at":"2025-12-23T20:25:27.081989-08:00","created_by":"daemon"},{"issue_id":"gt-4u5z.2","depends_on_id":"gt-4u5z.1","type":"blocks","created_at":"2025-12-23T20:25:43.547484-08:00","created_by":"daemon"}]}
@@ -719,6 +720,7 @@
{"id":"gt-godo","title":"Digest: mol-deacon-patrol","description":"Patrol 16: OK","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T21:01:17.323252-08:00","updated_at":"2025-12-24T21:01:17.323252-08:00","closed_at":"2025-12-24T21:01:17.323218-08:00","close_reason":"Squashed from 8 wisps"}
{"id":"gt-gox90","title":"Digest: mol-deacon-patrol","description":"Patrol 18: all clear","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T11:06:01.664845-08:00","updated_at":"2025-12-25T11:06:01.664845-08:00","closed_at":"2025-12-25T11:06:01.664813-08:00","close_reason":"Squashed from 8 wisps"}
{"id":"gt-gp6i","title":"Witness cleanup should know worktree parent repo","description":"Witness had to discover that polecat worktrees are created from mayor/rig, not the rig root.\n\n## Problem\nWhen cleaning up polecat/tracer:\n- Witness ran git worktree remove from gastown/ - failed\n- Had to discover worktree was from mayor/rig\n- Then removed correctly\n\n## Improvement\nWitness should know the worktree parent repo path (mayor/rig) and clean up from there directly.\n\n## Evidence\nTracer bullet 2025-12-23: Witness took extra steps to figure out cleanup path.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T21:58:29.302337-08:00","updated_at":"2025-12-23T21:58:29.302337-08:00"}
{"id":"gt-gpgdv","title":"Optimize: Share stepMap across control flow operators","description":"In ApplyControlFlow, both ApplyBranches and ApplyGates call buildStepMap() separately:\n\n```go\nfunc ApplyBranches(steps []*Step, compose *ComposeRules) ([]*Step, error) {\n stepMap := buildStepMap(steps) // Called here\n ...\n}\n\nfunc ApplyGates(steps []*Step, compose *ComposeRules) ([]*Step, error) {\n stepMap := buildStepMap(steps) // Called again here\n ...\n}\n```\n\nThis is inefficient for large formulas. Options:\n\n1. Pass stepMap as a parameter to ApplyBranches/ApplyGates\n2. Create an internal version that accepts stepMap, keep public API unchanged\n3. Build once in ApplyControlFlow and pass down\n\nLow priority since formula sizes are typically small.","status":"open","priority":4,"issue_type":"chore","created_at":"2025-12-25T15:14:10.961538-08:00","updated_at":"2025-12-25T15:14:10.961538-08:00","dependencies":[{"issue_id":"gt-gpgdv","depends_on_id":"gt-8tmz.4","type":"blocks","created_at":"2025-12-25T15:14:19.033379-08:00","created_by":"daemon"}]}
{"id":"gt-gq3f","title":"Digest: mol-deacon-patrol","description":"Patrol #8","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T22:23:23.407978-08:00","updated_at":"2025-12-24T22:23:23.407978-08:00","closed_at":"2025-12-24T22:23:23.407938-08:00","close_reason":"Squashed from 8 wisps"}
{"id":"gt-gs1ua","title":"Digest: mol-deacon-patrol","description":"Patrol 7: routine, all healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T13:43:24.284618-08:00","updated_at":"2025-12-25T13:43:24.284618-08:00","closed_at":"2025-12-25T13:43:24.284589-08:00","close_reason":"Squashed from 8 wisps","dependencies":[{"issue_id":"gt-gs1ua","depends_on_id":"gt-9ae69","type":"parent-child","created_at":"2025-12-25T13:43:24.28532-08:00","created_by":"stevey"}]}
{"id":"gt-gswn","title":"Integration test: agent waits for CI via gate","description":"End-to-end test of the gate workflow.\n\n## Test Scenario\n1. Agent creates gate: bd gate create --await gh:run:123 --timeout 5m --notify beads/dave\n2. Agent writes handoff and exits\n3. Deacon patrol checks gate condition\n4. (Mock) GitHub run completes\n5. Deacon notifies waiter and closes gate\n6. New agent session reads mail and resumes\n\n## Test Requirements\n- Mock GitHub API responses\n- Test timeout path\n- Test multiple waiters\n- Verify mail notifications sent\n\n## Moved from beads\nOriginally bd-rl5t. Tests Deacon patrol which is in gastown.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T12:23:56.582834-08:00","updated_at":"2025-12-23T12:23:56.582834-08:00","dependencies":[{"issue_id":"gt-gswn","depends_on_id":"gt-dh65","type":"blocks","created_at":"2025-12-23T12:24:01.787444-08:00","created_by":"stevey"}]}
@@ -991,6 +993,7 @@
{"id":"gt-ne1t","title":"Design molecule step hooks","description":"Hooks that fire between molecule steps. When a bead in a molecule closes, trigger hook that can spawn agent attention to prompts/requests. This enables reactive orchestration - the molecule drives, hooks respond. Gas Town feature built on Beads data plane.","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-21T17:53:14.568075-08:00","updated_at":"2025-12-21T17:53:14.568075-08:00"}
{"id":"gt-neim","title":"Digest: mol-deacon-patrol","description":"Patrol: dave handoff (vision docs, 7 design gaps filed), furiosa tracer bullet on gt-oiv0, all agents up","status":"closed","priority":4,"issue_type":"task","created_at":"2025-12-22T22:38:37.785872-08:00","updated_at":"2025-12-22T22:38:37.785872-08:00","closed_at":"2025-12-22T22:38:37.785832-08:00","close_reason":"Squashed from 5 wisps"}
{"id":"gt-ng6g","title":"Implement await type handlers (gh:run, gh:pr, timer, human, mail)","description":"Implement condition checking for each await type.\n\n## Handlers Needed\n- gh:run:\u003cid\u003e - Check GitHub Actions run status via gh CLI\n- gh:pr:\u003cid\u003e - Check PR merged/closed status via gh CLI \n- timer:\u003cduration\u003e - Simple elapsed time check\n- human:\u003cprompt\u003e - Check for human approval (via mail?)\n- mail:\u003cpattern\u003e - Check for mail matching pattern\n\n## Interface\n```go\ntype AwaitHandler interface {\n Check(awaitID string) (completed bool, result string, err error)\n}\n```\n\n## Moved from beads\nOriginally bd-2l03. Deacon handlers belong in gastown.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T12:19:12.427881-08:00","updated_at":"2025-12-23T12:19:12.427881-08:00","dependencies":[{"issue_id":"gt-ng6g","depends_on_id":"gt-dh65","type":"blocks","created_at":"2025-12-23T12:19:32.734889-08:00","created_by":"stevey"}]}
{"id":"gt-ngch4","title":"Digest: mol-deacon-patrol","description":"Patrol 18: All healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T15:13:59.382339-08:00","updated_at":"2025-12-25T15:13:59.382339-08:00","closed_at":"2025-12-25T15:13:59.382309-08:00","close_reason":"Squashed from 8 wisps","dependencies":[{"issue_id":"gt-ngch4","depends_on_id":"gt-xng1d","type":"parent-child","created_at":"2025-12-25T15:13:59.383075-08:00","created_by":"deacon"}]}
{"id":"gt-nget1","title":"Digest: mol-deacon-patrol","description":"Patrol 3: routine, all healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T13:42:02.780682-08:00","updated_at":"2025-12-25T13:42:02.780682-08:00","closed_at":"2025-12-25T13:42:02.780653-08:00","close_reason":"Squashed from 8 wisps","dependencies":[{"issue_id":"gt-nget1","depends_on_id":"gt-e7dms","type":"parent-child","created_at":"2025-12-25T13:42:02.781399-08:00","created_by":"stevey"}]}
{"id":"gt-ngkd","title":"Work on gt-ogr: Fix rig count in tmux status bar. The cou...","description":"Work on gt-ogr: Fix rig count in tmux status bar. The count is showing wrong. Run 'bd show gt-ogr' for details.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-20T07:53:01.093695-08:00","updated_at":"2025-12-20T07:59:51.445668-08:00","closed_at":"2025-12-20T07:59:51.445668-08:00"}
{"id":"gt-ngpz","title":"mol-christmas-launch: 3-day execution plan","description":"\n\n---\n\n## Wisp Integration Wave Plan (added 2025-12-21)\n\nDependency-ordered execution for gt-3x0z (Wisp Molecules) + gt-rana (Patrol System):\n\n### Wave 1 (parallel - no blockers)\n- gt-3x0z.1: gt rig init creates .beads-ephemeral/\n- gt-3x0z.2: Configure bd for ephemeral molecule bonding\n- gt-3x0z.3: gt doctor checks for ephemeral health\n- gt-rana.1: Attachment field on pinned beads\n- gt-rana.3: mol-deacon-patrol definition\n\n### Wave 2 (after Wave 1)\n- gt-3x0z.4: gt spawn --molecule bonds ephemeral (GATE 1)\n- gt-rana.2: Daemon attachment detection\n\n### Wave 3-5 (sequential)\n- gt-3x0z.5, gt-3x0z.6 → gt-3x0z.7 → gt-3x0z.8 (GATE 2: squash)\n\n### Wave 6+ (patrol integration)\n- gt-rana.4: Basic patrol runner (needs gt-rana.3 + gt-3x0z.8)\n- gt-3x0z.9: mol-deacon-patrol uses wisp (needs gt-rana.3 + gt-3x0z.8)\n- Then: gt-rana.5-7, gt-3x0z.10-12\n\n### Key Gates\n1. gt-3x0z.4 - spawn/bond unlocks Phase 2\n2. gt-3x0z.8 - squash unlocks patrol integration\n3. gt-rana.4 - patrol runner unlocks Phase 2+ patrol\n","notes":"Postponed to New Year's launch. Christmas was too ambitious.","status":"deferred","priority":0,"issue_type":"epic","created_at":"2025-12-20T21:06:44.718065-08:00","updated_at":"2025-12-25T12:11:43.171436-08:00"}
@@ -1033,6 +1036,7 @@
{"id":"gt-oh90","title":"Test Patrol for Bonding","description":"Parent issue for mol bond CLI test","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T00:23:29.229339-08:00","updated_at":"2025-12-25T01:33:00.714435-08:00","closed_at":"2025-12-25T01:33:00.714435-08:00","close_reason":"Test pollution cleanup"}
{"id":"gt-oh90.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-oh90\nbonded_ref: arm-toast\nbonded_at: 2025-12-23T10:00:00Z\n","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T00:23:29.326738-08:00","updated_at":"2025-12-24T00:23:29.516266-08:00","closed_at":"2025-12-24T00:23:29.516266-08:00","close_reason":"Closed","dependencies":[{"issue_id":"gt-oh90.1","depends_on_id":"gt-oh90","type":"parent-child","created_at":"2025-12-24T00:23:29.327092-08:00","created_by":"daemon"}]}
{"id":"gt-oiv0","title":"Remove bd sync instruction from polecat startup workflow","description":"Polecats are instructed to run `bd sync --from-main` on startup (spawn.go:634).\n\n## Problem\n- Spawn command already syncs beads before spawning (line 239)\n- Polecats share rig-level beads via `.beads/redirect`\n- Multiple polecats starting simultaneously all try to sync same shared beads\n- This causes git conflicts/failures when many polecats spawn at once\n\n## Observed\nUser reported: 'all polecats failing on beads sync on startup in one run'\n\n## Fix\nRemove line 634 from buildWorkAssignmentMail():\n```\nbody.WriteString(\"2. Run \\`bd sync --from-main\\` to get fresh beads\\n\")\n```\n\nPolecats only need to sync at END of work (already in steps 5/7).\n\n## Files\n- internal/cmd/spawn.go: buildWorkAssignmentMail() and buildSpawnContext()","status":"closed","priority":1,"issue_type":"bug","assignee":"gastown/furiosa","created_at":"2025-12-21T23:45:52.25177-08:00","updated_at":"2025-12-22T22:21:03.03152-08:00","closed_at":"2025-12-22T22:21:03.03152-08:00","close_reason":"Merged to main"}
{"id":"gt-ojcmk","title":"Digest: mol-deacon-patrol","description":"Patrol 16: All healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T15:04:03.561869-08:00","updated_at":"2025-12-25T15:04:03.561869-08:00","closed_at":"2025-12-25T15:04:03.561837-08:00","close_reason":"Squashed from 8 wisps","dependencies":[{"issue_id":"gt-ojcmk","depends_on_id":"gt-m309o","type":"parent-child","created_at":"2025-12-25T15:04:03.562581-08:00","created_by":"deacon"}]}
{"id":"gt-olq2","title":"Digest: mol-deacon-patrol @ 2025-12-24 19:47","description":"Patrol 17: All healthy","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T19:47:44.403543-08:00","updated_at":"2025-12-24T19:47:44.403543-08:00","closed_at":"2025-12-24T19:47:44.403463-08:00","close_reason":"Squashed from wisp gt-2k1 (9 issues)"}
{"id":"gt-omql","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:30:42.862439-08:00","updated_at":"2025-12-25T01:33:00.945478-08:00","closed_at":"2025-12-25T01:33:00.945478-08:00","close_reason":"Test pollution cleanup"}
{"id":"gt-omql.1","title":"Test Polecat Arm","description":"Test child for bonding pattern","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-23T22:30:42.965828-08:00","updated_at":"2025-12-25T01:33:00.929021-08:00","closed_at":"2025-12-25T01:33:00.929021-08:00","close_reason":"Test pollution cleanup","dependencies":[{"issue_id":"gt-omql.1","depends_on_id":"gt-omql","type":"parent-child","created_at":"2025-12-23T22:30:42.966274-08:00","created_by":"daemon"}]}
@@ -1284,6 +1288,7 @@
{"id":"gt-uvpo6","title":"Digest: mol-deacon-patrol","description":"Patrol 5: All agents healthy, routine","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-25T01:16:30.625876-08:00","updated_at":"2025-12-25T01:16:30.625876-08:00","closed_at":"2025-12-25T01:16:30.625845-08:00","close_reason":"Squashed from 8 wisps"}
{"id":"gt-ux0f","title":"Digest: mol-deacon-patrol","description":"Patrol #16: Stable","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T23:34:42.184561-08:00","updated_at":"2025-12-24T23:34:42.184561-08:00","closed_at":"2025-12-24T23:34:42.184526-08:00","close_reason":"Squashed from 8 wisps"}
{"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-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","close_reason":"Squashed from 8 wisps"}
{"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"}
@@ -1409,6 +1414,7 @@
{"id":"gt-zivp","title":"mol-outpost-assign: Intelligent work routing to outposts","description":"The federation design shows outposts.yaml with a static policy section. Simple preference ordering is fine as config, but intelligent work routing should be a molecule.\n\nCurrent static approach:\n```yaml\npolicy:\n default_preference: [local, gce-burst, cloudrun-burst]\n```\n\nCases requiring cognition:\n- \"This is a long-running research task, route to VM not CloudRun\"\n- \"This touches sensitive code, keep local\"\n- \"These 5 issues are related, batch them to same outpost\"\n- \"CloudRun cost is high today, prefer local even if slower\"\n\n## Molecule: outpost-assign\nIntelligent work-to-outpost routing.\n\n## Step: classify-work\nAnalyze the issue/work item:\n- Expected duration (quick fix vs multi-hour)\n- Resource requirements\n- Sensitivity/security tier\n- Related work (same epic?)\n\n## Step: check-capacity\nQuery outpost status:\n- Current load on each\n- Cost accrued today\n- Health status\n\n## Step: select-outpost\nChoose optimal outpost based on:\n- Work classification\n- Capacity/cost\n- Policy constraints\nNeeds: classify-work, check-capacity\n\n## Step: emit-assignment\nRecord decision in beads for audit.\nNeeds: select-outpost\n\n## Notes\n- This molecule is invoked by Mayor/Witness when spawning\n- Simple cases can short-circuit to static policy\n- Full analysis only for ambiguous cases","status":"open","priority":3,"issue_type":"feature","created_at":"2025-12-20T03:26:17.964834-08:00","updated_at":"2025-12-20T03:26:17.964834-08:00"}
{"id":"gt-zko","title":"gt rig info: Show detailed rig information","description":"Add 'gt rig info \u003crig\u003e' command to show detailed rig status.\n\nShould show:\n- Rig path and git URL\n- Active polecats with status\n- Refinery status\n- Witness status\n- Recent activity\n- Beads summary (open issues count)","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-17T21:47:17.879255-08:00","updated_at":"2025-12-25T01:30:41.67682-08:00","dependencies":[{"issue_id":"gt-zko","depends_on_id":"gt-hw6","type":"blocks","created_at":"2025-12-17T22:22:47.502099-08:00","created_by":"daemon"}],"deleted_at":"2025-12-25T01:30:41.67682-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
{"id":"gt-zly","title":"Swarm learning: Beads database locality gap","description":"## PGT Bug (GGT Design Already Correct)\n\nMayor created issues in `~/ai/mayor/rigs/beads/.beads/` but polecats use `~/ai/beads/.beads/`. Different databases = polecats can't see Mayor's beads.\n\n**GGT Fix**: architecture.md already specifies:\n- All agents use BEADS_DIR pointing to rig-level `.beads/`\n- Lines 116-143: Beads Configuration for Multi-Agent\n- Lines 573-586: Rig-Level Beads via BEADS_DIR\n\nThis is a PGT implementation gap, not a design issue. GGT spawn must set BEADS_DIR correctly.","status":"tombstone","priority":2,"issue_type":"task","created_at":"2025-12-16T01:21:45.37072-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-zn35j","title":"Nested loop support in control flow","description":"Currently, nested loops (a loop inside a loop body) are not supported.\n\nIn expandLoopIteration(), the Loop field is intentionally not copied:\n```go\n// Note: Loop field intentionally not copied - nested loops need explicit support\n```\n\nTo support nested loops:\n1. After expanding the outer loop iteration, recursively call ApplyLoops on the body steps\n2. Handle nested iteration ID prefixing (e.g., `outer.iter1.inner.iter2.step`)\n3. Add tests for nested loop scenarios\n\nThis is a lower-priority enhancement since most real-world formulas use single-level loops.","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-25T15:13:49.880102-08:00","updated_at":"2025-12-25T15:13:49.880102-08:00","dependencies":[{"issue_id":"gt-zn35j","depends_on_id":"gt-8tmz.4","type":"blocks","created_at":"2025-12-25T15:14:18.859367-08:00","created_by":"daemon"}]}
{"id":"gt-zn9m","title":"142 instances of error suppression with _ = pattern","description":"Code has 142 instances of '_ = ' error suppression in non-test code.\nExamples:\n- internal/polecat/manager.go: _ = pool.Load() - ignores state loading\n- internal/daemon/notification.go: _ = os.WriteFile() - ignores file write\n- internal/mail/router.go: _ = r.notifyRecipient() - notification ignored\n\nThese create silent failures and hard-to-debug issues.\n\nOptions:\n1. Document intentional suppressions with comments\n2. Handle errors properly where appropriate\n3. At minimum, log suppressed errors at debug level","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-24T12:50:59.241303-08:00","updated_at":"2025-12-24T12:50:59.241303-08:00","dependencies":[{"issue_id":"gt-zn9m","depends_on_id":"gt-jo9n","type":"blocks","created_at":"2025-12-24T12:52:07.478225-08:00","created_by":"daemon"}]}
{"id":"gt-zniu","title":"gt park command for parking molecules on external deps","description":"Add `gt park` command for when polecat hits external dependency:\n\n```bash\ngt park --step=gt-mol.3 --waiting=\"beads:mol-run-assignee\"\n```\n\nThis command:\n1. Adds blocked_by: external:beads:mol-run-assignee to the step\n2. Clears assignee on the step\n3. Clears assignee on molecule root\n4. Sends handoff mail to self with context\n5. Shuts down polecat session\n\nThe molecule enters \"parked\" state (derived: in_progress + no assignee + blocked step).\n\nPart of cross-project dependency system.\nSee: docs/cross-project-deps.md\n\nDepends on Beads: bd-om4a (external: blocked_by support)","status":"open","priority":2,"issue_type":"feature","created_at":"2025-12-21T22:39:01.401567-08:00","updated_at":"2025-12-21T22:39:01.401567-08:00"}
{"id":"gt-zq7f","title":"Test Patrol for Bonding","description":"Parent issue for mol bond CLI test","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-24T21:24:17.909812-08:00","updated_at":"2025-12-25T01:33:00.353028-08:00","closed_at":"2025-12-25T01:33:00.353028-08:00","close_reason":"Test pollution cleanup"}