diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index a186de95..85e49651 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -118,6 +118,14 @@ {"id":"gt-4nn.4","title":"Built-in molecules: engineer-in-box, quick-fix, research","description":"Create built-in molecules as Beads issues:\n\n## engineer-in-box\n\n```markdown\nid: mol-engineer-in-box\ntype: molecule\ntitle: Engineer in a Box\n\nFull workflow from design to merge.\n\n## Step: design\nThink carefully about architecture. Consider:\n- Existing patterns in the codebase\n- Trade-offs between approaches \n- Testability and maintainability\n\nWrite a brief design summary before proceeding.\n\n## Step: implement\nWrite the code. Follow codebase conventions.\nNeeds: design\n\n## Step: review\nSelf-review the changes. Look for:\n- Bugs and edge cases\n- Style issues\n- Missing error handling\nNeeds: implement\n\n## Step: test\nWrite and run tests. Cover happy path and edge cases.\nFix any failures before proceeding.\nNeeds: implement\n\n## Step: submit\nSubmit for merge via refinery.\nNeeds: review, test\n```\n\n## quick-fix\n\n```markdown\nid: mol-quick-fix\ntype: molecule \ntitle: Quick Fix\n\nFast path for small changes.\n\n## Step: implement\nMake the fix. Keep it focused.\n\n## Step: test\nRun relevant tests. Fix any regressions.\nNeeds: implement\n\n## Step: submit\nSubmit for merge.\nNeeds: test\n```\n\n## research\n\n```markdown\nid: mol-research\ntype: molecule\ntitle: Research\n\nInvestigation workflow.\n\n## Step: investigate\nExplore the question. Search code, read docs, \nunderstand context. Take notes.\n\n## Step: document\nWrite up findings. Include:\n- What you learned\n- Recommendations\n- Open questions\nNeeds: investigate\n```\n\n## Storage\n\nBuilt-in molecules live in `\u003ctown\u003e/.beads/` as regular issues.\nCreated during `gt install` or `bd init`.","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-18T18:07:04.574565-08:00","updated_at":"2025-12-19T12:02:19.332406-08:00","closed_at":"2025-12-19T12:02:19.332406-08:00","dependencies":[{"issue_id":"gt-4nn.4","depends_on_id":"gt-4nn","type":"parent-child","created_at":"2025-12-18T18:07:04.576587-08:00","created_by":"daemon"}]} {"id":"gt-4put","title":"execute-actions","description":"Send nudges, process shutdowns, escalate as decided.\n\nNeeds: decide-actions","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T16:18:21.59918-08:00","updated_at":"2025-12-23T16:18:21.59918-08:00","dependencies":[{"issue_id":"gt-4put","depends_on_id":"gt-qp2w","type":"parent-child","created_at":"2025-12-23T16:18:21.606851-08:00","created_by":"stevey"}],"wisp":true} {"id":"gt-4qey","title":"gt mail: Cross-level routing is broken","description":"When Mayor sends mail to rig worker, message lands in wrong beads database. Sender's beads vs recipient's.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-20T17:57:35.617292-08:00","updated_at":"2025-12-20T18:35:53.30276-08:00","closed_at":"2025-12-20T18:35:53.30276-08:00"} +{"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":"open","priority":2,"issue_type":"epic","created_at":"2025-12-23T20:24:56.517669-08:00","updated_at":"2025-12-23T20:24:56.517669-08:00"} +{"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":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T20:25:25.927013-08:00","updated_at":"2025-12-23T20:25:25.927013-08:00","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":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T20:25:27.079456-08:00","updated_at":"2025-12-23T20:25:27.079456-08:00","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"}]} +{"id":"gt-4u5z.3","title":"Update refinery to read local branches","description":"Refinery manager needs to access polecat branches locally instead of fetching from origin.\n\n## Changes\n- internal/refinery/manager.go - remove origin fetch for MR branches\n- internal/refinery/engineer.go - local branch access\n- Remove DeleteRemoteBranch calls (branches are local now)\n- Update merge workflow to work with local refs\n\n## Key insight\nAll worktrees share the same .git - refinery can see polecat/nux branch directly.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T20:25:28.500632-08:00","updated_at":"2025-12-23T20:25:28.500632-08:00","dependencies":[{"issue_id":"gt-4u5z.3","depends_on_id":"gt-4u5z","type":"parent-child","created_at":"2025-12-23T20:25:28.502671-08:00","created_by":"daemon"},{"issue_id":"gt-4u5z.3","depends_on_id":"gt-4u5z.1","type":"blocks","created_at":"2025-12-23T20:25:43.633822-08:00","created_by":"daemon"}]} +{"id":"gt-4u5z.4","title":"Convert MR queue to wisp storage","description":"MR queue should use wisp storage (.beads-wisp/) instead of durable beads.\n\n## Changes\n- MR metadata stored in .beads-wisp/mq/ or similar\n- Never synced to origin\n- Squashed to digests periodically (or on merge)\n- Update MR create/read/update paths\n\n## Rationale\nMRs are ephemeral - they exist only until merged. Machine crash recovery uses beads (issue tracking) not MR queue state.","status":"open","priority":2,"issue_type":"task","created_at":"2025-12-23T20:25:29.716788-08:00","updated_at":"2025-12-23T20:25:29.716788-08:00","dependencies":[{"issue_id":"gt-4u5z.4","depends_on_id":"gt-4u5z","type":"parent-child","created_at":"2025-12-23T20:25:29.717201-08:00","created_by":"daemon"},{"issue_id":"gt-4u5z.4","depends_on_id":"gt-4u5z.3","type":"blocks","created_at":"2025-12-23T20:25:43.719801-08:00","created_by":"daemon"}]} +{"id":"gt-4u5z.5","title":"Update architecture documentation","description":"Update all documentation to reflect refinery-as-worktree model.\n\n## Files to update\n- docs/architecture.md (if exists)\n- CLAUDE.md references to refinery\n- mayor/rig/docs/*.md - any refinery docs\n- wisp-architecture.md - add MR wisp details\n- README files mentioning clone vs worktree\n\n## Key messages\n- Refinery is worktree, not clone\n- Polecat branches stay local\n- Only main pushed to origin\n- MRs are wisps (ephemeral)","status":"open","priority":3,"issue_type":"task","created_at":"2025-12-23T20:25:31.192025-08:00","updated_at":"2025-12-23T20:25:31.192025-08:00","dependencies":[{"issue_id":"gt-4u5z.5","depends_on_id":"gt-4u5z","type":"parent-child","created_at":"2025-12-23T20:25:31.194085-08:00","created_by":"daemon"},{"issue_id":"gt-4u5z.5","depends_on_id":"gt-4u5z.2","type":"blocks","created_at":"2025-12-23T20:25:43.819111-08:00","created_by":"daemon"},{"issue_id":"gt-4u5z.5","depends_on_id":"gt-4u5z.3","type":"blocks","created_at":"2025-12-23T20:25:43.907113-08:00","created_by":"daemon"},{"issue_id":"gt-4u5z.5","depends_on_id":"gt-4u5z.4","type":"blocks","created_at":"2025-12-23T20:25:43.99734-08:00","created_by":"daemon"}]} +{"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":"open","priority":4,"issue_type":"task","created_at":"2025-12-23T20:25:32.265488-08:00","updated_at":"2025-12-23T20:25:32.265488-08:00","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":"open","priority":3,"issue_type":"task","created_at":"2025-12-23T20:25:33.746893-08:00","updated_at":"2025-12-23T20:25:33.746893-08:00","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-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"} {"id":"gt-4z7j","title":"Test patrol queue feature","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-23T16:17:34.358185-08:00","updated_at":"2025-12-23T16:24:15.56255-08:00","closed_at":"2025-12-23T16:24:15.56255-08:00","close_reason":"test issue - cleaning up"} {"id":"gt-51x","title":"Fix golangci-lint errcheck warnings (~160 issues)","description":"Running golangci-lint shows ~160 errcheck warnings for unchecked error returns.\n\nCommon patterns:\n- t.SetEnvironment() return values\n- os.WriteFile(), os.RemoveAll() \n- MarkFlagRequired() on cobra commands\n- Various manager methods\n\nRun: golangci-lint run ./...\n\nCould batch fix with:\n1. Add explicit _ = for intentionally ignored errors\n2. Handle errors properly where they matter\n3. Consider adding //nolint:errcheck for cobra flag setup","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-17T15:02:39.807659-08:00","updated_at":"2025-12-19T12:09:58.544102-08:00","closed_at":"2025-12-19T12:09:58.544102-08:00"}